機器映像檔可讓您儲存 Compute Engine 中運作的虛擬機器 (VM) 執行個體,以及一或多個磁碟中的設定、中繼資料、權限和資料。如要瞭解使用機器映像檔的時機和方式,請參閱機器映像檔。
本頁說明如何使用 Migrate to Virtual Machines,從虛擬設備匯入機器映像檔。
事前準備
- 在專案中啟用 VM Migration API。
- 確認開機磁碟已設定支援的作業系統。
支援的檔案格式
您可以使用 Migrate to Virtual Machines 匯入下列格式的機器映像檔檔案:
開放虛擬化格式 (OVF):同一個值區中的一個 OVF 檔案和虛擬機器磁碟 (VMDK) 檔案。
開放式虛擬設備 (OVA):一個 OVA 檔案,內含 OVF 檔案和磁碟檔案。Migrate to Virtual Machines 支援匯入下列磁碟檔案格式的 OVA 機器映像檔:
- 虛擬機器磁碟 (VMDK)
- QEMU 寫入時複製 (QCOW)
- QEMU 寫入時複製 2 (QCOW2)
- QEMU 強化磁碟格式 (QED)
- 虛擬私有雲
- 虛擬磁碟映像檔 (VDI)
- 虛擬硬碟 v2 (VHDX)
限制
匯入機器映像檔時,請注意下列限制:
- 您無法將機器映像檔匯入第 4 代機器系列,因為這些機器系列不支援 Google Cloud Hyperdisk 磁碟區。
- 您無法匯入以 Arm 架構為基礎的機器映像檔。
- 您無法從具有下列任一項的來源 VM 建立機器映像檔:
- 附加磁碟大於 200 TB
- A4、A3、C3D、H3 或 Z3 機型
機器映像檔匯入程序
如要使用 Migrate to Virtual Machines 將機器映像檔匯入至 Compute Engine 機器映像檔,請按照下列步驟操作:
準備要匯入的機器檔案
如要將機器映像檔匯入 Compute Engine 映像檔,請先準備要匯入的機器映像檔檔案。以下各節將詳細說明這些工作。
將機器映像檔新增至 Cloud Storage
如要將機器映像檔匯入 Compute Engine 機器映像檔,請先將機器映像檔檔案新增至 Cloud Storage。詳情請參閱「從檔案系統上傳物件」。為提升效能,建議您將機器映像檔上傳至與要建立機器映像檔的儲存空間相同的儲存空間 Google Cloud 。
授予必要權限
如要將機器映像檔匯入 Compute Engine 機器映像檔,請按照下表說明授予權限。
| 角色 | 必要權限 | 說明 |
|---|---|---|
| Storage 物件檢視者 | roles/storage.objectViewer |
在主專案中,將預設的 Migrate to Virtual Machines 服務帳戶 (service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com) 授予儲存匯入映像檔的 bucket 的 roles/storage.objectViewer 角色。這項權限可讓 Migrate to Virtual Machines 存取來源映像檔。 |
| VM Migration 管理員 | roles/vmmigration.admin |
在主機專案中,將 roles/vmmigration.admin 角色授予要用於匯入來源映像檔的使用者帳戶。 |
| VM 遷移服務帳戶 | roles/vmmigration.serviceAgent |
在目標專案中,將 roles/vmmigration.serviceAgent 角色授予主專案的預設 Migrate to Virtual Machines 服務帳戶 (service-HOST_PROJECT_NUMBER@gcp-sa-vmmigration.iam.gserviceaccount.com)。舉例來說,如果 service-1234567890@gcp-sa-vmmigration.iam.gserviceaccount.com 是主專案中的 Migrate to Virtual Machines 服務帳戶,您必須將 roles/vmmigration.serviceAgent 角色授予這個服務帳戶,才能在目標專案中建立映像檔。 |
選擇目標專案
如要代管機器映像檔,請建立或選擇目標專案。目標專案會定義機器映像檔的目的地專案。如要進一步瞭解如何建立或選擇目標專案,請參閱「新增目標專案」。
將機器映像檔匯入 Compute Engine
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST API 指令,將機器映像檔匯入 Compute Engine。
匯入機器映像檔時,Migrate to Virtual Machines 會在目標專案中建立一些暫時資源,例如 VM 或磁碟。機器映像檔匯入程序完成後,系統就會刪除這些暫時性資源。
主控台
如要使用 Google Cloud 控制台將機器映像檔匯入 Compute Engine,請按照下列步驟操作。
在 Google Cloud 控制台中開啟「Migrate to Virtual Machines」頁面。
選取「機器映像檔匯入」分頁標籤。
按一下「建立機器映像檔」。
定義圖片的特徵。下表列出可為機器映像檔設定的參數。
章節標題 欄位名稱 說明 一般 名稱 要建立的機器映像檔名稱。如要進一步瞭解命名規則,請參閱命名慣例。 機器映像檔匯入作業 ID 代表機器映像檔匯入資源的 ID。將機器映像檔匯入 Compute Engine 時,Migrate to Virtual Machines 會先建立機器映像檔匯入資源。機器映像檔匯入 資源代表機器映像檔匯入工作。您可以使用機器映像檔匯入 ID,取得在機器映像檔匯入程序中匯入的機器映像檔連結。 輸入來源檔案 要匯入機器映像檔的檔案。按一下「瀏覽」,查看目前專案中的 bucket 清單,然後選取要匯入機器映像檔的檔案。
如要從其他專案的值區匯入機器映像檔,請輸入 bucket/資料夾/檔案 格式的路徑。如要取得 bucket 內物件的路徑,請參閱「查看物件中繼資料」。複製路徑時,請勿複製gs://前置字串。
請注意,您只能從.ova和.ovf檔案匯入機器映像檔。區域 您要建立機器映像檔的區域。如需支援的地區清單,請參閱「地區和區域」。 目標專案 您要建立機器映像檔的目標專案。如果尚未新增目標專案,請按照「新增目標專案」一節中的操作說明新增。 自動選取 Compute Engine 機型 系統會自動從來源檔案選取機器類型。這個選項預設為啟用。如要手動選取機器類型系列和機器類型,請點按這個欄位,將其設為關閉位置。 機器類型系列 選取機器映像檔的機型系列。只有在停用「自動選取 GCE 機器類型」選項時,才會顯示這個欄位。請注意,可選取的機器類型系列取決於您選取的區域。詳情請參閱預先定義的機器類型。 機型 選取機型。 說明 (選用) 新增機器映像檔的說明。 略過 OS 調整作業 如要略過 OS 調整作業,請將「略過 OS 調整作業」切換鈕設為開啟。
從匯入的機器映像檔建立的 VM 必須變更設定,才能在 Google Cloud上正常運作。這些變更稱為「OS 調整」。Migrate to Virtual Machines 會在機器映像檔匯入程序中,自動執行 OS 調適作業。詳情請參閱調整 VM 執行個體,以便在 Google Cloud上執行。一般化 如要通用化機器映像檔,請將「Generalize」(通用化) 切換鈕設為開啟。從機器映像檔建立執行個體時,Windows 會在執行個體中新增一些專屬資訊。一般化程序會移除這項資訊,方便您從同一個機器映像檔建立多個執行個體。 授權 授權類型 Compute Engine 支援已部署 VM 的即付即用 (PAYG) 授權和自備授權 (BYOL)。Migrate to Virtual Machines 會根據遷移的作業系統,為遷移的 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 key 加密資料。詳情請參閱靜態資料加密。 客戶自行管理的加密金鑰 選擇這個選項後,匯入程序會使用客戶自行管理的加密金鑰 (CMEK) 加密資料,匯入程序建立的映像檔資料也會加密。如果您在保護資料的金鑰方面有特定的法規遵循或監管要求,可以使用CMEK加密及解密資料。這些加密金鑰由您建立、管理及擁有。詳情請參閱「 使用 Cloud KMS 金鑰保護資源」。
新增 CMEK 時,您必須授予下表所述的權限。角色 必要權限 說明 Cloud VM 移轉服務帳戶 roles/vmmigration.serviceAgent將這項權限授予 Compute Engine 服務帳戶,以便加密匯入程序期間建立的機器映像檔資料。 Compute Engine 服務代理人 roles/compute.serviceAgent將這項權限授予 Migrate to Virtual Machines 服務代理,以便在匯入程序中加密資料。 選取 [Create] (建立)。
gcloud
如要使用 Google Cloud CLI 將機器映像檔匯入 Compute Engine,請使用下列要求。
gcloud compute migration machine-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」gs://bucket/folder/file格式輸入路徑。 如要取得 bucket 內物件的路徑,請參閱「查看物件中繼資料」。 請注意,你只能從.ovf和.ova檔案匯入圖片。REGION_ID:您要執行機器映像檔匯入程序的區域。機器映像檔會在最接近的多地區建立。如要在區域中建立機器映像檔,請確認singleRegionStorage已設為 true。如需支援的地區清單,請參閱「地區和區域」一文。HOST_PROJECT_ID:要從中遷移機器映像檔的主機專案名稱。TARGET_PROJECT:要在其中建立機器映像檔的目標專案。如果尚未新增目標專案,請按照「新增目標專案」一節的操作說明進行。
REST API
如要使用 REST API 將機器映像檔匯入 Compute Engine,請按照下列步驟操作。
使用下列要求建立機器映像檔匯入資源。
POST https://vmmigration.googleapis.com/v1/projects/HOST_PROJECT_ID/locations/REGION_ID/imageImports?imageImportId=IMPORT_NAME { "cloudStorageUri": "SOURCE_FILE", "machineImageTargetDefaults": { "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」gs://bucket/folder/file格式輸入路徑。如要取得 bucket 內物件的路徑,請參閱「查看物件中繼資料」。 請注意,您只能從.ova和.ovf檔案匯入機器映像檔。IMAGE_NAME:要建立的機器映像檔名稱。如要進一步瞭解命名規則,請參閱命名慣例。TARGET_PROJECT:要在其中建立機器映像檔的目標專案。如果尚未新增目標專案,請按照「新增目標專案」一節的操作說明進行。
在本範例中,
IMPORT_NAME是代表機器映像檔匯入資源的 ID。將機器映像檔匯入 Compute Engine 時,Migrate to Virtual Machines 會先建立機器映像檔匯入資源。機器映像檔匯入資源代表機器映像檔匯入程序。您可以使用IMPORT_NAME取得機器映像檔的連結,該映像檔是在機器映像檔匯入程序中匯入。如需支援的機器映像檔匯入建立要求欄位完整清單,請參閱下表。
欄位名稱 說明 cloudStorageUri要匯入機器映像檔的檔案路徑。 請以 gs://bucket/folder/file 的格式輸入路徑。如要取得 bucket 內物件的路徑,請參閱「查看物件中繼資料」。
請注意,您只能從.ovf和.ova檔案匯入機器映像檔。machineImageTargetDefaults.targetProject您要建立機器映像檔的目標專案。詳情請參閱目標專案 API 參考資料。舉例來說:
projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT
在這個範例中,請替換下列項目:HOST_PROJECT_ID:要從中遷移機器映像檔的主機專案名稱。TARGET_PROJECT:要在其中建立映像檔的目標專案。
machineImageTargetDefaults.machine_image_name要建立的機器映像檔名稱。 如要進一步瞭解命名規則,請參閱資源命名慣例。 machineImageTargetDefaults.description(選用) 機器映像檔的說明。 machineImageTargetDefaults.machine_type(選用) 用來建立機器映像檔的機器。如果未指定機器類型,Migrate to Virtual Machines 會根據來源機器的映像檔資訊,選擇相關的機器類型。 machineImageTargetDefaults.labels如要整理專案,請以鍵/值組合的形式為資源新增標籤。請參閱「標記資源」。 machineImageTargetDefaults.tags新增要附加至機器映像檔的任何標記。請參閱「管理資源的標記」。 machineImageTargetDefaults.additionalLicenses使用有效網址格式,您最多可為從匯入的機器映像檔建立的 VM 執行個體新增 10 個額外授權。舉例來說,您可以使用下列網址格式新增其他授權:
https://www.googleapis.com/compute/beta/projects/windows-sql-cloud/global/licenses/sql-server-2012-enterprise
machineImageTargetDefaults.service_account在機器映像檔使用的目標專案中指定服務帳戶。根據預設,機器映像檔不會指派任何服務帳戶。
如果您從機器映像檔建立 Compute Engine 執行個體,並打算在該執行個體上執行應用程式,則執行個體可能需要存取其他 gcloud CLI 服務和 API。在目標專案中建立服務帳戶,並授予存取這些服務和 API 的必要權限,然後再建立 Compute Engine 執行個體。然後在此指定該服務帳戶。詳情請參閱「設定 VM 以服務帳戶身分執行」。
如要將服務帳戶附加至 Compute Engine 執行個體,您在 Migrate to Virtual Machines 主機專案中的使用者帳戶必須具備必要權限。詳情請參閱設定目標專案服務帳戶的權限。machineImageTargetDefaults.shielded_instance_config(選用) 在這個執行個體上啟用 Shielded VM。受防護的 VM 採用了一系列的安全控管機制,有助於抵禦 Rootkit 與 Bootkit 攻擊。請參閱「什麼是 Shielded VM?」一文。 machineImageTargetDefaults.singleRegionStorage如要將機器映像檔 storageLocations設為區域,請將此旗標設為 true。如果將這個旗標設為 false,系統會選取最接近的多地區。machineImageTargetDefaults.skip_os_adaptation如要略過 OS 調整作業,請將此旗標設為 true。
從匯入的機器映像檔建立的 VM 必須變更設定,才能在 Google Cloud上正常運作。這些變更稱為「OS 調整」。Migrate to Virtual Machines 會在機器映像檔匯入程序中,自動執行 OS 調適作業。詳情請參閱調整 VM 執行個體,以便在 Google Cloud上執行。machineImageTargetDefaults.osAdaptationParameters.licenseType要用於機器映像檔的授權類型。Compute Engine 支援已部署 VM 的即付即用 (PAYG) 授權和自備授權 (BYOL)。Migrate to Virtual Machines 會根據遷移的作業系統,為遷移的 VM 指派預設授權類型,詳情請參閱「支援的作業系統」。
如果作業系統支援多種授權類型,您可以覆寫預設授權類型,明確指定 PAYG 或 BYOL 授權類型。
machineImageTargetDefaults.osAdaptationParameters.network_interfaces您可以選擇使用 Migrate to Virtual Machines 建立具有多個網路介面 (NIC) 的機器映像檔。每個介面都會連接到不同的虛擬私有雲網路,讓該機器映像檔在 gcloud CLI 中存取不同的虛擬私有雲網路。
新增其他網路介面前,請注意下列事項:
- 系統不支援將多個網路介面連結至同一個虛擬私有雲網路。雖然設定可能會儲存,但 VM 的例項化作業會失敗。
- 從機器映像檔例項化 Compute Engine 執行個體後,您就無法在建立的執行個體上新增或移除網路介面。
新增或移除網路介面: - 選取「新增網路介面」,將額外的網路介面新增至 Compute Engine 執行個體。您可以設定與初始網路介面相同的選項。
machineImageTargetDefaults.osAdaptationParameters.generalize如要一般化機器映像檔,請將此旗標設為 true。
從機器映像檔建立執行個體時,Windows 會在執行個體中加入一些專屬資訊。一般化程序會移除這項資訊,方便您從同一個機器映像檔建立多個執行個體。machineImageTargetDefaults.encryption您要在匯入程序中用來加密資料的 Google-owned and Google-managed encryption key 。詳情請參閱預設靜態加密。
使用客戶自行管理的加密金鑰 (CMEK) 加密機器映像檔的資料。這些加密金鑰由您建立、管理及擁有。詳情請參閱「使用 Cloud KMS 金鑰保護資源」。
注意:匯入程序中選用的加密金鑰,也會用於輸出圖片。
新增 CMEK 時,您必須授予下表所述的權限。角色 必要權限 說明 Cloud VM 移轉服務帳戶 roles/vmmigration.serviceAgent 將這項權限授予 Compute Engine 服務帳戶,以便加密匯入程序期間建立的機器映像檔資料。 Compute Engine 服務代理人 roles/compute.serviceAgent 將這項權限授予 Migrate to Virtual Machines 服務代理,以便在匯入程序中加密資料。 畫面會顯示類似以下範例的回應。
{ "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" } }使用下列指令輪詢作業,檢查機器映像檔匯入工作是否完成。
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", "machineImageTargetDefaults": { "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" } }使用下列指令監控機器映像檔匯入工作是否完成。
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" }