主機事件

在虛擬機器 (VM) 執行個體或裸機執行個體的生命週期內,執行個體運作的主體機器可能會發生多個主體事件。主機事件可能包括 Compute Engine 基礎架構的定期維護,或極少數情況下的主機錯誤。您可以設定主機維護政策,選擇運算執行個體在主機事件期間或之後的回應方式。

根據預設,大多數執行個體在主機事件期間會即時遷移。除了 Z3 以外,所有機器系列都可以覆寫這項行為,並明確設定要終止執行個體,以及是否要重新啟動。使用特定機型或設定建立的執行個體不支援即時遷移,例如:

  • H4D 執行個體
  • Z3 執行個體,附加的 Titanium SSD 超過 18 TiB
  • Z4D 執行個體 (連接的 Titanium SSD 超過 42 TiB)
  • Bare Metal 執行個體
  • 已連接 GPU 的執行個體

這些執行個體會在主機事件期間終止。詳情請參閱「維護和重新啟動行為」。

主辦方活動類型

主機事件分為三種,詳情請參閱下列各節:

如果執行個體沒有回應,系統也可能會觸發執行個體重新啟動或終止作業。

維護事件

維護事件是指 Compute Engine 必須執行維護或修復活動,因此需要將 VM 移出主機伺服器。如果為支援的執行個體類型啟用即時遷移 主機維護政策,Compute Engine 會將執行個體移至新主機,應用程式幾乎不會中斷。

Compute Engine 也會在背景套用一些輕量型管理程序和網路升級,並將執行個體保留在同一部主機上,不會造成中斷。

維護事件期間的執行個體行為,取決於執行個體的租戶和機器類型。

如果是單一租戶 VM,預定主機維護事件的頻率大約是每 4 到 6 週一次。是否支援即時遷移取決於單一租戶 VM 的主機維護政策。

如要瞭解各機型的維護行為,請前往相應的機器家族頁面,如下所示:

如要瞭解加速器最佳化機器家族,請參閱下列頁面:

緊急維修

當 Compute Engine 偵測到主機即將發生故障,或有其他需要緊急維護的硬體問題時,就會發生緊急維護事件。針對這類事件,Compute Engine 會排定維護事件並建立通知。緊急維護事件的通知時間範圍通常比標準維護事件短。

緊急維護事件通常會提前 7 到 14 天通知。 視問題嚴重程度而定,通知視窗可能會較短。查看維護通知,瞭解支援的功能,例如在您選擇的時間開始維護。如果未採取任何行動,或無法手動啟動維護作業,Compute Engine 會在通知時間結束時自動啟動維護作業。

如果 Compute Engine 發出緊急維護通知時,有待處理的預定維護事件,緊急維護事件就會取代預定維護事件。

您可以在執行個體中繼資料的 maintenanceReasons 欄位中,查看緊急維護的原因。這個欄位包含代表失敗類別的值。

主機錯誤

主機錯誤 (compute.instances.hostError) 表示託管運算執行個體的實體機器或資料中心基礎架構發生硬體或軟體錯誤,導致執行個體當機。如果主機發生硬體故障或其他硬體問題,可能導致執行個體即時遷移失敗。如果執行個體設為自動重新啟動 (預設設定),Compute Engine 通常會在偵測到錯誤後三分鐘內重新啟動執行個體。視問題而定,重新啟動作業最多可能需要 5.5 分鐘。

運算執行個體發生主機錯誤,或您回報主機故障後,執行個體的主機需要緊急進行非排定的維護作業。根據預設,Compute Engine 會在排定這類維護作業時,提前幾小時發出通知。

有時,系統可能會在發出主機錯誤信號前,先顯示運算執行個體無回應。您可以設定主機錯誤復原逾時,縮短 Compute Engine 等待重新啟動或終止執行個體的時間。詳情請參閱「為現有執行個體設定政策」。

實體硬體和軟體故障偶爾會發生,但非常罕見。 為保護應用程式和服務,避免這類系統事件造成干擾,請參閱下列資源:

Google 也提供代管服務,例如 App Engine 和 App Engine 彈性環境。

主機維護政策總覽

執行個體的主機維護政策會決定執行個體在下列主機事件期間的行為:

  • 維護事件
  • 緊急維護事件
  • 主機錯誤事件或執行個體沒有回應

您可以設定執行個體在主機維護期間繼續執行,讓 Compute Engine 將執行個體即時遷移至其他主機,也可以選擇停止執行個體。

