构建GlusterFS的分布式文件系统

构建GlusterFS的分布式文件系统

1 GlusterFS介绍

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

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

2 GlusterFS文件系统的搭建

系统节点
IP地址 主机名 挂载路径
192.168.200.138 GlusterFS1 /export/brick1/gv0
192.168.200.140 GlusterFS2 /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

猜你喜欢

转载自blog.csdn.net/qq_44750380/article/details/107130647
今日推荐