停止及啟動執行個體

本頁面說明如何停止及啟動 VM 執行個體。如要進一步瞭解如何停止執行個體,請參閱執行個體生命週期一文。

如果您不再需要執行個體,可暫時停止執行個體,並於稍後重新啟動。已停止的執行個體會保留其永久磁碟、內部 IP 和 MAC 位址。但是,執行個體會關閉訪客 OS,並遺失其應用程式狀態。實際上,已停止的執行個體會重設至開機狀態,且不儲存資料。如果您要變更機器類型、新增或移除連接的磁碟、變更最低 CPU 平台、新增或移除 GPU,或套用規模調整建議,請停止執行個體。

停止執行個體會導致 Compute Engine 將 ACPI 關機訊號傳送至執行個體。現代化訪客作業系統都設定為在關機之前執行乾淨關機作業以回應關機訊號。Compute Engine 會等待一段較短的時間,讓訪客完成關機,然後將執行個體轉換至 TERMINATED 狀態。

已停止的執行個體不會產生費用,但是連接至執行個體的所有資源仍需支付費用。例如,即使停止執行個體,系統仍會依照價目表向您收取永久磁碟與外部 IP 位址的使用費用。如要停止系統向您收取連接資源的使用費用,您可以將已停止的執行個體重新設定為不使用這些資源,然後刪除這些資源。

事前準備

限制

您無法停止連接本機 SSD 的執行個體。如果執行個體有本機 SSD,Compute Engine 無法防止您從訪客作業系統內部關閉執行個體,因此請採取額外預防措施。

本機 SSD

已連接本機 SSD 的執行個體無法停止。您必須將重要資料從本機 SSD 遷移至永久磁碟或其他執行個體,然後再完全刪除執行個體。Compute Engine 無法防止您關閉具有本機 SSD 之執行個體的訪客作業系統,因此,如果您要關閉執行個體的訪客作業系統,請採取額外預防措施。

帳單

當 VM 處於 TERMINATED 狀態時,Google 不會收取 VM 資源費用。

具體來說,當 VM 處於 RUNNING 狀態且正在停止時 (尚未 TERMINATED),Google 會收取 vCPU、記憶體、GPU 與本機 SSD 的費用。當 STOPPING 狀態結束,且 VM 進入 TERMINATED 狀態時,Google 會停止收取上述資源的費用。

請記住,仍連接至 TERMINATED VM 的其他任何資源都會繼續產生費用,例如永久磁碟、靜態外部 IP 位址等。

如要進一步瞭解執行個體狀態,請參閱執行個體生命週期說明文件。

停止執行個體

如要停止執行個體,請使用 Google Cloud Platform 主控台gcloud 工具API

主控台

  1. 前往 GCP 主控台的 VM 執行個體頁面。

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

  2. 選取您要停止的一或多個執行個體。
  3. 在「VM instances」(VM 執行個體) 頁面的頂端,按一下 [Stop] (停止)

gcloud

使用 instances stop 指令並指定您要停止的一或多個執行個體。

gcloud compute instances stop example-instance-1 example-instance-2

API

在 API 中,建構 POST 要求以停止執行個體。

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances/example-instance/stop

TERMINATED 執行個體仍存在,且採用其配置設定和執行個體中繼資料,但會遺失其記憶體內資料和虛擬機器狀態。仍連接至終止執行個體的任何資源會維持連接狀態,直到您手動卸離這些資源或刪除執行個體為止。

在執行個體處於 TERMINATED 狀態之後,您可以重新啟動執行個體刪除執行個體,也可以將執行個體無限期保留在 TERMINATED 狀態。但是,如果您不想重新啟動執行個體,請將其刪除

透過 OS 停止執行個體

您也可以透過訪客作業系統停止執行個體。

Linux

使用 sudo shutdown -h nowsudo poweroff 指令。在您登入虛擬機器時,執行下列其中一個指令:

me@example-instance:~$ sudo shutdown -h now
me@example-instance:~$ sudo poweroff

Windows

您可以使用「Start」(開始) 選單重新啟動 Windows 執行個體,這與以上的 sudo reboot 類似。在「Start」(開始) 選單中,按一下 [Log off] (登出) 旁的箭頭,然後按一下 [Restart] (重新啟動)

啟動已停止的執行個體

如要啟動已停止的執行個體,請使用 instances().start 方法。此方法可啟動目前處於 TERMINATED 狀態的已停止虛擬機器執行個體。

start 方法會以 TERMINATED 狀態重新啟動執行個體,而例如 reset()sudo reboot 之類的方法則只能在目前執行中的執行個體上運作。只要執行個體處於 TERMINATED 狀態,大多數執行個體都可以重新啟動,但已連接本機 SSD 的執行個體除外,這些執行個體無法重新啟動。

主控台

  1. 前往 Google Cloud Platform 主控台的「VM 執行個體」頁面。

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

  2. 選取您要重新啟動的執行個體。
  3. 按一下頁面右上方的 [Start] (啟動) 按鈕,重新啟動執行個體。

gcloud

使用 gcloud compute 重設您的執行個體:

gcloud compute instances start example-instance

API

在 API 中,對下列網址提出 POST 要求,並正確取代專案、區域與執行個體名稱:

https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances/example-instance/start

