분산 모드에서 작동하는 볼륨에 대해 개별 브릭이 있는 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에 파일이 누락되는 문제를 나타낼 수 있습니까? 완전히 별개의 문제일 수도 있나요? 이것에 대한 나의 전체 이해가 잘못 되었습니까?
이 질문이 다소 모호한 점에 대해 사과드리며, 통찰력을 제공해 주실 수 있는 모든 분들께 감사의 말씀을 드립니다.