Windows 애플리케이션 일관성이 있는 디스크 스냅샷 만들기


Compute Engine에서는 스냅샷을 사용하여 디스크 데이터를 백업할 수 있습니다. 스냅샷은 증분 방식이므로 완전한 디스크 이미지를 만드는 것과 비교하여 더 높은 성능과 더 낮은 총 스토리지 비용으로 만들 수 있습니다.

애플리케이션 일관성 스냅샷에서는 완료된 모든 애플리케이션 트랜잭션과 디스크에서 삭제된 대기 중인 모든 쓰기를 사용해 백업 시점에 애플리케이션 데이터 상태를 캡처합니다. Windows VM에서는 먼저 인스턴스를 중지하거나 VM에서 디스크를 분리하지 않고 볼륨 섀도 복사본 서비스(VSS)를 사용하여 애플리케이션 일관성 스냅샷을 만듭니다.

시작하기 전에

  • Windows 인스턴스를 만듭니다.
  • 스냅샷 만들기 관련 권장사항을 검토합니다.
  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.

    이 페이지의 샘플 사용 방법에 대한 탭을 선택하세요.

    콘솔

    Google Cloud 콘솔을 사용하여 Google Cloud 서비스 및 API에 액세스할 때는 인증을 설정할 필요가 없습니다.

    gcloud

    1. Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

      gcloud init
    2. 기본 리전 및 영역을 설정합니다.

    REST

    로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공한 사용자 인증 정보를 사용합니다.

      Google Cloud CLI를 설치한 후 다음 명령어를 실행하여 초기화합니다.

      gcloud init

제한사항

Windows의 디스크 스냅샷에는 다음과 같은 제한사항이 있습니다.

  • VSS 스냅샷은 이미지 버전 v20160810 이상의 Windows 인스턴스에서만 작동합니다. 이미지 버전이 이보다 오래된 인스턴스에서는 VSS를 사용하지 않고 스냅샷을 만듭니다.
  • 연결된 디스크는 NTFS, exFAT, ReFS 파일 시스템을 사용해야 합니다.
  • VSS 스냅샷은 데이터의 일관된 백업을 만들도록 지원할 수 있는 VSS 인식 애플리케이션을 실행하고 있는 경우에만 데이터를 보존하는 데 도움이 됩니다.
  • VSS 스냅샷 작업이 300초 내에 완료되지 않으면 제한 시간 오류와 함께 스냅샷이 실패합니다.

Windows VSS 스냅샷 만들기

인스턴스를 중지하거나 VM에서 디스크를 분리하지 않고도 볼륨 섀도 복사본 서비스(VSS) 스냅샷을 만들 수 있습니다. VSS 스냅샷은 VSS를 인식하는 앱이 있는 시스템에서 백업과 복구를 위해 사용됩니다.

VSS 스냅샷은 일반적인 Persistent Disk 또는 Hyperdisk 스냅샷과 가격이 같고 스냅샷의 총 크기에 대한 요금만 청구됩니다.

스냅샷 만들기

콘솔

  1. Google Cloud 콘솔의 스냅샷 만들기 페이지로 이동합니다.

    스냅샷 만들기 페이지로 이동
  2. 스냅샷 이름을 입력합니다.
  3. 스냅샷 유형을 선택합니다. 기본값은 장기 백업 및 재해 복구에 가장 적합한 STANDARD 스냅샷입니다.

    비용 효율적인 데이터 보관을 위해서는 보관처리 스냅샷을 선택합니다.

  4. 선택사항: 스냅샷에 대한 설명을 입력합니다.
  5. 소스 디스크에서 스냅샷을 만들려는 기존 디스크를 선택합니다.
  6. 위치 섹션에서 스냅샷 스토리지 위치를 선택합니다.

    스냅샷 설정에 정의된 사전 정의되었거나 맞춤설정된 기본 위치가 자동으로 선택됩니다. 선택적으로 다음을 수행해서 스냅샷 설정을 재정의하고 커스텀 스토리지 위치에 스냅샷을 저장할 수 있습니다.

    1. 스냅샷에 대해 원하는 스토리지 위치 유형을 선택합니다.

      • 더 높은 가용성을 위해서는 더 높은 비용의 멀티 리전을 선택합니다.
      • 더 저렴한 비용으로 데이터의 물리적 위치를 더 세부적으로 제어하려면 리전 스냅샷을 선택합니다.
    2. 위치 선택 필드에서 사용하려는 특정 리전 또는 멀티 리전을 선택합니다. 소스 디스크에 가장 가까운 리전 또는 멀티 리전을 사용하려면 디스크 위치 기준을 선택합니다.
  7. 애플리케이션 일관성 스냅샷 사용 설정 옵션을 선택합니다.
  8. 만들기를 클릭하여 스냅샷을 만듭니다.

