匯入虛擬磁碟


如果內部部署系統中的虛擬磁碟具備所需的軟體和設定 (有時稱為「黃金磁碟」或「黃金映像檔」),您可以將這些虛擬磁碟匯入 Compute Engine,並使用產生的映像檔來建立虛擬機器,藉此節省時間。Migrate to Virtual Machines 匯入工具支援大多數虛擬磁碟檔案格式,包括 VMDK 和 VHD。

事前準備

支援的格式

您可以使用 Migrate to Virtual Machines,匯入下列格式的虛擬磁碟映像檔:

  • 單一虛擬機器磁碟 (VMDK) - 建議選項,匯入 VMDK 檔案的速度較快
  • QEMU 寫入時複製 (QCOW)
  • QEMU 寫入時複製 2 (QCOW2)
  • QEMU 強化磁碟格式 (QED)
  • 虛擬私有雲
  • 虛擬磁碟映像檔 (VDI)
  • 虛擬硬碟 v2 (VHDX)
  • 虛擬硬碟 (VHD)

除了這些格式之外,系統也支援以 .tar.gz 格式壓縮的原始檔案。請確認壓縮檔案內只有一個名為 disk.raw 的檔案。

限制

您可以將採用 Arm 架構的磁碟映像檔匯入下列區域:

地區說明 地區名稱
新加坡裕廊西 asia-southeast1
日本東京 asia-northeast1
比利時聖吉斯蘭 europe-west1
英國倫敦 europe-west2
德國法蘭克福 europe-west3
荷蘭埃姆斯港 europe-west4
法國巴黎 europe-west9
沙烏地阿拉伯,達曼 me-central2
美國愛荷華州 us-central1
美國南卡羅來納州 us-east1
美國維吉尼亞州 us-east4
美國俄勒岡州 us-west1
美國內華達州 us-west4

映像檔匯入程序

如要使用「遷移至虛擬機器」將虛擬磁碟映像檔匯入至 Compute Engine 映像檔,請按照下列步驟操作:

  1. 準備要匯入的虛擬磁碟映像檔
  2. 選擇目標專案
  3. 將虛擬磁碟映像檔匯入 Compute Engine

準備要匯入的虛擬磁碟檔案

如要將虛擬磁碟映像檔匯入 Compute Engine 映像檔,您必須先準備虛擬磁碟映像檔以供匯入。下列各節將詳細討論這些工作。

將虛擬磁碟映像檔案新增至 Cloud Storage

如要將虛擬磁碟映像檔匯入 Compute Engine 映像檔,您必須先將虛擬磁碟映像檔檔案新增至 Cloud Storage。詳情請參閱「從檔案系統上傳物件」一文。為提升效能,建議您將虛擬磁碟映像檔上傳至要建立映像檔的雲端區域中。

授予必要權限

如要將虛擬磁碟映像檔匯入至 Compute Engine 映像檔,請按照下表所述授予權限。

角色 必要權限 說明
Storage 物件檢視者 roles/storage.objectViewer 請將主機專案 (service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com) 中的預設 Migrate to Virtual Machines 服務帳戶,授予要匯入映像檔的儲存桶中的 roles/storage.objectViewer 角色。這個權限可讓 Migrate to Virtual Machines 存取來源映像檔。
VM Migration 管理員 roles/vmmigration.admin 在主機專案中,將 roles/vmmigration.admin 角色授予您要用來匯入來源圖片的使用者帳戶。
VM Migration 服務帳戶 roles/vmmigration.serviceAgent 將主機專案 (service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com) 中的預設 Migrate to Virtual Machines 服務帳戶授予目標專案的 roles/vmmigration.serviceAgent 角色。舉例來說,如果 service-1234567890@gcp-sa-vmmigration.iam.gserviceaccount.com 是主機專案中的 Migrate to Virtual Machines 服務帳戶,您必須將 roles/vmmigration.serviceAgent 角色授予此服務帳戶,才能在目標專案中建立映像檔。

選擇目標專案

如要託管 Compute Engine 映像檔,您必須建立或選擇目標專案。目標專案會定義 Compute Engine 映像檔的目的專案。如要進一步瞭解如何建立或選擇目標專案,請參閱「新增目標專案」一文。

