在區域之間移動執行個體

本頁面說明如何使用 projects.moveInstance API 在區域之間移動 VM 執行個體,或透過一系列步驟手動移動這些執行個體。如果區域不可用或已淘汰,您可以使用這個方法將執行個體移至其他區域。

移動執行個體需要執行以下程序:

  1. 建立連結至原始執行個體的永久磁碟快照。
  2. 在目標區域中建立永久磁碟的複本。
  3. 對於在同一地區內移動的執行個體,請暫時將任何指派給該執行個體的臨時外部 IP 位址推送到靜態外部 IP 位址。
  4. 在目標區域中建立並啟動新的執行個體。如果您要跨地區移動,也必須為新執行個體挑選新的子網路。
  5. 將新建立的永久磁碟連結至新的執行個體。
  6. 指派外部 IP 位址給新的執行個體。如有必要,請將該位址降級為臨時的外部 IP 位址。
  7. 刪除快照、原始磁碟和原始執行個體。

如有可能,您應使用 projects.moveInstance API 自動移動執行個體。如果您的執行個體不符合使用 moveInstance API 的需求,您仍可以手動移動執行個體

事前準備

需求條件

在移動執行個體之前,您必須符合下列需求:

  • 您的專案中必須有足夠的配額,以容納新的快照,以及推送任何臨時的外部 IP 位址。
  • 在目標地區中有足夠的配額可以建立新的執行個體和磁碟。舉例來說,如果您有三個磁碟連結到要移動的執行個體,則需要有足夠的配額才能建立三個暫時的永久磁碟快照和三個新磁碟。建立新的磁碟後,您可以刪除暫時的快照。
  • 連結到要移動的執行個體的永久磁碟未連結到多個執行個體。
  • 如果您的執行個體包含 GPU,請驗證您要使用的 GPU 在目標區域中是否可用。如需 GPU 和其可用區域的清單,請參閱 Compute Engine 上的 GPU 一文。

移動執行個體後,更新對原始資源的任何現有參照,例如指向舊執行個體的任何目標執行個體或目標集區。

資源屬性

在移動期間,執行個體和磁碟的某些伺服器產生的屬性將會變更。

執行個體會變更的屬性

屬性名稱 變更
內部 IP 位址 通常會指派新的內部 IP 位址,但執行個體可能會保留原始內部 IP 位址。
外部 IP 位址 如果執行個體是在同一地區中的區域之間移動,則外部 IP 位址會維持不變。否則,您需要為 VM 執行個體挑選不同的 IP 位址。
CPU 平台 視目標區域中可用的 CPU 平台而定,執行個體在移動後可能具有不同的 CPU 平台。如需每個區域中 CPU 平台的完整清單,請參閱可用地區和區域
網路/子網路 如果您的執行個體屬於子網路,且您要跨地區移動執行個體,則必須為執行個體挑選新的子網路。在同一地區的區域之間移動的執行個體會保留相同的子網路。

磁碟會變更的屬性

屬性名稱 變更
來源快照 系統會將新磁碟的來源快照設定為在移動期間建立的暫時快照。
來源快照 ID 系統會將來源快照 ID 設定為暫時快照的 ID。
來源映像檔 來源映像檔欄位為空白。
映像檔 ID 映像檔 ID 為空白。
上次取消連結的時間戳記 上次取消連結的時間戳記為空白。
上次連結的時間戳記 上次連結的時間戳記會變更為將新磁碟連結到新的執行個體時的時間戳記。

執行個體和磁碟都會變更的屬性

屬性名稱 變更
ID 產生新的資源 ID。
建立時間戳記 產生新的建立時間戳記。
區域資源網址 所有區域資源網址都會變更以反映目標區域。以下是會變更的資源網址的清單:
  • 執行個體的來源磁碟網址
  • 執行個體的機器類型網址
  • 自我連結網址
  • 區域網址
  • 磁碟類型網址
  • 磁碟的 users[] 清單中列出的任何執行個體網址

