wutz/blog

BeeGFS 部署指南

wutz opened this issue · 0 comments

wutz commented
  1. 准备

    • 节点规划

      角色 主机名 存储
      mgmt/meta node201 1 x 960G NVMe SSD
      mgmt/meta node202 1 x 960G NVMe SSD
      storage node301 2 x 15.36TB NVMe SSD
      storage node302 2 x 15.36TB NVMe SSD
      client node401 NA
      • 512GB of metadata capacity is usually good for about 150 million user files
      • metadata apacity: 0.5% of total storage space
    • 配置 hosts

    • 配置 ssh 无密码登录

    • 配置软件安装源

      ## 所有 Server 节点执行
      
      $ export VERSION=7.4.2
      
      # Ubuntu
      $ export CODENAME=$(lsb_release -cs)
      $ sudo wget -O /etc/apt/sources.list.d/beegfs-${CODENAME}.list https://www.beegfs.io/release/beegfs_${VERSION}/dists/beegfs-${CODENAME}.list
      # old
      $ sudo wget -q https://www.beegfs.io/release/beegfs_${VERSION}/gpg/GPG-KEY-beegfs -O- | apt-key add -
      # new
      $ sudo wget -q https://www.beegfs.io/release/beegfs_${VERSION}/gpg/GPG-KEY-beegfs -O- | gpg --dearmor > /etc/apt/trusted.gpg.d/beegfs.gpg
      $ sudo apt update
      
      # RHEL-Like
      $ export CODENAME=rhel8
      $ sudo wget -O /etc/yum.repos.d/beegfs_${CODENAME}.repo https://www.beegfs.io/release/beegfs_${VERSION}/dists/beegfs-${CODENAME}.repo
    • 如果配置 IB/ROCE 网络,所有 meta, storage 和 client 节点需要安装 NVDIA MLNX_OFED 驱动

  2. 安装

    # mgmt node
    $ sudo yum install beegfs-mgmtd
    
    # meta node
    $ sudo yum install beegfs-meta libbeegfs-ib
    
    # storage node
    $ sudo yum install beegfs-storage libbeegfs-ib
    
    # client node
    $ sudo yum install beegfs-client beegfs-helperd beegfs-utils
    • 只有安装了 InfiniBand, Omni-Path, RoCE 网络设备的环境才需要安装
      • server: libbeegfs-ib
      • client: 在服务启动时 autobuild beegfs.ko
  3. 配置

    ## mgmt node
    
    $ sudo /opt/beegfs/sbin/beegfs-setup-mgmtd -p /data/beegfs/beegfs_mgmtd
    ## meta node
    
    ## 准备数据目录
    $ lsblk
    $ sudo mkfs -t xfs /dev/nvme0n1
    $ sudo mkdir -p /data/lun_meta
    # 获取 nvme0n1 的 UUID 填入下面的 /etc/fstab 中,例如获取的 UUID 为 fFvJ2Q-ej1Z-4cYD-tVlY-9FQe-NQcr-5dUvp7
    $ sudo lsblk -o +UUID # blkid
    $ sudo vi /etc/fstab
    UUID=fFvJ2Q-ej1Z-4cYD-tVlY-9FQe-NQcr-5dUvp7 /data/lun_meta xfs defaults,nofail 0 2
    $ sudo mount -a
    
    ## 指定元数据服务 sid 为 201/202, 管理节点为 node201
    # node201 节点执行
    $ sudo /opt/beegfs/sbin/beegfs-setup-meta -p /data/lun_meta -s 201 -m node201
    # node202 节点执行
    $ sudo /opt/beegfs/sbin/beegfs-setup-meta -p /data/lun_meta -s 202 -m node201
    
    ## storage node
    
    ## 如果有多个 nvme 设备重复下面过程
    $ sudo mkfs -t xfs /dev/nvme0n1
    $ sudo mkdir -p /data/lun_storage_1
    # 例如获取 UUID 为 JQtAcv-HYg5-dCPh-UNfM-4mLF-BmHt-HB8AQY
    $ sudo lsblk -o +UUID
    $ sudo vi /etc/fstab
    UUID=JQtAcv-HYg5-dCPh-UNfM-4mLF-BmHt-HB8AQY /data/lun_storage_1 xfs defaults,nofail 0 2
    $ sudo mount -a
    
    # 301 为存储节点代号,30101 是设备的代号, 管理节点为 node201
    # node301 节点执行
    $ sudo /opt/beegfs/sbin/beegfs-setup-storage -p /data/lun_storage_1 -s 301 -i 30101 -m node201
    $ sudo /opt/beegfs/sbin/beegfs-setup-storage -p /data/lun_storage_2 -s 301 -i 30102 -m node201
    # node302 节点执行
    $ sudo /opt/beegfs/sbin/beegfs-setup-storage -p /data/lun_storage_1 -s 302 -i 30201 -m node201
    $ sudo /opt/beegfs/sbin/beegfs-setup-storage -p /data/lun_storage_2 -s 302 -i 30202 -m node201
    
    # echo {0..7} |xargs -n1 |xargs -I {} /opt/beegfs/sbin/beegfs-setup-storage -p /data/lun_storage_{} -s 301 -i 3010{} -m node201
    ## client node
    
    # 如果安装 MLNX OFED 驱动,则需要配置自动构建使用的 OFED 驱动位置.
    $ sudo yum install kernel-devel
    $ sudo sed -i '/^buildArgs=-j8/s/.*/& OFED_INCLUDE_PATH=\/usr\/src\/ofa_kernel\/default\/include/' /etc/beegfs/beegfs-client-autobuild.conf
    
    # 指定管理节点为 node201
    $ sudo /opt/beegfs/sbin/beegfs-setup-client -m node201
    # 第一项为挂载点 /share,第二项为配置文件
    $ sudo vim /etc/beegfs/beegfs-mounts.conf
    /share /etc/beegfs/beegfs-client.conf
    ## auth
    
    # 准备
    $ sudo dd if=/dev/random of=/etc/beegfs/connauthfile bs=128 count=1
    $ sudo chmod 400 /etc/beegfs/connauthfile
    # 拷贝到所有节点
    $ sudo scp /etc/beegfs/connauthfile <all-nodes>:/etc/beegfs
    
    # mgmt node
    $ sudo sed -i '/^connAuthFile/s/.*/& \/etc\/beegfs\/connauthfile/' /etc/beegfs/beegfs-mgmtd.conf
    # meta node
    $ sudo sed -i '/^connAuthFile/s/.*/& \/etc\/beegfs\/connauthfile/' /etc/beegfs/beegfs-meta.conf
    # storage node
    $ sudo sed -i '/^connAuthFile/s/.*/& \/etc\/beegfs\/connauthfile/' /etc/beegfs/beegfs-storage.conf
    # client node
    $ sudo sed -i '/^connAuthFile/s/.*/& \/etc\/beegfs\/connauthfile/' /etc/beegfs/beegfs-{client,helperd}.conf
  4. 启动

    # mgmt node
    $ sudo systemctl start beegfs-mgmtd
    # meta node
    $ sudo systemctl start beegfs-meta
    # storage node
    $ sudo systemctl start beegfs-storage
    # client node
    $ sudo systemctl start beegfs-helperd beegfs-client
  5. 状态查询

    # 元数据节点列表
    $ beegfs-ctl --listnodes --nodetype=meta
    node201 [ID: 201]
    node202 [ID: 202]
    
    # 存储节点列表
    $ beegfs-ctl --listnodes --nodetype=storage
    node301 [ID: 301]
    node302 [ID: 302]
    
    beegfs-ctl --listtargets --mirrorgroups
    beegfs-ctl --listnodes --nodetype=client
    
    # 元数据列表
    $ beegfs-ctl --listtargets --nodetype=meta --state
    TargetID     Reachability  Consistency   NodeID
    ========     ============  ===========   ======
         201           Online         Good      201
         202           Online         Good      202
         
    # 存储列表
    $ beegfs-ctl --listtargets --nodetype=storage --state
    TargetID     Reachability  Consistency   NodeID
    ========     ============  ===========   ======
        30101           Online         Good      301
        30102           Online         Good      301
        30201           Online         Good      302
        30202           Online         Good      302
    • Reachability 可达性,Buddy Mirror 依赖此状态进行故障转移
      • Online
      • Offline
    • Consistency 一致性
      • Good
      • Needs-resync: 尝试进行同步数据
      • Bad: 尝试同步是吧
  6. 配置 HA Buddy Mirror

    # 自动创建元数据 Buddy Group
    $ sudo beegfs-ctl --addmirrorgroup --automatic --nodetype=meta
    
    # 自动创建存储 Buddy Group
    $ sudo beegfs-ctl --addmirrorgroup --automatic --nodetype=storage
    
    # 激活 metadata mirroring 需要重启 meta service, 以及重新挂载所有 Client
    $ sudo systemctl stop beegfs-client
    $ sudo beegfs-ctl --mirrormd
    # 所有 meta 节点执行
    $ sudo systemctl restart beegfs-meta
    
    # 查看 meta buddy group 状态
    $ sudo beegfs-ctl --listmirrorgroups --nodetype=meta
    # 查看 storage buddy group 状态
    $ sudo beegfs-ctl --listmirrorgroups --nodetype=storage
    # 查询存储设备状态
    $ sudo beegfs-ctl --listtargets --mirrorgroups
    # 手动创建 Buddy Group
    $ sudo beegfs-ctl --addmirrorgroup --nodetype=storage --primary=3011 --secondary=3021 --groupid=1
  7. 设置条带化

    $ beegfs-ctl --getentryinfo /share
    
    # 设置 raid0 模式目录
    $ mkdir /share/raid0-dir
    $ beegfs-ctl --setpattern --pattern=raid0 --chunksize=1m --numtargets=4 /share/raid0-dir
    
    # 设置 Buddy 模式目录
    $ mkdir /share/buddy-dir
    $ beegfs-ctl --setpattern --pattern=buddymirror --chunksize=1m --numtargets=4 /share/buddy-dir