【问题标题】:Glusterfs Replace Brick in DispersedGlusterfs 取代分散的砖块
【发布时间】:2021-02-10 04:10:32
【问题描述】:

我有一个分散的 Glusterfs 卷,由 3 个服务器上的 3 个砖组成。最近,其中一台服务器出现硬盘故障并退出集群。我正在尝试更换集群中的这块砖,但我无法让它工作。

首先是版本信息:

$ glusterfsd --version
glusterfs 3.13.2
Repository revision: git://git.gluster.org/glusterfs.git
Copyright (c) 2006-2016 Red Hat, Inc. <https://www.gluster.org/>
GlusterFS comes with ABSOLUTELY NO WARRANTY.
It is licensed to you under your choice of the GNU Lesser
General Public License, version 3 or any later version (LGPLv3
or later), or the GNU General Public License, version 2 (GPLv2),
in all cases as published by the Free Software Foundation.

它在 Ubuntu 18.04 上运行。

这是现有信息:

Volume Name: vol01
Type: Disperse
Volume ID: 061cac4d-1165-4afe-87e0-27b213ea19dc
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x (2 + 1) = 3
Transport-type: tcp
Bricks:
Brick1: srv02:/srv/glusterfs/vol01/brick <-- This is the brick that died
Brick2: srv03:/srv/glusterfs/vol01/brick
Brick3: srv04:/srv/glusterfs/vol01/brick
Options Reconfigured:
nfs.disable: on
transport.address-family: inet

我希望用来自 srv05 的砖替换 srv02 砖,使用以下代码:

gluster volume replace-brick vol01 srv02:/srv/glusterfs/vol01/brick srv05:/srv/glusterfs/vol01/brick commit force

但是,当我(以 root 身份)运行此命令时,出现此错误:

volume replace-brick: failed: Pre Validation failed on srv05. brick: srv02:/srv/glusterfs/vol01/brick does not exist in volume: vol01

据我所知它应该可以工作,srv05 已连接:

# gluster peer status
Number of Peers: 3

Hostname: srv04
Uuid: 5bbd6c69-e0a7-491c-b605-d70cb83ebc72
State: Peer in Cluster (Connected)

Hostname: srv02
Uuid: e4e856ba-61df-45eb-83bb-e2d2e799fc8d
State: Peer Rejected (Disconnected)

Hostname: srv05
Uuid: e7d098c1-7bbd-44e1-931f-034da645c6c6
State: Peer in Cluster (Connected)

如您所见,srv05 已连接且在集群中,srv02 未连接且已断开连接...

XFS 分区上的所有砖块大小相同。 srv05 上的砖是空的。

我做错了什么?如果可能的话,我宁愿不必转储整个 FS 并重建它...

编辑 2019-01-01: 在此处遵循本教程后:https://support.rackspace.com/how-to/recover-from-a-failed-server-in-a-glusterfs-array/ 用新的替换死服务器砖 (srv02)。

服务器和brick被集群识别:

# gluster volume status
Status of volume: vol01
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick srv02:/srv/glusterfs/vol01/brick      N/A       N/A        N       N/A
Brick srv03:/srv/glusterfs/vol01/brick      49152     0          Y       21984
Brick srv04:/srv/glusterfs/vol01/brick      49152     0          Y       16681
Self-heal Daemon on localhost               N/A       N/A        Y       2582
Self-heal Daemon on srv04                   N/A       N/A        Y       16703
Self-heal Daemon on srv03                   N/A       N/A        Y       22006

然而,替代 SRV02 上的砖块没有上线!

经过大量搜索,我在新 srv02 的砖日志中找到了这个:

[2019-01-01 05:50:05.727791] E [MSGID: 138001] [index.c:2349:init] 0-vol01-index: Failed to find parent dir (/srv/glusterfs/vol01/brick/.glusterfs) of index basepath /srv/glusterfs/vol01/brick/.glusterfs/indices. [No such file or directory]

完全不知道如何修复它,因为它是一块空白的砖块,我希望将其带到网上并治愈!

【问题讨论】:

  • 好的,所以我在这里按照本教程进行操作:support.rackspace.com/how-to/… 现在我将服务器重新映射到集群中,但是 srv02 中的砖块无法启动并且 glusterfsd 没有在该服务器上运行......我要检查日志吗?

标签: distributed-computing glusterfs


【解决方案1】:

所以最后我通过砖卷目录中的以下内容让砖上线:

# mkdir .glusterfs
# chmod 600 .glusterfs
# cd .glusterfs
# mkdir indices
# chmod 600 indices
# systemctl restart glusterd

砖上线,修复过程开始于:

# gluster volume heal vol01 full

到目前为止,它似乎运行良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 2014-01-27
    相关资源
    最近更新 更多