영구 디스크 스냅샷 작업

스냅샷을 만들어 영역 영구 디스크 또는 리전 영구 디스크의 데이터를 주기적으로 백업할 수 있습니다.

실행 중인 인스턴스에 연결된 상태에서도 디스크에서 스냅샷을 만들 수 있습니다. 스냅샷은 전역 리소스이므로 동일한 프로젝트 내의 새로운 디스크 또는 인스턴스로 데이터를 복원하는 데 사용할 수 있습니다. 또한 프로젝트 간에 스냅샷을 공유할 수 있습니다.

시작하기 전에

스냅샷 만들기

영구 디스크 스냅샷을 만드는 방법은 다음과 같습니다.

영역 영구 디스크의 스냅샷 만들기

Console

  1. Google Cloud Console에서 스냅샷 만들기 페이지로 이동합니다.
    스냅샷 만들기 페이지로 이동
  2. 스냅샷 이름을 입력합니다.
  3. 원하는 경우 스냅샷에 대한 설명을 입력합니다.
  4. 드롭다운 메뉴에서 소스 디스크를 선택합니다.
  5. 스냅샷 스토리지 위치를 지정합니다. 기본 스토리지 위치 또는 커스텀 스토리지 위치를 사용할 수 있습니다.

    1. 위치에서 스냅샷을 멀티 리전 위치에 저장할지 또는 리전 위치 하나에 저장할지 선택합니다.
    2. 사용할 특정 리전 또는 다중 리전을 선택합니다. 소스 디스크에 가장 가까운 리전 또는 다중 리전을 사용하려면 디스크 위치 기준(기본값)을 선택합니다.
  6. 만들기를 클릭하여 스냅샷을 만듭니다.

gcloud

기본 스토리지 위치 또는 선택한 스토리지 위치에 스냅샷을 만듭니다. 스냅샷 이름을 지정해야 합니다. 이름은 1~63자(영문 기준)여야 하며 RFC 1035를 준수해야 합니다.

  • 기본 스토리지 위치에 영역 영구 디스크의 스냅샷을 만들려면 gcloud compute disks snapshot 명령어를 사용합니다.

    gcloud compute disks snapshot DISK_NAME

    DISK_NAME을 스냅샷을 만들 영역 영구 디스크의 이름으로 바꿉니다.

  • 또는 커스텀 스토리지 위치에 스냅샷을 만들려면 --storage-location 플래그를 사용하여 스냅샷 저장 위치를 지정합니다.

    gcloud compute disks snapshot DISK_NAME \
        --snapshot-names=SNAPSHOT_NAME \
        --storage-location STORAGE_LOCATION
    

    각 항목의 의미는 다음과 같습니다.

    • DISK_NAME은 스냅샷을 만들려는 영역 영구 디스크의 이름입니다.
    • SNAPSHOT_NAME은 스냅샷 이름입니다.
    • STORAGE_LOCATION은 스냅샷을 저장하려는 Cloud Storage 멀티 리전 또는 Cloud Storage 리전입니다. 스토리지 위치는 하나만 지정할 수 있습니다.

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

API

기본 스토리지 위치 또는 선택한 스토리지 위치에 스냅샷을 만듭니다. name 필드를 사용하여 스냅샷 이름을 지정해야 합니다. 이름은 1~63자(영문 기준)여야 하며 RFC 1035를 준수해야 합니다.

  • 기본 스토리지 위치에 스냅샷을 만들려면 disks.createSnapshot 메서드에 대해 POST 요청을 작성합니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/createSnapshot
    
    {
      "name": SNAPSHOT_NAME
    }
    

    각 항목의 의미는 다음과 같습니다.

    • PROJECT_ID는 프로젝트 ID입니다.
    • ZONE은 인스턴스와 디스크가 있는 영역입니다.
    • DISK_NAME은 스냅샷을 만들려는 영역 영구 디스크의 이름입니다.
    • SNAPSHOT_NAME은 스냅샷 이름입니다.
  • 또는 커스텀 스토리지 위치에 스냅샷을 만들려면 disks.createSnapshot 메서드에 대해 POST 요청을 작성하고 스토리지 위치를 지정합니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME/createSnapshot
    
    {
      "name": SNAPSHOT_NAME
      "storageLocations": STORAGE_LOCATION
    }
    

    각 항목의 의미는 다음과 같습니다.

    • PROJECT_ID는 프로젝트 ID입니다.
    • ZONE은 인스턴스와 디스크가 있는 영역입니다.
    • DISK_NAME은 스냅샷을 만들려는 영역 영구 디스크의 이름입니다.
    • SNAPSHOT_NAME은 스냅샷 이름입니다.
    • STORAGE_LOCATION은 스냅샷을 저장하려는 Cloud Storage 멀티 리전 또는 Cloud Storage 리전입니다. 스토리지 위치는 하나만 지정할 수 있습니다.

