볼륨 스냅샷 관리
스냅샷은 볼륨 데이터의 특정 시점(point-in-time) 복사본이에요. Fly.io는 모든 Fly Volumes의 일일 스냅샷을 자동으로 만들고, 기본적으로 5일간 보관해요. 이 페이지에서는 스냅샷 보존 기간 설정, 스냅샷 생성·목록·복원, 그리고 자동 스냅샷 비활성화 방법을 설명해요.
출처: 문서
본문
스냅샷은 볼륨 데이터의 특정 시점(point-in-time) 복사본이에요. 우리는 모든 Fly Volumes의 일일 스냅샷을 자동으로 찍어요. 스냅샷은 기본적으로 5일간 저장하지만, 볼륨 스냅샷 보존 기간은 1일에서 60일 사이로 설정할 수 있어요.
볼륨에 저장된 데이터가 자주 업데이트된다면, 일일 스냅샷 외에도 데이터를 백업하거나 복제하는 다른 방법이 있어야 해요. 단일 볼륨에 데이터 사본이 하나만 있고 호스트가 실패한다면, 스냅샷이 찍힌 시점과 장애가 발생한 시점 사이에 저장된 데이터는 유실돼요.
볼륨 스냅샷을 사용해 데이터를 새 볼륨으로 복원할 수 있어요. 삭제된 볼륨에서 데이터를 복원하는 데에도 같은 과정을 사용할 수 있어요.
스냅샷 보존 기간 설정 또는 변경
스냅샷 보존은 볼륨 스냅샷을 우리가 저장하는 기간(일 단위)이에요. 기본값은 5일이에요.
볼륨을 만들 때 스냅샷 보존을 설정하세요:
fly volumes create <my_volume_name> --snapshot-retention <retention in days>
볼륨의 스냅샷 보존을 업데이트할 수도 있어요. 새 보존 기간은 새 스냅샷에만 적용되며 기존 스냅샷에는 영향을 주지 않아요.
기존 볼륨의 스냅샷 보존을 업데이트하세요:
fly volumes update <volume id> --snapshot-retention <retention in days>
Fly Launch 앱의 경우 앱의 fly.toml 파일 [mounts] 섹션에 스냅샷 보존을 추가할 수 있어요. fly deploy가 만드는 새 Fly Volumes는 새 보존 기간을 가지게 돼요. 이 예시는 스냅샷 보존 기간을 14일로 설정해요:
[mounts]
source = "myapp_data"
destination = "/data"
snapshot_retention = 14
볼륨 스냅샷 생성
우리는 볼륨의 일일 스냅샷을 자동으로 찍고 기본적으로 5일간 보관해요. 필요 시점에 볼륨 스냅샷을 만들 수도 있어요:
-
fly volumes list를 실행하고 스냅샷을 만들 볼륨의 ID를 복사하세요. -
볼륨의 스냅샷을 생성하세요:
fly volumes snapshots create <volume id>Scheduled to snapshot volume <volume id>스냅샷은 볼륨 크기에 따라 완료하는 데 몇 초 이상 걸릴 수 있어요.
-
볼륨의 스냅샷을 나열하세요:
fly volumes snapshots list <volume id>예시 출력:
Snapshots ID STATUS STORED SIZE VOL SIZE CREATED AT RETENTION DAYS vs_A1b2C3d4E5f6G7h8I9j0K1l2 created 2.0 GiB 10 GiB 5 days ago 5 vs_M3n4O5p6Q7r8S9t0U1v2W3x4 created 187 MiB 10 GiB 4 days ago 5 vs_Y5z6A7b8C9d0E1f2G3h4I5j6 created 45 MiB 10 GiB 3 days ago 5 vs_K7l8M9n0O1p2Q3r4S5t6U7v8 created 106 MiB 10 GiB 2 days ago 5 vs_O9jqw997yvOuzyg1NVmmmjxh running 0 B 10 GiB
새 스냅샷의 상태는 waiting에서 running을 거쳐 created로 진행돼요.
옵션은 fly volumes snapshots 문서를 참고하거나 fly volumes snapshots --help를 실행하세요.
스냅샷에서 볼륨 복원
삭제된 볼륨에서 데이터를 복원하는 절차는 매우 비슷해요. 삭제된 볼륨 복원을 참고하세요.
스냅샷에서 새 볼륨을 만들어 볼륨의 데이터를 복원하세요:
-
fly volumes list를 실행하고 복원할 볼륨의 ID를 복사하세요. -
볼륨의 스냅샷을 나열하세요:
fly volumes snapshots list <volume id>예시 출력:
Snapshots ID STATUS STORED SIZE VOL SIZE CREATED AT RETENTION DAYS vs_A1b2C3d4E5f6G7h8I9j0K1l2 created 2.0 GiB 10 GiB 5 days ago 5 vs_M3n4O5p6Q7r8S9t0U1v2W3x4 created 187 MiB 10 GiB 4 days ago 5 vs_Y5z6A7b8C9d0E1f2G3h4I5j6 created 45 MiB 10 GiB 3 days ago 5 vs_K7l8M9n0O1p2Q3r4S5t6U7v8 created 106 MiB 10 GiB 2 days ago 5 vs_W9x0Y1z2A3b4C5d6E7f8G9h0 created 73 MiB 10 GiB 1 day ago 5 -
볼륨 스냅샷의 데이터를 같거나 더 큰 크기의 새 볼륨으로 복원하세요:
fly volumes create <volume name> --snapshot-id <snapshot id> -s <volume size in GB>예시 출력:
? Select region: Sydney, Australia (syd) ID: vol_mjn924o9l3q403lq Name: pg_data App: my-app-name Region: syd Zone: 180d Size GB: 3 Encrypted: true Created at: 02 Aug 22 21:27 UTC
옵션은 fly volumes create 문서를 참고하거나 fly volumes create --help를 실행하세요.
스냅샷에서 볼륨이 있는 Machine 생성
볼륨과 Machine을 한 명령으로 생성하세요:
fly scale count --with-new-volumes --from-snapshot <snapshot id> 1
--with-new-volumes는 기존 볼륨을 재사용하는 대신 새 볼륨을 만들어요. --from-snapshot은 그 볼륨을 스냅샷으로 채워요. 끝의 1은 Machine 수예요.
옵션은 fly scale count 문서를 참고하거나 fly scale count --help를 실행하세요.
스냅샷과 저장 크기 목록
각 볼륨의 스냅샷은 증분 방식으로 저장되므로, 이전에 저장된 스냅샷 이후 변경된 데이터만 추가 저장 용량을 사용해요. 스냅샷의 총 저장 크기는 볼륨 스냅샷 청구에 사용돼요.
-
fly volumes list를 실행하고 볼륨의 ID를 복사하세요. -
볼륨의 스냅샷을 나열하세요:
fly volumes snapshots list <volume id>예시 출력:
Snapshots ID STATUS STORED SIZE VOL SIZE CREATED AT RETENTION DAYS vs_A1b2C3d4E5f6G7h8I9j0K1l2 created 2.0 GiB 10 GiB 5 days ago 5 vs_M3n4O5p6Q7r8S9t0U1v2W3x4 created 187 MiB 10 GiB 4 days ago 5 vs_Y5z6A7b8C9d0E1f2G3h4I5j6 created 45 MiB 10 GiB 3 days ago 5 vs_K7l8M9n0O1p2Q3r4S5t6U7v8 created 106 MiB 10 GiB 2 days ago 5 vs_W9x0Y1z2A3b4C5d6E7f8G9h0 created 73 MiB 10 GiB 1 day ago 5 Total stored size: 2.5 GiB
자동 일일 스냅샷 비활성화
자동 일일 스냅샷은 기본적으로 활성화되어 있어요. 자동 스냅샷을 비활성화하려면 --scheduled-snapshots=false 플래그를 사용하세요. 암호화된 볼륨(기본값 true)의 스냅샷은 마찬가지로 저장 시 암호화돼요.
볼륨을 만들 때 자동 스냅샷을 비활성화하세요:
fly volumes create <my_volume_name> --scheduled-snapshots=false
기존 볼륨의 자동 스냅샷을 비활성화하세요:
fly volumes update <volume id> --scheduled-snapshots=false
자동 스냅샷을 비활성화해도 볼륨의 기존 스냅샷은 제거되지 않아요. 스냅샷은 보존 기간이 끝날 때만 제거돼요.
Fly Launch 앱의 경우 앱의 fly.toml 파일 [mounts] 섹션에서 자동 스냅샷을 비활성화할 수 있어요. fly deploy가 만드는 새 Fly Volumes는 자동 스냅샷이 비활성화된 상태가 돼요:
[mounts]
source = "myapp_cache"
destination = "/cache"
scheduled_snapshots = false