您可以透過下列設定,變更執行個體的主機維護政策:

  • 維護行為:發生維護事件時,執行個體是即時遷移還是停止。
  • 重新啟動行為:如果執行個體當機、發生主機錯誤或沒有回應,Compute Engine 會重新啟動或終止執行個體。
  • 主機錯誤偵測時間:Compute Engine 偵測到執行個體沒有回應後,等待重新啟動或終止執行個體的最長時間。
  • 本機 SSD 復原時間:Compute Engine 偵測到主機錯誤後,復原本機 SSD 磁碟資料所花費的最長時間。如果超過指定時間仍未成功復原,本機 SSD 資料就會遺失。

您隨時可以更新執行個體的主機維護政策,控管執行個體的行為。

維護和重新啟動行為

發生主機事件時,運算執行個體可以使用即時遷移,或終止執行個體。如果執行個體遭到終止,您可以選擇自行重新啟動執行個體,或讓 Compute Engine 自動重新啟動。

下列機器系列可能不支援即時遷移,而是在主機事件期間終止:

即時遷移

除了上一節提及的執行個體類型外,大多數執行個體類型預設都會即時遷移。

在即時遷移期間,Compute Engine 會自動將執行個體從基礎架構維護事件中遷移出來,且執行個體在遷移期間會持續運作。執行個體可能會在短時間內效能下降,但一般來說,大多數執行個體的效能不會有明顯差異。如果執行個體需要持續運作,且可容忍短暫的效能降低,就適合採用這種做法。

Compute Engine 遷移執行個體時,會回報系統事件,並發布至可用區作業清單和系統事件記錄。您可以查看特定可用區的 Compute Engine 作業,瞭解這項事件。即時遷移事件具有下列作業類型:

compute.instances.migrateOnHostMaintenance

終止並重新啟動

如果您不希望執行個體即時遷移,或執行個體類型不支援即時遷移,可以選擇允許Google Cloud 在主機事件發生時停止執行個體。採用這項設定時,如果發生主機事件,Compute Engine 會傳送軟體關機訊號來關閉執行個體。接著等待 60 秒,讓執行個體徹底關機,並將執行個體狀態設為 TERMINATED。如果執行個體未在 60 秒內完全關閉,就會強制終止。

如果執行個體需要持續發揮最高效能,且整體應用程式可處理執行個體故障或重新啟動,這個選項就是理想選擇。

如果 Compute Engine 因主機事件而停止執行個體,系統會回報系統事件,並發布至區域作業清單和系統事件記錄檔。您可以查看特定可用區的 Compute Engine 作業,瞭解這項事件。執行個體終止事件的作業類型如下:

compute.instances.terminateOnHostMaintenance

自動重新啟動

如果執行個體設定為在發生維護事件時停止運作,或因底層硬體問題而當機,Compute Engine 可以自動重新啟動執行個體。執行個體會在同一部主機伺服器上重新啟動,或移至同一可用區中未參與維護事件的其他伺服器。

根據預設,Compute Engine 會嘗試復原已連結本機 SSD 磁碟的執行個體一小時。如果達到時間限制,Compute Engine 會嘗試在同一可用區的不同主機伺服器上重新啟動執行個體。 Z4D、Z3、X4 和 H4D 執行個體的預設等待時間不同。這些執行個體類型會在執行個體終止後,於同一部主機伺服器上重新啟動。

如要設定自動重新啟動,請將主機維護政策欄位 automaticRestart 設為 true。如果執行個體因區域中斷或手動操作 (例如在客體 OS 中呼叫 sudo shutdown) 而離線,則這項設定不適用。

當 Compute Engine 自動重新啟動執行個體時,會回報系統事件並發布至區域作業清單。您可以查看特定可用區的 Compute Engine 作業,瞭解這項事件。自動重新啟動事件具有下列作業類型:

compute.instances.automaticRestart

執行個體終止後磁碟的持續性

由於 Persistent Disk 和Hyperdisk 是網路附加儲存空間,因此執行個體重新啟動時,Compute Engine 會將開機磁碟和所有次要磁碟重新附加至執行個體。這些磁碟上的資料在即時遷移和執行個體重新啟動後仍會保留。

