我们最近在一个已经正常运行半年左右的一个gluster分布式文件系统集群中发现一个Brick掉线了。
Volume Name: web-volume
Type: Replicate
Volume ID: cd9bf5ad-1b5f-404b-8279-6de12b8838ec
Status: Started
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: 10.48.83.204:/data/gfs
Brick2: 10.48.83.200:/data/gfs
Brick3: 10.48.83.196:/data/gfs
Status of volume: web-volume
Gluster process Port Online Pid
——————————————————————————
Brick 10.48.83.204:/data/gfs 49152 Y 1791
Brick 10.48.83.200:/data/gfs 49152 Y 17406
Brick 10.48.83.196:/data/gfs N/A N N/A
这个节点是SSD盘,由于SSD极其个别会出现IO故障导致。我们决定将该节点下线,更换新的SSD。更换过程中我们的GFS文件系统内容数据一点也不收影响。这归功于GlusterFS,这不是我们今天主要想表达的。
我们今天主要是谈论如何将新的SSD节点brick重新加入集群。
1.将节点196的/data/挂载
2.我们需要首先得到GFS的文件扩展属性(在正常节点做),如下:
[root@node1.sklinux.com ~]# getfattr -d -m ‘.*’ /data/gfs
getfattr: Removing leading ‘/’ from absolute path names
# file: data/gfs
trusted.afr.web-volume-client-0=0sAAAAAAAAAAAAAAAA
trusted.afr.web-volume-client-1=0sAAAAAAAAAAAAAAAA
trusted.afr.web-volume-client-2=0sAAAAAAAAAAAAAAAA
trusted.gfid=0sAAAAAAAAAAAAAAAAAAAAAQ== ;得到trusted.gfid的值
trusted.glusterfs.dht=0sAAAAAQAAAAAAAAAA/////w==
trusted.glusterfs.volume-id=0szZv1rRtfQEuCeW3hK4g47A== ;得到 trusted.glusterfs.volume-id的值
3.设置196的gfs文件夹扩展属性,如下:
setfattr -n trusted.glusterfs.volume-id -v 0szZv1rRtfQEuCeW3hK4g47A== /data/gfs
setfattr -n trusted.gfid -v 0sAAAAAAAAAAAAAAAAAAAAAQ== /data/gfs
4.重启GFS服务{/etc/init.d/glusterd restart}
5.@196执行getfattr -d -m ‘.*’ /data/gfs;加入完成!
数据会像Raid1一样同步过来,如果你的集群是条带的,也是一样。