Glusterfs分布式文件系统:

Glusterfs是一个开源的分布式文件系统,它可以将分散的存储空间聚合在一起,形成一个虚拟的存储池。它支持横向扩展,可通过增加存储节点来提升整个系统的容量或性能。GlusterFS除了支持分散存储(Distributed,将不同的文件放在不同的存储节点)之外,还支持镜像存储(Replicated,同一个文件存放在两个以上的存储节点) 和分片存储(Stripped,将一个文件分划分为多个固定长度的数据,分散存放在所有存储节点)。

安装glusterfs 3.8(服务器端和客户端都安装):

add-apt-repository ppa:gluster/glusterfs-3.8

apt-get update

apt-get install glusterfs-server

glusterfs --version

配置文件:/etc/glusterfs/glusterd.vol

服务器端:

gluster peer probe bb (将bb服务器加入到集群,为客户端的主机名,也可以写ip)

gluster peer detach bb (将bb服务器移除集群)

gluster peer status 查看集群状态

创建volume(volume名为ming)

mkdir /home/dir1 (集群中服务器都需创建)

gluster volume create ming replica 2 aa:/home/dir1 bb:/home/dir1

注:如果路径为"/"分区下需加force,非"/"分区不用加

往集群里追加1台(此时为1x3模式):

gluster volume add ming replica 3 cc:/home/dir1

往集群里追加服务器(此时为2x2模式):

gluster volume add-brick ming replica 2 cc:/home/dir1 dd:/home/dir1

注:1x3模式总空间是不变的,只是会多写1份,2x2模式总空间会扩大1倍,数据还是存2份,数据分半写

从集群里移除服务器(数量必须为整体的整数倍,如总4台,可移除2台)

gluster volume remove-brick ming replica 2 db3:/home/dir1 db4:/home/dir1

执行数据布局平衡命令:

gluster volume rebalance ming start

查看平衡状态:

gluster volume rebalance ming status

查看volume信息:

gluster volume info

查看volume状态:

gluster volume status

启动volume:

gluster volume start ming

停止volume:

gluster volume stop ming

删除volume:

gluster volume delete ming

挂载volume:

mkdir /ming

mount -t glusterfs 10.0.0.2:ming /ming

就可以当作本地空间使用了

提示“/home/dir1 is already part of a volume”解决办法:

setfattr -x trusted.glusterfs.volume-id /home/dir1

setfattr -x trusted.gfid /home/dir1

gluster volume ming status Online为N的解决办法:

注:如服务器的1块硬盘坏掉了,在不重启服务器的情况下更换好硬盘

解决(在故障的服务器上执行):

ps -ef | grep glusterd (将进程杀掉)

glusterd (重新启动进程)

再查看status Online就会正常为Y,数据也会自动同步

如果有服务器重启了,重启后记得启动rpcbind服务(可设置开机自启动),再重启下gluster-server服务

systemctl start rpcbind

systemctl enable rpcbind

/etc/init.d/gluster-server restart

gluster中的1台服务器重装系统:

安装glusterfs-server、建相应目录略

在正常服务器上执行gluster peer status,查看重装服务器的已有gluster UUID

vi /var/lib/glusterd/glusterd.info

UUID=xxxxxx
:wq

重启服务器 (不重启gluster peer status状态不对)

systemctl start rpcbind

systemctl enable rpcbind

/etc/init.d/glusterfs-server restart

gluster volume status (此时Online状态为N)

gluster volume start xxx force (xxx为volume名)

gluster volume status (此时Online状态为Y)

touch /home/ming/a1.txt (在gluster的挂载目录下新建文件)

ls /home/ming2/ (在gluster brick目录下可看到a1.txt)

如果gluster peer status碰到下面报错可通过修改对应服务器的uuid的state 5为3解决

报错:

gluster peer status

State: Sent and Received peer request (Connected)

解决:

vi /var/lib/glusterd/peers/uuid号

State=3
:wq

/etc/init.d/glusterfs-server restart

附:

replica volume为复制卷,类似于RAID 1

stripe volume:条带卷,类似于RAID 0

stripe replica volume:条带复制卷,类似于RAID 10

dispersed volume:冗余卷,类似于RAID 5