리전 영구 디스크의 스냅샷 만들기

디스크가 준비되면 스냅샷을 만들 수 있습니다. 지역 영구 디스크의 스냅샷을 생성할 때 디스크가 있는 지역을 지정해야 합니다.

Console

  1. Google Cloud Console에서 스냅샷 만들기 페이지로 이동합니다.
    스냅샷 만들기 페이지로 이동
  2. 스냅샷 이름을 입력합니다.
  3. 원하는 경우 스냅샷에 대한 설명을 입력합니다.
  4. 소스 디스크에서 스냅샷을 만들려는 기존 디스크를 선택합니다.
  5. 선택적으로 커스텀 스토리지 위치를 지정할 수 있습니다.

    1. 위치에서 스냅샷을 멀티 리전 위치에 저장할지 또는 리전 위치 하나에 저장할지 선택합니다.
    2. 사용할 특정 리전 또는 멀티 리전을 선택합니다. 소스 디스크에 가장 가까운 지역 또는 다중 지역을 사용하려면 디스크 위치 기준을 선택합니다.
  6. 만들기를 클릭하여 스냅샷을 만듭니다.

gcloud

기본 스토리지 위치 또는 선택한 스토리지 위치에 스냅샷을 만듭니다.

  • 기본 스토리지 위치에 리전 영구 디스크의 스냅샷을 만들려면 gcloud compute disks snapshot 명령어를 사용합니다.

    gcloud compute disks snapshot DISK_NAME \
        --region=REGION
    

    다음을 바꿉니다.

    • DISK_NAME: 스냅샷을 만들려는 리전 영구 디스크의 이름입니다.
    • REGION: 리전 영구 디스크가 있는 리전입니다.
  • 선택적으로 커스텀 스토리지 위치를 지정할 수 있습니다.

    gcloud compute disks snapshot DISK_NAME --region
        REGION --storage-location STORAGE_LOCATION
    

    각 항목의 의미는 다음과 같습니다.

    • DISK_NAME은 스냅샷을 만들려는 리전 영구 디스크의 이름입니다.
    • REGION은 리전 영구 디스크가 있는 리전입니다.
    • STORAGE_LOCATION은 스냅샷을 저장하려는 Cloud Storage 멀티 리전 또는 Cloud Storage 리전입니다. 스토리지 위치는 하나만 지정할 수 있습니다.

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

API

  • 기본 스토리지 위치에 스냅샷을 만들려면 regionDisk.createSnapshot 메서드에 대해 POST 요청을 작성합니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/disks/DISK_NAME/createSnapshot
    {
     "name": SNAPSHOT_NAME
    }
    

    각 항목의 의미는 다음과 같습니다.

    • PROJECT_ID는 프로젝트 ID입니다.
    • REGION은 리전 영구 디스크가 있는 리전입니다.
    • DISK_NAME은 스냅샷을 만들 디스크의 이름입니다.
    • SNAPSHOT_NAME은 스냅샷 이름입니다.
  • 또는 커스텀 스토리지 위치에 스냅샷을 만들려면 regionDisk.createSnapshot 메서드에 대해 POST 요청을 작성하고 스토리지 위치를 지정합니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/VAR/disks/DISK_NAME/createSnapshot
    {
     "name": SNAPSHOT_NAME
     "storageLocations": STORAGE_LOCATION
    }
    

    각 항목의 의미는 다음과 같습니다.

    • PROJECT_ID는 프로젝트 ID입니다.
    • REGION은 리전 영구 디스크가 있는 리전입니다.
    • DISK_NAME은 스냅샷을 만들려는 리전 영구 디스크의 이름입니다.
    • SNAPSHOT_NAME은 스냅샷 이름입니다.
    • STORAGE_LOCATION은 스냅샷을 저장하려는 Cloud Storage 멀티 리전 또는 Cloud Storage 리전입니다. 스토리지 위치는 하나만 지정할 수 있습니다.

프로젝트 간 스냅샷 공유

프로젝트 간에 디스크 데이터를 이동하려면 디스크의 스냅샷을 다른 프로젝트의 사용자와 공유합니다. 예를 들어 project-adisk-1 디스크 데이터를 project-b의 새 disk-2 디스크로 이동하려면 다음 단계를 수행합니다. 이 예시에서 disk-1us-west2-a 영역에 있고 instance-1us-west2-b 영역에 있습니다.

