Glusterfs заменить кирпич в рассеянном - PullRequest
0 голосов
/ 01 января 2019

У меня есть том Dispersed 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

Я хочу заменить кирпич srv02 кирпичом из srv05, используя следующее:

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) на новый.

Сервер и кирпич распознаются кластером:

# 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]

Совершенно не уверен, как исправить это, так как это пустой кирпич, который я хочу вывести онлайн и вылечить!

1 Ответ

0 голосов
/ 01 января 2019

Итак, в конце я получил кирпич для подключения к сети в следующем каталоге:

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

Кирпич подключился к сети, и процесс лечения был запущен с:

# gluster volume heal vol01 full

Пока что все работает нормально.

...