LVM 스냅샷이 어떻게 저장되고 작동하는지에 대해 약간 혼란스럽습니다. 제가 아는 한, LVM을 사용하여 스냅샷을 생성하면 공간을 차지하지 않지만 시스템의 파일을 변경하면 LVM 스냅샷 볼륨의 크기가 늘어납니다. 파티션 크기보다 커지면 "삭제"되어 사라지게 됩니다. 이는 좋은 백업 솔루션이 아닌 이유입니다(동일한 물리적 시스템에 있다는 사실도 제외).
아래 그림과 같이 LVM 스냅샷 저장소는 어떻게 작동합니까?
루트 파일 시스템 파티션이 대부분 비어 있고 보라색으로 표시된 소량의 데이터가 있는 시나리오를 보여주려고 합니다. 저는 "Snapshot 1"이라는 스냅샷 파티션을 만들었습니다. 이 파티션은 원본 파일을 변경하면서 점차 채워졌습니다. 하지만 LVM은 파일 기반이 아니라 블록 기반이라는 것이 확실합니다.
질문
이는 20GB의 데이터만 저장하는 100GB 루트 파티션이 있고 크기를 21GB로 지정하면 스냅샷 파티션 오버플로에 대해 걱정할 필요가 없다는 의미입니까? 또는 스냅샷 파티션이 루트 파티션보다 크거나 커야 합니다.분할사용되지 않은 공간(블록 0)의 차이도 기록하기 때문인가요?
답변1
불행하게도 스토리지 요구 사항은 그렇게 간단하지 않습니다.
COW 스냅샷은 크기가 지정되면 생성됩니다. 이 크기는 VG의 공간에서 할당되며 소스 또는 스냅샷에 쓸 때 COW 블록을 보관하는 데 사용할 수 있는 공간의 양입니다. 선택한 크기는 예상되는 쓰기 볼륨에 따라 달라집니다. 원래 LV의 20%이면 충분합니다.COW 공간이 부족한 경우 확장을 사용하여 확장할 수 있습니다(lvreduce를 사용하여 줄일 수도 있음). COW 스냅샷 LV 크기의 작은 부분은 COW 블록 위치를 추적하는 데 사용되므로 COW 데이터 블록에는 전체 크기를 사용할 수 없습니다.lvs를 사용하여 사용되는 공간의 양을 확인하고 --monitor를 참조하여 공간 부족을 방지하기 위해 크기를 자동으로 확장하세요. - manlvcreate
매뉴얼 페이지에는 자세한 내용이 언급되어 있지 않습니다.
...보통 원래 LV의 20%충분한...ㅏ소량COW 스냅샷 LV 크기 사용...
내가 여기서 얻은 것은 공간이 부족하지 않도록 스냅샷 LV가 얼마나 커야 하는지 정확히 계산할 수 있는 구체적인 방법이 없다는 것입니다.
기본적으로 스냅샷 LV는 원래 블록이 변경되기 전에 저장하므로 공간이 부족하지 않도록 하려면 원래 LV에 1을 더할 수 있을 만큼 커야 합니다.조금 더이렇게 하면 COW 블록의 위치를 추적할 수 있습니다.