glusterfs: восстановить том после сбоя узлов

У меня очень странный кластер: набор вычислительных узлов, которые используют заголовочный узел nfs в качестве корня файловой системы. Каждый узел имеет независимый каталог на головном узле, который является корневой файловой системой для узла.

Кроме того, некоторые узлы имеют диски, а некоторые нет. Если у них есть диски, все диски находятся в массиве RAID 6. Рейд массив установлен на /exports каталог каждого узла. Выглядит так:

On head-node:
/nodes/cn-0        ---> / for compute node 0
          `/export ---> mount /dev/md0 /export
/nodes/cn-1        ---> / for compute node 1
/nodes/cn-3        ---> / for compute node 2
          `/export ---> mount /dev/md0 /export

Пространство в массивах raid содержит блоки для томов glusterfs. Это огромное пространство было разделено всеми узлами как хранилища данных пользователя (временное и постоянное).

Все работало просто отлично, пока жесткий диск, содержащий все корневые файловые системы (/node) узлов, не вышел из строя на head-node.

Я перестроил файловые системы для каждого узла, и они работают нормально. Они устанавливают рейдовые массивы в нужном месте. Я вижу кирпичи для томов glusterfs. Но я изо всех сил пытаюсь вернуть объемы к работе.

Вот что я сделал:

(1) Запустите glusterd на узлах

(2) Peer от головного узла все вычислительные узлы:

root@headnode: for i in 0 1 2 3 ; do gluster peer probe cn-$i ; done 
peer probe: success. Host cn-0 port 24007 already in peer list
peer probe: success. Host cn-1 port 24007 already in peer list
peer probe: success. Host cn-2 port 24007 already in peer list
peer probe: success. Host cn-3 port 24007 already in peer list

(3) Головной узел одноранговой сети из всех вычислительных узлов:

root@headnode: for i in 0 1 2 3; do ssh cn-$i 'gluster peer probe headnode'; done
peer probe: success. Host headnode port 24007 already in peer list
peer probe: success. Host headnode port 24007 already in peer list
peer probe: success. Host headnode port 24007 already in peer list
peer probe: success. Host headnode port 24007 already in peer list

(4) Проверьте состояние пула кластеров:

gluster pool list
UUID                                    Hostname        State
XXXXXXXX-xxxx-xxxx-xxxx-xxxxxxxxxxxx    cn-3            Connected 
XXXXXXXX-xxxx-xxxx-xxxx-xxxxxxxxxxxx    cn-2            Connected 
XXXXXXXX-xxxx-xxxx-xxxx-xxxxxxxxxxxx    cn-1            Connected 
XXXXXXXX-xxxx-xxxx-xxxx-xxxxxxxxxxxx    cn-0            Connected 
XXXXXXXX-xxxx-xxxx-xxxx-xxxxxxxxxxxx    localhost       Connected 

(5) Проверьте объем информации

root@headnode: gluster volume info

Volume Name: gv0
Type: Distribute
Volume ID: XXXXXXXX-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Status: Started
Number of Bricks: 3
Transport-type: tcp
Bricks:
Brick1: headnode:/exports/users
Brick2: cn-0:/exports/brick1
Brick3: cn-1:/exports/brick1
Brick4: cn-2:/exports/brick1
Brick5: cn-3:/exports/brick1
Options Reconfigured:
performance.readdir-ahead: on

Однако, это не восстанавливает объем:

root@headnode: gluster volume status gv0
Status of volume: gv0
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick headnode:/exports/users               N/A       N/A        N       N/A  
NFS Server on localhost                     N/A       N/A        N       N/A  

Task Status of Volume gv0
------------------------------------------------------------------------------
There are no active volume tasks

Все данные доступны на RAID-массивах. Так что это должен быть способ вернуть весь том (ы), верно?

Если я пытаюсь смонтировать том, он возвращает ошибку:

root@headnode: mount -t glusterfs headnode:/gv0 /mnt
WARNING: getfattr not found, certain checks will be skipped..
Mount failed. Please check the log file for more details.

Вот /var/log/mnt.log