gcloud

VSS 스냅샷을 만들려면 gcloud compute snapshots create 명령어를 사용하고 --guest-flush 플래그를 포함합니다.

스냅샷 설정에 따라 또는 선택한 대체 스토리지 위치를 사용해서 정의된 스토리지 위치 정책으로 스냅샷을 만들 수 있습니다. 자세한 내용은 스냅샷 스토리지 위치 선택을 참조하세요.

  • 스냅샷 설정에 구성된 사전 정의되었거나 맞춤설정된 기본 위치에 스냅샷을 만들려면 gcloud compute snapshots create 명령어를 사용합니다.

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk-zone=SOURCE_ZONE \
        --source-disk=SOURCE_DISK_NAME \
        --snapshot-type=SNAPSHOT_TYPE \
        --guest-flush
    
  • 또는 스냅샷 설정을 재정의하고 커스텀 스토리지 위치에 스냅샷을 만들려면 스냅샷 저장 위치를 나타내는 --storage-location 플래그를 포함하세요.

    gcloud compute snapshots create SNAPSHOT_NAME \
        --source-disk-zone=SOURCE_ZONE \
        --source-disk=SOURCE_DISK_NAME \
        --snapshot-type=SNAPSHOT_TYPE \
        --storage-location=STORAGE_LOCATION \
        --guest-flush
    

    다음을 바꿉니다.

    • SNAPSHOT_NAME: 스냅샷의 이름입니다.
    • SOURCE_ZONE: 소스 디스크의 영역
    • SOURCE_DISK_NAME: 스냅샷을 만들려는 디스크 볼륨의 이름
    • SNAPSHOT_TYPE: 스냅샷 유형(STANDARD 또는 ARCHIVE). 스냅샷 유형을 지정하지 않으면 STANDARD 스냅샷이 생성됩니다.
    • STORAGE_LOCATION: (선택사항) 스냅샷을 저장할 Cloud Storage 멀티 리전 또는 Cloud Storage 리전. 스토리지 위치는 하나만 지정할 수 있습니다.

      스냅샷 설정에 구성된 사전 정의되었거나 맞춤 설정된 기본 스토리지 위치를 재정의하려는 경우에만 --storage-location 매개변수를 사용합니다.

    리전 Persistent Disk의 VSS 스냅샷을 만들기 위해 이전 예시에서 --source-disk-zone=--source-disk-region=으로 바꾸고 리전 Persistent Disk가 있는 리전을 지정합니다.

    Google Cloud CLI는 작업이 READY 또는 FAILED 상태를 반환할 때까지 기다립니다. 이러한 상태가 반환되지 않고 최대 제한 시간에 도달하면 스냅샷에 대해 마지막으로 알려진 세부정보를 반환합니다.

REST

스냅샷을 생성할 때 VSS 스냅샷을 만들고자 한다면, compute.snapshots.insert 메서드에 대한 POST 요청 본문에 guestFlush 속성을 포함시킵니다.

스냅샷 설정에 따라 또는 선택한 대체 스토리지 위치를 사용해서 정의된 스토리지 위치 정책으로 스냅샷을 만들 수 있습니다. 자세한 내용은 스냅샷 스토리지 위치 선택을 참조하세요.

  • 스냅샷 설정에 구성된 사전 정의되었거나 맞춤설정된 기본 위치에 스냅샷을 만들려면 snapshots.insert 메서드에 POST 요청을 수행하세요.

    POST https://compute.googleapis.com/compute/beta/projects/DESTINATION_PROJECT_ID/global/snapshots
    {
      "name": "SNAPSHOT_NAME",
      "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME",
      "snapshotType": "SNAPSHOT_TYPE",
      "guestFlush": true,
    }
    
  • 또는 스냅샷 설정을 재정의하고 커스텀 스토리지 위치에 스냅샷을 만들려면 snapshots.insert 메서드에 대해 POST 요청을 수행하고 요청에 storageLocations 속성을 포함합니다.

    POST https://compute.googleapis.com/compute/beta/projects/DESTINATION_PROJECT_ID/global/snapshots
    {
      "name": "SNAPSHOT_NAME",
      "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME",
      "snapshotType": "SNAPSHOT_TYPE",
      "storageLocations": [
          "STORAGE_LOCATION"
      ],
      "guestFlush": true,
    }
    

