제가 이해한 바로는 LVM 스냅샷은 생성될 때의 크기를 갖습니다. LVM 매뉴얼 페이지에 따르면 스냅샷은 모든 공간을 소모하여 (확장하지 않는 한) 사용할 수 없게 될 수 있습니다. 하지만 그 공간은 어떻게 사용됩니까?
가정: 소스(원본 논리 볼륨)에 10M 파일이 있습니다. 스냅샷을 생성해도 마찬가지입니다. 소스 파일에 일부 데이터를 첨부했습니다. 이제 파일 크기는 15M입니다. 동일한 작업을 다시 수행하고 15M 파일 크기를 20M로 변경하면 15M 파일이 스냅샷의 10M 파일을 대체합니까? 그렇지 않은 경우 스냅샷은 어떤 방식으로 여유 공간을 소모합니까?
답변1
쓰기 중 복사 LVM 스냅샷에는 스냅샷과 소스 간의 차이점이 포함되어 있습니다. 따라서 항목이 변경될 때마다 변경 사항이 스냅샷에 추가되어 잠재적으로 스냅샷에 필요한 공간이 늘어납니다. (이전에 변경된 스냅샷 블록에 대한 변경 사항은 더 많은 공간을 필요로 하지 않으므로 이전 변경 사항을 덮어쓰기 때문에 "아마도"입니다. 목표는 모든 변경 사항의 기록이 아니라 현재 차이점을 추적하는 것입니다.)
LV는 저장된 데이터의 구조에 대한 지식이 없습니다. 파일에 5MiB를 추가하면 최소 5MiB의 변경 사항이 소스에 기록되므로 변경된 블록을 스냅샷 콘텐츠를 보존하기 위해 스냅샷에 추가해야 합니다. 파일에 5MiB를 더 쓰면 소스에 (적어도) 5MiB가 추가로 변경되어 비슷한 양의 데이터가 스냅샷에 기록됩니다(다시 말하지만, 원본 콘텐츠를 보존하기 위해). 이것콘텐츠스냅샷에 표시된 것처럼 파일이나 볼륨의 내용은 소스 변경으로 인해 절대 변경되지 않습니다.