卸離及重新連接磁碟

本文說明如何將開機和非開機磁碟,連接及重新連接至 Compute Engine 裸機和虛擬機器 (VM) 執行個體。

卸載執行個體的開機磁碟,即可完成下列工作,不必重新建立執行個體:

  • 將執行個體的開機磁碟更換為其他磁碟
  • 將執行個體的開機磁碟暫時連接至其他執行個體,以便修復磁碟

將非開機磁碟從某個執行個體卸載,並連接至另一個執行個體,即可在第二個執行個體中使用磁碟上的資料,不必將資料複製到新磁碟。

事前準備

  • 如果尚未設定驗證,請先完成設定。驗證機制會確認您的身分,以便授予 Cloud de Confiance by S3NS 服務和 API 的存取權。如要從本機開發環境執行程式碼或範例,您可以選取下列其中一個選項,向 Compute Engine 進行驗證:

    請根據您打算如何使用本頁範例,選取對應的分頁標籤:

    控制台

    使用 Cloud de Confiance 控制台存取 Cloud de Confiance by S3NS 服務和 API 時,不需要設定驗證機制。

    gcloud

    1. 安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。 登入後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init
  • 設定預設區域和可用區。
  • REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。

    詳情請參閱 Cloud de Confiance 驗證說明文件中的「使用 REST 進行驗證」一節。

這項工作需要的權限

如要執行這項工作,您必須具備下列權限:

  • 執行個體的 compute.instances.detachDisk 權限
  • 執行個體的 compute.instances.attachDisk 權限

在執行個體之間移動開機磁碟

在採用不同機器系列的執行個體之間移動開機磁碟前,請確認兩個執行個體的開機磁碟架構相符。舉例來說,您無法將 C4A 執行個體的開機磁碟附加至 C4 執行個體,因為 C4A 和 C4 分別使用 Arm 和 x86 架構。如要判斷機器系列的架構,請參閱「機器系列比較」表格中的「Architecture」(架構) 列。

如要瞭解在不同機器系列之間移動開機磁碟時,應考量的其他因素,請參閱「將工作負載移至新的運算執行個體」。

限制

  • 開機磁碟的架構必須與執行個體的架構相符。舉例來說,您無法將使用 x86 的開機磁碟附加至 Arm 執行個體。
  • 您只能從已停止的 VM 執行個體連接或卸離開機磁碟。
  • 每個 VM 執行個體只能連接一個開機磁碟。
  • 如果使用 gcloud CLI 或 REST,則只能將現有的開機磁碟附加至 VM 執行個體。
  • 您無法從執行個體卸離本機 SSD 磁碟。您只能在建立執行個體時,將本機 SSD 磁碟附加至執行個體。

卸離開機磁碟

從 VM 執行個體卸載開機磁碟前,請務必停止執行個體。您不必卸載磁碟。

控制台

  1. 前往「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體

  2. 如果出現系統提示,請選取您的專案,然後按一下 [Continue] (繼續)。
  3. 按一下要卸載開機磁碟的執行個體。
  4. 按一下 「Stop」(停止) 即可停止 VM。如果沒有「Stop」(停止) 選項,請依序按一下 「More actions」(更多動作) > 「Stop」(停止)。
  5. 按一下 [編輯]。
  6. 在「Boot Disk」(開機磁碟) 區段中,按一下「Detach boot disk」(卸離開機磁碟)。
  7. 按一下「儲存」。

gcloud

使用 gcloud compute instances detach-disk 指令,從執行個體卸載開機磁碟:

gcloud compute instances detach-disk INSTANCE_NAME \
    --disk=DISK_NAME

更改下列內容:

  • INSTANCE_NAME:執行個體的名稱。
  • DISK_NAME:要卸載的磁碟名稱。磁碟名稱通常與執行個體名稱相同。

REST

建構 POST 要求來卸離磁碟:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/detachDisk?deviceName=DISK_NAME

更改下列內容:

  • PROJECT_ID:專案 ID。
  • INSTANCE_NAME:執行個體的名稱。
  • ZONE:執行個體所在的可用區。
  • DISK_NAME:要卸載的磁碟名稱。磁碟名稱通常與執行個體名稱相同。

重新連接開機磁碟

只要執行個體還沒有連結任何開機磁碟,且開機磁碟與 VM 執行個體屬於同一個區域,就能重新連結任何磁碟,視同執行個體的開機磁碟。如果您自訂開機磁碟,則必須確保開機磁碟在連接後能正常啟動。

現有磁碟和新磁碟都必須與 UEFI 相容,或都不相容。如要建立與 UEFI 相容的磁碟,請使用 gcloud compute disk create 指令,並將 --guest-os-features 旗標設為 UEFI_COMPATIBLE。

控制台

  1. 前往「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體

  2. 如果出現系統提示,請選取您的專案,然後按一下 [Continue] (繼續)。
  3. 按一下要連接開機磁碟的執行個體。
  4. 如果 VM 正在運作,請按一下「 Stop」(停止) 停止 VM。如果沒有「Stop」(停止) 選項,請依序按一下 「More actions」(更多動作) > 「Stop」(停止)。
  5. 按一下 [編輯]。
  6. 前往「Boot Disk」(開機磁碟) 部分。
  7. 按一下 [新增項目]。
  8. 從下拉式選單中選取開機磁碟。
  9. 按一下「儲存」。

