單一 Gluster 對等點重新平衡不一致

單一 Gluster 對等點重新平衡不一致

我有一個由5 台Gluster 伺服器組成的池,每個區塊都具有在分散模式下運行的捲,我在另一個資料中心添加了額外的5 個具有單獨區塊的對等點,使該卷模式成為“分散式分散”,區塊公式為2 x (3 + 2) = 10。

在完全重新平衡10 個對等點的集群後,我注意到在一些測試中,當pool-2 中的所有5 個對等點與集群斷開連接時,第一個池(我們稱之為pool -1)上的一些檔案遺失了。據我了解,這種情況不應該發生,因為每個單獨的池都應該有自己的分散格式的完整資料集。如果我錯了,請糾正我!

我在最初的重新平衡過程中註意到的一件事(我假設是相關的,但沒有Gluster 專業知識來證明)是池#2 的節點#4 在幾秒鐘內進入重新平衡的「完成」階段,儘管每個其他節點甚至需要24小時以上才能完成掃描部分。該節點還列出了 2 個「已掃描」文件,沒有重新平衡、跳過或失敗的文件:

                                    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

深入研究 pool-2-4 上的重新平衡日誌,我發現了以下有趣的消息:

[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

我的其他每個節點都以等於 0 的“文件總數”開始,並且可以清楚地看到每個子資料夾中的每個文件正在重新平衡,並顯示一條訊息:

[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]我也沒有在任何其他節點收到任何訊息。

如果我檢查 gluster 安裝資料目錄中所有檔案的大小總和(分散,因此不能完整表示資料),我可以看到它顯然有大量內容:

[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

我在重新平衡日誌中看到的錯誤是否表示池 2 離線時池 1 遺失檔案的問題?這可能是個完全獨立的問題嗎?我對此的全部理解是錯誤的嗎?

我對這個問題的輕微模糊表示歉意,並向任何能夠提供一些見解的人表示感謝。

相關內容