GlusterFS简介
GlusterFS是一个开源的分布式文件系统,是Scale存储的核心,能够处理千数量级的客户端。
整合了许多存储块(server)通过Infiniband RDMA或者 TCP/IP方式互联的一个并行的网络文件系统。
GlusterFS的特征:
- 容量可以按比例的扩展,且性能却不会因此而降低。
- 廉价且使用简单,完全抽象在已有的文件系统之上。
- 扩展和容错设计的比较合理,复杂度较低
- 适应性强,部署方便,对环境依赖低,使用,调试和维护便利
环境介绍
部署GlusterFS分布式存储系统,需要给机器增加一块新磁盘,磁盘是需要被格式化的
GlusterFS最少需要两个节点,内存最低需要1G
IP | HOSTNAME | SYSTEM-VERSION |
192.168.72.73 | glusterfs-01 | centos7.6 |
192.168.72.74 | glusterfs-02 | centos7.6 |
开始GlusterFS部署
参考centos官网提供的glusterfs部署:gluster-Quickstart
如果不是外网服务器,firewalld服务可以直接关掉,需要关闭selinux服务,重启后才会生效
selinux的关闭方式:sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) # systemctl status firewalld.service | grep active Active: inactive (dead) # sestatus SELinux status: disabled
没有特殊提醒的前提下,以下所有操作,所有的机器都需要操作
配置hosts解析
# cat >> /etc/hosts <<EOF 192.168.72.73 glusterfs-01 192.168.72.74 glusterfs-02 EOF
配置GlusterFS
# yum install -y centos-release-gluster
创建文件系统
- 这一步不是必须的,只是实验使用,所以新增了磁盘,单独给 gfs 使用,一定要切记,如果要和下面的步骤一致,一定要使用新的没有数据的磁盘来操作,否则会造成数据的丢失
可以使用
lsblk
命令查看新磁盘的盘符,不要完全复制我的文档这里要用xfs格式化磁盘,并且xfs的文件格式支持PB级的数据量
如果是centos6系列的,需要安装xfs支持包:
yum install -y xfsprogs
所有节点都需要执行下面的操作
# mkfs.xfs -i size=512 /dev/sdb # mkdir -p /data/glusterfs_data # echo '/dev/sdb /data/glusterfs_data xfs defaults 0 0' >> /etc/fstab # mount -a
安装GlusterFS
# yum install -y glusterfs-server
启动GlusterFS
# systemctl enable glusterd --now # systemctl status glusterd | grep active Active: active (running) since Sun 2021-05-09 00:33:20 CST; 21s ago
将节点加入到主机池
这个操作,只需要在glusterfs-01机器上操作即可
# gluster peer probe glusterfs-02 peer probe: success
查看主机池的状态
# gluster pool list UUID Hostname State 4364f3d9-5be4-4f8f-9e8c-a47edb099bf0 glusterfs-02 Connected 3cb3da7f-f923-42b7-908e-901533468055 localhost Connected # gluster peer status Number of Peers: 1 Hostname: glusterfs-02 Uuid: 4364f3d9-5be4-4f8f-9e8c-a47edb099bf0 State: Peer in Cluster (Connected)
创建GlusterFS复制卷
以下的操作,在 glusterfs-01机器上操作即可
# gluster volume create online-share replica 2 glusterfs-01:/data/glusterfs_data glusterfs-02:/data/glusterfs_data # gluster volume start online-share # gluster volume info Volume Name: online-share Type: Replicate Volume ID: 84ce70ca-cd50-4680-ad6c-5a82ea9bb148 Status: Started Snapshot Count: 0 Number of Bricks: 1 x 2 = 2 Transport-type: tcp Bricks: Brick1: glusterfs-01:/data/glusterfs_data Brick2: glusterfs-02:/data/glusterfs_data Options Reconfigured: cluster.granular-entry-heal: on storage.fips-mode-rchecksum: on transport.address-family: inet nfs.disable: on performance.client-io-threads: off
GlusterFS测试
- 如果出现报错:
mount: unknown filesystem type 'glusterfs'
需要安装一下glusterfs-fuse
,使用命令:yum install -y glusterfs-fuse
# mount -t glusterfs glusterfs-01:/online-share /mnt # df -Th | grep glusterfs glusterfs-01:/online-share fuse.glusterfs 10G 135M 9.9G 2% /mnt
也可以写进 fstab,实现重启后自动挂载,但是也会有缺点,如果 gfs 有问题,挂载失败了,会导致开机异常
# vim /etc/fstab glusterfs-01:online-share /mnt defaults 0 0 # mount -a # 不报错表示挂载成功了
也可以写进 rc.local 里面,这样就是有问题,也不会影响重启后进入操作系统
# echo 'mount -t glusterfs glusterfs-01:/online-share /mnt' >> /etc/rc.local # chmod +x /etc/rc.local
因为是复制卷,所以可用容量为一半(我是两台机器各增加了一块10G的新磁盘)
# for i in `seq -w 1 100`; do cp -rp /var/log/messages /mnt/copy-test-$i; done
# ls -lA /data/glusterfs_data # ls -lA /mnt
可以看到,两边的文件都是一致的
到这里,GlusterFS已经部署完成了
关于GlusterFS其他卷的配置,可以看这位大佬的博客:GlusterFS分布式存储