网站搜索

如何在 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 的本系列。如果您对自我修复和重新平衡功能有疑问,请随时在此发表评论。