Compute Engine 디스크 스냅샷 권장사항


언제든지 영구 디스크 및 Google Cloud 하이퍼디스크 스냅샷을 만들 수 있지만 다음 권장사항을 따르면 더욱 빠르고 안정적으로 스냅샷을 만들 수 있습니다.

보안 고려사항

의도하지 않은 권한 에스컬레이션을 방지하기 위해 스냅샷 또는 인스턴트 스냅샷(미리보기) 데이터를 읽고 복원할 수 있는 스냅샷 관련 IAM 권한을 신뢰할 수 있는 주 구성원에게만 부여해야 합니다. 다음 권한이 있으면 사용자가 스냅샷 또는 인스턴트 스냅샷(미리보기)에서 데이터를 읽고 복원할 수 있습니다.

  • compute.snapshots.useReadOnly
  • compute.instantSnapshots.useReadOnly

위의 권한 중 하나가 있는 모든 주 구성원은 프로젝트의 스냅샷 또는 인스턴트 스냅샷에서 다른 조직에 있는 프로젝트를 포함하여 자신이 제어하는 프로젝트로 데이터를 복원할 수 있습니다. 예를 들어 악의적인 행위자가 프로젝트에서 스냅샷 IAM 역할을 획득하려고 하면 개인 프로젝트에서 스냅샷을 복원하고 스냅샷에 포함된 데이터에 액세스할 수 있습니다.

주 구성원의 권한을 확인하는 방법은 특정 역할 또는 권한이 있는 주 구성원 확인을 참조하세요.

일관된 스냅샷 준비

애플리케이션이 실행되는 동안 영구 디스크 또는 하이퍼디스크의 스냅샷을 만드는 경우, 스냅샷은 메모리에서 디스크로 전송되는 대기 중인 쓰기를 캡처하지 못할 수 있습니다. 이러한 불일치로 인해 스냅샷은 스냅샷을 캡처한 시점의 정확한 애플리케이션 상태를 반영하지 않을 수 있습니다. 이 시나리오에서 스냅샷은 스냅샷 생성 시점에 머신이 비정상 종료된 것처럼 애플리케이션의 상태를 캡처하므로 비정상 종료 일관성으로 간주됩니다.

선택적으로 시스템에서 스냅샷이 캡처되기 전에 모든 애플리케이션 트랜잭션이 완료되고 메모리에서 디스크로 대기 중인 모든 쓰기를 삭제할 수 있도록 애플리케이션을 일시중지할 수 있습니다. 이 시나리오에서 스냅샷은 애플리케이션 일관성으로 간주됩니다.

비정상 종료 일관성 스냅샷 만들기

영구 디스크 또는 하이퍼디스크의 스냅샷을 만들 때 스냅샷을 비정상 종료 일관성으로 만들기 위해 추가 단계를 따를 필요가 없습니다. 특히 워크로드를 일시중지할 필요가 없습니다.

워크로드에서 일시적인 중지를 허용할 수 없는 경우 비정상 종료 일관성 스냅샷을 만들려면 다음 프로세스를 고려하세요.

  1. 애플리케이션이 실행되는 동안 일부 애플리케이션 데이터 불일치가 발생한다고 가정하고 스냅샷을 캡처하세요.
  2. 스냅샷에서 허용 가능한 애플리케이션 상태로 워크로드를 복원할 수 있는지 확인합니다.
  3. 이전 단계에 따라 스냅샷을 유지하거나 삭제합니다.

비정상 종료 일관성 스냅샷을 사용하기 전에 파일 시스템 및 애플리케이션 수준 저널의 재실행이 필요할 수 있습니다. 따라서 스냅샷의 품질은 비정상 종료 일관성 상태에서 제공 상태로 빠르게 복구하는 기능에 따라 결정됩니다.

애플리케이션 일관성 스냅샷 만들기

  • Windows Server 사용자: Windows Server 인스턴스에 연결된 디스크의 경우 VSS 스냅샷을 사용합니다.
  • Linux 사용자: Linux 인스턴스에 연결된 디스크의 스냅샷에 대한 애플리케이션 일관성을 확보하려면 사전 및 사후 스냅샷 셸 스크립트를 만들어 시스템 애플리케이션 일관성을 준비합니다. 그런 다음 guest-flush 옵션을 사용 설정하여 스냅샷을 만듭니다. 이렇게 하면 스냅샷 캡처 전후에 사진 및 사후 스크립트를 실행합니다. 자세한 내용은 Linux 애플리케이션 일관성 스냅샷 만들기를 참조하세요.

수동으로 애플리케이션 일관성 스냅샷 만들기

경우에 따라 애플리케이션 일관성 스냅샷을 확보하려면 수동으로 애플리케이션을 일시중지해야 할 수도 있습니다.

