基于CentOS7安装配置BeeGFS并行文件系统(已试验部署成功)

前言:

        之前由于测试需要用到BeeGFS(简称:BGFS),自己按照官网指南学习搭建过一套BGFS的文件系统。现在将自己搭建配置的步骤整理分享出来,从以下几个方向介绍:

目录

 (一)背景

 (二)节点介绍

 (三)专业术语

 (四)部署安装

1. 节点信息

2. 前提配置 

3. 安装beegfs服务

4. Raid 配置

5. 配置beegfs并启动服务

6. 客户端测试 ​

 (五)相关命令


Beegfs官网地址:BeeGFS Wiki: BeeGFS Buddy Mirroring™

(一)背景

        BeeGFS是领先的集群并行文件系统,具有强大的集中表现和设计非常容易安装和管理的发展。如果I/O密集型的应用,是你的问题,beegfs是解决方案。

        BeeGFS透明传播用户数据在多个服务器。通过增加系统中的服务器和磁盘的数量,您可以简单地将文件系统的性能和容量扩展到您需要的水平,从小型集群到企业级系统与成千上万个节点的无缝连接。

        BeeGFS是一个基于Linux的文件系统,BeeGFS所有的部分(如客户端,服务器)都在Linux操作系统下运行,到目前为止还不支持其他平台。搭建一套BeeGFS至少需要管理服务器(MS)、对象存储服务器(OSS)、元数据服务器(MDS)和文件系统Client四个主要组件和有两个守护进程。

 (二)节点介绍

1. Management Server(MS)

系统中必须要有一个MS, BeeGFS安装的所有配置文件必须指向同一个MS。MS维护所有文件系统组件的列表,包括Client,MetaData Servers,MetaData Targets,Storage Servers和Storage Targets。此外,MS具有正常、低和关键三个标签选项来标记Storage Targets和MetaData Targets。当创建新文件时,这些标签会影响目标选择的方式,标签是根据目标可用空间分配的。运行在MetaData Server上目标选择器将优选标记为正常的目标。

2. MetaData Server(MDS)

MDS包含系统中Meta Data的信息。MetaData服务器无限制可扩展。每个MDS都有一个MetaData Target(MDT,存储MDS的Meta Data)。MDT上文件系统的推荐选择是ext4,因为它对小文件和小文件操作提供很好性能。MDT通常由SSD组成并推荐采用RAID1或RAID10进行RAID保护,选择RAID5/6对元数据随机小IO访问模式将导致MetaData性能严重下降。

BeeGFS全局文件系统中的每个目录都附加到处理其内容的一个MDS。如果目录A的MetaData由MDS#1处理,则位于A中的文件的MetaData存储在存储#1上。由于将目录分配给MDS是随机BeeGFS可以有效利用大量的MDS。只要目录数量明显大于MDS的数量,则每个MDS上的分配的目录数量和大致相等。

有一个例外,根级别目录始终在MDS#1上,这样就定义了一个入口点。顶级目录具有指向MDS的链接,其中包含有关子目录的信息。有了这个信息,客户端可以走路径目录树,找到负责特定目录的MDS。与机械驱磁盘相比,SSD可以降低时延并提供大量的随机IOPS,强烈推荐把SSD使用在MetaDataTarget上。

对于不同应用场景来说,线程的数量的选择有没有完美的建议,一方面,如果线程太多将浪费系统内存和CPU资源,并且可能会因为许多任务切换而对性能产生负面影响。 另一方面,线程太少限制了系统的性能。

3. Storage Server(OSS)

OSS是存储文件内容的主要服务。每个OSS可能具有一个或多个Object Storage Targets(OST),OST可以是本地文件系统(如xfs,ext4或zfs)或LUN。典型的OST推荐6到12个硬盘并采用RAID6级别,因此具有36个驱动器的OSS可能会组成3个OST,每个OST都是带有12个磁盘。

OSS是用户空间启动的完全多线程的守护进程。它将适用于任何符合POSIX标准的本地文件系统,底层文件系统可能根据工作负载或个人喜好和经验来挑选。OSS线程数量取决于OSS服务的OST的性能和数量。与MDS不同,OST上的IO通常是大的顺序IO。

