한 번은 4개의 장치가 있는 새로운 zfs raidz 풀로 데이터를 이동하는 상황에 직면했습니다. 그 중 일부는 마이그레이션을 용이하게 하기 위한 가상 장치였습니다. 시스템이 장치 간에 완전히 정지되어 파일 기반 장치를 물리적 장치로 대체합니다.
시스템은 SysRq에 응답하지도 않았고 물리적으로 재설정해야 했습니다. 다시 온라인 상태가 되었을 때 zfs는 장치의 2/4만이 온라인 상태임을 확인하고 재동기화를 시작했으며 많은 오류를 보고했습니다. 이 작업을 중지하는 방법을 모르겠습니다. 풀이 마운트 해제되어도 백그라운드에서 계속 실행됩니다.
분실한 장치를 온라인에 연결했는데 완전히 문제가 없었지만 많은 오류가 보고되었습니다.
이는 재동기화 중 장치 손실로 인해 zfs가 데이터를 손상했다는 의미입니까? 아니면 원래 장치가 있으므로 이제 올바르게 다시 동기화됩니까?
2개의 장치로만 재동기화하는 경우 다음과 같이 sda3에서 재동기화됩니다.
NAME STATE READ WRITE CKSUM
zfs_raid DEGRADED 0 0 38.5K
raidz1-0 DEGRADED 0 0 129K
sda3 ONLINE 0 0 0
sdc2 ONLINE 0 0 0
replacing-2 DEGRADED 0 0 3
/zfs_jbod2/zfs_raid/zfs.1 OFFLINE 0 0 0
sdb1 ONLINE 0 0 0 (resilvering)
/zfs_jbod/zfs_raid/zfs.2 ONLINE 0 0 0 (resilvering)
오류: 25852 데이터 오류입니다. 목록에 '-v'를 사용하세요.
답변1
코드를 확인하지 않았기 때문에 이것은 단지 추측일 뿐이지만 "아니요"라고 말하고 싶습니다. ZFS는 raidz
대략 RAID-5와 동일하며 효과적인 RAID-5 구현은 두 개의 드라이브가 손실되면 복구를 중지합니다.
중요한 점은 다음과 같습니다. 두 개의 드라이브를 잃어버렸습니다. 이렇게 하면 ZFS raidz1
, 2디스크 RAID-1 또는 스페어 없는 RAID-5 등 모든 단일 디스크 중복 시스템이 종료됩니다 .
예, 첫 번째 고장난 드라이브를 교체했지만 귀하의 질문에 따르면 어레이가 아직 자체적으로 재구축되지 않았으므로 사실상 여전히 누락된 상태입니다.
교훈: 이중 디스크 중복성을 사용하거나 핫 스페어를 추가하거나 둘 다를 수행합니다. 오늘날 디스크는 너무 커서 빠르게 재구축할 수 없으므로 단일 디스크 중복성으로는 더 이상 충분하지 않습니다.