[2018-01-17 22:08:29.470362] I [MSGID: 100030] [glusterfsd.c:2318:main] 0-/usr/sbin/glusterfs: Started running /usr/sbin/glusterfs version 3.7.6 (args: /usr/sbin/glusterfs --volfile-server=headnode --volfile-id=/gv0 /mnt)
[2018-01-17 22:08:29.561784] I [MSGID: 101190] [event-epoll.c:632:event_dispatch_epoll_worker] 0-epoll: Started thread with index 1
[2018-01-17 22:08:29.599777] I [MSGID: 114020] [client.c:2118:notify] 0-gv0-client-0: parent translators are ready, attempting connect on transport
[2018-01-17 22:08:29.601841] I [MSGID: 101190] [event-epoll.c:632:event_dispatch_epoll_worker] 0-epoll: Started thread with index 2
[2018-01-17 22:08:29.608559] I [MSGID: 114020] [client.c:2118:notify] 0-gv0-client-1: parent translators are ready, attempting connect on transport
[2018-01-17 22:08:29.615844] E [MSGID: 114058] [client-handshake.c:1524:client_query_portmap_cbk] 0-gv0-client-0: failed to get the port number for remote subvolume. Please run 'gluster volume status' on server to see if brick process is running.
[2018-01-17 22:08:29.617581] I [MSGID: 114018] [client.c:2042:client_rpc_notify] 0-gv0-client-0: disconnected from gv0-client-0. Client process will keep trying to connect to glusterd until brick's port is available
[2018-01-17 22:08:29.618400] I [MSGID: 114020] [client.c:2118:notify] 0-gv0-client-2: parent translators are ready, attempting connect on transport
Final graph:
+------------------------------------------------------------------------------+
  1: volume gv0-client-0
  2:     type protocol/client
......
......
......
+------------------------------------------------------------------------------+
[2018-01-17 22:08:29.635956] E [MSGID: 114058] [client-handshake.c:1524:client_query_portmap_cbk] 0-gv0-client-1: failed to get the port number for remote subvolume. Please run 'gluster volume status' on server to see if brick process is running.
[2018-01-17 22:08:29.645294] I [MSGID: 114018] [client.c:2042:client_rpc_notify] 0-gv0-client-1: disconnected from gv0-client-1. Client process will keep trying to connect to glusterd until brick's port is available
[2018-01-17 22:08:31.162383] E [MSGID: 114058] [client-handshake.c:1524:client_query_portmap_cbk] 0-gv0-client-2: failed to get the port number for remote subvolume. Please run 'gluster volume status' on server to see if brick process is running.
[2018-01-17 22:08:31.191709] I [MSGID: 114018] [client.c:2042:client_rpc_notify] 0-gv0-client-2: disconnected from gv0-client-2. Client process will keep trying to connect to glusterd until brick's port is available
[2018-01-17 22:08:31.326902] I [fuse-bridge.c:5137:fuse_graph_setup] 0-fuse: switched to graph 0
[2018-01-17 22:08:31.328058] I [fuse-bridge.c:4030:fuse_init] 0-glusterfs-fuse: FUSE inited with protocol versions: glusterfs 7.22 kernel 7.23
[2018-01-17 22:08:31.329467] W [fuse-bridge.c:758:fuse_attr_cbk] 0-glusterfs-fuse: 2: LOOKUP() / => -1 (Transport endpoint is not connected)
[2018-01-17 22:08:31.437768] I [fuse-bridge.c:4984:fuse_thread_proc] 0-fuse: unmounting /home
[2018-01-17 22:08:31.499027] W [glusterfsd.c:1236:cleanup_and_exit] (-->/lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba) [0x7f7da5a446ba] -->/usr/sbin/glusterfs(glusterfs_sigwaiter+0xdd) [0x40810d] -->/usr/sbin/glusterfs(cleanup_and_exit+0x4d) [0x407f8d] ) 0-: received signum (15), shutting down
[2018-01-17 22:08:31.525897] I [fuse-bridge.c:5683:fini] 0-fuse: Unmounting '/mnt'.

ОБНОВЛЕНИЕ Я смог смонтировать том после команды: gluster volume start gv0 force но это не решает проблему. Та же ошибка появляется после перезагрузки снова и снова.

Любые идеи, как заставить Glusterfs работать снова?

0 ответов

Другие вопросы по тегам