가상 디스크 가져오기

온프레미스 환경에 필요한 소프트웨어 및 구성이 포함된 가상 디스크(경우에 따라 골든 디스크 또는 골든 이미지라고도 함)가 있는 경우 이 가상 디스크를 Compute Engine으로 가져오고 그 결과로 생성된 이미지로 가상 머신을 만들어 시간을 절약할 수 있습니다. 가져오기 도구에는 VMDK와 VHD를 비롯한 대부분의 가상 디스크 파일 형식이 지원됩니다.

Compute Engine에서 디스크를 내보낸 경우 디스크에서 이미지를 만들 수 있습니다.

여러 가상 머신(VM)을 마이그레이션하는 자동화 시스템을 만드는 방법에 대한 자세한 내용은 VM을 Compute Engine으로 마이그레이션을 참조하세요.

시작하기 전에

Cloud Build API 사용 설정

가상 어플라이언스 가져오기 도구는 Cloud Build를 사용합니다. 프로젝트에서 Cloud Build 서비스를 사용 설정하고 Cloud Build 서비스 계정에 Compute 리소스를 만들고 관리할 수 있는 권한을 부여합니다.

Console

  1. Cloud Build API를 사용 설정합니다.

    Cloud Build API 사용 설정

    Console에서 Cloud Build API를 사용 설정하면 Cloud Build 서비스가 인스턴스를 Compute Engine으로 가져올 수 있도록 Compute Engine이 Cloud Build 서비스 계정에 다음 역할을 부여합니다.

    • roles/iam.serviceAccountTokenCreator
    • roles/compute.admin
    • roles/iam.serviceAccountUser

    또한 가져오기 도구는 기본 Compute Engine 서비스 계정을 사용합니다. 기본적으로 Compute Engine 서비스 계정에는 Cloud IAM 프로젝트 편집자 역할이 있습니다. 이 역할을 삭제하면 가져오기 프로세스가 실패할 수 있습니다. 서비스 계정에 역할을 다시 추가하려면 액세스 권한 부여를 참조하세요. Compute Engine 기본 서비스 계정에 대한 자세한 내용은 Compute Engine 기본 서비스 계정을 참조하세요.

gcloud

gcloud 명령줄 도구를 사용하여 Cloud Build 서비스를 설정하려면 다음 단계를 따르세요.

  1. Cloud Build를 사용 설정합니다.

    gcloud services enable cloudbuild.googleapis.com
    

    또한 가져오기 도구는 기본 Compute Engine 서비스 계정을 사용합니다. 기본적으로 Compute Engine 서비스 계정에는 Cloud IAM 프로젝트 편집자 역할이 있습니다. 이 역할을 삭제하면 가져오기 프로세스가 실패할 수 있습니다. 서비스 계정에 역할을 다시 추가하려면 액세스 권한 부여를 참조하세요. Compute Engine 기본 서비스 계정에 대한 자세한 내용은 Compute Engine 기본 서비스 계정을 참조하세요.

  2. Cloud Build API의 서비스 계정에 compute.admin 역할을 추가합니다.

    gcloud projects add-iam-policy-binding [PROJECT_ID] \
      --member serviceAccount:[PROJECT_NUM]@cloudbuild.gserviceaccount.com \
      --role roles/compute.admin
    
  3. Cloud Build API의 서비스 계정에 iam.serviceAccountUser 역할을 추가합니다.

    gcloud projects add-iam-policy-binding [PROJECT_ID] \
      --member serviceAccount:[PROJECT_NUM]@cloudbuild.gserviceaccount.com \
      --role roles/iam.serviceAccountUser
    
  4. Cloud Build API의 서비스 계정에 iam.serviceAccountTokenCreator 역할을 추가합니다.

    gcloud projects add-iam-policy-binding [PROJECT_ID] \
      --member serviceAccount:[PROJECT_NUM]@cloudbuild.gserviceaccount.com \
      --role roles/iam.serviceAccountTokenCreator
    

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

지원되는 운영체제

Compute Engine에서 가상 디스크를 부팅하려면 다음 운영체제 중 하나를 실행해야 합니다.

  • Linux 운영체제:
    • CentOS 6, CentOS 7
    • Debian 8 및 Debian 9
    • Red Hat Enterprise Linux 6 및 Red Hat Enterprise Linux 7
    • Ubuntu 14.04 LTS, Ubuntu 16.04 LTS
  • Windows 운영체제:
    • Windows Server 2008 R2
    • Windows Server 2012, Windows Server 2012 R2, Windows Server 2012 R2 Core
    • Windows Server 2016 및 Windows Server 2016 Core
    • Windows Server 2019 및 Windows Server 2019 Core
    • Windows 7 SP1 x64(BYOL만 지원됨)
    • Windows 8 SP1 x64(BYOL만 지원됨)
    • Windows 10 Enterprise x64(BYOL만 지원됨)

