Migrate to Virtual Machines 문제 해결

Migrate to Virtual Machines 사용 중에 문제가 발생할 경우 유용하게 활용할 수 있는 문제 해결 단계를 알아봅니다.

오류: compute.subnetworks.use permission 권한 필요

공유 VPC를 사용하는 조직은 여러 프로젝트의 리소스를 공통 Virtual Private Cloud(VPC) 네트워크에 연결할 수 있으므로 해당 네트워크의 내부 IP를 사용하여 서로 안전하고 효율적으로 통신할 수 있습니다.

Migrate to Virtual Machines를 사용하면 공유 VPC에 액세스 권한이 있는 프로젝트에 Compute Engine 인스턴스를 배포할 수 있습니다. 하지만 Migrate to Virtual Machines 기본 서비스 계정에 compute.subnetworks.use 역할을 할당하지 않았으면 Compute Engine 인스턴스를 배포하려고 시도할 때 다음 형식으로 오류 메시지가 표시됩니다.

"Create instance of VM "my-vm" from source "my-proj" to target project "target-proj" using Compute Engine instance name "instance-id" failed due to: Required 'compute.subnetworks.use' permission for 'projects/vpc-proj/regions/us-central1/subnetworks/shared-central1'

공유 VPC의 권한 구성에 설명된 대로 공유 VPC 호스트 프로젝트의 compute.subnetworks.use 역할을 Migrate to Virtual Machines 기본 서비스 계정에 할당해야 합니다.

오류: 사용자에게 서비스 계정에 대한 액세스 권한이 없습니다.

마이그레이션된 VM의 대상을 구성하는 동안 Migrate to Virtual Machines를 통해 대상 프로젝트에서 실행되는 Compute Engine 인스턴스에 서비스 계정을 할당할 수 있습니다.

하지만 대상 프로젝트에서 실행 중인 Compute Engine 인스턴스에 서비스 계정을 할당하려면 호스트 프로젝트의 기본 Migrate to Virtual Machines 서비스 계정에 대상 서비스 계정에 대한 Service Account User 역할이 있어야 합니다.

Compute Engine 인스턴스에 서비스 계정을 할당했지만 호스트 프로젝트에 대상 서비스 계정에 대한 Service Account User 역할이 없는 경우, 테스트 클론을 테스트하려고 하거나 VM을 컷오버 하려고 하면 다음 오류가 표시됩니다.

Test-Clone of VM "my-vm" from source "source-vm" to target project "target-proj" using Compute Engine instance name "my-instance" failed due to: The user does not have access to service account 'target-service-account-email'. User: 'host-user-account-email'. Ask a project owner to grant you the iam.serviceAccountUser role on the service account

기본 Migrate to Virtual Machines 서비스 계정이 대상 서비스 계정에 대해 액세스를 허용하도록 올바르게 구성되었는지 확인합니다. 자세한 내용은 대상 프로젝트 서비스 계정의 권한 구성을 참조하세요.

오류: vCenter 최대 쿼리 제한이 초과되어 보고서를 생성하지 못했습니다.

Migrate to Virtual Machines를 사용하면 소스 VM 사용량 보고서를 만들 수 있기 때문에 Compute Engine 대상에 대한 최적의 설정을 결정하는 데 도움이 됩니다. 이 보고서에는 vCenter에 배포된 소스 VM의 리소스 할당 및 사용량 정보가 표시됩니다.

보고서는 vCenter에서 수집된 데이터로부터 생성됩니다. 보고서를 생성할 때 vCenter 할당량 제한에 도달했음을 나타내는 다음 형식의 오류가 표시될 수 있습니다.

Report generation for source source connected to vCenter vcenter failed due to vCenter maximum query limit exceeded. Details: VC message

할당량 제한 증가에 대한 자세한 내용은 이 vSphere 문서를 참조하세요.

오류: Migrate for Virtual Machines에서 생성된 인스턴스가 부팅되지 않음

소스 VM 부팅 디스크가 VM 디스크 목록에 있는 첫 번째 디스크가 아닌 경우에 다음 메시지가 표시되는 직렬 콘솔 오류가 발생할 수 있습니다.

drive 0x000f2410: PCHS=0/0/0 translation=lba LCHS=1024/255/63 s=104857600
drive 0x000f23d0: PCHS=0/0/0 translation=lba LCHS=1024/255/63 s=167772160
drive 0x000f2390: PCHS=0/0/0 translation=lba LCHS=1024/255/63 s=83886080
Sending Seabios boot VM event.
Booting from Hard Disk 0...

이 오류를 완화하려면 디스크를 클론하고 Migrate to Virtual Machines의 새 VM에 클론을 올바른 순서대로 연결합니다.

디스크를 클론하고 올바른 순서로 연결하려면 다음 단계를 수행합니다.

  1. 복제된 VM을 중지합니다.
  2. 원래 부팅 디스크를 클론합니다.

    gcloud compute disks create -project=$PROJECT --zone=$ZONE --source-disk=$DISK new-disk-name
    
  3. 다음 명령어를 실행하여 클론된 부팅 디스크에 라이선스를 다시 할당하고 관련 태그를 추가합니다(예: windows2008-r2).

    gcloud compute disks create --project=$PROJECT --zone=$ZONE --source-disk=disk created on step #2 --licenses=projects/windows-cloud/global/licenses/windows-server-2008-r2-dc --guest-os-features=VIRTIO_SCSI_MULTIQUEUE,MULTI_IP_SUBNET,WINDOWS new-disk-name
    
  4. VM을 수정합니다.

    1. 현재 부팅 디스크를 분리하고 추가 디스크에 연결합니다.
    2. 추가 디스크에서 원래 부팅 디스크를 삭제합니다.
    3. 3단계에서 만든 디스크를 부팅 디스크에 연결합니다.
    4. 변경사항을 저장합니다.

VM 부팅 프로세스를 확인한 후에 원래 부팅 디스크를 삭제할 수 있습니다.

오류: Windows VM이 클론의 첫 번째 부팅에서 `chkdsk' 실행

Migrate to Virtual Machines 테스트 클론 단계는 소스 VM이 실행되는 동안에 생성된 스냅샷을 기반으로 클라우드에서 VM 클론을 인스턴스화합니다.

경우에 따라 클론이 클라우드에서 부팅되는 동안 Windows VM에서 자동 chkdsk 스캔 작업이 트리거될 수 있습니다. 이러한 오류가 확인 단계를 차단하는 경우 VM이 꺼져 있는 동안 Migrate to Virtual Machines에서 스냅샷을 만들 수 있도록 복제 주기 사이에 VM을 종료하는 것이 좋습니다.

이는 VM이 컷오버될 때 VM에 영향을 주지 않습니다. Migrate to Virtual Machines에서 최종 동기화 단계를 완료하기 전에 VM이 컷오버 프로세스의 일부로 종료되기 때문입니다.