BeeGFS的主要功能之一就是条带,在BeeGFS文件系统中,每个目录都有两个非常重要的属性,定义了这些目录中的文件的处理方式。

numtargets定义文件创建的目标数量。如果选择4,则每个文件将获得4个OST,分配给该文件的数据存储在这些OST中。

chunksize指定在客户端移动到下一个目标之前,在该分配的目标OST上存储多少数据。

文件条带的目标是提高单个文件的性能以及容量,假设OST容量大小为30 TB,提供500MB/s性能,那么4个OST目标之间的文件大小可以增长到120TB,并以2 GB/s进行访问。

4. 文件系统客户端(Client)

BeeGFS客户端是在Linux中运行的一个内核模块,必须编译以匹配使用的内核。客户端是GPL提供的开源产品。BeeGFS客户端服务提供了一个正常的挂载点,使您的应用程序可以直接访问BeeGFS存储系统,客户端包含两个守护进程服务。

beegfs-helperd守护程序为beegfs-client提供了一些辅助功能(DNS和写日志文件功能等),它是由同一主机上运行的beegfs-client访问,不需要任何其他配置。

beegfs-client加载客户端内核模块,如果需要,它将重新编译内核模块。重新编译使用自动构建过程完成,该过程在内核版本更改时启动。

(三)专业术语

  1. 条带

条带化技术就是一种自动的将 I/O 的负载均衡到多个物理磁盘上的技术,条带化技术就是将一块连续的数据分成很多小部分并把他们分别存储到不同磁盘上去。这就能使多个进程同时访问数据的多个不同部分而不会造成磁盘冲突,而且在需要对这种数据进行顺序访问的时候可以获得最大程度上的 I/O 并行能力,从而获得非常好的性能。由于条带化在 I/O 性能问题上的优越表现,以致于在应用系统所在的计算环境中的多个层次或平台都涉及到了条带化的技术,如操作系统和存储系统这两个层次中都可能使用条带化技术。

(四)部署安装

1. 节点信息

所有节点均为CentOS 7.1的虚拟机。该部署架构仅供测试使用最小化部署。如果实际生产部署中,会考虑节点、磁盘、网络热备等一系列情况。

节点

Mgt55(x.55)

Meta56(x.56)

Storage21(x.21)

Client39(x.39)

服务

Management Server

Metadata Server

Storage Server

Client

磁盘

-

2*10G 磁盘  

Raid1

4 *1G 磁盘

Raid6

-

存储路径

-

/data

/data

-

2. 前提配置 

  • 配置每个节点主机名。
  • 配置每个节点的hosts文件,将所有节点均写入hosts文件。

  • 关闭防火墙/关闭selinux
  • 重启机器

3. 安装beegfs服务

1)下载CentOS-Base.repo到/etc/yum.repos.d/

#wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

#yum clean all

#yum makecache

#yum -y update

#wget -O /etc/yum.repos.d/beegfs_rhel7.repo https://www.beegfs.io/release/latest-stable/dists/beegfs_rhel7.repo

2)安装服务

---Mgt55节点:

# yum install beegfs-mgmtd                # management service

---Meta56节点:

# yum install beegfs-meta libbeegfs-ib      # metadata service; libbeegfs-ib is only required for RDMA

---Storage21节点:

# yum install beegfs-storage libbeegfs-ib      # storage service; libbeegfs-ib is only required for RDMA

---Client39节点:

# yum install beegfs-client beegfs-helperd beegfs-utils     # client and command-line utils

# yum install kernel-devel -y        # 若不执行此步骤,后面clinet服务启动会报错

说明:关于helperd和utils的注意:额外的beegfs-helperd包含客户机的userspace助手守护程序,它为客户机模块提供日志记录和DNS查找功能。beegfs-utils包包含例如beegfs-ctl命令行工具,它可以显示统计信息和执行管理任务。

  1. 3)配置Client Kernel Module Autobuild(如果client39节点没有RDMA-capable network hardware,则忽略该步骤)

# vi /etc/beegfs/beegfs-client-autobuild.conf

Find the option "buildArgs" and set it to enabled ibverbs support:

buildArgs=-j8 BEEGFS_OPENTK_IBVERBS=1

If you installed separate OFED kernel modules, add the OFED_INCLUDE_PATH:

buildArgs=-j8 BEEGFS_OPENTK_IBVERBS=1 OFED_INCLUDE_PATH=/usr/src/openib/include

4)重构client kernel module:

# sudo /etc/init.d/beegfs-client rebuild

4. Raid 配置

1)Meta56节点配置RAID 1

RAID 1至少需要2块盘,使用fdisk命令对/dev/sdb和/dev/sdc进行分区(统一分成一个sdx1即可):

$ sudo fdisk /dev/sdb

$ sudo fdisk /dev/sdc

创建RAID 1:

$ sudo yum install -y mdadm

$ sudo mdadm -C /dev/md1 -ayes -l1 -n2 /dev/vd[b,c]

查看RAID 1状态:

$ cat /proc/mdstat

$ sudo mdadm -D /dev/md1

格式化磁盘阵列:

$ sudo mkfs.ext4 /dev/md1

建立挂载点并挂载:

$ sudo mkdir -p /data

$ sudo mount /dev/md1 /data

写入/etc/fstab:

$ echo /dev/md1 /data   ext4    defaults    0   0 | sudo tee -a /etc/fstab

打开Metadata Server的扩展属性功能:

sudo tune2fs -o user_xattr /dev/md1

2)Storage21节点配置RAID 6

RAID 6至少需要4块盘,使用fdisk命令对/dev/sdb、/dev/sdc、/dev/sdd和/dev/sde进行分区(统一分成一个sdx1即可):

$ sudo fdisk /dev/sdb

$ sudo fdisk /dev/sdc

$ sudo fdisk /dev/sdd

$ sudo fdisk /dev/sde

创建RAID 6:

$ sudo yum install -y mdadm

$ sudo mdadm --create /dev/md1 --level=6 --raid-devices=4 /dev/sd[b,c,d,e]1

查看RAID 6状态:

$ cat /proc/mdstat

$ sudo mdadm -D /dev/md1

格式化磁盘阵列:

$ sudo mkfs.xfs /dev/md1

建立挂载点并挂载:

$ sudo mkdir -p /data

$ sudo mount /dev/md1 /data

写入/etc/fstab:

$ echo /dev/md1 /data  xfs     defaults    0   0 | sudo tee -a /etc/fstab

!!!注意这里

问题1:raid5重启后md分区消失

解决方法:

#mdadm --stop /dev/md5   

若报错:mdadm: fail to stop array /dev/md0: Device or resource busy
umount /dev/md0后,再执行mdadm --stop /dev/md5 

#mdadm -A /dev/md5 /dev/sd[ijh]

#mdadm -A /dev/md5 /dev/sd[h-j]  --force

问题2:重复挂载报错Structure needs cleaning

解决方法:

# mount /dev/md5 /s3

mount: mount /dev/md5 on /s3 failed: Structure needs cleaning

# xfs_repair -L /dev/md5

 5. 配置beegfs并启动服务

1)配置节点服务

Mgt55节点:

# /opt/beegfs/sbin/beegfs-setup-mgmtd -p /data/beegfs/beegfs_mgmtd

Meta56节点:

# /opt/beegfs/sbin/beegfs-setup-meta -p /data/beegfs/beegfs_meta -s 2 -m mgt55

说明:您还可以选择定义一个定制的数字元数据服务ID(范围1..65535)。此处选择数字“2”作为元数据服务ID。

Storage21节点:

# /opt/beegfs/sbin/beegfs-setup-storage -p /data/beegfs_storage -s 3 -i 301 -m mgt55

说明:您还可以选择定义一个定制的数字存储服务ID和数字存储目标ID(都在范围1..65535中)。此处将选择数字“3”作为存储服务的ID,并使用“301”作为存储目标ID。

Client39节点:

# /opt/beegfs/sbin/beegfs-setup-client -m mgt55

2)启动服务:

Mgt55节点:

# systemctl start beegfs-mgmtd

Meta56节点:

# systemctl start beegfs-meta

Storage21节点:

# systemctl start beegfs-storage

Client39节点:

# systemctl start beegfs-helperd

# systemctl start beegfs-client  

注意:若启动beegfs-meta/ beegfs-storage服务时,报错目录没有初始化,请修改配置文件该参数为true再次启动即可。