제한사항

이 기능에는 다음과 같은 제한사항이 있습니다.

  • Linux 가상 디스크에서는 grub를 부트로더로 사용해야 합니다.
  • UEFI 부트로더는 Windows 또는 Linux에서 지원되지 않습니다.
  • Linux 가상 디스크는 Virtio-SCSI 스토리지 컨트롤러 기기의 지원을 포함하여 커스텀 OS 이미지와 동일한 요구사항을 충족해야 합니다.
  • Windows 가상 디스크에 설치하면 Carbon Black의 Cb Protection과 같은 애플리케이션 허용 소프트웨어로 인해 가져오기 프로세스가 실패할 수 있습니다. 가져오기 전에 이러한 소프트웨어를 제거해야 할 수도 있습니다.
  • RHEL이 실행 중인 가상 디스크를 가져올 경우 가져오기 전에 가상 디스크에 python-boto 패키지가 설치된 경우에만 BYOL(Bring Your Own License)이 지원됩니다.
  • 가상 디스크의 운영체제가 ACPI를 지원해야 합니다.

권한

이미지 가져오기 도구는 몇 단계를 거쳐 가상 디스크 파일을 가져옵니다. 단계에는 파일을 Cloud Storage에 업로드, 필요한 경우 새 버킷 만들기, Compute Engine에 파일 다운로드, 디스크 파일로부터 Compute Engine에 이미지 만들기 등이 포함됩니다. 이 프로세스는 자동으로 진행됩니다. 이 기능을 사용할 때 원활한 환경을 사용 설정하려면 프로젝트에 다음 역할이 있는 것이 좋습니다.

  • roles/storage.admin
  • roles/viewer
  • roles/resourcemanager.projectIamAdmin

가상 디스크 가져오기

호환성 확인

VM용 디스크를 가져오기 전에 VM에 사전 확인 도구를 다운로드하고 실행합니다. 사전 확인 도구는 가져오기 프로세스 실패나 Compute Engine에서 디스크 오작동의 원인이 되는 호환성 문제를 검사합니다.

부팅 가능한 가상 디스크 가져오기

Console

  1. Google Cloud Platform Console에서 가상 디스크 파일을 Cloud Storage에 업로드합니다.
  2. 이미지 만들기 페이지로 이동합니다.

    이미지 만들기 페이지로 이동

  3. 이미지의 이름을 지정합니다.
  4. 소스에서 가상 디스크(VMDK, VHD 등)를 선택합니다.
  5. Cloud Storage 파일의 스토리지 위치를 탐색하거나 수동으로 입력합니다.
  6. 가져온 디스크에서 사용할 수 있는 운영체제를 선택합니다. 다음을 변경할 수도 있습니다.

    • 게스트 패키지 설치를 선택합니다. 게스트 환경을 설치하는 것이 좋습니다. 게스트 환경에 대한 자세한 내용은 게스트 환경을 참조하세요.

    • Windows 또는 Red Hat Enterprise Linux(RHEL) 운영체제의 경우 라이선스 옵션도 선택할 수 있습니다. Compute Engine에서 라이선스를 제공하도록 허용하거나 사용자 라이선스를 사용할 수 있습니다. Windows에서 사용자 라이선스 사용 방법에 대한 자세한 내용은 사용자 라이선스 사용을 참조하세요.

  7. (선택사항) 이미지의 추가 속성을 지정합니다. 예를 들어 이 이미지를 이미지 계열의 일부로 구성할 수 있습니다.

  8. 만들기를 클릭하여 이미지를 가져옵니다.

gcloud

gcloud compute images import 명령어를 사용하여 부팅 가능한 Compute Engine 이미지를 만듭니다. Compute Engine에서는 대부분의 부팅 디스크 이미지를 부팅할 수 있지만, import 명령어를 실행하면 인스턴스를 시작하고 SSH 또는 RDP를 통해 연결하는 데 필요한 필수 드라이버와 최신 게스트 환경 패키지가 디스크에 포함됩니다.

Cloud Storage 버킷이나 로컬 워크스테이션에서 가상 디스크 파일을 가져올 수 있습니다.

워크스테이션에서 가상 디스크 파일을 가져올 경우 가져오기 도구는 파일을 자동으로 Cloud Storage 버킷에 업로드합니다.

