BTRFS 형식으로 회전 디스크에 두 개의 하위 볼륨을 생성할 계획입니다. 가상 머신 이미지와 데이터베이스 파일을 효율적으로 저장할 수 있도록 nodatacow를 사용하여 하위 볼륨 중 하나를 마운트할 계획입니다.
nodatacow 마운트 하위 볼륨의 스냅샷을 활성화하기 위해 snapper를 사용하는 데 문제가 있습니까?
COW를 사용하지 않는 볼륨의 스냅샷을 생성할 때 주의해야 할 사항은 무엇입니까?
지금까지 내가 찾은 것은 BTRFS FAQ의 다음 문장입니다.
데이터 블록의 쓰기 중 복사를 끌 수 있습니까?
예, 이를 수행하는 방법에는 여러 가지가 있습니다.
nodatacow로 설치하여 비활성화합니다. 노다타섬(nodatasum)이라는 뜻도 있습니다. 스냅샷을 찍어도 COW가 계속 발생할 수 있습니다.
답변1
~에 대한노다타 소옵션, Ohad Rodeh의 논문 제목은 다음과 같습니다.BTRFS: Linux B-트리 파일 시스템상태:
스냅샷이 없으면 데이터 블록의 쓰기 중 복사를 취소합니다.
마운트된 하위 볼륨의 스냅샷을 생성하는 데 문제가 없습니다.노다타 소. 그러나 스냅샷을 생성하려면 소가 필요하므로 다음을 사용하여 하위 볼륨에 스냅샷을 생성할 때노다타 소기본적으로 무시합니다노다타 소; 평소처럼 행동하세요.
그러나 이는 흥미로운 질문을 제기합니다.노다타 소영구적으로 무시됩니까? COW가 비활성화된 하위 볼륨의 스냅샷을 생성하면 COW가 수동으로 다시 비활성화될 때까지 COW가 다시 활성화됩니까?
다행히도 그렇지 않습니다. btrfs에서메일링 리스트...
NOCOW 파일에서 스냅샷 이후 파일 블록(4096바이트)에 대한 첫 번째 쓰기는 여전히 COW여야 합니다. 왜냐하면 스냅샷이 이전 버전을 제자리에 잠갔고 이제 파일 블록이 변경되었으므로 다른 곳에 기록해야 하기 때문입니다. NOCOW는 스냅샷을 그대로 유지하는 것입니다. 그러나 파일은 NOCOW 특성을 유지하며 동일한 파일 블록에 대한 다른 쓰기는 물론 다음 스냅샷까지 유지됩니다.