다음을 바꿉니다.

  • DESTINATION_PROJECT_ID: 스냅샷을 만들려는 프로젝트의 ID
  • SNAPSHOT_NAME: 스냅샷의 이름입니다.
  • SOURCE_PROJECT_ID: 소스 디스크 프로젝트의 ID
  • SOURCE_ZONE: 소스 디스크의 영역
  • SOURCE_DISK_NAME: 스냅샷을 만들려는 디스크 볼륨의 이름
  • SNAPSHOT_TYPE: 스냅샷 유형(STANDARD 또는 ARCHIVE). 스냅샷 유형을 지정하지 않으면 STANDARD 스냅샷이 생성됩니다.
  • STORAGE_LOCATION: (선택사항) 스냅샷을 저장할 Cloud Storage 멀티 리전 또는 Cloud Storage 리전. 스토리지 위치는 하나만 지정할 수 있습니다.

    스냅샷 설정에 구성된 사전 정의되었거나 맞춤 설정된 기본 스토리지 위치를 재정의하려는 경우에만 storageLocations 매개변수를 사용합니다.

리전 Persistent Disk의 VSS 스냅샷을 만들려면 이전에 표시된 POST 요청에서 다음 줄을 바꿉니다.

"sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME",
리전 Persistent Disk의 스냅샷을 만들 때는 대신 이 줄을 사용합니다.
"sourceDisk": "projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME",

선택사항: 읽기 및 쓰기 가능으로 디스크 표시

VSS 스냅샷을 만들면 Windows Server가 스냅샷의 볼륨을 읽기 전용으로 표시합니다. VSS 스냅샷에서 새 디스크를 만들면 해당 디스크도 읽기 전용 모드로 설정됩니다.

이로 인해 문제가 발생할 수 있습니다. 예를 들어 기존 부팅 디스크의 VSS 스냅샷에서 새 부팅 디스크를 사용하여 VM 인스턴스를 만들면 새 부팅 디스크의 읽기 전용 플래그가 VM이 올바르게 부팅되지 않도록 합니다.

이 문제를 해결하려면 다음 단계를 사용하여 VSS 스냅샷에서 생성한 새 디스크에서 읽기 전용 플래그를 삭제합니다.

  1. 디스크가 VM에 연결되어 있는지 확인합니다.

    • VSS 스냅샷에서 만든 디스크가 비부팅 데이터 디스크인 경우 디스크를 새 VM 또는 기존 VM에 연결할 수 있습니다.
    • VSS 스냅샷에서 만든 디스크가 부팅 디스크이고 이를 VM을 부팅하는 데 사용하려면 이 디스크를 별도의 기존 VM에 일시적으로 연결해야 합니다. 다음 단계를 완료하면 기존 VM에서 디스크를 분리하고 새 VM 인스턴스를 부팅하는 데 사용할 수 있습니다.
  2. 디스크가 연결된 Windows VM에 로그인합니다.

  3. PowerShell 명령 프롬프트를 열고 diskpart 도구를 실행합니다.

    PS C:\> diskpart
    
  4. 마운트하려는 디스크를 확인합니다.

    DISKPART> list disk
    
  5. select disk 명령어를 사용하여 디스크를 선택합니다.

    DISKPART> select disk DISK_NUMBER
    

    DISK_NUMBER를 마운트하려는 디스크 수로 바꿉니다.

  6. 디스크를 마운트합니다.

    DISKPART> online disk
    
  7. 디스크의 모든 볼륨을 표시합니다.

    DISKPART> list volume
    
  8. 새 볼륨을 선택합니다.

    DISKPART> select volume VOLUME_NUMBER
    

    VOLUME_NUMBER를 읽기 및 쓰기로 구성할 볼륨 수로 바꿉니다.

  9. 읽기 전용 플래그를 삭제합니다.

    DISKPART> attr volume clear readonly hidden nodefaultdriveletter shadowcopy
    
  10. diskpart 도구를 종료합니다.

    DISKPART> exit
    
  11. 디스크가 다른 VM의 부팅 디스크인 경우, 부팅 디스크 파일을 새 디스크 서명과 동기화합니다.

    PS C:\> bcdboot DRIVE_LETTERWindows /s DRIVE_LETTER
    

    DRIVE_LETTER를 동기화하려는 볼륨의 드라이브 문자로 바꿉니다. 예를 들어 F:\의 경우 F입니다.

