匯入虛擬磁碟

如果您內部部署環境的虛擬磁碟具有需要的軟體和設定 (有時稱為黃金磁碟黃金映像檔),則可以把這些磁碟匯入 GDC 氣隙式裝置,並使用產生的映像檔建立虛擬機器,以便節省時間。匯入工具支援 RAW 和 QCOW 映像檔格式。

事前準備

請務必備妥下列資訊再繼續操作:

  • 已下載、安裝及設定 gcloud CLI。GDC 的所有 CLI 指令都使用 gdcloudkubectl CLI,且需要作業系統 (OS) 環境。
  • 存取 Management API 伺服器。按照「登入」一節中的 CLI 步驟,登入 Management API 伺服器。

要求權限和存取權

如要執行本頁列出的工作,您必須具備專案虛擬機器管理員和專案虛擬機器映像檔管理員角色。請按照步驟驗證,或請專案 IAM 管理員在 VM 所在的專案命名空間中,指派專案 VirtualMachine 管理員 (project-vm-admin) 和專案 VirtualMachine 映像檔管理員 (project-vm-image-admin) 角色給您。

如要使用 GDC 控制台或 gdcloud CLI 執行 VM 作業,請要求專案 IAM 管理員指派您上一個段落列出的角色,以及專案檢視者 (project-viewer) 角色。

匯入虛擬磁碟

您可以使用 gcloud CLI 或 Virtual Machine Manager API 匯入虛擬磁碟。

如要取得匯入映像檔所需的權限,請要求機構 IAM 管理員授予您專案的專案虛擬機器映像檔管理員 (project-vm-image-admin) 角色。

gdcloud

使用 gdcloud compute images import 指令建立可開機的映像檔。

import 指令可確保磁碟具備必要套件 (包括訪客環境),這是設定憑證的必要條件,可讓您在 Linux 上使用安全殼層 (SSH),以及在 Windows 上使用遠端桌面通訊協定 (RDP) 連線至執行個體。

在 Linux 上,這項指令也會安裝網路時間通訊協定 (NTP) 和 cloud-init 的套件,讓執行個體在 GDC 中正常運作。

您可以直接從工作站匯入虛擬磁碟檔案。匯入工具會自動將檔案上傳至專案中的物件儲存空間 bucket。

gdcloud compute images import IMAGE_NAME \
  --source-file=SOURCE_FILE \
  --os=IMAGE_OS \
  --timeout=TIMEOUT

請替換下列變數:

  • IMAGE_NAME:目標映像檔的名稱。名稱長度不得超過 35 個字元。
  • SOURCE_FILE:虛擬磁碟檔案。這個檔案是工作站上的本機檔案。您可以提供絕對或相對路徑。
  • IMAGE_OS:要匯入的磁碟作業系統。
  • TIMEOUT:匯入作業在失敗並顯示「TIMEOUT」前可持續的時間。舉例來說,如果指定 2h,程序會在 2 小時後失敗。預設逾時時間為 1h

視虛擬磁碟大小和網路連線速度而定,上傳作業可能需要較長時間。匯入作業則可能需要數十分鐘的時間,實際情況需視磁碟大小而定。

API

使用 API 啟動匯入程序前,請先將虛擬磁碟上傳至名為 vm-images-bucket 的物件儲存空間值區。如要建立物件儲存空間值區,請參閱「為專案建立儲存空間值區」。

如要透過 API 匯入虛擬磁碟,請按照下列步驟操作:

  1. 在 Management API 伺服器中建立 VirtualMachineImageImport 物件,啟動圖片匯入程序:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
      apply -n PROJECT_ID -f - <<EOF
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineImageImport
    metadata:
      name: IMAGE_NAME
      namespace: PROJECT_ID
    spec:
      source:
        objectStorage:
          bucketRef:
            name: vm-images-bucket
          objectName: SOURCE_FILE
      imageMetadata:
        name: IMAGE_NAME
        operatingSystem: OPERATING_SYSTEM
        minimumDiskSize: DISK_SIZE
    EOF
    

    請替換下列變數:

    變數 說明
    IMAGE_NAME 要匯入的映像檔名稱。名稱長度不得超過 35 個字元。
    PROJECT_ID 您要匯入映像檔的專案 ID。
    SOURCE_FILE 包含虛擬磁碟上傳至物件儲存空間的來源檔案名稱。這個值是物件儲存路徑中 vm-images-bucket/ 後方的區段。
    OPERATING_SYSTEM 要匯入的磁碟作業系統。
    DISK_SIZE 使用這個映像檔建立磁碟時,磁碟必須具備的最小大小。建議您在原始圖片的檔案系統大小上,至少使用 20% 的緩衝區。舉例來說,如果虛擬磁碟的原始檔案系統大小為 10 GiB,請至少使用 12 GiB。
  2. 查詢 VirtualMachineImageImport 物件的狀態,監控匯入進度:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG \
      get virtualmachineimageimport --namespace PROJECT_ID \
      IMAGE_NAME -o jsonpath='{.status}'
    

清除所用資源

匯入程序包括將虛擬磁碟檔案上傳至物件儲存空間。如果您使用 gdcloud CLI,無論指令是否成功,都會在完成時清除物件。如果指令遭到中斷,或透過 API 匯入映像檔,虛擬磁碟檔案可能會保留在名為 vm-images-bucket 的物件儲存空間 bucket 中,直到您手動刪除檔案為止。

後續步驟

在「建立並啟動 VM」頁面中,建立使用您映像檔的新 VM 執行個體。