답변:
"복사본 = 2"(또는 3)는 중복성이없는 풀 (단일 디스크 또는 스트라이프)과 함께 사용하도록 설계되었습니다. 전체 장치 오류가 아닌 사소한 디스크 손상을 복구 할 수 있도록하는 것이 목표입니다. 후자의 경우, 풀을 마운트 해제 할 수 있으므로 분리 블록 복원이 발생하지 않습니다.
이중화 (mirroring / raidz / raidz2 / raidz3)가있는 경우, ditto 블록은 다른 블록과 다르지 않으며 문지르 기 / 리 실버 링은 다시 만듭니다.
For a device to be replaced, the pool must be in the ONLINE state. The device must be part of a redundant configuration, or it must be healthy (in the ONLINE state).
복사본 = 2 또는 3이 중복 구성으로 간주되지 않는다고 가정합니다.
copies=1
있고이를 copies=2
업로딩 한 경우 나중에 리 실버 / 리 크루 브를 원할 경우 이러한 인스턴스가 생성된다는 것입니다. 그러나 @jilliagre는 정확합니다. ditto 블록은 중복 구성을 구성하지 않습니다. 풀에 여러 장치가 있어도 다른 장치에 블록이 설정되어 있다고 보장 할 수 없습니다.
나는이 질문이 정말로 흥미 롭다는 것을 알았고 문서를 쏟아 부는 데 1 시간을 보낸 후에 코드에 빠져 들었습니다. 여기 내가 찾은 것이 있습니다.
첫째, 몇 가지 용어. Ditto 블록 (미러와는 달리 이러한 복사본)은 쓰기시 자동으로 생성되지만 원본 복사본과 동일한 가상 장치 (vdev)에 있거나 없을 수 있습니다. 반면에 미러링 된 블록은 항상 다른 가상 장치에 반영됩니다.
그러나이 코드는 두 가지 유형의 블록을 모두 자식으로 나타냅니다. 당신은 볼 수 여기 저두 블록은 그냥 아이들이 것을 io_vd == NULL
(이 쓰기 기능이다). 미러링 된 블록의 io_vd
경우 해당 가상 장치 (예 : 두 번째 디스크)로 설정됩니다.
가에 도달 할 때 염두에두고, 읽기 부분 , 모든 아이들을 취급이 예상되는 포함하지 않는 경우 잠재적으로 안전하지 않은으로 (그들은 거울 또는 저두 블록 수) good_copies
, 및 필요에 따라 다시 작성합니다 . 따라서 귀하의 질문에 대한 답변은 그렇습니다. 적어도 사본이 하나 이상 있고 다음 중 하나가 있으면 다시 작성합니다.
휴! 누군가가 결함을 지적 할 수도 있지만,이 작은 연습을 통해 ZFS에 대해 배우는 것이 즐거웠습니다. 이것이 도움이되기를 바랍니다.
@jlliagre와 디스크 (vdevs) 중 하나가 죽었지 만 풀이 중복되지 않으면 (전체 미러 / 미러) zpool 전체가 죽는다고 생각하는 사람들. 이것은 사실이 아닙니다. 다중 디스크 풀은 것입니다 항상 이 거울 또는 raidz없는 경우에도 하나의 완전한 디스크 오류를 살아남.
ZFS 메타 데이터는 항상 최소 2 번 복사되므로 전체 디스크 (또는 그 일부)의 전체 장애로 인해 파일 시스템이 중단되지 않습니다. 또한, 많은 파일, 특히 작은 것들, 모든 디스크에 분산되지 않고, 따라서되지 않습니다 반드시 디스크 오류로 오류 발생 될 수있다. OP는 ditto 블록 (사용자 데이터 사본> 1)을 사용 하는 다중 디스크 풀 의 경우를 묻습니다 . 여기서 완전한 단일 디스크 장애로 인해 데이터가 손실 되지 않아야합니다 .ZFS는 항상 원래 블록에서 멀리 떨어진 블록을 두려고 시도하며 여러 vdev가있는 풀의 경우 항상 다른 vdev를 의미합니다 (하나의 vdev가 풀의> 50 % 인 경우는 예외입니다). . 파일 시스템 메타 데이터는 항상 tto 레벨보다 +1 또는 +2 배 더 많이 복사 되므로 항상 디스크 장애에도 살아남습니다. 또한 3 개 이상의 디스크 풀이있는 경우 데이터 손실없이 디스크의 절반을 잃을 수 있습니다. ZFS는 인접한 두 개의 디스크를 잃어 버리지 않는 한 데이터 손실이없는 한 다음 디스크에 디 토트 블록을 저장합니다. (ditto = 2에 대해 세 개의 인접한 디스크 오류).
파일에 액세스하기에 충분한 데이터 사본이있는 경우 (복사본이 미러, 미러 또는 raidz에서 온 것인지) 파일에 액세스 할 때 누락 된 모든 데이터 사본이 복구됩니다. 이것은 스크럽의 목적입니다. 중복 사본을 사용하여 모든 데이터를 읽고 잘못된 것을 수정하십시오. 따라서 OP 질문에 직접 대답하려면 실패한 드라이브를 교체 한 후 스크럽 만하면 모든 사본이 복원됩니다.
항상 그렇듯이 백업 저장 소용 vdev가 일반적인 스파 스 파일 인 풀을 만들어 개념을 쉽게 실험 할 수 있습니다. vdev 파일을 삭제하거나 손상시킴으로써 모든 유형의 장애를 시뮬레이션하고 풀, 파일 시스템 및 데이터의 무결성을 확인할 수 있습니다.
편집 : 실험 후, 사본이 => 2 인 다중 디스크 비 중복 풀에서 디스크에 장애가 발생하면 zfs가 풀에 실패하는 것처럼 보입니다. 하나 이상의 디스크에서 패리티 어 데이터 손상이 지속 가능해야하며 스크럽으로 수정해야합니다.