예를 들어 여러 Persistent Disk 또는 Hyperdisk 볼륨 간에 애플리케이션 일관성이 필요한 경우 이 옵션을 사용합니다. 이 경우 각 디스크의 모든 파일 시스템을 고정하고 앱을 다시 시작하기 전에 해당 디스크의 모든 스냅샷을 완성해야 합니다.

VM을 중지할 필요는 없습니다. 애플리케이션 일시중지에는 파일 시스템 고정 및 마운트 해제가 포함될 수 있습니다. 애플리케이션을 수동으로 일시중지한 후 스냅샷 리소스가 UPLOADING 상태에 도달한 후에만 워크로드를 다시 시작합니다.

스냅샷을 요청할 때 globalOperations.get 메서드를 호출하여 작업 상태를 확인합니다. 다음 표는 스냅샷 작업 상태와 스냅샷 리소스 상태 간의 관계를 보여줍니다.

작업 상태 스냅샷 리소스 상태
PENDING 아직 스냅샷 리소스가 없습니다.
RUNNING CREATING 또는 UPLOADING

CREATING: 스냅샷 생성이 아직 완료되지 않았습니다.
UPLOADING: 스냅샷이 생성되었지만 아직 Cloud Storage에 저장되지 않았습니다.
DONE FAILED 또는 READY.

스냅샷 빈도 제한

디스크 스냅샷 생성 빈도에는 제한이 있습니다.

Persistent Disk 또는 Hyperdisk에서 스냅샷 만들기

최대 10분에 한 번씩 디스크 스냅샷을 만들 수 있습니다. 디스크 스냅샷 요청 버스트를 실행하려면 60분 동안 최대 6개의 요청을 실행할 수 있습니다.

이 제한을 초과하면 작업이 실패하고 다음 오류가 반환됩니다.

"code": "RESOURCE_OPERATION_RATE_EXCEEDED",
"message": "Operation rate exceeded for resource 'projects/project-id/zones/zone-id/disks/disk-name'.
Too frequent operations from the source resource."

이 제한은 다음 작업에 적용됩니다.

이 제한은 다음 작업에는 적용되지 않습니다.

한 시간에 한 번씩 디스크의 스냅샷을 생성하는 것이 가장 좋습니다. 이보다 더 자주 스냅샷을 생성하지 마세요. 이를 위한 가장 쉬운 방법은 스냅샷 일정을 설정하는 것입니다.

스냅샷에서 새 영역 디스크 만들기

지정된 스냅샷에서 최대 10분마다 영역 Persistent Disk 또는 Hyperdisk를 새로 만들 수 있습니다. 대상 영역은 스냅샷에서 생성된 새 디스크의 스토리지 위치를 나타냅니다. Google Cloud는 스냅샷에서 디스크를 생성하는 속도가 그 이상으로 빨라질 것을 보장하지 않지만, 지난 한 시간 동안 스냅샷에서 디스크를 생성하지 않았다면 더 자주 디스크를 생성할 수도 있습니다.

동일한 디스크의 여러 스냅샷은 이 빈도 제한과 관련하여 서로 다른 스냅샷으로 간주됩니다.

이 제한을 초과하면 작업이 실패하고 다음 오류가 반환됩니다.

"code": "RESOURCE_OPERATION_RATE_EXCEEDED",
"message": "Operation rate exceeded for resource 'projects/project-id/global/snapshots/snapshot-name'. Too frequent operations from the source resource."

이 제한은 다음 작업에 적용됩니다.

이 제한은 다음 작업에는 적용되지 않습니다.

  • 스냅샷에서 새 리전 Persistent Disk 만들기
  • 이미지를 소스로 사용하여 새 영역 또는 리전 Persistent Disk 만들기

스냅샷에서 여러 디스크를 만들려면 스냅샷을 사용하여 이미지를 만든 후 해당 이미지에서 디스크를 만듭니다.

  1. 스냅샷에서 이미지를 만드세요.
  2. 이미지에서 디스크를 만듭니다.

비부팅 디스크의 경우 이미지에서 영구 디스크 만들기 안내를 따르고 다음 단계를 따릅니다.

기존 스냅샷을 후속 스냅샷의 기준으로 사용

디스크(Persistent Disk 또는 Hyperdisk)의 기존 스냅샷이 있는 경우, 시스템은 디스크에서 후속 스냅샷을 만들 때 자동으로 기존 스냅샷을 기준으로 사용합니다.

  • 디스크에서 이전 스냅샷을 삭제하기 전에 동일한 디스크에서 새 스냅샷을 만듭니다. 시스템은 이전 스냅샷을 사용할 수 있는 경우 새 스냅샷을 더 빨리 만들 수 있으며, 디스크에서 새 데이터나 변경된 데이터만 읽습니다.
  • 새 스냅샷이 완성될 때까지 기다린 후에 동일한 디스크에서 후속 스냅샷을 생성하세요. 동일한 디스크에서 스냅샷 2개를 동시에 실행할 경우, 둘 다 동일한 기준에서 시작되므로 같은 작업이 반복됩니다. 새 스냅샷이 완성될 때까지 기다릴 경우, 후속 스냅샷은 마지막 스냅샷이 완성된 이후로 변경된 데이터만 가져오기 때문에 더 빨리 실행됩니다.

