ZFS가 대용량 파일에 대해 쓰기 중 복사를 수행하는 방법

ZFS가 대용량 파일에 대해 쓰기 중 복사를 수행하는 방법

example.logZFS에 호출된 대용량 파일(8GB)이 있다고 가정해 보겠습니다 . 저는 cp example.log example.bak복사 목적으로 이 작업을 수행합니다. 그런 다음 원본 파일에 일부 바이트를 추가하거나 수정합니다. 무슨 일이야?

ZFS는 전체 8GB 파일을 복사합니까, 아니면 변경된 블록(및 파일 설명자에서 해당 블록을 가리키는 모든 inode 체인)만 복사합니까?

ベストアンサー1

내가 아는 한, FreeBSD ZFS는 cp를 사용한 쓰기 중 복사를 지원하지 않습니다. 기본 cp에는 이러한 경량 복사본에 대한 옵션이 없는 것 같습니다. 그리고 --reflinkZFS 시스템에서 GNU cp를 시도할 때 오류가 발생합니다. "cp: 'example.log'에서 'example.bak'을 복제할 수 없습니다. '지원되지 않는 작업'이라는 오류 메시지를 사용해 보았습니다.

어떤 제안자는 Solaris cp에 -z그러한 복사를 수행할 수 있는 스위치가 있다고 언급했습니다.

그러나 이것이 쓰기 중 복사라는 근본적인 질문에 대한 답변이 되기를 바랍니다.파일 시스템 스냅샷의 경우: 1000GB의 여유 공간 중 900GB를 사용한다고 가정하면 실제로 900GB를 차지하지 않는 해당 파일 시스템의 스냅샷을 생성하는 데 방해가 되지 않습니다. 처음에는 모두 .

포함된 원본 파일 시스템의 스냅샷을 생성하면 example.log스냅샷의 읽기 전용 버전과 원래 위치의 라이브 버전이라는 두 개의 "사본"이 생성됩니다. 추가 또는 내부 변경을 통해 복사본이 수정되면 어떻게 되나요? 여기서 마법이 발생합니다. 변경된 블록만 복사되고 공간이 부족해지기 시작합니다. 파일이 변경되자마자 전체가 복사되는 것은 아닙니다.

おすすめ記事