如果主機事件發生後,Compute Engine 盡可能保留本機 SSD 磁碟上的資料,不過,Compute Engine 不保證本機 SSD 資料會持續存在。

  • 在下列情況下,本機 SSD 磁碟會保留:

    • 重新啟動客體作業系統 (OS)。
    • 您為執行個體設定即時遷移,而執行個體會經歷主機維護事件。
    • 發生主機錯誤,Compute Engine 會在逾時限制內將執行個體重新連線至本機 SSD 磁碟。
    • 在停止或暫停執行個體時,選擇保留本機 SSD 資料 (預先發布版)。
    • 如果運算執行個體連接的本機 SSD 磁碟僅支援終止和自動重新啟動,就會發生維護事件。執行個體會就地重新啟動,保留本機 SSD 資料,而不是遷移至新的主機。
  • 在下列情況中,本機 SSD 磁碟不會保留:

    • 關閉客體作業系統,並強制停止執行個體。
    • 您建立 Spot VM 或先占 VM,然後 VM 會經過先占程序。
    • 您將執行個體設定為在主機維護事件期間停止,而不是使用即時遷移,且執行個體會經歷主機維護事件。
    • 您誤設本機 SSD 磁碟,導致無法連線。
    • 您停用了專案計費功能,導致執行個體停止運作。
    • 如果執行個體未設定 automaticRestart。
    • 發生主機錯誤,且 Compute Engine 無法在逾時前將磁碟重新連接至執行個體。在這種情況下,執行個體會重新啟動,但不會復原本機 SSD 磁碟。執行個體重新啟動時,Compute Engine 會將空白的本機 SSD 磁碟附加至重新啟動的執行個體。您必須格式化並掛接這些磁碟,執行個體才能使用。原始本機 SSD 磁碟上的資料無法復原。

Google Cloud 會盡力確保本機 SSD 資料完好無損。 不過,在某些情況下 (例如逾時),資料可能無法復原。如要進一步瞭解系統何時會保留本機 SSD 磁碟,請參閱「本機 SSD 資料持續性」。

復原本機 SSD 的逾時設定

發生主機錯誤時,Compute Engine 會嘗試復原附加至執行個體的本機 SSD 磁碟。您可以使用主機政策 localSsdRecoveryTimeout 設定,控管 Compute Engine 嘗試復原資料的時間。

根據預設,Compute Engine 會花費 1 小時復原資料,但這項設定的有效值介於 0 到 168 之間,以 1 小時為單位調整。下列機器類型的預設值不同:

  • Z4D 和 Z3 VM 機型:預設值為 6,表示這些執行個體會嘗試復原本機 SSD 資料 6 小時,然後達到逾時限制。
  • Z3 裸機 z3-highmem-192-highlssd-metal:預設值為 168 小時 (7 天)。

如果將本機 SSD 復原逾時設為 0,Compute Engine 就不會嘗試復原任何已連線的本機 SSD 磁碟。執行個體會盡快重新啟動,且本機 SSD 資料無法復原。如果恢復工作負載比復原本機固態硬碟資料更重要,請使用這項設定。

如果復原逾時設定不是 0,但時間限制已到,本機 SSD 資料仍未復原,Compute Engine 就會重新啟動執行個體,但不會包含本機 SSD 磁碟。Compute Engine 會將新的空白本機 SSD 磁碟連接至重新啟動的執行個體。您必須先格式化並掛接這些磁碟,執行個體才能使用。

在 Compute Engine 嘗試復原本機 SSD 磁碟時,執行個體會處於 REPAIRING 狀態。這段期間無法使用執行個體和本機 SSD 磁碟。

如果將本機 SSD 復原逾時時間設為最大值 168,則在 Compute Engine 嘗試復原本機 SSD 磁碟期間,執行個體最多會保持在 REPAIRING 狀態 7 天。

停止復原本機 SSD 磁碟

您可以在 Compute Engine 達到復原逾時限制前,中斷本機 SSD 磁碟復原程序。如要這麼做,請使用 gcloud compute instances stop 指令搭配 --discard-local-ssd=True 旗標。

這項指令會停止復原程序、停止運算執行個體,並捨棄本機 SSD 資料。然後重新啟動執行個體。 詳情請參閱「停止有本機 SSD 的執行個體」。

如要設定本機 SSD 復原逾時,請參閱「設定執行個體主機維護政策」。

維護作業排程

Google Cloud 提供多項功能,可讓您更嚴格控管維護作業。使用特定機器系列時,您可以指定維護偏好設定,並透過 Cloud Logging、執行個體的中繼資料伺服器、gcloud CLI compute instances describe 指令或 REST instances.describe 方法,接收即將進行的維護事件通知。收到通知後,您可以在一段時間內,選擇合適的時間啟動排定的維護作業。如果您未觸發排定的維護作業,維護事件會在通知時間範圍結束時發生,也就是通知中列出的排定時間。

您可以搭配使用這些功能和主機維護政策,自訂適合工作負載的維護排程。

後續步驟