스냅샷 용량 최적화
스냅샷은 파일 시스템, 구성, 메타데이터 및 할당된 모든 디스크 블록을 포함하여 사용량을 캡쳐합니다.
즉, 스냅샷은 파일단이 아닌 디스크단에서 작동하기에 파일시스템에서 사용 중으로 표현하는 데이터양과 항상 일치하지 않습니다.
디스크에 데이터를 쓰고 삭제해 사용하지 않는 공간이더라도 디스크단에서는 여전히 할당된 블록으로 존재할 수 있으며 이로 인해 스냅샷 크기에 영향을 줄 수 있습니다.
스냅샷 크기를 최소화하고 디스크 사용량을 현재 사용 중인 데이터와 가깝게 유지하려면 디스크 최적화 작업이 필요합니다.
스냅샷 생성 전 최적화가 필요한 이유
VM 내부에서 파일을 삭제하면 파일시스템에서는 해당 공간을 다시 사용할 수 있는 공간으로 표시합니다.
하지만 하위 스토리지 또는 디스크 블록 수준에서는 삭제된 데이터가 바로 제거되지 않고 할당된 블록으로 남아 있을 수 있습니다.
이 상태에서 스냅샷을 생성하면 실제로는 삭제된 데이터의 흔적까지 스냅샷 대상에 포함될 수 있으며, 결과적으로 스냅샷 용량이 커질 수 있습니다.
따라서 스냅샷 생성 전에는 다음 작업을 수행하는 것이 좋습니다.
1) 파일 삭제
스냅샷 생성 전 불필요한 파일들을 제거합니다.
2) 미사용 블록 할당 해제
fstrim은 실제 사용하지 않는 공간을 물리적 장지인 블록 스토리지 디스크에 전달해 사용하지 않음으로 할당 해제합니다.
즉, 마운트 된 파일 시스템에서 사용하지 않는 블록을 정리하여 시스템상 회수할 수 있게 합니다.
3) 데이터 사용량 반영
파일시스템에서 사용하지 않는 용량을 정리하여 실제 데이터 사용량을 전체 시스템 무결성을 유지하 면서 더욱 정확히 반영할 수 있습니다.
1. 미사용 공간 정리 방식
스냅샷 용량 최적화를 위해 사용할 수 있는 대표적인 방법은 다음 두 가지입니다.
| 방법 | 설명 |
|---|---|
방법 1. zero-filling | 빈 공간을 0으로 채운 뒤 삭제하여 스냅샷 용량을 줄이는 방식 |
방법 2. fstrim | 파일시스템의 미사용 블록을 스토리지에 전달하여 할당 해제하는 방식 |
2. zero-filling
zero-filling은 파일시스템의 빈 공간을 0으로 채운 임시 파일로 덮어쓴 뒤, 해당 파일을 삭제하는 방식입니다.
파일을 삭제한 뒤에도 디스크 블록에는 기존 데이터 흔적이 남아 있을 수 있습니다.
zero-filling을 수행하면 빈 공간에 남아 있는 데이터 흔적을 0으로 채우기 때문에, 스냅샷 생성 시 압축 또는 중복 제거 효율이 높아져 스냅샷 용량을 줄이는 데 도움이 됩니다.
예를 들어 추가 볼륨을 /mnt에 마운트한 뒤, /mnt의 빈 공간을 0으로 채운 임시 파일로 가득 채우고 삭제하는 방식입니다.