匯入虛擬磁碟

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

如果您是從 Compute Engine 匯出磁碟,可以從磁碟建立映像檔。

如要瞭解如何建立可遷移多個虛擬機器 (VM) 的自動化系統,請參閱將 VM 遷移至 Compute Engine

事前準備

啟用 Cloud Build API

虛擬設備匯入工具會使用 Cloud Build。請在專案中啟用 Cloud Build 服務,並授予 Cloud Build 服務帳戶建立及管理運算資源的權限。

主控台

  1. 啟用 Cloud Build API。

    啟用 Cloud Build API

    您在主控台中啟用 Cloud Build API 時,Compute Engine 會將下列角色授予 Cloud Build 服務帳戶,以便 Cloud Build 服務將執行個體匯入 Compute Engine:

    • roles/iam.serviceAccountTokenCreator
    • roles/compute.admin
    • roles/iam.serviceAccountUser

    匯入工具也會使用 Compute Engine 的預設服務帳戶。根據預設,Compute Engine 服務帳戶具備 Cloud IAM 專案的編輯者角色。如果您移除這個角色,匯入程序可能會失敗。如要為服務帳戶恢復這個角色,請參閱授予存取權。如要進一步瞭解 Compute Engine 的預設服務帳戶,請參閱 Compute Engine 預設服務帳戶

gcloud

如要使用 gcloud 指令列工具設定 Cloud Build 服務,請完成下列步驟:

  1. 啟用 Cloud Build。

    gcloud services enable cloudbuild.googleapis.com
    

    匯入工具也會使用 Compute Engine 的預設服務帳戶。根據預設,Compute Engine 服務帳戶具備 Cloud IAM 專案的編輯者角色。如果您移除這個角色,匯入程序可能會失敗。如要為服務帳戶恢復這個角色,請參閱授予存取權。如要進一步瞭解 Compute Engine 的預設服務帳戶,請參閱 Compute Engine 預設服務帳戶

  2. compute.admin 角色新增至服務帳戶,以便使用 Cloud Build API。

    gcloud projects add-iam-policy-binding [PROJECT_ID] \
      --member serviceAccount:[PROJECT_NUM]@cloudbuild.gserviceaccount.com \
      --role roles/compute.admin
    
  3. iam.serviceAccountUser 角色新增至服務帳戶,以便使用 Cloud Build API。

    gcloud projects add-iam-policy-binding [PROJECT_ID] \
      --member serviceAccount:[PROJECT_NUM]@cloudbuild.gserviceaccount.com \
      --role roles/iam.serviceAccountUser
    
  4. iam.serviceAccountTokenCreator 角色新增至服務帳戶,以便使用 Cloud Build API。

    gcloud projects add-iam-policy-binding [PROJECT_ID] \
      --member serviceAccount:[PROJECT_NUM]@cloudbuild.gserviceaccount.com \
      --role roles/iam.serviceAccountTokenCreator
    

    在上方的指令中:

支援的作業系統

您的虛擬磁碟必須執行下列其中一個作業系統,才能在 Compute Engine 中開機。

  • Linux 作業系統:
    • CentOS 6、CentOS 7
    • Debian 8、Debian 9
    • Red Hat Enterprise Linux 6、Red Hat Enterprise Linux 7
    • Ubuntu 14.04 LTS、Ubuntu 16.04 LTS
  • Windows 作業系統:
    • Windows Server 2008 R2
    • Windows Server 2012、Windows Server 2012 R2、Windows Server 2012 R2 Core
    • Windows Server 2016、Windows Server 2016 Core
    • Windows Server 2019、Windows Server 2019 Core
    • Windows 7 SP1 x64 (僅適用於 BYOL)
    • Windows 8 SP1 x64 (僅適用於 BYOL)
    • Windows 10 Enterprise x64 (僅適用於 BYOL)

限制

