分布式文件系统---GlusterFS
分布式文件系统
相对于本机端的文件系统而言,分布式文件系统(英语:Distributed file system, DFS),或是网络文件系统(英语:Network File System),是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间
在这样的文件系统中,客户端并非直接访问底层的数据存储区块,而是通过网络,以特定的通信协议和服务器沟通。借由通信协议的设计,可以让客户端和服务器端都能根据访问控制清单或是授权,来限制对于文件系统的访问。
glusterfs是什么
Gluster是一个分布式文件系统。它是各种不同的存储服务器之上的组合,这些服务器由以太网或无限带宽技术Infiniband以及远程直接内存访问RDMA互相融汇,最终所形成的一个大的并行文件系统网络。
它有包括云计算在内的多重应用,诸如:生物医药科学,文档存储。Gluster是由GNU托管的自由软件,证书是AGPL。Gluster公司是Gluster的首要商业赞助商,且提供商业产品以及基于Gluster的解决方案。
快速部署GlusterFS
环境说明
注意:最少需要拥有两块硬盘
两台主机系统环境说明
[root@glusterfs02 ~]# hostname
glusterfs02
[root@glusterfs02 ~]# uname -r
3.10.0-693.el7.x86_64
[root@glusterfs02 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.221 glusterfs01
192.168.1.222 glusterfs02
前期准备
gluster01主机挂载磁盘
[root@glusterfs01 ~]# mkfs.xfs /dev/sdb
[root@glusterfs01 ~]# mkdir -p /data/brick1
[root@glusterfs01 ~]# echo '/dev/sdb /data/brick1 xfs defaults 0 0' >> /etc/fstab
[root@glusterfs01 ~]# mount -a && mount
gluster02主机挂载磁盘
[root@glusterfs02 ~]# mkfs.xfs /dev/sdb
[root@glusterfs02 ~]# mkdir -p /data/brick1
[root@glusterfs02 ~]# echo '/dev/sdb /data/brick1 xfs defaults 0 0' >> /etc/fstab
[root@glusterfs02 ~]# mount -a && mount
部署GlusterFS
安装软件
在两个节点上操作
[root@glusterfs01 ~]# yum install centos-release-gluster -y
[root@glusterfs02 ~]# yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
启动GlusterFS
在两个节点上都进行操作
[root@glusterfs01 ~]# systemctl start glusterd.service
配置互信(可信池)
在glusterfs01上操作
[root@glusterfs01 ~]# gluster peer probe glusterfs02
peer probe: success.
在glusterfs02上操作
[root@glusterfs02 ~]# gluster peer probe glusterfs01
peer probe: success. Host glusterfs01 port 24007 already in peer list
注意:一旦建立了这个池,只有受信任的成员可能会将新的服务器探测到池中。新服务器无法探测池,必须从池中探测。
检查对等状态
[root@glusterfs01 ~]# gluster peer status
Number of Peers: 1
Hostname: glusterfs02
Uuid: 2f94889d-25d4-4775-ab61-5db25ddfb2fc
State: Peer in Cluster (Connected)
[root@glusterfs02 ~]# gluster peer status
Number of Peers: 1
Hostname: glusterfs01
Uuid: 8f9e6573-7042-4227-a8f9-d7922cc1f1f9
State: Peer in Cluster (Connected)
注意:看到的UUID应不相同。
建立一个GlusterFS卷
在两个节点上操作
[root@glusterfs01 ~]# mkdir -p /data/brick1/gv0
在任意一个节点上执行
[root@glusterfs01 ~]# gluster volume create gv0 replica 2 glusterfs01:/data/brick1/gv0 glusterfs02:/data/brick1/gv0 force
volume create: gv0: success: please start the volume to access data
[root@glusterfs01 ~]# gluster volume start gv0
volume start: gv0: success
查看信息
[root@glusterfs01 ~]# gluster volume info
Volume Name: gv0
Type: Replicate
Volume ID: 630085a3-58af-4547-a4f0-2613412dc650
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: glusterfs01:/data/brick1/gv0
Brick2: glusterfs02:/data/brick1/gv0
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
至此,服务端配置结束
客户端测试
安装客户端工具
挂载测试
[root@client ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.221 glusterfs01
192.168.1.222 glusterfs02
192.168.1.220 client
[root@client ~]# yum install centos-release-gluster -y
[root@client ~]# yum install -y glusterfs glusterfs-fuse
[root@client ~]# mount.glusterfs glusterfs01:/gv0 /mnt
[root@client ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 19G 1.4G 18G 8% /
devtmpfs 226M 0 226M 0% /dev
tmpfs 237M 0 237M 0% /dev/shm
tmpfs 237M 4.6M 232M 2% /run
tmpfs 237M 0 237M 0% /sys/fs/cgroup
/dev/sda1 247M 105M 142M 43% /boot
tmpfs 48M 0 48M 0% /run/user/0
glusterfs01:/gv0 20G 237M 20G 2% /mnt
复制文件测试
[root@client ~]# for i in `seq -w 1 100`; do cp -rp /var/log/messages /mnt/copy-test-$i; done
[root@client ~]# ls -lA /mnt/copy* | wc -l
100
服务节点检查文件
[root@glusterfs01 gv0]# ls -lA /data/brick1/gv0/copy* |wc -l
100
[root@glusterfs02 ~]# ls -lA /data/brick1/gv0/copy* |wc -l
100
至此Glusterfs简单配置完成
创建卷
gluster volume create gv0 replica 2 server1:/data/brick1/gv0 server2:/data/brick1/gv0 force
二、启动卷
gluster volume start
例子:gluster volume start gv0
三、停止卷
gluster volume stop
例子:gluster volume stop gv0
四、 删除卷
gluster volume delete
例子:gluster volume delete gv0
五、添加节点
gluster peer probe
例子:gluster peer probe server3
六、删除节点
gluster peer detach (移除节点,需要提前将该节点上的brick移除)
例子:gluster peer detach server3
七、查看卷
gluster volume list /*列出集群中的所有卷*/
gluster volume info [all] /*查看集群中的卷信息*/
gluster volume status [all] /*查看集群中的卷状态*/
八、 更改卷类型
3.更改卷的类型
语法:gluster volume set test-volume config.transport tcp,rdma OR tcp OR rdma
例子:
九、重新均衡卷
语法:gluster volume rebalance <VOLNAME> fix-layout start
例子:gluster volume rebalance test-volume fix-layout start
十、收缩卷
1.开始收缩
gluster volume remove-brick gv0 server3:/data/brick1/gv0 server4:/data/brick1/gv0 start
2.查看迁移状态
gluster volume remove-brick gv0 server3:/data/brick1/gv0 server4:/data/brick1/gv0 status
3.迁移完成提交
gluster volume remove-brick gv0 server3:/data/brick1/gv0 server4:/data/brick1/gv0 commit
九.GlusterFS的配额
GlusterFS目录限额,允许你根据目录或卷配置限制磁盘空间的使用量
1.开启限额
gluster volume
quota
VolumeName
enable
2.关闭限额
gluster volume
quota
VolumeName disable
3.设置或替换磁盘限制
3.1.根据卷限制
gluster volume
quota
VolumeName limit-usage / size
gluster volume
quota
gv0 limit-usage / 10GB
gluster volume
quota
VolumeName limit-usage DirectoryPath LimitSize