Inkonsistente Neuausrichtung einzelner Gluster-Peers

Inkonsistente Neuausrichtung einzelner Gluster-Peers

Ich verfüge über einen Pool aus 5 Gluster-Servern mit einzelnen Bricks für ein Volume, das im verteilten Modus betrieben wird, und dem ich weitere 5 Peers mit einzelnen Bricks in einem anderen Rechenzentrum hinzugefügt habe. Dadurch wird dieser Volume-Modus zu „Verteilt-Verteilt“ mit der Brick-Formel 2 x (3 + 2) = 10.

Nachdem ich den Cluster mit 10 Peers vollständig neu ausbalanciert hatte, bemerkte ich bei einigen Tests, dass einige Dateien im ersten Pool (nennen wir ihn Pool-1) verloren gingen, als alle 5 Peers in Pool-2 vom Cluster getrennt wurden. Meines Wissens sollte dies nicht passieren, da jeder einzelne Pool seinen eigenen vollständigen Datensatz in verteiltem Format haben sollte. Wenn ich falsch liege, korrigieren Sie mich bitte!

Mir ist während der ersten Neugewichtung etwas aufgefallen (ich vermute, dass es damit zusammenhängt, aber ich verfüge nicht über die nötige Gluster-Expertise, um das zu beweisen), dass Knoten Nr. 4 von Pool Nr. 2 in Sekundenschnelle in die „abgeschlossene“ Phase der Neugewichtung eintritt, obwohl jeder andere Knoten mehr als 24 Stunden benötigt, um auch nur den Scan-Teil abzuschließen. Dieser Knoten listet auch genau 2 „gescannte“ Dateien auf, von denen keine neu ausgeglichen, übersprungen oder fehlgeschlagen ist:

                                    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

Beim Durchsehen der Neuausgleichsprotokolle für Pool 2-4 habe ich die folgenden interessanten Meldungen gefunden:

[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

Jeder meiner anderen Knoten beginnt mit einer „Gesamtzahl der Dateien“ gleich 0, und für jede Datei in jedem Unterordner ist eine Neuverteilung mit einer Meldung deutlich zu erkennen:

[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

!value for key=readdir-filter-directories [Invalid argument]Auch in keinem anderen Knoten erhalte ich eine der Nachrichten.

Wenn ich die Summe der Größe aller Dateien im Datenverzeichnis des Gluster-Mounts überprüfe (verstreut, also keine vollständige Darstellung der Daten), kann ich sehen, dass es eindeutig eine erhebliche Menge an Material enthält:

[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

Könnten die Fehler, die ich im Rebalance-Protokoll sehe, darauf hinweisen, dass in Pool 1 Dateien fehlen, wenn Pool 2 offline genommen wird? Könnte es sich um ein völlig anderes Problem handeln? Habe ich das alles falsch verstanden?

Ich entschuldige mich für die leichte Unbestimmtheit dieser Frage und danke jedem, der mir einen Einblick geben kann.

verwandte Informationen