gcloud

使用 gcloud compute instances attach-disk 指令,將開機磁碟連接或重新連接至 VM 執行個體。加入 --boot 旗標,表示磁碟會做為執行個體的開機磁碟。如果沒有這個旗標,磁碟會以非開機資料磁碟的形式連接。

gcloud compute instances attach-disk INSTANCE_NAME \
    --disk=DISK_NAME \
    --boot

更改下列內容:

  • INSTANCE_NAME:執行個體的名稱。
  • DISK_NAME:要連接的磁碟名稱。磁碟名稱可能與執行個體名稱相同。

REST

建構 POST 要求來連接磁碟。加入選用的 "boot": true 參數,表示這個磁碟是開機磁碟。如果沒有這個參數,磁碟會以非開機資料磁碟的形式連接。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/attachDisk
{
 "boot": true,
 "source": "zones/ZONE/disks/DISK_NAME"
}

更改下列內容:

  • PROJECT_ID:專案 ID。
  • INSTANCE_NAME:要附加新永久磁碟的執行個體名稱。
  • ZONE:執行個體和新磁碟所在的可用區。
  • DISK_NAME:新磁碟的名稱。

將磁碟連接至 VM 執行個體後,請重新啟動執行個體。

更新執行個體的開機磁碟

您只能使用 Cloud de Confiance 控制台,一次更新 VM 的開機磁碟。具體而言,您可以透過同一項操作卸離現有開機磁碟並連結新的開機磁碟。

這項功能無法透過 gcloud CLI 或 REST 使用。

  1. 前往「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體

  2. 如果出現系統提示,請選取您的專案,然後按一下 [Continue] (繼續)。
  3. 按一下要連接開機磁碟的執行個體。
  4. 如果 VM 正在運作,請按一下 「Stop」(停止) 停止 VM。如果沒有「Stop」(停止) 選項,請依序按一下 「More actions」(更多動作) > 「Stop」(停止)。
  5. 按一下頁面頂端的「Edit」(編輯)。
  6. 在「Boot Disk」(開機磁碟) 區段中,按一下「Detach boot disk」(卸離開機磁碟)。
  7. 按一下 [新增項目]。
  8. 從下拉式選單中選取開機磁碟。
  9. 按一下「儲存」。

Cloud de Confiance 控制台會繼續卸載現有的開機磁碟,並連接您指定的新開機磁碟。完成這項程序後,請重新啟動 VM 執行個體。

將非開機磁碟連接至執行個體

如需將新的或現有的非開機磁碟附加至執行中執行個體的詳細操作說明,請參閱「將磁碟附加至執行個體」。

從執行個體卸離非開機磁碟

您不必停止執行個體,即可卸離非開機磁碟。您可以在執行個體運作時執行這些作業。

控制台

  1. 前往「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體

  2. 按一下要卸載磁碟的執行個體。
  3. 按一下「 編輯」。
  4. 在「Additional disks」(其他磁碟) 區段中,找出要卸離的磁碟,然後按一下「close」(關閉)「Remove disk」(移除磁碟)。
  5. 按一下「儲存」。

gcloud

使用 gcloud compute instances detach-disk 指令:

 gcloud compute instances detach-disk INSTANCE_NAME \
   DISK_OR_DEVICE_NAME --disk-scope DISK_SCOPE

更改下列內容:

  • INSTANCE_NAME:執行個體的名稱。
  • DISK_OR_DEVICE_NAME:磁碟名稱或建立磁碟時指定的裝置名稱。裝置名稱是 OS 用來識別磁碟的名稱。如果您為磁碟提供裝置名稱,則必須使用 --device-name 旗標指定裝置名稱。

    • 如要指定磁碟名稱,請指定 --disk=DISK_NAME,其中 DISK_NAME 是磁碟名稱,例如 my-data-disk。
    • 如要指定裝置名稱,請指定 --device-name=DEVICE_NAME,其中 DEVICE_NAME 是您為磁碟提供的裝置名稱。

      如要找出磁碟的裝置名稱,請執行 gcloud compute instances describe 指令。舉例來說,如要以 JSON 格式列印執行個體附加磁碟的清單,請執行 gcloud compute instances describe INSTANCE_NAME --format="json(disks)"。

  • DISK_SCOPE:磁碟的範圍。如果是可用區磁碟,請指定 zonal。如果是區域磁碟,請指定 regional。

REST

建構對 instances.detachDisk 方法的 POST 要求。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/detachDisk?deviceName=DEVICE_NAME

更改下列內容:

  • PROJECT_ID:專案 ID。
  • INSTANCE_NAME:執行個體的名稱。
  • ZONE:執行個體所在的可用區。
  • DEVICE_NAME:磁碟的裝置名稱。如要找出磁碟的裝置名稱,請向 instances 資源發出 GET 要求,查看其連接的磁碟和裝置名稱。

後續步驟