這項功能含有以下限制:

  • Linux 虛擬磁碟必須使用 grub 來當做系統啟動載入程式。
  • Windows 和 Linux 均不支援 UEFI 系統啟動載入程式。
  • Linux 虛擬磁碟必須符合與自訂 OS 映像檔相同的條件,當中包含支援 Virtio-SCSI 儲存控制器裝置。
  • 如果這項功能是安裝在 Windows 虛擬磁碟中,用來將應用程式加入許可清單的軟體 (例如 Carbon Black 的 Cb Protection) 可能會導致匯入程序失敗。因此,您可能需要在匯入前解除安裝這類軟體。
  • 如要匯入執行 RHEL 的虛擬磁碟,您必須在匯入前將 python-boto 套件安裝至虛擬磁碟,這樣系統才能支援自備授權 (BYOL)。
  • 虛擬磁碟的作業系統必須支援 ACPI

權限

在您匯入虛擬磁碟檔案時,映像檔匯入工具會執行幾個步驟,包括將檔案上傳至 Cloud Storage、視情況建立新的值區、將檔案下載至 Compute Engine,再透過磁碟檔案在 Compute Engine 中建立映像檔。系統會自動執行這項程序。Google 建議您在專案中採用下列角色,以便在使用這項功能時獲得順暢的體驗:

  • roles/storage.admin
  • roles/viewer
  • roles/resourcemanager.projectIamAdmin

匯入虛擬磁碟

確認相容性

在您嘗試匯入 VM 的磁碟之前,請在 VM 中下載並執行預先檢查工具。預先檢查工具會掃描可能導致匯入程序失敗或讓磁碟無法在 Compute Engine 中正常運作的任何相容性問題

匯入可開機的虛擬磁碟

主控台

  1. 透過 Google Cloud Platform Console 將虛擬磁碟檔案上傳至 Cloud Storage。
  2. 前往「Create an image」(建立映像檔) 頁面。

    前往「Create an image」(建立映像檔) 頁面

  3. 指定映像檔的「Name」(名稱)
  4. 選取「Source」(來源) 下的 [Virtual disk (VMDK, VHD,..)] (虛擬磁碟 (VMDK、VHD、…))。
  5. 瀏覽至或手動輸入 Cloud Storage 檔案的儲存位置。
  6. 選擇可供匯入的磁碟使用的作業系統。您也可以進行下列變更:

    • 您可以選擇 [Install guest packages] (安裝訪客套件)。Google 會建議您安裝訪客環境。如要進一步瞭解訪客環境,請參閱訪客環境一文。

    • 以 Windows 或 Red Hat Enterprise Linux (RHEL) 作業系統來說,您也可以選擇授權選項。您可以允許 Compute Engine 提供授權,也可以自備授權。如要進一步瞭解如何在 Windows 中自備授權,請參閱自備授權一文。

  7. (選用) 指定映像檔的其他屬性。例如,您可以將這個映像檔整理為映像檔系列的成員。

  8. 按一下 [Create] (建立) 即可匯入映像檔。

gcloud

使用 gcloud compute images import 指令來建立可開機的 Compute Engine 映像檔。儘管 Compute Engine 可以啟動大多數的開機磁碟映像檔,import 指令還是可以確保磁碟具備所需的驅動程式和最新的訪客環境套件,這是啟動執行個體及使用 SSH 或遠端桌面協定連結至執行個體的必要條件。

您可以從 Cloud Storage 值區或本機工作站匯入虛擬磁碟檔案。

如果您是從工作站匯入虛擬磁碟檔案,匯入工具會自動為您將檔案上傳至 Cloud Storage 值區。

或者,您也可以選擇自行將虛擬磁碟檔案上傳至 Cloud Storage,然後再啟動匯入程序。不過請注意,您必須將檔案上傳至儲存空間值區,並確定該值區隸屬於您要用於匯入程序的專案。

gcloud beta compute images import [IMAGE_NAME] \
    --source-file [SOURCE_FILE] \
    --os [OS]

