인스턴스 정지 및 재개

이·문서에서는·가상·머신(VM) 인스턴스를 일시정지·및 재개하는 방법을 설명합니다. 인스턴스를 중지 및 시작하는 방법에 대한 자세한 내용은 인스턴스 중지 및 시작을 참조하세요. 인스턴스 수명 주기에 대한 자세한 내용은 인스턴스 수명주기 문서를 참조하세요.

인스턴스를 일시정지하면 ACPI S3 일시정지 신호를 인스턴스 운영체제에 전송합니다. 인스턴스 일시정지는 노트북 덮개를 닫는 것과 비슷하게 인스턴스를 SUSPENDED 상태로 전환하는 것입니다. 다음과 같은 경우 인스턴스를 일시정지하는 것이 좋습니다.

  • VM 인스턴스를 새로 만드는 것보다 비용을 절감하거나 더 빠르게 초기화하기 위해 저녁이나 주말과 같은 비사용 기간 동안 완전히 활용되지 않는 개발 및 테스트 환경
  • 인스턴스의 부팅이 완료된 후 애플리케이션이 첫 번째 요청(예: 가상 개발자 워크스테이션 또는 복잡한 자바 애플리케이션)을 처리할 준비가 되기 전에 긴 초기화 기간이 필요한 애플리케이션

인스턴스 일시정지와 인스턴스 중지의 차이점은 다음과 같습니다.

인스턴스를 일시정지하면 메모리가 스토리지로 이동되고 인스턴스가 보존됩니다. 인스턴스가 일시정지된 상태에서는 사용 중인 스토리지에 대해서만 비용이 청구됩니다. 고정 IP 주소는 그대로 유지되므로 인스턴스가 재시작될 때 네트워크 기능이 예상한 대로 재개됩니다. 인스턴스를 켠 후에는 메모리가 스토리지에서 다시 인스턴스 메모리로 이동하고 인스턴스 비용 청구가 재개됩니다.

로컬 SSD 데이터를 제외하고 인스턴스에 연결된 모든 리소스는 인스턴스에 연결된 상태로 유지되며 영구 디스크 및 고정 또는 예약된 외부 IP 주소를 포함하여 요금이 청구됩니다. 이러한 모든 리소스는 인스턴스가 일시정지된 경우에도 가격표에 따라 요금이 청구됩니다.

게스트 환경에 내장된 표준 프로세스를 사용하여 인스턴스를 일시정지할 수 없습니다. Ubuntu 16.04 이상의 systemctl suspend 명령어와 같은 명령어는 사용할 수 없습니다. gcloud 명령줄 도구 또는 Compute Engine API만 사용하여 인스턴스를 일시정지할 수 있습니다.

나중에 인스턴스를 재개할 때 인스턴스의 메모리와 기기 상태를 복원할 필요가 없는 경우 인스턴스를 중지할 수 있으며 추가 스토리지 요금이 발생하지 않습니다.

시작하기 전에

베타 제한사항

베타 버전에서 이 기능에는 다음과 같은 제한사항이 적용됩니다.

  • GPU를 사용하는 인스턴스는 일시정지할 수 없습니다.
  • 로컬 SSD를 연결한 인스턴스는 일시정지할 수 있지만 로컬 SSD 데이터 삭제를 위한 특수 플래그를 사용하여 로컬 SSD 콘텐츠를 삭제해야 합니다. 자세한 내용은 VM 인스턴스 일시정지를 참조하세요.
  • 게스트 환경에 내장된 표준 프로세스를 사용하여 인스턴스를 일시정지할 수 없습니다. Ubuntu 16.04 이상의 systemctl suspend 명령어와 같은 명령어는 사용할 수 없습니다. 게스트 내 신호는 무시됩니다.
  • VM이 자동으로 중지되기 전 최대 60일 동안만 인스턴스를 일시정지할 수 있습니다.
  • 메모리가 120GB를 초과하는 인스턴스는 일시정지할 수 없습니다.
  • 선점형 인스턴스를 일시정지할 수 있지만 인스턴스가 일시정지되기 전에 선점형 인스턴스가 종료될 수 있습니다.
  • 베타 버전에서는 Compute Engine에서 일시정지된 인스턴스의 보존된 메모리 상태를 삭제해야 할 수 있습니다. Compute Engine에서 보존된 메모리 상태를 삭제해야 하는 경우 인스턴스를 TERMINATED 상태로 이동하고 instances.start 메서드를 사용하여 정상적으로 인스턴스를 재부팅할 수 있습니다.
  • E2 인스턴스는 일시중지할 수 없습니다.