選擇手動或自動移動

手動移動表示您要執行上述每個步驟,而不是使用 projects.moveInstances API。若可能,您應使用 moveInstances API 節省一些工作,但在某些情況下並不適合使用 moveInstances API。特別是下列情況:

  • 如果您想在地區之間移動執行個體 (例如在 us-west1-aasia-south1-b 之間) 且 VM 屬於子網路,您必須手動執行移動並為執行個體選取新的子網路。
  • 如果執行個體已連結 GPU 或本機 SSD,您也必須手動執行移動。

無論您是手動還是自動移動,都必須符合需求才能成功移動執行個體。

在您移動執行個體之前,請確保參閱要求一文。

gcloud


確保您的執行個體正在執行。然後,在 gcloud 中,使用 compute instances move 子指令移動您的執行個體。

例如,如要將目前在 us-central1-b 中執行且名為 example-instance-1 的執行個體與其所有連結的永久磁碟一起移至 us-central1-f,請執行下列指令:

gcloud compute instances move example-instance \
    --zone us-central1-a --destination-zone us-central1-f

這項作業可能需要幾分鐘的時間才能完成。

API

在 API 中,使用包含 targetInstancedestinationZone 的要求主體向 moveInstance API 提出 POST 要求。例如:

{
   "targetInstance": "zones/us-central1-a/instances/example-instance",
   "destinationZone": "zones/us-central1-b"
}

手動移動執行個體

如有可能,您應自動移動執行個體,因為 moveInstance API 可為您處理移動執行個體時涉及的所有工作。但是,某些限制可能會使您無法使用這個 API,在此情況下,您可以手動執行移動作業。如果發生下列任何情況,請手動移動執行個體:

  • 您的 VM 並非 RUNNING
  • 您要將 VM 移至不同地區且 VM 屬於子網路。
  • 您的執行個體已連結 GPU 或本機 SSD。

以下範例說明如何將包含兩個永久磁碟 (myrootdiskmydatadisk) 的執行個體 myinstanceeurope-west1-a 移至 us-west1-b。執行個體範例如下所示:

gcloud compute instances list
NAME       ZONE           MACHINE_TYPE  INTERNAL_IP    EXTERNAL_IP     STATUS
myinstance europe-west1-a n1-standard-4 10.240.116.177 146.148.112.106 RUNNING

