我搭建了一个glusterfs集群,类型是条带复制卷,有4台服务器,如下图所示:
Volume Name: test-volume
Type: Striped-Replicate
Volume ID: bdb596e6-a7d2-44a4-8791-1b4fdc57469c
Status: Started
Number of Bricks: 1 x 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: 10.90.245.18:/exp1
Brick2: 10.90.245.35:/exp2
Brick3: 10.90.245.36:/exp3
Brick4: 10.90.245.37:/exp4
我从客户端挂载它,同时将一个 100G 的文件上传到测试卷。服务器上的每个文件应该是 50G。当我将数据上传到集群时,我关闭了集群的一台服务器。当客户端完成文件上传后,启动服务器并启动服务 glusterd。然后 gluster 卷修复信息如下:
root@alyrokif:/exp1# gluster volume heal test-volume info
Gathering Heal info on volume test-volume has been successful
Brick 10.90.245.18:/exp1
Number of entries: 0
Brick 10.90.245.35:/exp2
Number of entries: 0
Brick 10.90.245.36:/exp3
Number of entries: 0
Brick 10.90.245.37:/exp4
Number of entries: 0
并在重新启动的服务器中存储目录如下:
root@xetvmcjg:/exp2# ll -h
total 742M
drwxr-xr-x 3 root root 4.0K Mar 28 16:37 ./
drwxr-xr-x 24 root root 4.0K Mar 27 16:30 ../
drw------- 72 root root 4.0K Mar 28 16:36 .glusterfs/
-rw-r--r-- 2 root root 50G Mar 28 16:37 testfile
其他 3 台服务器有 50G。但重启后的服务器只有 742MB。那么我该如何将 742MB 变成 50G。
答案1
我假设你正在使用 Gluster 3.3
Gluster 会主动进行自我修复,但可能需要提醒它注意这一点。这可以通过从客户端访问文件来触发,这应该会导致它(在 10 分钟内)注意到同步不完整并开始修复。
您也可以强制治疗:
gluster volume heal testvol
并强制它修复卷上的所有内容,无论是否需要这样做(这可能需要极其如果你有很多文件的话,则需要很长时间)
gluster volume heal testvol full
您已经找到了跟踪修复进度的命令,尽管这也反映在 gluster 日志文件中。