복제본 및 압축과 같은 ZFS 속성은 새로 작성된 데이터에만 영향을 미친다는 것을 알고 있습니다.
하지만 스크럽이 업데이트할지 궁금합니다.
1TB 파일을 쓰기 전에 풀을 만들고 압축=lz4 및 복제본=2로 설정했다고 가정해 보겠습니다.
그런 다음 Ditto 블록을 보존할 필요는 없지만 다른 유형의 압축도 사용하기로 결정했습니다.
이제 copys=1 및 압축=gzip-9를 설정한 경우 풀에 이미 기록된 데이터에 이를 적용할 수 있는 방법이 있습니까?
스크럽이 나에게 효과가 있을까요?
답변1
아니요.
compression
및 등의 데이터 세트 속성을 변경하면 copies
변경 후에 작성된 파일에만 영향을 줍니다. 이와 같은 변경 사항을 기존 파일에 적용하려면 해당 변경 사항을 복사하고 원본 파일에 mv를 적용해야 합니다. 물론 이렇게 하면 동일한 파일 이름의 이전 스냅샷에 대한 모든 연결이 끊어집니다(inode가 다르기 때문에 해당 파일에 대한 모든 하드 링크도 마찬가지입니다).
또는 이러한 변경 사항을 전체 풀이나 데이터 세트에 적용하려면 zfs send
다른 풀(예: 백업 풀)의 스냅샷을 생성하고 원래 풀에서 데이터 세트를 삭제(또는 풀을 삭제하고 다시 생성) zfs send
한 다음 다시 되돌릴 수 있습니다. 끄다. 참고: () 옵션을 사용하면 이 작업을 수행할 수 없습니다 zfs send
. 이 옵션을 사용하면 보내기() 옵션도 활성화되기 때문입니다. 자세한 내용을 확인하고 검색하세요.-R
--replicate
-p
--props
man zfs
zfs send
zfs scrub
풀의 기존 데이터를 확인하고, 체크섬과 일치하는 양호한 복사본을 얻을 만큼 충분한 중복이 있는 경우 손상된 복사본을 덮어씁니다. 그렇지 않은 경우 수정할 수 없는 오류에 대해 경고만 합니다.