將虛擬磁碟映像檔匯入至 Compute Engine

您可以使用 Google Cloud 主控台、Google Cloud CLI 或 REST API 指令,將虛擬磁碟映像檔匯入 Compute Engine。

主控台

如要使用 Google Cloud 控制台將虛擬磁碟映像檔匯入 Compute Engine,請按照下列步驟操作。

  1. 在 Google Cloud 控制台中開啟「Migrate to Virtual Machines」(遷移至虛擬機器) 頁面。
    前往「Migrate to Virtual Machines」頁面
  2. 選取「圖片匯入」分頁標籤。
  3. 按一下 [Create image] (建立映像檔)。
  4. 定義圖片的特性。下表列出可為圖片設定的參數。
    區段標題 欄位名稱 說明
    一般 名稱 要建立的映像檔名稱。如要進一步瞭解命名規則,請參閱「命名慣例」。
    映像檔匯入作業 ID 代表圖片匯入資源的 ID。當您將映像檔匯入 Compute Engine 時,Migrate to Virtual Machines 會先建立映像檔匯入資源。圖片匯入資源代表圖片匯入程序。您可以使用圖片匯入 ID 取得圖片匯入程序中匯入的圖片連結。
    來源 Cloud Storage 檔案 要匯入圖片的檔案。按一下「Browse」,查看目前專案中的 bucket 清單,然後選取要匯入圖片的檔案。
    如果您想從其他專案的儲存桶匯入圖片,請務必使用「bucket/folder/file」格式輸入路徑。如要取得 bucket 內物件的路徑,請參閱「查看物件中繼資料」一文。複製路徑時,請務必不要複製 gs:// 前置字串。
    請注意,您只能從 .vmdk.tar.gz 檔案匯入圖片。
    地區 您要建立映像檔的區域。如需支援的地區清單,請參閱「地區和區域」一文。
    目標專案 您要建立映像檔的目標專案。如果您尚未新增目標專案,請按照「新增目標專案」一節的操作說明進行。
    系列 (選用) 選取圖片系列。Compute Engine 提供映像檔系列,確保您的自動化處理系統可以參照最新的映像檔。管理員可以將多個映像檔歸類為一個映像檔系列。詳情請參閱「公開映像檔系列」。
    說明 (選用) 新增圖片說明。
    略過 OS 調整作業 如要略過 OS 調整作業,請將「略過 OS 調整作業」切換鈕設為開啟。
    如要讓從匯入映像檔建立的 VM 在 Google Cloud上正常運作,您必須調整這些 VM 的設定。這些變更稱為「作業系統調整」。Migrate to Virtual Machines 會在映像檔匯入程序中自動執行 OS 調整作業。詳情請參閱「將 VM 執行個體調整為在 Google Cloud上執行」。
    一般化 如要將圖片設為通用圖片,請將「Generalize」切換鈕切換為開啟狀態。當您從映像檔建立執行個體時,Windows 會在執行個體中加入一些專屬資訊。一般化是移除這類資訊的程序,可讓您從同一個映像檔建立多個執行個體。
    授權 授權類型 Compute Engine 支援即付即用 (PAYG) 授權,並支援在部署的 VM 中使用自備授權 (BYOL)。如「支援的作業系統」一節所述,Migrate 會根據遷移的作業系統,為遷移的 VM 指派預設授權類型。
    如果作業系統支援多種授權類型,您可以覆寫預設授權類型,明確指定 PAYG 或 BYOL 授權類型。
    其他授權 額外授權 您最多可以為使用有效網址格式匯入的映像檔所建立的 VM 執行個體新增 10 個授權。例如,您可以使用下列網址格式新增其他授權:
    https://www.googleapis.com/compute/beta/projects/windows-sql-cloud/global/licenses/sql-server-2012-enterprise
    標籤 如要整理專案,請以鍵/值組合的形式為資源新增標籤。請參閱「使用標籤整理資源」一節。
    加密 Google-managed encryption key 選擇這個選項後,系統會在匯入程序中使用 Google-owned and Google-managed encryption keys 加密資料。詳情請參閱「在靜態資料時加密資料」。
    客戶自行管理的加密金鑰 選擇這個選項,即可在匯入程序中使用客戶自行管理的加密金鑰 (CMEK) 加密資料,以及匯入程序建立的映像檔資料。如果您有與保護資料的金鑰相關的特定法規遵循或法規要求,可以使用 CMEK 加密及解密資料。這些加密金鑰由您建立、管理及擁有。詳情請參閱「 使用 Cloud KMS 金鑰保護資源」。
    新增 CMEK 時,您必須授予下表所述的權限。
    角色 必要權限 說明
    Cloud VM Migration Service 帳戶 roles/vmmigration.serviceAgen 將此權限授予 Compute Engine 服務帳戶,以便在匯入程序中建立的映像檔加密資料。
    Compute Engine 服務代理人 roles/compute.serviceAgent 將這項權限授予「遷移至虛擬機器」服務代理,以便在匯入程序中加密資料。
  5. 選取 [Create] (建立)。