在上方的指令中:

  • [IMAGE_NAME] 是目標映像檔的名稱。
  • [SOURCE_FILE] 是虛擬磁碟檔案。映像檔可以是本機檔案或儲存在 Cloud Storage 中的檔案。如果您的虛擬磁碟是本機檔案,您可以使用絕對或相對路徑。如果您的虛擬磁碟檔案已儲存在 Cloud Storage 中,則您必須確保該檔案所在的儲存空間值區隸屬於您用於匯入程序的專案,並以 gs://[BUCKET_NAME]/[OBJECT_NAME] 格式指定檔案的完整路徑。
  • [OS] 是 SOURCE_FILE 的作業系統,這項元素必須採用下列其中一種格式:centos-6centos-7debian-8debian-9rhel-6rhel-7ubuntu-1404ubuntu-1604windows-2008r2windows-2012windows-2012r2windows-2016windows-2019 或 BYOL 授權映像檔。

    自備授權的支援 (Beta 版)

    根據預設,系統會匯入採用 Windows Server 和 Red Hat Enterprise Linux (RHEL) 作業系統的虛擬磁碟,並設為會產生額外費用的付費 OS 映像檔

    • 如想針對 RHEL 使用自己的軟體訂閱項目,您可以在 [OS] 欄位中指定下列其中一個 BYOL 值,將磁碟匯入為自備授權 (BYOL) 的授權映像檔:

      • rhel-6-byol
      • rhel-7-byol
    • 如想針對 Windows 使用自備授權,您可以在 [OS] 欄位中指定下列其中一個 BYOL 值,將磁碟匯入為 BYOL 授權映像檔:

      • windows-2008r2-byol
      • windows-2012-byol
      • windows-2012r2-byol
      • windows-2016-byol
      • windows-2019-byol
      • windows-7-byol
      • windows-8-1-x64-byol
      • windows-10-byol

如果您指定的是本機檔案,上傳作業可能會耗費較長時間,不過確切時間取決於虛擬磁碟的大小和網路連線速度。視磁碟大小而定,匯入作業可能需要數十分鐘才能完成。

指令範例

下列範例會匯入名為 your_server.vmdkdebian-9 虛擬磁碟,這個磁碟儲存在 gs://your_gcs_bucket 中。

gcloud beta compute images import my-imported-image \
    --source-file gs://your_gcs_bucket/your_server.vmdk \
    --os debian-9

選用參數

根據預設,系統會將訪客環境套件新增至所有匯入的開機磁碟映像檔。如果您不想使用這些套件,請在匯入指令中新增 --no-guest-environment 旗標。

匯入無法開機的虛擬磁碟

主控台

  1. 透過 Google Cloud Platform Console 將虛擬磁碟檔案上傳至 Cloud Storage。
  2. 前往「Create an image」(建立映像檔) 頁面。

    前往「Create an image」(建立映像檔) 頁面

  3. 指定映像檔的「Name」(名稱)
  4. 選取「Source」(來源) 下的 [Virtual disk (VMDK, VHD,..)] (虛擬磁碟 (VMDK、VHD、…))。
  5. 瀏覽至或手動輸入 Cloud Storage 檔案的儲存位置。
  6. 選取「operating system」(作業系統) 下的 [No operating system. Data only.] (沒有作業系統。僅有資料)
  7. (選用) 指定映像檔的其他屬性。例如,您可以將這個映像檔整理為映像檔系列的成員。
  8. 按一下 [Create] (建立) 即可匯入映像檔。

gcloud

您可以使用 gcloud compute images import 指令來建立無法開機的 Compute Engine 映像檔。即便您的虛擬磁碟中並未安裝可開機的作業系統,您還是可以使用 --data-disk 旗標匯入映像檔 (而非 --os 旗標)。這麼做會略過安裝驅動程式和訪客環境套件的步驟,讓映像檔可在 Compute Engine 中開機。

gcloud compute images import [IMAGE_NAME] \
    --source-file [SOURCE_FILE] \
    --data-disk

