GlusterFS是一个开源的分布式文件系统,于2011年被红帽收购.它具有高扩展性、高性能、高可用性、可横向扩展的弹性特点,无元数据服务器设计使glusterfs没有单点故障隐患,详细介绍请查看官网:www.gluster.org 。
部署环境:
OS: CentOS release 6.5 (Final) x64
Server:
c1:192.168.242.132
c2:192.168.242.133
c3:192.168.242.134
c4:192.168.242.135
hosts:
192.168.242.132 c1
192.168.242.133 c2
192.168.242.134 c3
192.168.242.135 c4
具体操作:
代码如下 | 复制代码 |
c1/c2/c3/c4上执行 [root@c1 ~]# wget -P /etc/yum.repos.d http://download.gluster.org/pub/gluster/glusterfs/LATEST/CentOS/glusterfs-epel.repo [root@c1 yum.repos.d]# yum install -y glusterfs glusterfs-server glusterfs-fuse [root@c1 yum.repos.d]# /etc/init.d/glusterd start Starting glusterd: [ OK ] [root@c1 yum.repos.d]# chkconfig glusterd on |
c1上配置集群
代码如下 | 复制代码 |
[root@c1 ~]# gluster peer probe c1 peer probe: success. |
如果c1在peer表中被识别为ip地址,可能后面集群过程中会出现通讯问题,
我们可以使用ip来进行修复:
代码如下 | 复制代码 |
[root@c3 ~]# gluster peer status Hostname: 192.168.242.132 Hostname: c2 Hostname: c4 Hostname: c2 Hostname: c4 Hostname: c1 |
c1上创建集群磁盘
代码如下 | 复制代码 |
[root@c1 ~]# gluster volume create datavolume1 replica 2 transport tcp c1:/usr/local/share/datavolume1 c2:/usr/local/share/datavolume1 c3:/usr/local/share/datavolume1 c4:/usr/local/share/datavolume1 force [root@c1 ~]# gluster volume info Volume Name: datavolume1 Volume Name: datavolume2 Volume Name: datavolume3 |
客户端环境部署
代码如下 | 复制代码 |
Centos OS 6.5 x64 并加入hosts [root@c5 ~]#wget -P /etc/yum.repos.d http://download.gluster.org/pub/gluster/glusterfs/LATEST/CentOS/glusterfs-epel.repo [root@c5 ~]#yum install -y glusterfs glusterfs-fuse [root@c5 ~]# mkdir -p /mnt/{datavolume1,datavolume2,datavolume3} [root@c5 ~]# mount -t glusterfs -o ro c1:datavolume1 /mnt/datavolume1/ [root@c5 ~]# mount -t glusterfs -o ro c1:datavolume2 /mnt/datavolume2/ [root@c5 ~]# mount -t glusterfs -o ro c1:datavolume3 /mnt/datavolume3/ me3 [root@c5 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 38G 840M 36G 3% / tmpfs 242M 0 242M 0% /dev/shm /dev/sda1 485M 32M 429M 7% /boot c1:datavolume1 57G 2.4G 52G 5% /mnt/datavolume1 c1:datavolume2 57G 2.4G 52G 5% /mnt/datavolume2 c1:datavolume3 57G 2.4G 52G 5% /mnt/datavolume3 |
代码如下 | 复制代码 |
[root@c5 ~]# umount /mnt/datavolume1/ [root@c2 ~]# ls -al /usr/local/share/datavolume1/ |
删除GlusterFS磁盘:
代码如下 | 复制代码 |
gluster volume stop datavolume1 gluster volume delete datavolume1 |
卸载GlusterFS磁盘:
代码如下 | 复制代码 |
gluster peer detach idc1-server4 |
访问控制:
代码如下 | 复制代码 |
gluster volume set datavolume1 auth.allow 192.168.242.*,192.168.241.* |
添加GlusterFS节点:
代码如下 | 复制代码 |
gluster peer probe c6 gluster peer probe c7 gluster volume add-brick datavolume1 c6:/usr/local/share/datavolume1 c7:/usr/local/share/datavolume1 |
迁移GlusterFS磁盘数据:
代码如下 | 复制代码 |
gluster volume remove-brick datavolume1 c1:/usr/local/share/datavolume1 c6:/usr/local/share/datavolume1 start gluster volume remove-brick datavolume1 c1:/usr/local/share/datavolume1 c6:/usr/local/share/datavolume1 status gluster volume remove-brick datavolume1 c1:/usr/local/share/datavolume1 c6:/usr/local/share/datavolume1 commit |
数据重新分配:
代码如下 | 复制代码 |
gluster volume rebalance datavolume1 start gluster volume rebalance datavolume1 status gluster volume rebalance datavolume1 stop |
修复GlusterFS磁盘数据(例如在c1宕机的情况下):
代码如下 | 复制代码 |
gluster volume replace-brick datavolume1 c1:/usr/local/share/datavolume1 c6:/usr/local/share/datavolume1 commit -force gluster volume heal datavolume1 full |
GlusterFS常用的中继介绍
1. storage/posix #指定一个本地目录给GlusterFS内的一个卷使用;
2. protocol/server #服务器中继,表示此节点在GlusterFS中为服务器模式,可以说明其IP、守护端口、访问权限;
3. protocol/client #客户端中继,用于客户端连接服务器时使用,需要指明服务器IP和定义好的卷;
4. cluster/replicate #复制中继,备份文件时使用,若某子卷掉了,系统仍能正常工作,子卷起来后自动更新(通过客户端);
5. cluster/distribute #分布式中继,可以把两个卷或子卷组成一个大卷,实现多存储空间的聚合;
6. features/locks #锁中继,只能用于服务器端的posix中继之上,表示给这个卷提供加锁(fcntl locking)的功能;
7. performance/read-ahead #预读中继,属于性能调整中继的一种,用预读的方式提高读取的性能,有利于应用频繁持续性的访问文件,当应用完成当前数据块读取的时候,下一个数据块就已经准备好了,主要是在IB-verbs或10G的以太网上使用;
8. performance/write-behind #回写中继,属于性能调整中继的一种,作用是在写数据时,先写入缓存内,再写入硬盘,以提高写入的性能,适合用于服务器端;
9. performance/io-threads #IO线程中继,属于性能调整中继的一种,由于glusterfs 服务是单线程的,使用IO 线程转换器可以较大的提高性能,这个转换器最好是被用于服务器端;
10. performance/io-cache #IO缓存中继,属于性能调整中继的一种,作用是缓存住已经被读过的数据,以提高IO 性能,当IO 缓存中继检测到有写操作的时候,它就会把相应的文件从缓存中删除,需要设置文件匹配列表及其设置的优先级等内容;
11. cluster/stripe #条带中继,将单个大文件分成多个小文件存于各个服务器中,实现大文件的分块存储。