如果內部部署系統中的虛擬磁碟具備所需的軟體和設定 (有時稱為「黃金磁碟」或「黃金映像檔」),您可以將這些虛擬磁碟匯入 Compute Engine,並使用產生的映像檔來建立虛擬機器,藉此節省時間。Migrate to Virtual Machines 匯入工具支援大多數虛擬磁碟檔案格式,包括 VMDK 和 VHD。
事前準備
- 在專案中啟用 VM 遷移 API。如要進一步瞭解如何啟用 VM Migration API,請參閱「啟用 Migrate to Virtual Machines 服務」。
- 確認磁碟上的作業系統支援「遷移至虛擬機器」。詳情請參閱「支援的作業系統」。
- 確認要匯入的虛擬磁碟映像檔受到支援。
支援的格式
您可以使用 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 |
映像檔匯入程序
如要使用 Migrate to Virtual Machines 將虛擬磁碟映像檔匯入至 Compute Engine 映像檔,請按照下列步驟操作:
準備要匯入的虛擬磁碟檔案
如要將虛擬磁碟映像檔匯入 Compute Engine 映像檔,請先準備要匯入的虛擬磁碟映像檔。以下各節將詳細說明這些工作。
將虛擬磁碟映像檔新增至 Cloud Storage
如要將虛擬磁碟映像檔匯入 Compute Engine 映像檔,請先將虛擬磁碟映像檔檔案新增至 Cloud Storage。詳情請參閱「從檔案系統上傳物件」。為提升效能,建議您將虛擬磁碟映像檔上傳至值區,並確保該值區位於要建立映像檔的雲端區域中。
授予必要權限
如要將虛擬磁碟映像檔匯入 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 映像檔,您必須建立或選擇目標專案。目標專案會定義 Compute Engine 映像檔的目的地專案。 如要進一步瞭解如何建立或選擇目標專案,請參閱「新增目標專案」。
將虛擬磁碟映像檔匯入 Compute Engine
您可以使用Google Cloud 主控台、Google Cloud CLI 或 REST API 指令,將虛擬磁碟映像檔匯入 Compute Engine。
主控台
如要使用 Google Cloud 控制台將虛擬磁碟映像檔匯入 Compute Engine,請按照下列步驟操作。
- 在 Google Cloud 控制台中開啟「Migrate to Virtual Machines」頁面。
前往「Migrate to Virtual Machines」頁面 - 選取「匯入圖片」分頁標籤。
- 按一下 [Create image] (建立映像檔)。
- 定義圖片的特徵。下表列出可為圖片設定的參數。
章節標題 欄位名稱 說明 一般 名稱 您要建立的映像檔名稱。如要進一步瞭解命名規則,請參閱「命名慣例」。 映像檔匯入作業 ID 代表圖片匯入資源的 ID。將映像檔匯入 Compute Engine 時,Migrate to Virtual Machines 會先建立映像檔匯入資源。圖片匯入資源代表圖片匯入程序。您可以使用圖片匯入 ID,取得在圖片匯入程序中匯入的圖片連結。 來源 Cloud Storage 檔案 要匯入圖片的檔案。按一下「瀏覽」,查看目前專案中的 bucket 清單,然後選取要匯入圖片的檔案。
如要從其他專案的 bucket 匯入圖片,請以 bucket/folder/file 格式輸入路徑。如要取得 bucket 內物件的路徑,請參閱「查看物件中繼資料」。複製路徑時,請務必不要複製gs://
前置字串。
請注意,你只能匯入.vmdk
和.tar.gz
檔案中的圖片。區域 您要建立映像檔的區域。如需支援的區域清單,請參閱「區域和可用區」。 目標專案 您要建立映像檔的目標專案。如果尚未新增目標專案,請按照「新增目標專案」一節的說明操作。 系列 (選用) 選取映像檔系列。Compute Engine 提供映像檔系列,確保您的自動化處理系統可以參照最新的映像檔。管理員可以將多個映像檔歸類為一個映像檔系列。詳情請參閱「公開映像檔系列」。 說明 (選用) 為圖片加上說明。 略過 OS 調整作業 如要略過 OS 調整作業,請將「略過 OS 調整作業」切換鈕設為開啟。
如要讓從匯入映像檔建立的 VM 在 Google Cloud上正常運作,您必須調整這些 VM 的設定。這些變更稱為「OS 調整作業」。Migrate to Virtual Machines 會在映像檔匯入程序中自動調整 OS。詳情請參閱調整 VM 執行個體,以便在 Google Cloud上執行。一般化 如要通用化映像檔,請將「通用化」切換鈕設為開啟。從映像檔建立執行個體時,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 keys 加密資料。詳情請參閱「靜態資料加密」。 客戶自行管理的加密金鑰 選擇這個選項後,系統會在匯入程序中,使用客戶自行管理的加密金鑰 (CMEK) 加密資料,以及匯入程序建立的映像檔資料。如果您在保護資料的金鑰方面有特定的法規遵循或監管要求,可以使用 CMEK 加密及解密資料。 這些加密金鑰由您建立、管理及擁有。詳情請參閱「 使用 Cloud KMS 金鑰保護資源」。
新增 CMEK 時,您必須授予權限,如下表所述。角色 必要權限 說明 Cloud VM 移轉服務帳戶 roles/vmmigration.serviceAgen
將這項權限授予 Compute Engine 服務帳戶,以便加密匯入程序期間建立的映像檔資料。 Compute Engine 服務代理人 roles/compute.serviceAgent
將這項權限授予 Migrate to Virtual Machines 服務代理,以便在匯入程序中加密資料。 - 選取 [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
:要在其中建立映像檔的目標專案。如果尚未新增目標專案,請按照「新增目標專案」一節的操作說明進行。
REST
如要使用 REST API 將虛擬磁碟映像檔匯入 Compute Engine,請按照下列步驟操作。
使用下列要求建立映像檔匯入資源。
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」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
字串
TargetProject
的路徑。您要建立映像檔的目標專案。詳情請參閱目標專案 API 參考資料。 舉例來說:
projects/HOST_PROJECT_ID/locations/global/targetProjects/TARGET_PROJECT
在這個範例中,請替換下列項目:HOST_PROJECT_ID
:要從中遷移虛擬磁碟映像檔的主機專案名稱。TARGET_PROJECT
:要在其中建立映像檔的目標專案。
diskImageTargetDefaults.imageName
字串
要建立的映像檔名稱。 如要進一步瞭解命名規則,請參閱資源命名慣例。diskImageTargetDefaults.description
字串
(選用) 圖片說明。diskImageTargetDefaults.familyName
字串
(選用) 選取映像檔系列。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
布林值
如要將映像檔storageLocations
設為區域,請將此旗標設為 true。如果將這個標記設為 false,系統會選取最接近的多區域。diskImageTargetDefaults.dataDiskImageImport
布林值
如要略過 OS 調整作業,請將此旗標設為 true。
如要在 Google Cloud上正常運作,從匯入映像檔建立的 VM 必須變更設定。這些變更稱為「OS 調整作業」。Migrate to Virtual Machines 會在映像檔匯入程序中,自動執行 OS 適應作業。詳情請參閱調整 VM 執行個體,以便在 Google Cloud上執行。diskImageTargetDefaults.osAdaptationParameters.licenseType
string
您要用於圖片的授權類型。Compute Engine 支援已部署 VM 的即付即用 (PAYG) 授權和自備授權 (BYOL)。Migrate to Virtual Machines 會根據遷移的作業系統,為遷移的 VM 指派預設授權類型,詳情請參閱「支援的作業系統」。
如果作業系統支援多種授權類型,您可以覆寫預設授權類型,明確指定 PAYG 或 BYOL 授權類型。
diskImageTargetDefaults.osAdaptationParameters.generalize
布林值
如要一般化映像檔,請將此旗標設為 true。
從映像檔建立執行個體時,Windows 會在執行個體中新增一些專屬資訊。一般化程序會移除這項資訊,讓您能從同一個映像檔建立多個執行個體。diskImageTargetDefaults.encryption
字串
您要在匯入程序中用來加密資料的 Google-owned and Google-managed encryption key 。詳情請參閱「加密靜態資料」。encryption
字串
選擇這個選項,即可在匯入程序期間,使用客戶自行管理的加密金鑰 (CMEK) 加密資料,以及在匯入程序期間建立的映像檔資料。如果您在保護資料的金鑰方面有特定的法規遵循或監管要求,可以使用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", "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" } }
使用下列指令監控映像檔匯入工作是否完成。
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" }