바쁘지 않은 시간에 스냅샷 예약

디스크(Persistent Disk 또는 Hyperdisk)의 정기적인 스냅샷을 예약할 경우, 가능하다면 사용량이 많지 않은 시간 중에 스냅샷을 생성하여 각 스냅샷이 완료되는 데 소요되는 시간을 줄일 수 있습니다.

  • 디스크가 위치하는 영역의 영업일에 자동 스냅샷을 예약합니다. 일반적으로 영업 종료 시간에 스냅샷 생성 빈도가 가장 높습니다.
  • 디스크가 위치한 영역에서 자정이 아니라 아침 일찍 자동 스냅샷을 예약합니다. 일반적으로 한밤중에 스냅샷 생성 빈도가 높습니다.

별도의 디스크에 데이터 정리

영구 디스크(Persistent Disk 또는 Hyperdisk)의 스냅샷을 만드는 경우 디스크에 저장하는 모든 데이터가 스냅샷에 포함됩니다. 데이터의 양이 많을수록 스냅샷이 더 많이 생성되고 비용이 더 많이 들며 만드는 데 시간이 더 오래 걸립니다. 필요한 데이터에 대해서만 스냅샷을 만들려면 별도의 디스크에 데이터를 정리합니다.

  • 중요 데이터는 부팅 디스크가 아니라 보조 디스크에 저장합니다. 이렇게 하면 부팅 디스크의 스냅샷을 필요할 때만 만들거나 만드는 횟수를 줄일 수 있습니다.
  • 부팅 디스크의 스냅샷을 만들 경우 스왑 파티션, 페이지 파일, 캐시 파일, 중요하지 않은 로그를 별도의 디스크에 저장합니다. 이러한 파일과 파티션은 자주 변경되므로 스냅샷 프로세스가 이러한 파일과 파티션을 증분 스냅샷에 포함시켜야 하는 변경 데이터로 식별하기가 쉽습니다.
  • 유사한 데이터를 하나의 디스크에 보관하여 만들어야 하는 스냅샷의 개수를 줄일 수 있습니다. 운영체제와 휘발성 데이터는 스냅샷을 생성할 데이터와 따로 보관하지만 물리적 머신에서와 같이 주요 데이터를 여러 영구 디스크에 분산할 필요는 없습니다. 총 크기가 동일하다면 큰 디스크 하나가 작은 디스크 여러 개와 동일한 성능을 발휘할 수 있습니다.

discard 옵션을 사용 설정하거나 영구 디스크에서 fstrim 실행

Linux 인스턴스에서 삭제 옵션을 사용하여 디스크(Persistent Disk 또는 Hyperdisk)를 포맷하고 마운트하지 않은 경우에는 스냅샷을 만들기 전에 인스턴스에서 fstrim 명령어를 실행합니다. 이 명령어를 사용하면 파일 시스템에 더 이상 필요 없는 블록이 삭제되어 스냅샷이 더 빨리 더 작은 크기로 생성될 수 있습니다. 디스크에서 삭제 옵션을 구성하는 방법은 Linux VM에서 비부팅 디스크 포맷 및 마운트를 참조하세요.

자주 사용하는 스냅샷의 이미지 만들기

동일한 영역의 스냅샷을 반복적으로 사용하여 디스크(Persistent Disk or Hyperdisk)를 만들 경우, 스냅샷을 한 번 사용하고 해당 스냅샷의 이미지를 만들어서 네트워크 비용을 줄이세요. 이 이미지를 저장했다 사용하여 디스크를 만들고 VM 인스턴스를 시작합니다. 자세한 안내는 커스텀 이미지 만들기를 참조하세요.

한 시간에 한 번씩 디스크의 스냅샷을 생성하는 것이 가장 좋습니다. 이보다 더 자주 스냅샷을 생성하지 마세요. 이를 위한 가장 쉬운 방법은 스냅샷 일정을 설정하는 것입니다.

기타 권장사항

  • ext4와 같은 저널링 파일 시스템을 사용하면 데이터가 영구 디스크에 실제로 기록되지 않고 캐시될 위험이 감소합니다.
  • 정기적으로 데이터 스냅샷을 만들어 예기치 않은 오류로 인한 데이터 손실을 최소화합니다.

다음 단계