OS 호환성

Compute Engine에서 제공하는 대부분의 운영체제는 일시정지 기능과 재개 기능을 지원하지만 일부 OS에서는 지원하지 않습니다. OS에서 일시정지 및 재개를 지원하는지 확인하려면 다음 표를 사용하세요.

이미지 계열 버전 상태 참고
지원되는 OS
Ubuntu 16, 18, 19 이상 지원 없음
Container-Optimized OS 69, 73, 77, 81 이상 지원 없음
RHEL 7 지원 없음
CentOS 7 지원 없음
Windows 2012, 2016, 2019 이상 지원 없음
SUSE(SLES) 12, 15 이상 지원 없음
Debian 8, 9 지원되지만 일부 구성 필요 Debian 8, 9 구성 안내
지원되지 않는 OS
CentOS 6, 8 지원되지 않음 없음
RHEL 6, 8 지원되지 않음 없음
Windows Server의 SQL Server 전체 지원되지 않음 없음
RHEL for SAP 전체 지원되지 않음 없음
Debian 10 지원되지 않음 없음
CoreOS 전체 지원되지 않음 없음

가격 책정

인스턴스를 일시정지하면 다음 항목에 대한 요금이 청구됩니다.

인스턴스 일시정지

인스턴스를 일시정지하려면 Cloud Console, gcloud 도구 또는 베타 API를 사용하세요.

게스트 환경에 내장된 표준 프로세스를 사용하여 인스턴스를 일시정지할 수 없습니다. Cloud Console, gcloud 명령줄 도구 또는 API를 사용하여 인스턴스를 일시정지할 수 있습니다.

Console

  1. Cloud Console에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  2. 일시정지할 인스턴스를 하나 이상 선택합니다.

  3. 일시정지를 클릭합니다.

  4. 메시지가 표시된 상태에서 로컬 SSD 데이터를 삭제하려면 SSD 콘텐츠 삭제를 선택합니다. 인스턴스가 재개되면 인스턴스의 모든 로컬 SSD 데이터가 삭제됩니다.

gcloud

인스턴스를 일시정지하려면 다음 gcloud 명령줄 도구를 사용합니다.

 gcloud beta compute instances suspend VM_NAME

인스턴스를 일시정지하도록 요청한 후 Compute Engine에서 인스턴스에 필요한 모든 데이터를 보존하는 데는 약간의 시간이 걸릴 수 있습니다. 이 시간 동안 계속 실행되는 인스턴스에는 여전히 요금이 청구됩니다.

일시정지된 인스턴스는 SUSPENDED 상태로 표시됩니다. describe 요청을 하여 인스턴스의 상태를 확인합니다.

gcloud compute instances describe VM_NAME

로컬 SSD 데이터로 인스턴스를 일시정지하려면 --discard-local-ssd 플래그를 제공하여 로컬 SSD 데이터를 삭제해야 합니다.

gcloud beta compute instances suspend VM_NAME --discard-local-ssd

API

API에서 instances.suspend 메서드를 사용하여 요청합니다.

https://www.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/suspend

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID입니다.
  • ZONE: VM의 영역입니다.
  • VM_NAME: 일시정지하려는 인스턴스입니다.

인스턴스를 일시정지하도록 요청한 후 Compute Engine에서 인스턴스에 필요한 모든 데이터를 보존하는 데는 약간의 시간이 걸릴 수 있습니다. 이 시간 동안 계속 실행되는 인스턴스에는 요금이 청구됩니다.

Compute Engine에서 SUSPENDED 상태로 일시정지된 인스턴스를 표시합니다. GET 요청을 하여 인스턴스의 상태를 확인합니다.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME

인스턴스의 상태는 상태 필드에 표시됩니다. 예를 들면 다음과 같습니다.