원하는 경우 가져오기 프로세스를 시작하기 전에 직접 가상 디스크 파일을 Cloud Storage에 업로드할 수 있지만 가져오기 프로세스에 사용할 프로젝트와 동일한 프로젝트의 스토리지 버킷에 파일을 업로드해야 합니다.

gcloud beta compute images import [IMAGE_NAME] \
    --source-file [SOURCE_FILE] \
    --os [OS]

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

  • [IMAGE_NAME]은 대상 이미지 이름입니다.
  • [SOURCE_FILE]은 가상 디스크 파일이며, 로컬 파일 또는 Cloud Storage에 저장된 파일일 수 있습니다. 가상 디스크가 로컬 파일인 경우 절대 또는 상대 경로를 제공할 수 있습니다. 가상 디스크 파일이 이미 Cloud Storage에 저장되어 있는 경우 파일은 가져오기 프로세스에 사용된 프로젝트의 스토리지 버킷에 있어야 하며, 파일 전체 경로를 gs://[BUCKET_NAME]/[OBJECT_NAME] 형식으로 지정해야 합니다.
  • [OS]는 SOURCE_FILE의 운영 체제이며, centos-6, centos-7, debian-8, debian-9, rhel-6, rhel-7, ubuntu-1404, ubuntu-1604, windows-2008r2, windows-2012, windows-2012r2, windows-2016, windows-2019 또는 BYOL 라이선스 이미지 중 하나여야 합니다.

    사용자 라이선스 사용 지원(베타)

    기본적으로 Windows Server와 Red Hat Enterprise Linux(RHEL) 운영체제를 사용하는 가상 디스크는 추가 요금이 발생하는 프리미엄 OS 이미지로 가져오고 구성됩니다.

    • RHEL에서 자체 소프트웨어 구독을 사용하려면 [OS] 필드에 다음 BYOL 값 중 하나를 지정하여 디스크를 사용자 라이선스(BYOL) 이미지로 가져오면 됩니다.

      • rhel-6-byol
      • rhel-7-byol
    • Windows에 BYOL(bring your own license)을 사용하려면 [OS] 필드에 다음 BYOL 값 중 하나를 지정하여 디스크를 BYOL 라이선스 이미지로 가져오면 됩니다.

      • windows-2008r2-byol
      • windows-2012-byol
      • windows-2012r2-byol
      • windows-2016-byol
      • windows-2019-byol
      • windows-7-byol
      • windows-8-1-x64-byol
      • windows-10-byol

로컬 파일을 지정하면 가상 디스크의 크기와 네트워크 연결 속도에 따라 업로드 작업에 시간이 오래 걸릴 수 있습니다. 디스크 크기에 따라 가져오기 작업을 실행하는 데 수십 분이 걸릴 수 있습니다.

명령어 샘플

다음은 gs://your_gcs_bucket에 저장된 your_server.vmdk라는 debian-9 가상 디스크를 가져오는 예시입니다.

gcloud beta compute images import my-imported-image \
    --source-file gs://your_gcs_bucket/your_server.vmdk \
    --os debian-9

선택적 매개변수

기본적으로 가져온 모든 부팅 디스크 이미지에 게스트 환경 패키지가 추가됩니다. 이 패키지를 사용하지 않으려면 가져오기 명령어에 --no-guest-environment 플래그를 추가합니다.

부팅할 수 없는 가상 디스크 가져오기

Console

  1. Google Cloud Platform Console에서 가상 디스크 파일을 Cloud Storage에 업로드합니다.
  2. 이미지 만들기 페이지로 이동합니다.

    이미지 만들기 페이지로 이동

  3. 이미지의 이름을 지정합니다.
  4. 소스에서 가상 디스크(VMDK, VHD 등)를 선택합니다.
  5. Cloud Storage 파일의 스토리지 위치를 탐색하거나 수동으로 입력합니다.
  6. 운영체제에서 운영체제가 없습니다. 데이터만 있습니다를 선택합니다.
  7. (선택사항) 이미지의 추가 속성을 지정합니다. 예를 들어 이 이미지를 이미지 계열의 일부로 구성할 수 있습니다.
  8. 만들기를 클릭하여 이미지를 가져옵니다.

gcloud

gcloud compute images import 명령어를 사용하여 부팅할 수 없는 Compute Engine 이미지를 만듭니다. 가상 디스크에 부팅 가능한 운영체제가 설치되어 있지 않으면 --os 플래그 대신 --data-disk 플래그를 사용하여 가져올 수 있습니다. 이렇게 하면 드라이버와 게스트 환경 패키지를 설치하는 단계를 건너뛰므로 Compute Engine에서 이미지가 부팅할 수 있게 됩니다.