gcloud

  1. disk-1의 스냅샷을 만듭니다.

    gcloud compute disks snapshot disk-1 --project project-a --snapshot-names snapshot-1
    
  2. 이 스냅샷 기반의 새 디스크를 project-b에 만듭니다.

    gcloud compute disks create disk-2  --project project-b --source-snapshot projects/project-a/global/snapshots/snapshot-1
    
  3. 새 디스크를 project-binstance-1 인스턴스에 연결합니다.

    gcloud compute instances attach-disk instance-1 --project project-b --disk disk-2
    
  4. 디스크를 마운트합니다. 영구 디스크 포맷 및 마운트의 5~7단계를 참조하세요.

API

  1. disks.createSnapshot 메서드에 대해 POST 요청을 수행하여 disk-1의 스냅샷을 만듭니다.

    POST https://compute.googleapis.com/compute/v1/projects/project-a/zones/us-west2-a/disks/disk-1/createSnapshot
    
    {
    "name": "snapshot-1"
    }
    
  2. 이 스냅샷 기반의 새 디스크 disk-2project-b에 만듭니다. disks.insert 메서드로 POST 요청을 작성하여 영역 영구 디스크를 만듭니다.

    POST https://compute.googleapis.com/compute/v1/projects/project-b/zones/us-west2-b/disks
    
    {
    "name": "disk-2",
    "type": "zones/us-west2-b/diskTypes/DISK_TYPE"
    "sourceSnapshot": "projects/project-a/global/snapshots/snapshot-1"
    }
    

    DISK_TYPE을 영구 디스크 유형의 전체 또는 부분 URL로 바꿉니다.

    https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/diskTypes/pd-ssd).

  3. 새 디스크를 project-binstance-1 인스턴스에 연결합니다. 디스크는 인스턴스와 동일한 영역에 있어야 합니다. instances.attachDisk 메서드에 대한 POST 요청을 작성하고 방금 만든 영역 영구 디스크의 URL을 포함합니다.

    POST https://compute.googleapis.com/compute/v1/projects/project-b/zones/us-west2-b/instances/instance-1/attachDisk
    
    {
    "source": "/compute/v1/projects/project-b/zones/us-west2-b/disks/disk-2"
    }
    
  4. 디스크를 마운트합니다. 영구 디스크 포맷 및 마운트의 5~7단계를 참조하세요.

사용할 수 있는 스냅샷 목록을 보려면 스냅샷 나열을 참조하세요.

스냅샷 복원

스냅샷의 콘텐츠를 새 디스크로 복원하려면 다음과 같은 옵션이 있습니다.

  • 스냅샷에서 새 영구 디스크를 만듭니다. 새 디스크를 만들고 스냅샷을 소스로 선택합니다.

  • 스냅샷에서 새 인스턴스 만들기: 새 인스턴스를 만들 때 스냅샷을 사용하여 해당 인스턴스의 부팅 디스크 및 데이터 디스크를 만들 수 있습니다. 중단이 발생할 경우 하나 이상의 스냅샷을 새 인스턴스의 새 영구 디스크에 복원하여 데이터를 빠르게 복구할 수 있습니다. 자세한 내용은 스냅샷을 사용하여 인스턴스 만들기를 참조하세요.

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

새 영구 디스크의 크기는 최소한 스냅샷의 원래 소스 디스크와 같아야 합니다. 스냅샷의 원본 소스 디스크보다 큰 영구 디스크를 만드는 경우 추가 디스크 공간이 포함되도록 영구 디스크의 파일 시스템 크기를 조절해야 합니다.

지정된 스냅샷에서 최대 10분마다 영역 영구 디스크를 새로 만들 수 있습니다. 디스크 스냅샷 요청 버스트를 실행하려면 60분 동안 최대 6개의 요청을 실행할 수 있습니다. 스냅샷에서 리전 영구 디스크를 만들 때는 이 한도가 적용되지 않습니다. 자세한 내용은 스냅샷 빈도 제한을 참조하세요.

운영체제 및 파일 시스템 유형에 따라서는 다른 파일 시스템 크기 조절 도구를 사용해야 할 수도 있습니다. 자세한 내용은 운영체제 문서를 참조하세요.