如要使用用戶端程式庫重新啟動執行個體,請對 instances().start 方法建構要求:

def restartInstance(auth_http, gce_service):
  request = gce_service.instances().start(project="myproject", zone="us-central1-a", instance="example-instance")
  response = request.execute(auth_http)

  print response

如要進一步瞭解這個方法,請參閱 instances().start 參考說明文件。

重新啟動具有加密磁碟的執行個體

如果您要重新啟動的執行個體使用客戶提供的加密金鑰,則必須在嘗試重新啟動執行個體時提供這些金鑰。

主控台

  1. 前往 VM 執行個體頁面。

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

  2. 按一下您要啟動的執行個體名稱。這會開啟執行個體詳細資料頁面。
  3. 按一下 [Start] (開始) 按鈕。系統隨即會開啟視窗,讓您在其中為連接到此執行個體的設備指定加密金鑰。
  4. 為連接到此執行個體的每個加密磁碟指定加密金鑰。
  5. 按一下 [Start] (開始) 即可啟動執行個體。

gcloud

請使用 --csek-key-file 標記和磁碟名稱在執行個體建立期間提供金鑰。如果您使用的是 RSA 包裝的金鑰,請使用 gcloud beta 元件:

gcloud compute instances start [INSTANCE_NAME] \
  --csek-key-file [ENCRYPTION_KEY]

其中:

  • [INSTANCE_NAME] 是執行個體的名稱。
  • [ENCRYPTION_KEY] 是加密密鑰 (用來為連結到執行個體的永久磁碟加密)。

API

在 API 中,建構 POST 要求以使用加密金鑰啟動執行個體。如果您使用的是 RSA 包裝的金鑰,請提出要求至 Beta API,而非 v1 API。

POST https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/[ZONE]/instances/[INSTANCE_NAME]/startWithEncryptionKey
{
  "instanceEncryptionKey": {
    "rsaEncryptedKey": "[ENCRYPTION_KEY]"
  },
  "disk": [
    {
       "source": "[DISK_NAME]",
       "diskEncryptionKey": {
         "rsaEncryptedKey": "[ENCRYPTION_KEY]"
       }
    }
  ]
}

其中:

  • [INSTANCE_NAME] 是執行個體的名稱。
  • [PROJECT_ID] 是您的專案 ID。
  • [ZONE] 是這個執行個體所在的區域
  • [MACHINE_TYPE] 是執行個體的機器類型
  • [DISK_NAME] 是已連接的磁碟 (用客戶提供的加密金鑰加密過)。
  • [ENCRYPTION_KEY] 是加密密鑰 (用來為連結到執行個體的永久磁碟加密)。

重設執行個體

對執行個體執行重設與對電腦執行恢復原廠設定類似,在此情況下,您可按下重設按鈕或按住電源按鈕。強制重設執行個體會清除機器的記憶體內容,將虛擬機器重設為初始狀態。執行個體不會執行訪客 OS 的乾淨關機作業。在此過程中,執行個體會保持 RUNNING 狀態。

當您重設執行個體時,沒有任何一個執行個體屬性會變更。執行個體會保留其臨時 IP 位址、其永久磁碟、其機器類型等。但是,除非您備份資料,否則任何儲存在記憶體中的資料都會遭到重設。

您可使用 GCP 主控台中的「Reset」(重設) 按鈕、gcloud 中的 instances reset 指令,或在 API 中提出 POST 要求,對執行中執行個體執行重設。

主控台

  1. 前往 Google Cloud Platform 主控台的「VM 執行個體」頁面。

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

  2. 找到您要重設的一或多個執行個體,然後勾選旁邊的核取方塊。
  3. 按一下頁面右上方的 [Reset] (重設) 按鈕,即可重設執行個體。

gcloud

使用 gcloud compute 重設您的執行個體:

gcloud compute instances reset example-instance

API

在 API 中,對下列網址提出 POST 要求,並正確取代專案、區域與執行個體名稱:

https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instances/example-instance/reset

如要使用用戶端程式庫重設執行個體,請對 instances().reset 方法建構要求:

def resetInstance(auth_http, gce_service):
  request = gce_service.instances().reset(project="myproject", zone="us-central1-a", instance="example-instance")
  response = request.execute(auth_http)

  print response

如要進一步瞭解這個方法,請參閱 instances().reset 參考說明文件。

執行 reset 指令之後,當執行個體完成關閉並啟動以重新啟動之後,後續區域作業將會恢復為 DONE

使用其他重新啟動方法

或者,您可以使用下列方法重設執行個體:

  • sudo reboot (僅限 Linux) - 從執行個體內呼叫。清除記憶體並使用原始中繼資料、映像檔與永久磁碟重新初始化執行個體。它「不會」挑選映像檔的任何更新版本,執行個體將會保留相同的臨時 IP 位址。這與重新啟動電腦類似。
  • gcloud compute instances delete 後跟 gcloud compute instances create - 這是完全破壞性的重新啟動,會以傳送到 gcloud compute instances create 的任何資訊初始化執行個體。然後您可以選取任何新映像檔或您想要使用的其他資源。重新啟動的執行個體可能會有不同的 IP 位址。此方法可能會清除託管執行個體的實體機器。

後續步驟

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

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

這個網頁
Compute Engine 說明文件