Tengo un grupo de 5 servidores Gluster con bloques individuales para un volumen que opera en modo Disperso, al cual le agregué 5 pares adicionales con bloques individuales en otro centro de datos, haciendo que este modo de volumen se convierta en "Distribuido-Disperso" con una fórmula de bloque de 2 x (3 + 2) = 10.
Después de reequilibrar completamente el clúster de 10 pares, noté durante algunas pruebas que algunos archivos desaparecieron en el primer grupo (llamémoslo grupo-1) cuando los 5 pares del grupo-2 se desconectaron del clúster. Según tengo entendido, esto no debería estar sucediendo, ya que cada grupo separado debería tener su propio conjunto completo de datos en formato disperso. Si me equivoco, ¡corrígeme!
Algo que noté durante el reequilibrio inicial (que supongo que está relacionado, pero no tengo la experiencia de Gluster para demostrarlo) es que el nodo 4 del grupo 2 ingresa a la etapa "completada" de reequilibrio en cuestión de segundos, aunque cada El otro nodo requiere más de 24 horas para completar incluso la parte de escaneo. Este nodo también enumera exactamente 2 archivos "escaneados", sin que ninguno haya sido reequilibrado, omitido o fallado:
Node Rebalanced-files size scanned failures skipped status run time in h:m:s
--------- ----------- ----------- ----------- ----------- ----------- ------------ --------------
localhost 159 231.4MB 269931 0 0 in progress 3:10:26
pool-1-2 0 0Bytes 0 0 0 in progress 3:10:26
pool-1-3 0 0Bytes 0 0 0 in progress 3:10:25
pool-1-4 0 0Bytes 0 0 0 in progress 3:10:26
pool-1-5 0 0Bytes 0 0 0 in progress 3:10:26
pool-2-1 0 0Bytes 0 0 0 in progress 3:10:26
pool-2-2 0 0Bytes 0 0 0 in progress 3:10:26
pool-2-3 0 0Bytes 0 0 0 in progress 3:10:26
pool-2-4 0 0Bytes 2 0 0 completed 0:00:18
pool-2-5 0 0Bytes 0 0 0 in progress 3:10:26
Estimated time left for rebalance to complete : 15:08:05
volume rebalance: dev-volume: success
Profundizando en los registros de reequilibrio en el grupo-2-4, encontré los siguientes mensajes interesantes:
[2020-08-20 21:24:20.623006] I [MSGID: 109081] [dht-common.c:4209:dht_setxattr] 0-dev-volume-dht: fixing the layout of /
...
[2020-08-20 21:24:29.720716] I [MSGID: 0] [dht-rebalance.c:3737:gf_defrag_total_file_cnt] 0-dev-volume-dht: Total number of files = 1684196
[2020-08-20 21:24:29.720725] E [MSGID: 0] [dht-rebalance.c:3900:gf_defrag_start_crawl] 0-dev-volume-dht: Failed to get the total number of files. Unable to estimate time to complete rebalance.
...
[2020-08-20 21:24:29.725724] I [dht-rebalance.c:2745:gf_defrag_process_dir] 0-dev-volume-dht: migrate data called on /
[2020-08-20 21:24:29.725828] W [dict.c:416:dict_set] (-->/usr/lib64/glusterfs/3.10.1/xlator/cluster/distribute.so(+0x42f51) [0x7fed71172f51] -->/lib64/libglusterfs.so.0(dict_set_int32+0x2b) [0x7fed78af14eb] -->/lib64/libglusterfs.so.0(dict_set+0xe6) [0x7fed78aefc56] ) 0-dict: !this || !value for key=readdir-filter-directories [Invalid argument]
[2020-08-20 21:24:29.725845] E [MSGID: 109003] [dht-common.c:4917:dht_opendir] 0-dev-volume-dht: Failed to set dictionary value :key = readdir-filter-directories, ret:-1
[2020-08-20 21:24:32.718807] I [dht-rebalance.c:2959:gf_defrag_process_dir] 0-dev-volume-dht: Migration operation on dir / took 2.99 secs
[2020-08-20 21:24:32.718898] W [dict.c:416:dict_set] (-->/usr/lib64/glusterfs/3.10.1/xlator/cluster/distribute.so(+0x42f51) [0x7fed71172f51] -->/lib64/libglusterfs.so.0(dict_set_int32+0x2b) [0x7fed78af14eb] -->/lib64/libglusterfs.so.0(dict_set+0xe6) [0x7fed78aefc56] ) 0-dict: !this || !value for key=readdir-filter-directories [Invalid argument]
[2020-08-20 21:24:32.723301] I [dht-rebalance.c:3994:gf_defrag_start_crawl] 0-DHT: crawling file-system completed
...
[2020-08-20 21:24:32.723730] I [MSGID: 109028] [dht-rebalance.c:4277:gf_defrag_status_get] 0-dev-volume-dht: Files migrated: 0, size: 0, lookups: 2, failures: 0, skipped: 0
[2020-08-20 21:24:32.723894] W [glusterfsd.c:1329:cleanup_and_exit] (-->/lib64/libpthread.so.0(+0x7dc5) [0x7fed77958dc5] -->/usr/sbin/glusterfs(glusterfs_sigwaiter+0xe5) [0x556351afaf85] -->/usr/sbin/glusterfs(cleanup_and_exit+0x6b) [0x556351afadfb] ) 0-: received signum (15), shutting down
Cada uno de mis otros nodos comienza con un "número total de archivos" igual a 0, y se puede ver claramente que cada archivo en cada subcarpeta se reequilibra con un mensaje:
[2020-08-12 19:56:49.614327] I [dht-rebalance.c:2745:gf_defrag_process_dir] 0-dev-volume-dht: migrate data called on /data/jobs
[2020-08-12 19:56:49.820702] I [MSGID: 109081] [dht-common.c:4209:dht_setxattr] 0-dev-volume-dht: fixing the layout of /data/jobs/201501
[2020-08-12 19:56:50.294380] I [dht-rebalance.c:2745:gf_defrag_process_dir] 0-dev-volume-dht: migrate data called on /data/jobs/201501
[2020-08-12 19:56:50.518000] I [MSGID: 109081] [dht-common.c:4209:dht_setxattr] 0-dev-volume-dht: fixing the layout of /data/jobs/201501/00
[2020-08-12 19:56:50.863319] I [dht-rebalance.c:2745:gf_defrag_process_dir] 0-dev-volume-dht: migrate data called on /data/jobs/201501/00
[2020-08-12 19:56:51.116676] I [MSGID: 109081] [dht-common.c:4209:dht_setxattr] 0-dev-volume-dht: fixing the layout of /data/jobs/201501/02
Tampoco recibo ninguno de los !value for key=readdir-filter-directories [Invalid argument]
mensajes en ningún otro nodo.
Si verifico la suma del tamaño de todos los archivos dentro del directorio de datos del montaje gluster (dispersos, por lo que no es una representación completa de los datos), puedo ver que claramente tiene una cantidad significativa de cosas:
[root@pool-2-4 dev-volume]# du -csh *
8.0K backups
158G data
25M etc
8.0K lost+found
38G static
783M bin
196G total
¿Los errores que veo en el registro de reequilibrio podrían ser indicativos del problema de que al grupo 1 le faltan archivos cuando el grupo 2 se desconecta? ¿Podría ser un problema completamente aparte? ¿Es toda mi comprensión de esto incorrecta?
Pido disculpas por la ligera vaguedad de esta pregunta y ofrezco mi gratitud a cualquiera que pueda ofrecer alguna idea.