Console

  1. Google Cloud Console에서 스냅샷 페이지로 이동합니다.

    스냅샷으로 이동

  2. 복원할 스냅샷의 이름을 확인합니다.

  3. 디스크 페이지로 이동합니다.

    디스크 페이지로 이동

  4. 새 디스크 만들기를 클릭합니다.

  5. 다음 구성 매개변수를 지정합니다.

    • 디스크의 이름
    • 디스크의 유형
    • 원할 경우 기본 리전 및 영역 선택을 재정의할 수 있습니다. 소스 스냅샷의 스토리지 위치에 관계없이 모든 리전과 영역을 선택할 수 있습니다.
  6. 소스 유형에서 스냅샷을 클릭합니다.

  7. 복원할 스냅샷의 이름을 선택합니다.

  8. 새 디스크의 크기(GB)를 선택합니다. 이 값은 스냅샷의 원래 소스 디스크보다 크거나 같아야 합니다.

  9. 만들기를 클릭하여 디스크를 만듭니다.

gcloud

  1. gcloud compute snapshots list 명령어를 사용하여 복원할 스냅샷의 이름을 확인합니다.

    gcloud compute snapshots list
    
  2. gcloud compute snapshots describe 명령어를 사용해 복원할 스냅샷의 크기를 확인합니다.

    gcloud compute snapshots describe SNAPSHOT_NAME
    

    SNAPSHOT_NAME을 복원할 스냅샷의 이름으로 바꿉니다.

  3. gcloud compute disks create 명령어를 사용하여 새 리전 또는 영역 영구 디스크를 만듭니다. 추가 처리량 또는 IOPS에 사용할 SSD 영구 디스크가 필요한 경우에는 --type 플래그를 포함하고 pd-ssd를 지정합니다.

    gcloud compute disks create DISK_NAME \
        --size=DISK_SIZE \
        --source-snapshot=SNAPSHOT_NAME \
        --type=DISK_TYPE
    

    다음을 바꿉니다.

    • DISK_NAME: 새 디스크의 이름입니다.
    • DISK_SIZE: 새 디스크의 크기(GB)입니다. 이 값은 스냅샷의 원래 소스 디스크보다 크거나 같아야 합니다.
    • SNAPSHOT_NAME: 복원할 스냅샷의 이름입니다.
    • DISK_TYPE: 영구 디스크 유형의 전체 또는 부분 URL입니다. 예를 들면 https://www.googleapis.com/compute/v1/projects/PROJECT_ID /zones/ZONE/diskTypes/pd-ssd입니다.

API

  1. snapshots.list에 대한 GET 요청을 작성하여 프로젝트에 스냅샷 목록을 표시합니다.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots
    

    PROJECT_ID를 프로젝트 ID로 바꿉니다.

  2. disks.insert 메서드로 POST 요청을 작성하여 영역 영구 디스크를 만듭니다. name, sizeGb, type 속성을 포함합니다. 스냅샷을 사용해 디스크를 복원하려면 sourceSnapshot 속성을 추가해야 합니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks
    
    {
     "name": "DISK_NAME",
     "sizeGb": "DISK_SIZE",
     "type": "zones/ZONE/diskTypes/DISK_TYPE"
     "sourceSnapshot": "SNAPSHOT_NAME"
    }
    

    다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID입니다.
    • ZONE: 인스턴스와 새 디스크가 배치되는 영역입니다.
    • DISK_NAME: 새 디스크의 이름
    • DISK_SIZE: 새 디스크의 크기(GB)입니다. 이 값은 스냅샷의 원래 소스 디스크보다 크거나 같아야 합니다.
    • DISK_TYPE: 영구 디스크 유형의 전체 또는 부분 URL입니다. 예를 들면 https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ ZONE/diskTypes/pd-ssd와 같습니다.
    • SNAPSHOT_NAME: 복원할 디스크의 소스 스냅샷입니다.

필요한 경우 새 디스크를 기존 인스턴스에 연결할 수 있습니다.

Console

  1. VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  2. 비부팅 디스크를 복원할 인스턴스의 이름을 클릭합니다.
  3. 인스턴스 세부정보 페이지의 상단에서 수정을 클릭합니다.
  4. 추가 디스크에서 기존 디스크 연결을 클릭합니다.
  5. 스냅샷에서 만든 새 디스크의 이름을 선택합니다.
  6. 완료를 클릭하여 디스크를 연결합니다.
  7. 인스턴스 세부정보 페이지 하단에 있는 저장을 클릭해 변경사항을 인스턴스에 적용합니다.

gcloud

  1. gcloud compute instances attach-disk 명령어를 사용해 영구 디스크를 인스턴스에 연결합니다.

    gcloud compute instances attach-disk INSTANCE_NAME \
        --disk DISK_NAME
    

    각 항목의 의미는 다음과 같습니다.

    • INSTANCE_NAME은 인스턴스의 이름입니다.
    • DISK_NAME은 스냅샷에서 만든 디스크의 이름입니다.

