卸離及重新連接磁碟

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

卸離執行個體的開機磁碟後,您不必重新建立執行個體,就能完成下列工作:

  • 以其他磁碟取代執行個體的開機磁碟
  • 將執行個體的開機磁碟暫時附加至另一個執行個體,藉此修復開機磁碟

從一個執行個體卸離非開機磁碟,然後附加至另一個執行個體,即可在第二個執行個體中使用磁碟上的資料,不必將資料複製到新磁碟。

事前準備

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

    選取這個頁面上的分頁,瞭解如何使用範例:

    控制台

    使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,無須設定驗證。

    gcloud

    1. 安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init

      若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  • 設定預設地區和區域
  • REST

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

      安裝 Google Cloud CLI。

      若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

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

這項工作需要的權限

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

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

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

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

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

限制

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

卸離啟動磁碟

卸離 VM 執行個體的開機磁碟前,您必須停止執行個體。您不需要卸載磁碟。

控制台

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

    前往 VM 執行個體

  2. 如果出現系統提示,請選取您的專案,然後按一下 [Continue] (繼續)。
  3. 按一下要卸離啟動磁碟的執行個體。
  4. 按一下「停止」停止 VM。如果沒有「停止」選項,請依序按一下 「更多動作」> 「停止」
  5. 按一下 [編輯]
  6. 在「開機磁碟」區段,按一下「卸離開機磁碟」
  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 正在執行,請按一下 「停止」停止 VM。如果沒有「停止」選項,請依序按一下 「更多動作」> 「停止」
  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 執行個體後,請重新啟動執行個體

更新執行個體的開機磁碟

只要一個步驟就能更新 VM 的開機磁碟,但必須使用 Google Cloud 控制台。具體而言,您可以透過同一項操作卸離現有開機磁碟並連結新的開機磁碟。

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

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

    前往 VM 執行個體

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

Google Cloud 控制台會開始卸載現有開機磁碟,並連接您所指定的新開機磁碟。完成這項程序後,請重新啟動 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 要求,查看其附加的磁碟和裝置名稱。

後續步驟