VSS를 사용하지 않고 스냅샷 만들기

VSS를 사용하지 않고 Windows VM에 연결된 디스크의 스냅샷을 만들어야 하는 경우가 있습니다.

VSS를 사용하지 않고 Windows VM에서 디스크 스냅샷을 만들려면 다음 안내를 따르세요.

  1. 정상적인 스냅샷을 위한 시스템 준비
  2. 스냅샷 만들기
  3. 디스크 다시 마운트
  4. 읽기/쓰기가 가능한 디스크로 표시하기

정상적인 스냅샷을 위한 시스템 준비

디스크 스냅샷을 만들기 전에 디스크에 대해 원하는 상태와 일관된 스냅샷을 생성하는지 확인하세요. '비정상적인' 상태의 디스크에 대한 스냅샷을 생성할 경우 디스크 검사가 강제로 실행되어 데이터가 손실될 수가 있습니다. 파일 시스템 동기화 및 마운트 해제를 고려해 보세요.

파일 시스템 동기화

예를 들어 특정 애플리케이션이 디스크에 데이터를 기록하고 있을 수도 있어서 디스크의 마운트를 해제하지 못할 경우, 파일 시스템을 동기화하여 디스크 버퍼를 삭제할 수 있습니다. 파일 시스템을 동기화하려면 다음 안내를 따르세요.

  1. Windows VM에 로그인합니다.
  2. Microsoft에서 동기화 도구를 다운로드하여 설치합니다.
  3. 애플리케이션에서 디스크에 쓰지 못하도록 합니다.
  4. 관리자 권한 명령 프롬프트 창을 엽니다.
  5. 명령줄 창에서 다음을 실행합니다.

    PS C:\> sync DRIVE_LETTER
    

    DRIVE_LETTER를 동기화하려는 볼륨의 드라이브 문자로 바꿉니다. 예를 들어 F:\의 경우 F입니다.

디스크 마운트 해제

  1. Windows VM에 로그인합니다.

  2. PowerShell 명령 프롬프트를 열고 diskpart 도구를 실행합니다.

    PS C:\> diskpart
    
  3. 마운트를 해제하고 스냅샷을 생성하려는 디스크를 식별합니다.

    DISKPART> list disk
    
  4. 그런 다음, 방금 찾은 디스크 번호를 사용하여 디스크를 선택합니다.

    DISKPART> select disk DISK_NUMBER
    

    DISK_NUMBER를 다시 마운트하려는 디스크 수로 바꿉니다.

  5. 디스크 마운트 해제

    DISKPART> offline disk
    

스냅샷 만들기

디스크 다시 마운트

  1. Windows VM에 로그인합니다.

  2. PowerShell 명령 프롬프트를 열고 diskpart 도구를 실행합니다.

    PS C:\> diskpart
    
  3. 마운트하려는 디스크를 확인합니다.

    DISKPART> list disk
    
  4. select disk 명령어를 사용하여 디스크를 선택합니다.

    DISKPART> select disk DISK_NUMBER
    

    DISK_NUMBER를 마운트하려는 디스크 수로 바꿉니다.

  5. 디스크를 마운트합니다.

    DISKPART> online disk
    

디스크에서 읽기 전용 플래그 삭제

  1. 필요한 경우 다음 단계를 수행합니다.

    1. Windows VM에 로그인합니다.

    2. PowerShell 명령 프롬프트를 열고 diskpart 도구를 실행합니다.

      PS C:\> diskpart
      
  2. 디스크의 모든 볼륨을 표시합니다.

    DISKPART> list volume
    
  3. 새 볼륨을 선택합니다.

    DISKPART> select volume VOLUME_NUMBER
    

    VOLUME_NUMBER를 읽기 및 쓰기용으로 구성하려는 볼륨 수로 바꿉니다.

  4. 읽기 전용 플래그를 삭제합니다.

    DISKPART> attr volume clear readonly hidden nodefaultdriveletter shadowcopy
    
  5. diskpart 도구를 종료합니다.

    DISKPART> exit
    
  6. 디스크가 다른 VM 인스턴스의 부팅 디스크인 경우 PowerShell 명령 프롬프트에서 새 디스크 서명과 부팅 디스크 파일을 동기화합니다.

    PS C:\> bcdboot DRIVE_LETTER:\Windows /s DRIVE_LETTER
    

    DRIVE_LETTER를 동기화하려는 볼륨의 드라이브 문자로 바꿉니다. 예를 들어 F:\의 경우 F입니다.

다음 단계