...
"zone": "https://content.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a",
"status": "SUSPENDED",
"name": "example-vm",
...

로컬 SSD 데이터로 인스턴스를 일시정지하려면 discardLocalSsd 쿼리 매개변수(선택사항)을 제공하여 로컬 SSD 데이터를 삭제해야 합니다.

https://www.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/suspend?discardLocalSsd=true

일시정지된 인스턴스 재개

일시정지된 인스턴스를 재개하려면 Cloud Console, gcloud 도구 또는 베타 API를 사용하세요.

Console

  1. Google Cloud Console에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  2. 재개할 인스턴스를 하나 이상 선택합니다.

  3. 시작/재개를 클릭합니다.

gcloud

인스턴스를 재개하려면 gcloud 명령줄 도구를 사용합니다.

 gcloud beta compute instances resume VM_NAME

인스턴스를 재개하도록 요청한 후 Compute Engine에서 인스턴스에 필요한 모든 데이터를 복원하는 데 약간의 시간이 걸릴 수 있습니다. 이 시간 동안 재개되는 인스턴스에는 여전히 요금이 청구됩니다.

인스턴스가 RUNNING으로 표시되면 인스턴스가 재개된 것입니다. describe 요청을 하여 인스턴스의 상태를 확인합니다.

gcloud compute instances describe VM_NAME

API

instances.resume 메서드에 대해 요청을 실행합니다.

https://www.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/resume

다음을 바꿉니다.

  • PROJECT_ID: 이 요청의 프로젝트 ID입니다.
  • ZONE: VM의 영역입니다.
  • VM_NAME: 재개할 인스턴스입니다.

인스턴스를 재개하도록 요청한 후 Compute Engine에서 인스턴스에 필요한 모든 데이터를 복원하는 데 약간의 시간이 걸릴 수 있습니다. 이 시간 동안 재개되는 인스턴스에는 여전히 요금이 청구됩니다.

재개가 완료되면 Compute Engine에서 인스턴스를 RUNNING 상태로 표시합니다. GET 요청을 하여 인스턴스의 상태를 확인합니다.

GET https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances/example-instance

인스턴스의 상태는 상태 필드에 표시됩니다. 예를 들면 다음과 같습니다.

...
"zone": "https://content.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a",
"status": "RUNNING",
"name": "example-instance",
...

암호화된 디스크가 있는 인스턴스 재개

재개하려는 인스턴스에서 고객 제공 암호화 키를 사용하는 경우 인스턴스를 재개하려고 할 때 이러한 키를 제공해야 합니다.

gcloud 도구 또는 API를 사용하여 인스턴스를 재개합니다.

gcloud

--csek-key-file 플래그와 시작할 인스턴스 이름을 사용하여 키를 제공합니다. RSA 래핑 키를 사용하는 경우 gcloud beta 구성요소를 사용합니다.

gcloud beta compute instances resume VM_NAME \
  --csek-key-file ENCRYPTION_KEY_FILE

다음을 바꿉니다.

  • VM_NAME: 인스턴스 이름입니다.
  • ENCRYPTION_KEY: 인스턴스에 연결된 영구 디스크를 암호화하는 데 사용한 암호화 키가 포함된 파일의 상대 경로입니다.

API

암호화 키를 사용하여 인스턴스를 재개하려면 instances.resume 메서드에 대한 POST 요청을 작성합니다.

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/resume
{
  "disk": [
    {
       "source": "DISK_NAME",
       "diskEncryptionKey": {
         "rsaEncryptedKey": "ENCRYPTION_KEY"
       }
    }
  ]
}

다음을 바꿉니다.

  • VM_NAME: 인스턴스 이름입니다.
  • PROJECT_ID: 이 요청의 프로젝트 ID입니다.
  • ZONE: 이 인스턴스의 영역입니다.
  • DISK_NAME: 고객 제공 암호화 키로 암호화된 연결된 디스크입니다.
  • ENCRYPTION_KEY: 인스턴스에 연결된 영구 디스크를 암호화하는 데 사용되는 암호화 키입니다.

인스턴스가 SUSPENDED 상태이면 Compute Engine은 이러한 키를 서버에 저장하지 않으므로 암호화된 각 디스크가 일치하는 diskEncryptionKey와 함께 나열되어야 합니다.

