构建GlusterFS的分布式文件系统

    技术2026-01-30  4

    构建GlusterFS的分布式文件系统

    1 GlusterFS介绍

    Gluster File System 是一款自由软件,主要由Z RESEARCH 公司负责开发,十几名开发者,最近非常活跃。 文档也比较齐全,不难上手。

    主要应用在集群系统中,具有很好的可扩展性。软件的结构设计良好,易于扩展和配置,通过各个模块的灵活搭配以得到针对性的解决方案。可解决以下问题:网络存储,联合存储(融合多个节点上的存储空间),冗余备份,大文件的负载均衡(分块)。由于缺乏一些关键特性,可靠性也未经过长时间考验,还不适合应用于需要提供 24 小时不间断服务的产品环境。适合应用于大数据量的离线应用。 由于它良好的软件设计,以及由专门的公司负责开发,进展非常迅速,几个月或者一年后将会有很大的改进,非常值得期待。 GlusterFS通过Infiniband RDMA 或者Tcp/Ip 方式将许多廉价的x86 主机,通过网络互联成一个并行的网络文件系统

    2 GlusterFS文件系统的搭建

    系统节点 IP地址主机名挂载路径192.168.200.138GlusterFS1/export/brick1/gv0192.168.200.140GlusterFS2/export/brick1/gv0
    2.1 1 配置YUM源
    [root@localhost ~]# cat /etc/yum.repos.d/local.repo [glusterfs] name=glusterfs baseurl=https://mirrors.aliyun.com/centos/7/storage/x86_64/gluster-7/ gpgcheck=0 enabled=1
    2.2 在两个节点中安装GlusterFS需要的包
    [root@GlusterFS1 ~]# yum -y install glusterfs-server xfsprogs [root@GlusterF2 ~]# yum -y install glusterfs-server xfsprogs 安装完之后启动服务并设置开机自启 systemctl start glusterd systemctl enable glusterd
    2.3 添加节点到GlusterFS集群
    [root@GlusterFS1 ~]# gluster peer probe 192.168.200.138 peer probe: success. Probe on localhost not needed [root@GlusterFS1 ~]# gluster peer probe 192.168.200.140 peer probe: failed: Probe returned with Transport endpoint is not connected 如果失败,则关闭防火墙 [root@GlusterFS1 ~]# gluster peer probe 192.168.200.140 peer probe: success.
    2.4 查询集群状态
    [root@GlusterFS1 ~]# gluster peer status Number of Peers: 1 Hostname: 192.168.200.140 Uuid: aa20dc09-50b7-4acd-913d-b187f4acf018 State: Peer in Cluster (Connected)
    2.5 创建目录
    创建数据存储目录(两个节点都执行) # fdisk /dev/sda [root@GlusterFS1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 100G 0 disk ├─sda1 8:1 0 500M 0 part /boot ├─sda2 8:2 0 52G 0 part │ ├─centos-root 253:0 0 50G 0 lvm / │ └─centos-swap 253:1 0 2G 0 lvm [SWAP] ├─sda3 8:3 0 10G 0 part [root@GlusterFS2 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 100G 0 disk ├─sda1 8:1 0 500M 0 part /boot ├─sda2 8:2 0 52G 0 part │ ├─centos-root 253:0 0 50G 0 lvm / │ └─centos-swap 253:1 0 2G 0 lvm [SWAP] └─sda3 8:3 0 10G 0 part 使用xfs文件系统对分区进行格式化 # mkfs.xfs /dev/sda3 创建挂载目录 # mkdir -p /export/brick1 挂载分区 # mount /dev/sda3 /export/brick1/ 查看挂载情况 [root@GlusterFS1 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 475M 0 475M 0% /dev tmpfs 487M 0 487M 0% /dev/shm tmpfs 487M 7.6M 479M 2% /run tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mapper/centos-root 50G 1.3G 49G 3% / /dev/sda1 497M 130M 367M 27% /boot tmpfs 98M 0 98M 0% /run/user/0 /dev/sda3 10G 33M 10G 1% /export/brick1 [root@GlusterFS2 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 475M 0 475M 0% /dev tmpfs 487M 0 487M 0% /dev/shm tmpfs 487M 7.5M 479M 2% /run tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mapper/centos-root 50G 1.3G 49G 3% / /dev/sda1 497M 130M 367M 27% /boot tmpfs 98M 0 98M 0% /run/user/0 /dev/sda3 10G 33M 10G 1% /export/brick1 创建存储目录 # mkdir /export/brick1/gv0
    2.6 创建磁盘卷
    创建系统卷gv0(副本卷) [root@GlusterFS1 ~]# gluster volume create gv0 replica 2 192.168.200.138:/export/brick1/gv0 192.168.200.140:/export/brick1/gv0 Replica 2 volumes are prone to split-brain. Use Arbiter or Replica 3 to avoid this. See: http://docs.gluster.org/en/latest/Administrator%20Guide/Split%20brain%20and%20ways%20to%20deal%20with%20it/. Do you still want to continue? (y/n) y volume create: gv0: success: please start the volume to access data 启动系统卷gv0 [root@GlusterFS1 ~]# gluster volume start gv0 volume start: gv0: success 查看系统卷信息 [root@GlusterFS1 ~]# gluster volume info Volume Name: gv0 Type: Replicate Volume ID: f56b6326-b698-42d9-ac22-4bec7dc444b4 Status: Started Snapshot Count: 0 Number of Bricks: 1 x 2 = 2 Transport-type: tcp Bricks: Brick1: 192.168.200.138:/export/brick1/gv0 Brick2: 192.168.200.140:/export/brick1/gv0 Options Reconfigured: transport.address-family: inet storage.fips-mode-rchecksum: on nfs.disable: on performance.client-io-threads: off 挂载文件系统 安装客户端并挂载GlusterFS文件系统,使用GlusterFS2节点作为客户端,在客户端挂载GlusterFS文件系统 [root@GlusterFS2 ~]# mount -t glusterfs 192.168.200.138:/gv0 /mnt/ [root@GlusterFS2 ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 475M 0 475M 0% /dev tmpfs 487M 0 487M 0% /dev/shm tmpfs 487M 7.6M 479M 2% /run tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/mapper/centos-root 50G 1.3G 49G 3% / /dev/sda1 497M 130M 367M 27% /boot tmpfs 98M 0 98M 0% /run/user/0 /dev/sda3 10G 33M 10G 1% /export/brick1 192.168.200.138:/gv0 10G 135M 9.9G 2% /mnt 验证成功,副本卷gv0的大小是10GB,因为GlusterFS的副本数为2,存储空间有一半冗余

    3 GlusterFS文件系统的运维

    3.1 常用运维操作
    添加节点(将server ip 添加到存储池中) # gluster peer probe server ip 删除节点 # gluster peers detach server ip 注意:将节点server从存储池中移除,移除节点是要保证节点上没有Brick。如果节点上有Brick,需要提前移除Brick。 查看卷信息 # gluster volume info 查看卷状态 # gluster volume status 启动,停止卷 # gluster volume start/stop VOLUME 删除卷 # gluster volume delete VOLUME 修复卷 # gluster volume heal mamm-volume #只修复有问题的文件 # gluster volume heal mamm-volume full #修复所有文件 # gluster volume heal mamm-volume info #查看自愈详情
    3.2 Brick管理
    添加Brick 添加节点(将server ip 添加到存储池中) # gluster peer probe server ip # gluster volume add-brick gv0 server ip:/export/brick1/gv0 注意:添加两个Brick到gv0,副本卷则要一次添加的Bricks数是Replica的整数倍,Stripe同样要求 移除Brick # gluster volume remove-brick gv0 server ip:/export/brick1/gv0 注意:若是副本卷,则要移除的Brick是Replica的整数倍,Stripe具有同样的要求,副本卷要移除一对Brick,在执行移除操作时,数据会移到其他节点。 在执行移除操作后,可以使用status命令对task状态进行查看 # gluster volume remove-brick gv0 server ip:/export/brick1/gv0 status 使用“commit”命令执行Brick移除,则不会进行数据迁移而直接删除Brick,符合不需要数据迁移的用户需求。 # gluster volume remove-brick gv0 server ip:/export/brick1/gv0 commit
    Processed: 0.036, SQL: 9