Snapshots
1 Amazon EBS Snapshots
- Amazon Elastic Block Store (EBS)는 AWS EC2 인스턴스용 블록 수준 스토리지를 제공합니다.
- EBS 스냅샷은 이러한 볼륨 의 백업 기능을 제공하여 데이터 보호와 복구를 지원합니다.
- 이 가이드에서는 EBS 스냅샷의 모든 측면을 자세히 살펴보겠습니다.
2 EBS 스냅샷 기본 개념
- Amazon EBS 스냅샷은 볼륨의 특정 시점 복사본을 Amazon S3에 저장합니다.
- 스냅샷은 증분 방식으로 저장되어 효율성을 높입니다.
- 스냅샷을 사용하여 새 볼륨을 생성하거나, 볼륨 크기를 조정하거나, 가용 영역 간 볼륨을 이동할 수 있습니다.
2.1 증분 백업의 이점
- 마지막 스냅샷 이후 변경된 블록만 저장됩니다.
- 이로 인해 스토리지 비용과 스냅샷 생성 시간이 크게 절약됩니다.
- 변경된 블록에 해당하는 비용만 청구되어 비용 효율성이 높습니다.
2.2 스냅샷 생성 프로세스
- EBS 볼륨을 분리할 필요 없이 스냅샷을 생성할 수 있습니다.
- 실행 중인 인스턴스에 연결된 볼륨의 스냅샷도 가능합니다.
- 그러나 최근에 쓰여진 데이터의 일관성을 보장하기 위해 애플리케이션을 일시 중지하거나 볼륨을 분리하는 것이 좋습니다.
3 스냅샷 복원 메커니즘
- 스냅샷에서 새 볼륨을 생성할 때, 데이터는 즉시 로드되지 않습니다.
- 대신 '지연 로딩(lazy loading)' 방식을 사용합니다.
3.1 지연 로딩 프로세스
- 스냅샷에서 볼륨 생성 시 AWS는 즉시 사용 가능한 빈 볼륨을 제공합니다.
- 볼륨의 특정 블록에 처음 접근할 때:
- 시스템은 해당 블록이 로컬에 없다는 것을 감지합니다.
- S3에서 해당 블록의 데이터를 가져옵니다.
- 가져온 데이터를 EBS 볼륨에 쓰고, 그 후에 읽기 작업을 수행합니다.
3.2 지연 로딩의 장단점
- 장점
- 볼륨 생성 시간이 빠릅니다.
- 실제 사용하는 데이터만 로드하여 네트워크 사용량을 줄입니다.
- 단점
- 처음 데이터에 접근할 때 지연이 발생합니다.
- 전체 데이터가 로드되기 전까지는 최대 성능을 발휘하지 못할 수 있습니다.
3.3 지연 로딩 문제 해결 방법
지연 로딩으로 인한 성능 문제를 해결하기 위해 다음과 같은 방법을 사용할 수 있습니다:
- 전체 볼륨 초기화:
dd또는fio명령을 사용하여 볼륨의 모든 블록에 강제로 접근합니다.- 이 방법은 볼륨의 모든 데이터를 미리 로드하여 이후 접근 시 지연을 없앱니다.
- **Linux에서 dd 명령을 사용한 볼륨 초기화 예시
- **`sudo dd if=/dev/zero of=/dev/xvdf bs=1M count=$(blockdev --getsize64 /dev/xvdf)
- 이 명령은
/dev/xvdf디바이스의 모든 블록을 읽어 초기화합니다.
- Fast Snapshot Restore (FSR) 활성화:
- AWS에서 제공하는 FSR 기능을 사용하면 볼륨 생성 시점에 모든 데이터를 미리 로드합니다.
- 추가 비용이 발생하지만, 즉시 최대 성능을 발휘할 수 있습니다.
4 Fast Snapshot Restore (FSR)
- FSR은 스냅샷에서 EBS 볼륨을 복원할 때 초기화 시간을 대폭 줄이는 기능입니다.
- 이 기능은 스냅샷에서 새로운 EBS 볼륨 생성 시 발생하는 성능 오버헤드를 최소화합니다.