將執行個體移至另一個區域:

  1. 識別與您要移動的執行個體相關聯的磁碟。

    前往磁碟頁面

    在這個範例中,您會找到 myinstance 執行個體的下列 2 個關聯磁碟:

    • 名為 myrootdisk 的開機磁碟
    • 名為 mydatadisk 的資料磁碟
  2. myrootdiskmydatadisk 的自動刪除狀態設定為 false,以確保在刪除執行個體時不會自動刪除這兩個磁碟。

    gcloud compute instances set-disk-auto-delete myinstance --zone europe-west1-a \
        --disk myrootdisk --no-auto-delete
    

    如果狀態已更新,gcloud compute 會傳回 Updated [...] 的回應。如果已將自動刪除狀態設為 false,則 gcloud compute 會傳回空白回應。

  3. (選用) 儲存您的執行個體中繼資料。

    刪除執行個體時,也會移除執行個體中繼資料。您可以將該資訊儲存在不同的檔案中,然後將執行個體中繼資料重新套用至新的執行個體。

    以下列方式說明執行個體的中繼資料:

    gcloud compute instances describe myinstance --zone europe-west1-a
    

    將內容儲存到不同的檔案中。

  4. 建立資料備份。

    為了安全起見,請使用永久磁碟快照建立資料備份。 由於永久磁碟仍會連結到執行個體,為了確保快照與永久磁碟的狀態一致,請先清除磁碟緩衝區後再拍攝快照。

    清除磁碟緩衝區後,請按照下列方式建立快照:

    gcloud compute disks snapshot myrootdisk mydatadisk \
        --snapshot-names backup-myrootsnapshot,backup-mydatasnapshot \
        --zone europe-west1-a
    

    如要驗證是否建立快照,請執行 gcloud compute snapshots list

  5. 刪除執行個體。

    刪除執行個體會將其完全關閉並取消連結任何永久磁碟。

    gcloud compute instances delete myinstance --zone europe-west1-a
    

    gcloud 會提示您確認刪除:

     The following instances will be deleted. Attached disks configured to
     be auto-deleted will be deleted unless they are attached to any other
     instances. Deleting a disk is irreversible and any data on the disk
     will be lost.
      — [myinstance] in [europe-west1-a]
     

    Do you want to continue (Y/n)?

    由於您先前已在此程序中關閉了磁碟的自動刪除狀態,因此請輸入 Y 以繼續並忽略警告訊息。

  6. 接著,建立根磁碟和資料磁碟的另一個快照。

    gcloud compute disks snapshot myrootdisk mydatadisk \
        --snapshot-names myrootsnapshot,mydatasnapshot \
        --zone europe-west1-a
    
    Created [.../mydatasnapshot].
    Created [.../myrootsnapshot].
  7. (選用) 刪除永久磁碟。

    如果您打算讓新磁碟重複使用永久磁碟的名稱,則必須刪除現有的磁碟以釋出那些名稱。刪除磁碟也可以節省永久磁碟的儲存空間費用。

    如果您不打算重複使用相同的磁碟名稱,則可以稍後再刪除永久磁碟。

    gcloud compute disks delete myrootdisk mydatadisk --zone europe-west1-a
    
  8. 透過剛建立的快照在 us-west1-b 中建立新的永久磁碟。首先建立根磁碟。

    gcloud compute disks create myrootdiskb --source-snapshot myrootsnapshot \
        --zone us-west1-b
    
    Created [.../myrootdiskb].
    NAME        ZONE           SIZE_GB TYPE        STATUS
    myrootdiskb us-west1-b     100     pd-standard READY

    然後建立資料磁碟。

    gcloud compute disks create mydatadiskb --source-snapshot mydatasnapshot \
        --zone us-west1-b
    
    Created [.../mydatadiskb].
    NAME        ZONE           SIZE_GB TYPE        STATUS
    mydatadiskb us-west1-b 4000    pd-standard READY
  9. us-west1-b 中重新建立您的執行個體。

    • 如果您選擇將執行個體中繼資料儲存在檔案中 (例如 myinstance.describe),可以使用該檔案在執行個體上設定相同的中繼資料

    • 如果您的執行個體具有保留的外部 IP 位址,則可以透過指定 --address ADDRESS 選項將該位址重新指派給新的執行個體。

    • 如果您的執行個體包含 GPU,請使用 --accelerator 選項新增 GPU 至執行個體。

    • 如果執行個體使用特定子網路,請在 --zone [ZONE_NAME] 標記之前新增 --subnet [SUBNET_NAME] 標記。

    如需其他標記的完整清單,請參閱 gcloud compute instances create

    gcloud compute instances create myinstanceb --machine-type n1-standard-4 \
        --zone us-west1-b \
        --disk name=myrootdiskb,boot=yes,mode=rw \
        --disk name=mydatadiskb,mode=rw
    
    Created [.../myinstanceb].
    NAME        ZONE           MACHINE_TYPE  INTERNAL_IP    EXTERNAL_IP     STATUS
    myinstanceb us-west1-b     n1-standard-4 10.240.173.229 146.148.112.106 RUNNING
  10. (選用) 刪除永久磁碟快照。

    確認已移動您的虛擬機器後,即可透過刪除您建立的暫時快照來節省儲存空間費用。

    gcloud compute snapshots delete myrootsnapshot mydatasnapshot
    

    如果您不再需要備份快照,也請刪除那些快照:

    gcloud compute snapshots delete backup-myrootsnapshot backup-mydatasnapshot
    

後續步驟

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

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

這個網頁
Compute Engine 說明文件