在上方的指令中:

  • [IMAGE_NAME] 是目標映像檔的名稱。
  • [SOURCE_FILE] 是虛擬磁碟檔案。映像檔可以是本機檔案或儲存在 Cloud Storage 中的檔案。如果您的虛擬磁碟是本機檔案,您可以使用絕對或相對路徑。如果您的虛擬磁碟檔案已儲存在 Cloud Storage 中,則您必須確保該檔案所在的儲存空間值區隸屬於您用於匯入程序的專案,並以 gs://[BUCKET_NAME]/[OBJECT_NAME] 指定檔案的完整路徑。

指令範例

下列範例會匯入名為 your_disk.vmdk 的虛擬磁碟,這個磁碟儲存在 gs://your_gcs_bucket 中。

gcloud compute images import my-imported-image \
    --source-file gs://your_gcs_bucket/your_disk.vmdk \
    --data-disk

將映像檔設為可開機映像檔

如果您的 Compute Engine 自訂映像檔含有可開機的作業系統,但沒有必要的 Compute Engine 驅動程式或訪客環境套件,您可以使用映像檔匯入工具,將該映像檔設為可在 Compute Engine 中開機。

使用 --source-image 旗標來指定要設為可開機的自訂映像檔,而非透過 --source-file 旗標指定要匯入的新磁碟。

gcloud compute images import [IMAGE_NAME] \
    --source-image [SOURCE_IMAGE] \
    --os [OS]

在上方的指令中:

  • [IMAGE_NAME] 是目標映像檔的名稱。
  • [SOURCE_IMAGE] 是來源映像檔的名稱。
  • [OS]是 SOURCE_IMAGE 的作業系統,這項元素必須採用下列其中一種格式:centos-6centos-7debian-8debian-9rhel-6rhel-7ubuntu-1404ubuntu-1604windows-2008r2windows-2012windows-2012r2windows-2016windows-2019 或 BYOL 授權映像檔。

自備授權的支援性

  • 如果您使用的是 RHEL 的軟體訂閱項目,可以在 [OS] 欄位中指定下列其中一個 BYOL 值,將自備授權 (BYOL) 的授權映像檔設為可開機映像檔:

    • rhel-6-byol
    • rhel-7-byol
  • 如要針對 Windows 使用自備授權映像檔,您可以在 [OS] 欄位指定下列其中一個 BYOL 值,將 BYOL 授權映像檔設為可開機映像檔:

    • windows-2008r2-byol
    • windows-2012-byol
    • windows-2012r2-byol
    • windows-2016-byol
    • windows-2019-byol
    • windows-7-byol
    • windows-8-1-x64-byol
    • windows-10-byol

指令範例

下列範例會將名為 my-image 的 Compute Engine 映像檔轉換為名為 my-bootable-image 的可開機映像檔。在這個範例中,映像檔中安裝的作業系統是 Ubuntu 16.04。

gcloud compute images import my-bootable-image --source-image=my-image --os=ubuntu-1604

資源清除

儲存在 Cloud Storage 上的檔案與 Compute Engine 中的映像檔會產生費用。匯入工具會將虛擬磁碟檔案匯入至 Cloud Storage 並建立一個 Compute Engine 自訂映像檔。

在您驗證映像檔正確匯入,且可正確啟動為 Compute Engine 執行個體之後,便可從 Cloud Storage 刪除虛擬磁碟檔案。將檔案上傳至 Cloud Storage 時,工具會列出檔案的 URI。這個 URI 的格式如下:gs://<bucket name>/tmpimage/<image name>

如果您是使用 --data-disk 旗標匯入映像檔,然後再次使用 --source-image 旗標執行 import 工具,藉此將該映像檔設為可開機映像檔,則第一個映像檔仍會存在。如果您不需要該映像檔,不妨將其刪除。如果您為 [IMAGE_NAME][SOURCE_IMAGE] 參數指定了相同的映像檔名稱,系統會自動覆寫映像檔,您不需要再清除所用資源。

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Compute Engine 說明文件