gcloud compute images import [IMAGE_NAME] \
    --source-file [SOURCE_FILE] \
    --data-disk

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

  • [IMAGE_NAME]은 대상 이미지 이름입니다.
  • [SOURCE_FILE]은 가상 디스크 파일이며, 로컬 파일 또는 Cloud Storage에 저장된 파일일 수 있습니다. 가상 디스크가 로컬 파일인 경우 절대 또는 상대 경로를 사용할 수 있습니다. 가상 디스크 파일이 이미 Cloud Storage에 저장되어 있는 경우 파일은 가져오기 프로세스에 사용된 프로젝트의 스토리지 버킷에 있어야 하며, 파일 전체 경로를 gs://[BUCKET_NAME]/[OBJECT_NAME] 형식으로 지정해야 합니다.

명령어 샘플

다음은 gs://your_gcs_bucket에 저장된 your_disk.vmdk라는 가상 디스크를 가져오는 예시입니다.

gcloud compute images import my-imported-image \
    --source-file gs://your_gcs_bucket/your_disk.vmdk \
    --data-disk

부팅 가능한 이미지 만들기

부팅 가능한 운영체제가 있지만 필요한 Compute Engine 드라이버나 게스트 환경 패키지가 없는 Compute Engine 커스텀 이미지가 있는 경우 이미지 가져오기 도구를 사용하여 이 이미지를 Compute Engine에서 부팅 가능한 이미지로 만들 수 있습니다.

가져올 새 디스크를 지정하는 --source-file 플래그를 사용하는 대신 --source-image 플래그를 사용하여 커스텀 이미지를 부팅 가능한 이미지로 만듭니다.

gcloud compute images import [IMAGE_NAME] \
    --source-image [SOURCE_IMAGE] \
    --os [OS]

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

  • [IMAGE_NAME]은 대상 이미지 이름입니다.
  • [SOURCE_IMAGE]는 소스 이미지 이름입니다.
  • [OS]는 SOURCE_IMAGE의 운영체제이며, centos-6, centos-7, debian-8, debian-9, rhel-6, rhel-7, ubuntu-1404, ubuntu-1604, windows-2008r2, windows-2012, windows-2012r2, windows-2016, windows-2019 또는 BYOL 라이선스 이미지 중 하나여야 합니다.

사용자 라이선스 사용 지원

  • RHEL에서 자체 소프트웨어 구독을 사용하는 경우 [OS] 필드에 다음 BYOL 값 중 하나를 지정하여 사용자 라이선스(BYOL) 이미지를 부팅 가능한 이미지로 만들 수 있습니다.

    • rhel-6-byol
    • rhel-7-byol
  • Windows에 BYOL(bring your own license)을 사용하는 경우 [OS] 필드에 다음 BYOL 값 중 하나를 지정하여 BYOL 라이선스 이미지를 부팅 가능한 이미지로 만들 수 있습니다.

    • windows-2008r2-byol
    • windows-2012-byol
    • windows-2012r2-byol
    • windows-2016-byol
    • windows-2019-byol
    • windows-7-byol
    • windows-8-1-x64-byol
    • windows-10-byol

명령어 샘플

다음은 my-image라는 Compute Engine 이미지를 my-bootable-image라는 부팅 가능한 이미지로 변환하는 예시입니다. 이 예시에서 이미지에 설치된 운영체제는 Ubuntu 16.04입니다.

gcloud compute images import my-bootable-image --source-image=my-image --os=ubuntu-1604

리소스 정리

Cloud Storage에 저장된 파일과 Compute Engine의 이미지에는 요금이 부과됩니다. 가져오기 도구는 Cloud Storage에 가상 디스크 파일을 가져오고 Compute Engine 커스텀 이미지 하나를 만듭니다.

이미지를 올바르게 가져오고 Compute Engine 인스턴스로 올바르게 부팅되었는지 확인한 후 Cloud Storage에서 가상 디스크 파일을 삭제할 수 있습니다. 이 도구는 파일을 Cloud Storage에 업로드할 때 파일의 URI를 인쇄합니다. 이 URI의 형식은 gs://<bucket name>/tmpimage/<image name>입니다.

--data-disk 플래그를 사용하여 이미지를 가져온 후 --source-image 플래그로 import 도구를 두 번째로 실행하여 이미지를 부팅 가능한 이미지로 만들면 첫 번째 이미지가 계속 존재합니다. 필요하지 않으면 이미지를 삭제하는 것이 좋습니다. [IMAGE_NAME] 매개변수와 [SOURCE_IMAGE] 매개변수 모두에 동일한 이미지 이름을 지정하면 이미지를 자동으로 덮어쓰므로 더 이상 정리하지 않아도 됩니다.

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Compute Engine 문서