API

  1. instances.attachDisk 메서드에 대한 POST 요청을 작성하고 스냅샷에서 방금 만든 영역 영구 디스크의 URL을 포함합니다.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/attachDisk
    
    {
     "source": "/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME"
    }
    

    각 항목의 의미는 다음과 같습니다.

    • PROJECT_ID는 프로젝트 ID입니다.
    • ZONE은 인스턴스와 새 디스크가 위치하는 영역입니다.
    • INSTANCE_NAME은 새 영구 디스크를 추가할 인스턴스의 이름입니다.
    • DISK_NAME은 새 디스크 이름입니다.

새 디스크를 만들고 인스턴스에 연결한 후에는 운영체제가 가용 저장공간을 사용할 수 있도록 디스크를 마운트해야 합니다.

스냅샷 삭제

Compute Engine에서는 증분 스냅샷을 사용하므로 각 스냅샷에는 이전 스냅샷 이후로 변경된 데이터만 포함됩니다. 이후 스냅샷에서 이전 스냅샷에 저장된 정보를 필요로 하는 경우도 있으므로 스냅샷을 삭제한다고 해서 해당 스냅샷의 모든 데이터가 반드시 삭제되는 것은 아닙니다. 스냅샷 삭제에 대한 자세한 내용은 스냅샷 삭제를 참조하세요.

스냅샷을 삭제하는 방법은 다음과 같습니다.

Console

  1. Google Cloud Console의 스냅샷 페이지로 이동합니다.

    스냅샷 페이지로 이동

  2. 삭제할 스냅샷을 하나 이상 선택합니다.
  3. 스냅샷 페이지의 상단에서 삭제를 클릭합니다.

gcloud

스냅샷을 삭제하려면 gcloud compute snapshots delete 명령어를 사용합니다.

gcloud compute snapshots delete SNAPSHOT_NAME

여기서 SNAPSHOT_NAME은 삭제할 스냅샷의 이름입니다.

API

compute.snapshots.delete 메서드에 대한 DELETE 요청을 수행하여 스냅샷을 삭제합니다.

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots/SNAPSHOT_NAME

각 항목의 의미는 다음과 같습니다.

  • PROJECT_ID는 프로젝트 이름입니다.
  • SNAPSHOT_NAME은 삭제할 스냅샷의 이름입니다.

필터를 기준으로 여러 스냅샷 삭제

Compute Engine에서는 증분 스냅샷을 사용하므로 각 스냅샷에는 이전 스냅샷 이후로 변경된 데이터만 포함됩니다. 이후 스냅샷에서 이전 스냅샷에 저장된 정보를 필요로 하는 경우도 있으므로 스냅샷을 삭제해도 해당 스냅샷의 모든 데이터가 반드시 삭제되는 것은 아닙니다. 스냅샷 삭제에 대한 자세한 내용은 스냅샷 삭제를 참조하세요.

다음 섹션에서는 특정 필터에 따라 스냅샷 여러 개를 삭제하는 방법을 설명합니다. gcloud 도구 필터에 대한 자세한 내용은 gcloud 도구 주제 필터를 참조하세요.

스냅샷을 삭제하려면 gcloud compute snapshots list 명령어와 특정 필터를 함께 사용하고 gcloud compute snapshots delete 명령어xargs를 함께 사용합니다.

gcloud compute snapshots list --filter="EXPRESSION" --uri |
   xargs gcloud compute snapshots delete

EXPRESSIONgcloud 주제 필터로 바꿉니다.

예를 들어 --filter="creationTimestamp>'2021-01-01'"은 2021-01-01 이후에 생성된 모든 스냅샷을 삭제합니다.

스냅샷 나열

gcloud

특정 프로젝트에서 사용할 수 있는 스냅샷 목록을 보려면 gcloud compute snapshots list 명령어를 사용합니다.

gcloud compute snapshots list --project PROJECT_ID

여기서 PROJECT_ID는 프로젝트의 ID입니다.

API

특정 프로젝트에서 사용할 수 있는 스냅샷 목록을 보려면 snapshots.list 메서드GET 요청을 수행합니다.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/snapshots

여기서 PROJECT_ID는 프로젝트의 ID입니다.

스냅샷에 관한 정보 보기

생성 시간, 크기, 소스 디스크와 같은 특정 스냅샷의 정보를 나열하려면 gcloud compute snapshots describe 명령어를 사용합니다.

gcloud compute snapshots describe SNAPSHOT_NAME

여기서 SNAPSHOT_NAME은 스냅샷의 이름입니다.

다음 단계