# vim /etc/beegfs/beegfs-meta.conf

6. 客户端测试

Client39节点执行:

$ beegfs-ctl --listnodes --nodetype=meta –nicdetails     //客户端查看元数据节点信息

 

$ beegfs-ctl --listnodes --nodetype=storage –nicdetails  //客户端查看存储节点信息 

$ beegfs-ctl --listnodes --nodetype=client –nicdetails    //客户端查看客户端节点信息

 

若以上命令测试无报错,即beegfs安装配置完成!

(五)相关命令

$ beegfs-ctl --listnodes --nodetype=meta --nicdetails

$ beegfs-ctl --listnodes --nodetype=storage --nicdetails

$ beegfs-ctl --listnodes --nodetype=client –nicdetails

$ beegfs-net                # Displays connections the client is actually using

$ beegfs-check-servers      # Displays possible connectivity of the services

$ beegfs-df       # Displays free space and inodes of storage and metadata targets

1. 检查某个目录或文件的元数据和文件内容镜像设置

# beegfs-ctl --getentryinfo /mnt/beegfs

 

 2. 查看所有存储节点的target目标

# beegfs-ctl --listtargets --nodetype=storage --state

 3. 查看存储池

#beegfs-ctl --liststoragepools

4. 创建存储池

#beegfs-ctl --addstoragepool --desc="first pool" --targets=101 (target ID)  --多个,隔开

5. 移除存储池

# beegfs-ctl --removestoragepool 4(Pool ID)      

6. 创建文件/目录

# beegfs-ctl --createfile --storagepoolid=1 new_file        ;文件
# beegfs-ctl --getentryinfo new_file

# beegfs-ctl --createdir --nodes=1 /mnt/beegfs/mydir

7. 存储池之间迁移

# beegfs-ctl --migrate --storagepoolid=<from> --destinationpoolid=<to> <path>

说明:这将把<path>以下的所有内容移动到目标池的存储目标。

注意:如果源池中的文件启用了好友镜像,请确保目标池中至少有一个好友镜像目标。否则这些文件无法移动。

8. 开启存储镜像组(https://www.beegfs.io/wiki/BuddyGroups

自动:
# beegfs-ctl --addmirrorgroup --automatic --nodetype=meta
手动:(必须位于同一个存储池!!!

# beegfs-ctl --addmirrorgroup --nodetype=storage --primary=301 --secondary=302 --groupid=100

说明:如果您想要设置自定义组id,或者您想要确保伙伴位于不同的故障域中(例如不同的机架),那么手动定义镜像伙伴组非常有用。使用beegfs-ctl工具手动定义镜像伙伴组。通过使用以下命令,您可以创建一个ID为100的好友组,包括目标1和目标2:

列出定义的镜像组:

# beegfs-ctl --listmirrorgroups --nodetype=storage

列出镜像组:

# beegfs-ctl --listtargets --mirrorgroups

9. 开启元数据镜像组(BeeGFS Wiki: Metadata Buddy Mirroring

重要提示:在应用beegfs-ctl -mirrormd命令时,不能挂载任何客户机。这可以通过预先停止beegfs-client服务,并在成功执行beegfs-ctl—mirrormd之后重新启动它来实现。另外,请在所有节点上重新启动beegfs-meta服务。

# beegfs-ctl --addmirrorgroup --nodetype=meta --primary=2 --secondary=3 --groupid=101

# beegfs-ctl --listmirrorgroups --nodetype=meta

激活:# beegfs-ctl --mirrormd

 

需要重启meta服务、重新启动client

10. 查看target状态(BeeGFS Wiki: Target and Node States (Reachability & Consistency)

# beegfs-ctl --listtargets --nodetype=storage –state

 强制修改target状态:

# beegfs-ctl --setstate --nodetype=storage --targetid=401 --state=good --force

# beegfs-ctl --setstate --nodetype=meta --nodeid=401 --state=good --force

 11. 客户端数据由后台命令获取

# beegfs-ctl --clientstats --interval=5 --nodetype=storage –allstats

beegfs-ctl --clientstats --nodetype=storage --interval=0 --allstats --perinterval

Hello Test!至此BeeGFS的部署配置介绍完了,有问题及时留言讨论,比心~ 

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值