Gluster FS。重建复制卷

Gluster FS。重建复制卷

我正在玩 GlusterFS。现在我很好奇如何完全重建复制卷。

因此我从 server1 和 server2 节点创建了 1 个复制卷:

root@server1:~# gluster volume create replicated replica 2 transport tcp server1:/mnt/repl1 server2:/mnt/repl2 force

root@server1:~# gluster volume start replicated
volume start: replicated: success

并将其安装到客户端节点:

root@client:~# mount.glusterfs server1:/distributed /mnt/distrib/

现在我正在尝试测试高可用性。所以我关闭了 server1 并尝试将某些内容写入客户端挂载点:

root@client:/mnt/replica# ls -lh
total 106M
-rw-r--r-- 1 root root   19 Jul 12  2015 1.txt
-rw-r--r-- 1 root root 1.3K Jul 12  2015 2.txt
-rw-r--r-- 1 root root 106M Jul 12  2015 testfile1

到目前为止一切顺利。所有文件也都在 server2 上:

root@server2:/mnt/repl2# ls -lh
total 106M
-rw-r--r-- 2 root root   19 Jul 12 03:52 1.txt
-rw-r--r-- 2 root root 1.3K Jul 12 03:54 2.txt
-rw-r--r-- 2 root root 106M Jul 12 03:53 testfile1
root@server2:/mnt/repl2# 

在我的 server1 上线之后,我只能看到其中没有数据的文件骨架:

root@server1:/mnt/repl1# ls -lh
total 4.0K
-rw-r--r-- 2 root root    0 Jul 12 12:21 1.txt
-rw-r--r-- 2 root root    0 Jul 12 03:54 2.txt
-rw-r--r-- 2 root root    0 Jul 12 12:21 testfile1

仅当从客户端挂载点访问文件后(使用 cat 或类似方法),信息才会被拉入 server2 文件中:

root@client:/mnt/replica# cat 2.txt
GlusterFS — blalabla..

root@server1:/mnt/repl1# ls -lh
total 4.0K
-rw-r--r-- 2 root root    0 Jul 12 12:21 1.txt
-rw-r--r-- 2 root root 1.3K Jul 12 03:54 2.txt
-rw-r--r-- 2 root root    0 Jul 12 12:21 testfile1
root@server1:/mnt/repl1# 

是否有可能在先前发生故障的服务器上自动重建所有文件,而无需从客户端挂载点访问它们?

答案1

stat()- 从客户端挂载点复制文件是 Gluster 知道文件需要重新复制的方式,所以基本上你的问题的答案是“否”。

但解决方案只是针对stat()每个文件 - 这实际上比听起来更容易,只需从客户端运行它即可:

find /mnt/repl1 -exec stat {} \;

这是有记录的这里

相关内容