首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Glusterfs取代砖块分散

Glusterfs取代砖块分散
EN

Stack Overflow用户
提问于 2019-01-01 01:20:56
回答 1查看 2.3K关注 0票数 0

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

首先是版本信息:

代码语言:javascript
复制
$ 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.

它在Ubuntu18.04上运行。

以下是现有的信息:

代码语言:javascript
复制
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

我希望使用以下方法将srv02砖替换为来自srv05的砖块:

代码语言:javascript
复制
gluster volume replace-brick vol01 srv02:/srv/glusterfs/vol01/brick srv05:/srv/glusterfs/vol01/brick commit force

但是,当我运行这个命令(作为root用户)时,我会得到以下错误:

代码语言:javascript
复制
volume replace-brick: failed: Pre Validation failed on srv05. brick: srv02:/srv/glusterfs/vol01/brick does not exist in volume: vol01

据我所知,srv05是连接的:

代码语言:javascript
复制
# 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)。

集群可以识别服务器和块:

代码语言:javascript
复制
# 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上的砖块日志中找到了以下内容:

代码语言:javascript
复制
[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]

根本不知道如何修复这一块空白砖,我期待着带来的在线和愈合!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-01 15:43:42

因此,最后,我在砖块卷目录中得到了以下内容:

代码语言:javascript
复制
# mkdir .glusterfs
# chmod 600 .glusterfs
# cd .glusterfs
# mkdir indices
# chmod 600 indices
# systemctl restart glusterd

砖块上线,愈合过程开始于:

代码语言:javascript
复制
# gluster volume heal vol01 full

到目前为止,它还能正常工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53992485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档