如何在 Gluster 文件系统中执行自我修复和重新平衡操作 - 第 2 部分
在我之前的文章“GlusterFS(文件系统)和安装简介 - 第 1 部分”中,只是对文件系统及其优点的简要概述,描述了一些基本命令。值得一提的是本文中的两个重要特性,自我修复和重新平衡,如果没有这两个特性,对GlusterFS的解释就无从谈起。没有用。让我们熟悉一下术语自我修复和重新平衡。
复制卷上的自我修复是什么意思?
此功能可用于复制卷。假设我们有一个复制卷 [最小副本数 2]。假设由于某些故障,副本块中的一个或多个块出现故障一段时间,并且用户碰巧从挂载点删除了一个文件,该文件只会在在线块上受到影响。
当离线砖稍后上线时,有必要将该文件从该砖中删除,即必须在副本砖之间进行同步,称为修复。在离线程序块上创建/修改文件也是如此。 GlusterFS 有一个内置的自我修复守护进程,可以在砖块上线时处理这些情况。
重新平衡是什么意思?
考虑只有一块砖的分布式卷。例如,我们通过挂载点在卷上创建 10 个文件。现在,所有文件都驻留在同一块砖上,因为卷中只有砖块。在向卷中添加一块砖时,我们可能必须重新平衡两块砖之间的文件总数。如果在 GlusterFS 中扩展或缩小卷,则需要在卷中包含的各个块之间重新平衡数据。
在 GlusterFS 中执行自我修复
1. 使用以下命令创建复制卷。
gluster volume create vol replica 2 192.168.1.16:/home/a 192.168.1.16:/home/b
注意:在同一服务器上创建包含块的复制卷可能会引发警告,您必须继续忽略该警告。
2.启动并安装卷。
gluster volume start vol
mount -t glusterfs 192.168.1.16:/vol /mnt/
3. 从挂载点创建文件。
touch /mnt/foo
4. 在两个复制块上验证相同的情况。
ls /home/a/
foo
ls /home/b/
foo
5. 现在,通过使用从卷状态信息获取的 PID 杀死相应的 glusterfs 守护进程,将其中一个块发送到脱机状态。
gluster volume status vol
样本输出
Status of volume: vol
Gluster process Port Online Pid
------------------------------------------------------------------------------
Brick 192.168.1.16:/home/a 49152 Y 3799
Brick 192.168.1.16:/home/b 49153 Y 3810
NFS Server on localhost 2049 Y 3824
Self-heal Daemon on localhost N/A Y 3829
注意:查看服务器上是否存在自我修复守护进程。
kill 3810
gluster volume status vol
样本输出
Status of volume: vol
Gluster process Port Online Pid
------------------------------------------------------------------------------
Brick 192.168.1.16:/home/a 49152 Y 3799
Brick 192.168.1.16:/home/b N/A N N/A
NFS Server on localhost 2049 Y 3824
Self-heal Daemon on localhost N/A Y 3829
现在第二块砖已经离线了。
6. 从挂载点删除文件foo并检查brick的内容。
rm -f /mnt/foo
ls /home/a
ls /home/b
foo
您会看到 foo 仍然存在于第二块砖中。
7. 现在让砖块恢复在线状态。
gluster volume start vol force
gluster volume status vol
样本输出
Status of volume: vol
Gluster process Port Online Pid
------------------------------------------------------------------------------
Brick 192.168.1.16:/home/a 49152 Y 3799
Brick 192.168.1.16:/home/b 49153 Y 4110
NFS Server on localhost 2049 Y 4122
Self-heal Daemon on localhost N/A Y 4129
现在砖块上线了。
8.检查砖块的内容。
ls /home/a/
ls /home/b/
文件已被自我修复守护进程从第二块砖中删除。
注意:如果文件较大,自我修复操作可能需要一段时间才能成功完成。您可以使用以下命令检查修复状态。
gluster volume heal vol info
在 GlusterFS 中执行重新平衡
1. 创建分布式卷。
gluster create volume distribute 192.168.1.16:/home/c
2.启动并安装卷。
gluster volume start distribute
mount -t glusterfs 192.168.1.16:/distribute /mnt/
3. 创建 10 个文件。
touch /mnt/file{1..10}
ls /mnt/
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9
ls /home/c
file1 file10 file2 file3 file4 file5 file6 file7 file8 file9
4.向卷中添加另一个砖块分布。
gluster volume add-brick distribute 192.168.1.16:/home/d
ls /home/d
5.重新平衡。
gluster volume rebalance distribute start
volume rebalance: distribute: success: Starting rebalance on volume distribute has been successful.
6.检查内容。
ls /home/c
file1 file2 file5 file6 file8
ls /home/d
file10 file3 file4 file7 file9
文件已重新平衡。
注意:您可以通过发出以下命令来检查重新平衡状态。
gluster volume rebalance distribute status
样本输出
Node Rebalanced-files size scanned failures skipped status run time in secs
--------- ----------- --------- -------- --------- ------- -------- -----------------
localhost 5 0Bytes 15 0 0 completed 1.00
volume rebalance: distribute: success:
我计划以此结束关于 GlusterFS 的本系列。如果您对自我修复和重新平衡功能有疑问,请随时在此发表评论。