일시정지 절차

일시정지를 요청하면 VM 인스턴스에 ACPI 일시정지 신호를 보냅니다. VM이 몇 분 내에 ACPI S3 일시정지 신호에 응답하지 않으면 Compute Engine은 일시정지 시도를 취소하고 VM을 RUNNING 상태로 반환합니다.

다음 표에서는 VM 인스턴스를 일시정지할 때 관련 리소스에 미치는 영향을 설명합니다.

리소스 지원
메모리 메모리가 120GB 이하인 VM만 일시정지할 수 있습니다.
로컬 SSD 로컬 SSD 데이터가 삭제됩니다.
영구 디스크 영구 HDD 및 SSD 디스크가 보관됩니다.
IP 주소 임시 IP는 일시정지 중에 해제되지만 고정 IP는 VM 인스턴스에 연결된 상태로 유지됩니다. 임시 ID를 유지하려면 이를 승격합니다.
VM 구성(예: 머신 유형, 메타데이터, 라벨) 인스턴스가 재개되면 임시 IP 주소를 제외한 모든 VM 구성이 보존 및 복원됩니다.

로컬 SSD 및 선점형 VM

인스턴스가 일시정지되면 로컬 SSD 콘텐츠가 보존되지 않습니다. 기본적으로 로컬 SSD가 있는 인스턴스를 일시정지하면 오류가 반환됩니다. 이 기본 동작을 로컬 SSD 데이터를 삭제하는 플래그를 지정하여 재정의할 수 있으며, 이를 통해 인스턴스를 일시정지하고 재개할 수 있지만 프로세스의 로컬 SSD 콘텐츠는 삭제됩니다. 이 시나리오에서는 Compute Engine이 동일한 수의 로컬 SSD 볼륨이 연결된 인스턴스를 재개하지만 볼륨은 비어 있고 초기화되지 않습니다.

선점형 VM을 일시정지할 수 있지만 일시정지 작업이 완료되기 전에 선점(선점 앞에 나오는 사전 경고 아님)이 발생하면 일시정지가 종료되고 인스턴스가 선점됩니다.

일시정지 및 재개를 지원하도록 Debian VM 구성

Debian 8 및 9를 실행하는 VM은 일시정지 및 재개할 수 있지만 사전에 구성해야 합니다. Debian 인스턴스를 구성하려면 다음 옵션 A 또는 옵션 B를 완료합니다. 가능한 경우 ACPID를 구성하는 것이 좋습니다(옵션 A).

옵션 A

이 옵션은 절전 모드 버튼 이벤트를 처리하도록 ACPID를 구성하고 절전 모드 이벤트를 처리하기 위한 셸 스크립트를 추가합니다.

  1. ssh를 사용하여 VM 인스턴스에 연결합니다.

    gcloud compute ssh VM_NAME
    
  2. VM 인스턴스에서 acpi 폴더 아래에 디렉터리를 만듭니다.

    sudo mkdir -p /etc/acpi/events/
    
  3. 절전 모드 버튼 이벤트를 처리하도록 ACPID를 구성합니다.

    cat <<EOF | sudo tee /etc/acpi/events/sleepbtn-acpi-support
    event=button[ /]sleep
    action=/etc/acpi/sleepbtn-acpi-support.sh
    EOF
    
  4. 절전 모드 이벤트 처리 스크립트를 만듭니다.

    cat <<EOF | sudo tee /etc/acpi/sleepbtn-acpi-support.sh
    #!/bin/sh
    echo mem > /sys/power/state
    EOF
    
  5. 스크립트에 대한 권한을 설정합니다.

    sudo chmod 755 /etc/acpi/sleepbtn-acpi-support.sh
    
  6. ACPID를 다시 시작합니다.

    sudo systemctl restart acpid.service
    

옵션 B

  1. ssh를 사용하여 VM 인스턴스에 연결합니다.

    gcloud compute ssh VM_NAME
    
  2. VM 인스턴스에 dbus를 설치합니다.

    sudo apt-get install dbus
    
  3. logind를 다시 시작합니다.

    sudo systemctl restart systemd-logind.service
    

다음 단계