디스크 중 하나가 zpool에서 손상되어 디스크를 교체하고 재동기화를 시작한 후 zfs status -v
출력에 오류 메시지가 나타납니다.
pool: backup
state: ONLINE
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scan: resilver in progress since Thu Oct 17 15:41:38 2019
40.0G scanned out of 2.59T at 24.0M/s, 30h58m to go
6.67G resilvered, 1.51% done
config:
NAME STATE READ WRITE CKSUM
backup ONLINE 0 0 1
raidz1-0 ONLINE 0 0 2
ata-ST3000DM007-1WY10G_WFN0GA7C ONLINE 0 0 0
ata-ST3000DM007-1WY10G_WFN0GA32 ONLINE 0 0 0
ata-ST3000DM007-1WY10G_WFN0G8VM ONLINE 0 0 0
ata-ST3000DM007-1WY10G_WFN0G8MJ ONLINE 0 0 0
sdb ONLINE 0 0 0 (resilvering)
ata-ST3000DM007-1WY10G_WFN0G7L6 ONLINE 0 0 0
errors: Permanent errors have been detected in the following files:
<0xb73>:<0x42ced>
poolname:filename<or>inode
그래서 구글링을 해보니 내 오류가 실제로 가리키는 것과 같은 두 개의 값만 찾았지만 16진수 같은 값은 아니었습니다. 이에 대해 언급된 조언은 수영장을 문지르라는 것입니다. 재동기화가 완료되자마자 이 작업을 수행하겠지만 실제로 도움이 될까요? 풀 이름이 제대로 표시되지 않는 이유는 무엇입니까? 언급되지 않은 경우 파일이 삭제되었을 수 있습니다. 파일 이름은 알지만 풀 이름은 왜 표시되지 않습니까?
zfs CentOS 저장소의 CentOS 7.6.1810, zfs 버전 0.7.13에서 실행됩니다.
답변1
이는 여러 가지 이유로 인해 발생할 수 있습니다. 믿거나 말거나, 메모리 오류로 인해 이 문제가 발생할 수 있습니다(잘못된 체크섬 발생). 파일은 이전에 삭제된 데이터 세트에 있을 수 있습니다. 또 다른 장애가 발생한 디스크가 있을 수 있습니다. RAID 컨트롤러가 손상되었을 수 있습니다.
재동기화가 완료되면 반드시 정리 작업을 실행해야 합니다.
각 오류는 단순히 특정 시점에 오류가 발생했음을 나타냅니다. 모든 오류가 시스템에 반드시 존재하는 것은 아닙니다. 일반적으로 이런 경우가 있습니다. 일부 일시적인 중단으로 인해 데이터가 손상될 수 있으며 중단이 끝난 후 자동으로 복구됩니다.풀을 완전히 정리하면 풀의 모든 활성 블록을 검사할 수 있으므로 정리가 완료될 때마다 오류 로그가 재설정됩니다.오류가 더 이상 존재하지 않는다고 확신하고 정리가 완료될 때까지 기다리지 않으려면 zpool online 명령을 사용하여 풀의 모든 오류를 재설정하십시오.
https://docs.oracle.com/cd/E19253-01/819-5461/gbbwl/index.html
따라서 청소 후 오류가 사라지면 해당 오류는 오래되어 더 이상 활성화되지 않는 것입니다. 문제가 지속되면 주의가 필요한 문제가 있는 것입니다(일종의 하드웨어 오류일 수 있음).
우리 회사에는 smartOS에서 ZFS를 실행하는 약 9000개의 서버가 있습니다. 이런 일이 발생하는 경우는 거의 없습니다. 그러나 오류가 발생한 디스크를 교체하거나 풀을 정리하여 문제를 해결할 수 없는 경우 일반적으로 케이스/RAID 컨트롤러/ 마더보드 RMA 처리를 기다리십시오.