如果內部部署系統中的虛擬磁碟具備所需的軟體和設定 (有時稱為「黃金磁碟」或「黃金映像檔」),您可以將這些虛擬磁碟匯入 Compute Engine,並使用產生的映像檔來建立虛擬機器,藉此節省時間。Migrate to Virtual Machines 匯入工具支援大多數虛擬磁碟檔案格式,包括 VMDK 和 VHD。
事前準備
- 在專案中啟用 VM Migration 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 |
映像檔匯入程序
如要使用「遷移至虛擬機器」將虛擬磁碟映像檔匯入至 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,請按照下列步驟操作。
- 在 Google Cloud 控制台中開啟「Migrate to Virtual Machines」(遷移至虛擬機器) 頁面。
前往「Migrate to Virtual Machines」頁面 - 選取「圖片匯入」分頁標籤。
- 按一下 [Create image] (建立映像檔)。
- 定義圖片的特性。下表列出可為圖片設定的參數。
區段標題 欄位名稱 說明 一般 名稱 要建立的映像檔名稱。如要進一步瞭解命名規則,請參閱「命名慣例」。 映像檔匯入作業 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
將這項權限授予「遷移至虛擬機器」服務代理,以便在匯入程序中加密資料。 - 選取 [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 的格式輸入路徑。如要取得 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" } }
使用下列指令輪詢作業,檢查映像檔匯入工作是否已完成。
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" }