Snapshot
Snapshot이란
- 특정 시점의 컴퓨터의 상태(데이터, 파일 시스템 등)를 사진 찍듯이 별도의 파일으로 저장하는 기술.
- 많은 데이터를 백업하려면 시간적 제약이 있거나 시스템을 중단해야 하므로 O(1)이 소요되는 스냅샷을 이용.
- 백업에 필요한 시간 및 공간은 데이터 양에 영향을 받지만, 스냅샷에 필요한 시간 및 공간은 데이터 양과 무관.
방식
- Split mirror
- 기존 데이터를 통째로 다른 저장소에 복사하는 방식. (백업과 동일)
- 원본에 문제가 생겨도 복원 가능하지만 성능과 공간 효율이 낮음.
- 스냅샷의 이점이 없음.
- Copy on Write (COW)
- 스냅샷 생성 시 메타데이터만 만들고 원본과 데이터를 공유하는 방식.
- 데이터 이동이 적고, 빠르게 스냅샷이 만들어짐.
- 데이터를 수정하는 경우 스냅샷 공간에 복제하고, 기존 데이터를 수정하는 작업이 필요.
- 두 번의 쓰기 작업이 일어나기 때문에 CPU와 I/O 부하가 심함.
- Redirect on Write (ROW)
- 스냅샷 생성 방식은 COW와 같지만, CPU와 I/O 부하를 줄일 수 있는 방법.
- 데이터를 수정하는 경우 기존 데이터는 스냅샷을 위한 데이터가 됨.
- 수정된 데이터는 바로 잉여 공간에 작성되고, 이 데이터가 원본을 위한 데이터가 됨.
- 데이터의 포인터를 재설정하는 비용 존재, 스냅샷이 많아지면 복잡성 증가.
- Incremental Snapshot
- 스냅샷 생성 후 새로운 스냅샷을 만들면, 변경된 데이터만 새 스냅샷에 기록하는 방식.
- 각 스냅샷의 변경되지 않은 데이터는 이전 스냅샷의 데이터를 사용.
- 스냅샷을 생성할 때 마다 스토리지를 적게 사용.
- Continuous Data Protection
- 데이터 블록이 수정될 때 마다 스냅샷을 저장하는 방식.
- 높은 수준의 가용성을 확보 가능하나, 오버헤드가 심할 수 있음.
특징
- 재해 복구시 스냅샷을 이용해 데이터 복원 가능.
- 별도의 시스템의 도움 없이 저장 공간을 사용해 저장하기 때문에, 저장과 복원이 빠름.
- 저장 공간이 부족한 경우 오래된 스냅샷은 덮어 씌워지므로 단기적인 복구만 가능.
- RPO와 RTO를 기준으로 스냅샷 방식 선정 필요.
References
- https://en.wikipedia.org/wiki/Snapshot_(computer_storage)
- https://library.gabia.com/contents/infrahosting/9063/
- https://tech.gluesys.com/blog/2020/12/16/storage_7_intro.html