gcloud

如要使用 Google Cloud CLI 將虛擬磁碟映像檔匯入 Compute Engine,請使用下列要求。

gcloud migration vms image-imports create IMAGE_NAME \
--source-file=SOURCE_FILE \
--location=REGION_ID \
--target-project=projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT

更改下列內容:

  • IMAGE_NAME:您要建立的映像檔名稱。如要進一步瞭解命名規則,請參閱「命名慣例」。
  • SOURCE_FILE:您要匯入圖片的檔案。請以 gs://bucket/folder/file 的格式輸入路徑。如要取得 bucket 內物件的路徑,請參閱「查看物件中繼資料」一文。請注意,您只能從 .vmdk.tar.gz 檔案匯入圖片。
  • REGION_ID:您要執行圖片匯入程序的區域。映像檔會在最近的多地區建立。如果您想在區域中建立映像檔,請務必將 singleRegionStorage 設為 true。如需支援的地區清單,請參閱「地區和區域」一文。
  • HOST_PROJECT_ID:您要從中遷移虛擬磁碟映像檔的主機專案名稱。
  • TARGET_PROJECT:您要建立圖片的目標專案。如果您尚未新增目標專案,請按照「新增目標專案」一節的操作說明進行。

詳情請參閱 gcloud migration vms image-imports

REST

