ZFS에서 강제 업데이트 체크섬?


13

최근 이 명령에서와 같이 복제 checksum되지 않은 zfs 파일 시스템 중 하나의 속성을 (fletcher4) sha256에서 on(fletcher4)로 변경하여 복제 된 복제 스팀 전송을보다 잘 지원했습니다 zfs send -DR -I _starting-snaphot_ _ending-snapshot_.

그러나 zfs 맨 페이지에는 다음과 같은 내용이 있습니다 send -D.

이 플래그는 데이터 세트의 dedup 속성에 관계없이 사용할 수 있지만 파일 시스템에서 dedup 가능 체크섬 (예 : sha256)을 사용하면 성능이 훨씬 향상됩니다.

zfs 맨 페이지에는 checksum속성 에 대한 내용도 나와 있습니다.

이 속성을 변경하면 새로 작성된 데이터에만 영향을줍니다.

나는 fletcher4를 신뢰하고 싶지 않다. 단점은 SHA256과 달리 fletcher4는 의사 랜덤 해시 함수가 아니므로 충돌하지 않도록 신뢰할 수 없다는 것입니다. 따라서 해시 충돌을 감지하고 해결하는 '확인'옵션과 결합 된 경우에만 중복 제거에 적합합니다.

시스템을 손상시키지 않고 파일 시스템의 체크섬을 어떻게 업데이트 할 수 있습니까?

답변:


11

이미 작성된 데이터의 속성 (압축, 중복 제거 또는 체크섬)을 변경하려면 zfs 방식은 zfs send | zfs receive시퀀스를 통해 데이터를 실행하는 것 입니다. 분명히, 당신은 그것을 위해 시스템을 오프라인으로 필요 없지만, 당신 필요합니다

  1. zpool / 시스템에서 충분한 양의 리소스가 중복 제거되어 문제가되는 데이터 세트 사본을 보유
  2. 데이터 세트를 폐기하거나 프로 시저에서 이름을 변경해야하기 때문에 데이터 세트의 가동 중지 시간
  3. 작업을 완료하기에 충분한 시간과 인내

zpool에 대해 중복 제거를 이미 사용 zfs send | zfs receive하고 있으므로 소스와 동일한 풀에서 대상으로 a 를 실행 하면 새로 작성된 메타 데이터 블록에 필요한 공간 만 사용됩니다. 그러나 복사 시간이 오래 걸리도록 준비하십시오. 특히 전체 중복 제거 테이블을 RAM에 저장할 수있는 충분한 RAM이없는 경우 중복 제거가 너무 느려질 수 있습니다.

데이터 세트의 최종 권한있는 사본을 작성하려면 모든 쓰기 조작을 중단해야하지만, 먼저 스냅 샷을 복사하고 모든 쓰기를 중지 zfs send -i | zfs receive하고 최종 단계로 증분하여 다운 타임을 최소화 할 수 있습니다.


zfs receive파일 시스템의 메타 데이터 를 업데이트하는 것은 분명하지 않습니다 . 메타 데이터를 그대로 가져 가면 훨씬 빠를 것 같습니다. 그러나 파일 레벨이 아닌 체크섬의 블록으로 인해 불가능할 수도 있습니다. 이 경우 zfs send | zfs receive솔루션의 수용 가능한 기반을 형성합니다.
84104

1
zfs 보내기 | zfs recv는 모든 메타 데이터 (압축 선택, 체크섬 선택, 중복 제거 선택)를 효과적으로 변경합니다. zfs send는 zfs recv를 사용하여 수집 한 객체를 생성하여 마치 새로운 데이터 인 것처럼 거의 기록합니다. 그러나 중복 제거와 관련하여 zfs send | recv에 대해 오해하고 있다고 생각합니다. zfs send -D는 스트림 자체 내에서 데이터 중복 제거를 시도하지만 소스 데이터 세트에서 기존 데이터 중복 제거는 유지하지 않습니다. 그렇기 때문에 recv 측에 대상 데이터 세트에서 중복 제거 기능을 활성화 할 필요가 없습니다.
Nex7

더 설명하기 위해-현재 zfs가 중복 제거 된 데이터를 전송하는 방법은 중복 제거 된 데이터와 관련 중복 제거 테이블 항목의 단일 사본이되도록하는 방법이 없습니다. 소스와 대상이 동기화되어 있고 증분 스냅 샷 만 보내는 경우에도 마찬가지입니다. ZFS는 스트림 자체의 범위 내에서 / 데이터의 중복을 제거 할 수없는 경우 전송 데이터를 전체 크기로 계속 확장합니다. POOL DDT에서 쉽게 중복 제거되는 데이터가있을 수 있지만 작은 송신 오브젝트로서 완전히 중복 제거 할 수 없습니다.
Nex7
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.