如要使用 REST API 將虛擬磁碟映像檔匯入 Compute Engine,請按照下列步驟操作。

  1. 使用下列要求建立圖片匯入資源。

    POST https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/imageImports?imageImportId=IMPORT_NAME
    {
    "cloudStorageUri": "SOURCE_FILE",
    "diskImageTargetDefaults": {
    "imageName": "IMAGE_NAME",
    "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT",
    ...
    }
    }
    

    更改下列內容:

    • HOST_PROJECT_ID:您要從中遷移虛擬磁碟映像檔的主機專案名稱。
    • REGION_ID:您要執行圖片匯入程序的區域。映像檔會在最近的多地區建立。如果您想在區域中建立映像檔,請務必將 singleRegionStorage 設為 true。如需支援的地區清單,請參閱「地區和區域」一文。
    • SOURCE_FILE:您要匯入圖片的檔案。請以 gs://bucket/folder/file 的格式輸入路徑。如要取得 bucket 內物件的路徑,請參閱「查看物件中繼資料」一文。請注意,您只能從 .vmdk.tar.gz 檔案匯入圖片。
    • IMAGE_NAME:您要建立的映像檔名稱。如要進一步瞭解命名規則,請參閱「命名慣例」。
    • TARGET_PROJECT:您要建立圖片的目標專案。如果您尚未新增目標專案,請按照「新增目標專案」一節的操作說明進行。

    在這個範例中,IMPORT_NAME 是代表圖片匯入資源的 ID。將映像檔匯入至 Compute Engine 時,Migrate to Virtual Machines 會先建立映像檔匯入資源。圖片匯入資源代表圖片匯入程序。您可以使用 IMPORT_NAME 取得圖片匯入程序中匯入圖片的連結。

    如需圖片匯入建立要求支援欄位的完整清單,請參閱下表。

    欄位名稱 說明
    cloudStorageUri 字串
    匯入圖片的檔案路徑。請以 gs://bucket/folder/file 的格式輸入路徑。如要取得 bucket 內物件的路徑,請參閱「查看物件中繼資料」一文。
    請注意,您只能從 .vmdk.tar.gz 檔案匯入圖片。
    diskImageTargetDefaults.targetProject string
    TargetProject 的路徑。您要建立映像檔的目標專案。詳情請參閱目標專案 API 參考資料。例如:
    projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT
    在範例中,請替換下列項目:
    • HOST_PROJECT_ID:您要從中遷移虛擬磁碟映像檔的主機專案名稱。
    • TARGET_PROJECT:您要建立圖片的目標專案。
    diskImageTargetDefaults.imageName string
    要建立的映像檔名稱。如要進一步瞭解命名規則,請參閱「資源命名慣例」。
    diskImageTargetDefaults.description string
    (選用) 圖片說明。
    diskImageTargetDefaults.familyName string
    (選用) 選取圖片系列。Compute Engine 提供映像檔系列,確保您的自動化處理系統可以參照最新的映像檔。管理員可以將多個圖片歸類為一個映像檔系列。詳情請參閱「公開映像檔系列」。詳情請參閱「公開映像檔系列」。
    diskImageTargetDefaults.labels map (key: string, value: string)
    如要整理專案,請以鍵/值組合的形式為資源新增標籤。請參閱「標示資源」。
    diskImageTargetDefaults.additionalLicenses string[]
    您最多可在使用有效網址格式從匯入的映像檔建立的 VM 執行個體中,新增 10 個額外授權。例如,您可以使用下列網址格式新增其他授權:
    https://www.googleapis.com/compute/beta/projects/windows-sql-cloud/global/licenses/sql-server-2012-enterprise
    diskImageTargetDefaults.singleRegionStorage boolean
    如果您希望圖片 storageLocations 為區域,請將此旗標設為 true。如果將這個標記設為 false,系統會選取最近的多區域。
    diskImageTargetDefaults.dataDiskImageImport boolean
    如果您要略過 OS 調整,請將此旗標設為 true。
    為了讓 VM 在 Google Cloud上正常運作,您必須調整這些 VM 的設定。這些變更稱為作業系統調整。Migrate to Virtual Machines 會在映像檔匯入程序中自動執行作業系統調整作業。詳情請參閱「將 VM 執行個體調整為在 Google Cloud上執行」。
    diskImageTargetDefaults.osAdaptationParameters.licenseType 字串
    您要為圖片使用的授權類型。Compute Engine 支援即付即用 (PAYG) 授權,並可讓您為部署的 VM 自備授權 (BYOL)。如「支援的作業系統」一節所述,Migrate to Virtual Machines 會根據遷移的作業系統,指派遷移 VM 的預設授權類型。
    如果作業系統支援多種授權類型,您可以覆寫預設授權類型,明確指定 PAYG 或 BYOL 授權類型。
    diskImageTargetDefaults.osAdaptationParameters.generalize boolean
    如要將圖片設為通用圖片,請將此旗標設為「true」。
    使用映像檔建立執行個體時,Windows 會在執行個體中加入一些專屬資訊。一般化是一種移除這類資訊的程序,可讓您從同一個映像檔建立多個執行個體。
    diskImageTargetDefaults.encryption 字串
    您要在匯入程序中用來加密資料的 Google-owned and Google-managed encryption key 。詳情請參閱「靜態資料加密」。
    encryption 字串
    選擇這個選項,即可在匯入程序中使用客戶管理的加密金鑰 (CMEK) 加密資料,以及在匯入程序中建立的映像檔資料。如果您有與保護資料的金鑰相關的特定法規或法規要求,可以使用 CMEK 加密及解密資料。這些加密金鑰由您建立、管理及擁有。詳情請參閱「 使用 Cloud KMS 金鑰保護資源」。
    新增 CMEK 時,您必須授予下表所述的權限。
    角色 必要權限 說明
    Cloud VM Migration Service 帳戶 roles/vmmigration.serviceAgent 將此權限授予 Compute Engine 服務帳戶,以便在匯入程序中建立的映像檔加密資料。
    Compute Engine 服務代理人 roles/compute.serviceAgent 將這項權限授予「遷移至虛擬機器」服務代理,以便在匯入程序中加密資料。

    畫面會顯示類似以下的回應。

    {
      "name": "projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID",
      "metadata": {
        "createTime": "2023-10-31T09:12:26.94928636Z",
        "target": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME",
        "verb": "create",
        "apiVersion": "v1",
        "@type": "type.googleapis.com/google.cloud.vmmigration.v1.OperationMetadata"
      }
    }
    
  2. 使用下列指令輪詢作業,檢查映像檔匯入工作是否已完成。

    GET https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID
    

    更改下列內容:

    • HOST_PROJECT_ID:您要從中遷移虛擬磁碟映像檔的主機專案名稱。
    • REGION_ID:您要執行圖片匯入程序的區域。映像檔會在最近的多地區建立。如果您想在區域中建立映像檔,請務必將 singleRegionStorage 設為 true。如需支援的地區清單,請參閱「地區和區域」一文。
    • OPERATION_ID:遷移工作的作業 ID。

    您應該會看到類似下列範例回應的作業完成回應。

      {
        "done": true,
        "name": "projects/HOST_PROJECT_ID/locations/REGION_ID/operations/OPERATION_ID",
        "response": {
          "@type": "type.googleapis.com/google.cloud.vmmigration.v1.ImageImport",
          "name": "projects/<HOST_PROJECT_ID>/locations/us-central1/imageImports/IMPORT_NAME",
          "cloudStorageUri": "SOURCE_FILE",
          "createTime": "2023-10-31T09:04:04.413664947Z",
          "diskImageTargetDefaults": {
            "imageName": "IMAGE_NAME",
            "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT"
          },
          "recentImageImportJobs": [
            {
              "name": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME/imageImportJobs/image-import-job",
              "diskImageTargetDetails": {
               "imageName": "IMAGE_NAME",
               "targetProject": "projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT"
            },
             "state": "PENDING"
           }
          ]
        },
        "metadata": {
          "createTime": "2023-10-31T09:04:04.416740716Z",
          "endTime": "2023-10-31T09:05:36.79987142Z",
          "target": "projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME",
          "verb": "create",
          "apiVersion": "v1",
          "@type": "type.googleapis.com/google.cloud.vmmigration.v1.OperationMetadata"
        }
      }
    
  3. 使用下列指令監控圖片匯入作業是否完成。

    GET https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/imageImports/IMPORT_NAME/imageImportJobs/image-import-job
    

    更改下列內容:

    • HOST_PROJECT_ID:您要從中遷移虛擬磁碟映像檔的主機專案名稱。
    • REGION_ID:您要執行圖片匯入程序的區域。映像檔會在最近的多地區建立。如果您想在區域中建立映像檔,請務必將 singleRegionStorage 設為 true。如需支援的地區清單,請參閱「地區和區域」一文。
    • IMPORT_NAME:代表圖片匯入資源的 ID。將映像檔匯入 Compute Engine 時,Migrate to Virtual Machines 會先建立映像檔匯入資源。圖片匯入資源代表圖片匯入程序。您可以使用 IMPORT_NAME 取得圖片匯入程序中匯入的圖片連結。

    您應該會看到類似下列範例回應的工作完成回應。

    {
      "createTime":"2023-10-31T09:12:27.053788394Z",
      "createdResources":[
        "https://www.googleapis.com/compute/v1/projects/USER_PROJECT/global/images/IMAGE_NAME"
      ],
      "diskImageTargetDetails": {
        "imageName":"IMAGE_NAME",
        "targetProject":"projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT"
      },
      "endTime":"2023-10-31T09:16:50.224865783Z",
      "name":"projects/HOST_PROJECT_ID/locations/us-central1/imageImports/IMPORT_NAME/imageImportJobs/image-import-job",
      "state":"SUCCEEDED"
    }