您可以主動管理預留容量區塊中即將發生的維護主機事件,無論 VM 是否在這些區塊上執行。這種做法有助於盡量減少中斷,並維持最佳效能。
事前準備
-
如果尚未設定驗證,請先完成設定。
驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,可以選取下列任一選項,向 Compute Engine 進行驗證:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:
gcloud init若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
- Set a default region and zone.
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:
gcloud init若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。
必要的角色
如要取得管理預訂項目主機維護事件所需的權限,請要求管理員授予下列 IAM 角色:
-
專案的 Compute 管理員 (
roles/compute.admin) -
如要以唯讀存取系統事件稽核記錄:
專案的「記錄檢視者」 (
roles/logging.viewer)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這些預先定義的角色具備管理預訂項目主機維護事件所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要管理所有預留項目的主機維護事件,必須具備下列權限:
-
如要啟動預留項目的主機維護作業:
compute.reservations.performMaintenance專案 -
如要為預留項目區塊啟動主機維護作業:
compute.reservationBlocks.performMaintenance專案- 如要查看預訂清單
總覽
如要盡可能減少預留容量區塊的維護作業,請完成下列步驟:
設定通知快訊。建立記錄式快訊,以便在預訂或預訂區塊的維護作業排定、開始或完成時收到通知。這種做法有助於您主動規劃活動,避免發生非預期的停機時間。
管理各個容量區塊的維護作業。查看並視需要手動啟動預留項目或預留項目區塊的維護作業。這個程序可協助您提高工作負載的韌性,避免主機發生錯誤、防止停機,並確保應用程式保持可用狀態。
如要進一步瞭解 H4D 機器類型的維護頻率和行為,請參閱「H4D 執行個體的維護體驗」。
設定預訂通知快訊
如要接收預訂或預訂區塊的排定、開始或完成維護事件通知,請建立以記錄為準的警報政策。
如要為預訂或預訂區塊的維護事件建立快訊,請完成下列程序。針對要建立的每個快訊重複這個程序。
-
前往 Google Cloud 控制台的「Logs Explorer」頁面:
如果您是使用搜尋列尋找這個頁面,請選取子標題為「Logging」的結果。
將「顯示查詢」切換鈕設為開啟。
在「查詢」窗格中,建立下列其中一個查詢。這些查詢會篩選記錄檔項目,找出特定維護事件。針對要建立的每個查詢重複這個程序。
接收預留項目的維護快訊:
如要在排定維護作業時收到快訊,請按照下列步驟操作:
protoPayload.methodName="compute.reservations.upcomingGroupMaintenance" severity>=DEFAULT protoPayload.status.message =~ "scheduled"如要在維護完成時收到快訊,請按照下列步驟操作:
protoPayload.methodName="compute.reservations.completedGroupMaintenance" severity>=DEFAULT protoPayload.status.message =~ "completed"
接收預留項目模塊的維護快訊:
如要在排定維護作業時收到快訊,請按照下列步驟操作:
protoPayload.methodName="compute.reservations.block.upcomingGroupMaintenance" severity>=DEFAULT protoPayload.status.message =~ "scheduled"如要在維護作業開始時收到快訊,請按照下列步驟操作:
protoPayload.methodName="compute.reservations.block.startGroupMaintenance" severity>=DEFAULT protoPayload.status.message =~ "started"如要在維護完成時收到快訊,請按照下列步驟操作:
protoPayload.methodName="compute.reservations.block.completedGroupMaintenance" severity>=DEFAULT protoPayload.status.message =~ "completed"
如要驗證查詢,請按一下「執行查詢」。如果查詢有效,「Query results」(查詢結果) 窗格會顯示符合查詢的記錄項目。
在「查詢」結果工具列中,按一下「動作」清單,然後選取 「建立記錄檔警告」。「建立記錄檔警告政策」窗格隨即顯示。
在「警報詳細資料」部分,執行下列操作:
在「快訊政策名稱」欄位中,輸入政策名稱。
在「政策嚴重性等級」清單中,選取「警告」 (或更高嚴重性)。
點選「下一步」。
在「Choose logs to include in the alert」(選擇要加入快訊的記錄檔) 區段中,按一下「Next」(下一步)。
在「設定通知頻率和自動關閉時間長度」部分,指定下列項目:
在「通知時間間隔」清單中,選取接收通知的頻率。
在「事件自動關閉期限」清單中,選取 Cloud Logging 停止傳送通知並自動關閉事件的時間長度。
點選「下一步」。
在「誰會收到通知?」部分,指定 Logging 要傳送通知的通知管道。
按一下 [儲存]。
管理預留項目的維護作業
您可以透過下列方式查看及控管預訂和預訂區塊的維護作業:
如要查看預訂或預訂區塊的近期維護狀態和排定時間,請查看維護狀態。
如要手動啟動預留項目或預留項目區塊的維護作業,而不等待排定的維護日期和時間,請手動啟動維護作業。
如要管理 VM 主機在發生主機錯誤或主機故障報告後,需要緊急、未規劃的維護作業時,您希望提早收到通知的時間,請管理硬體緊急維護通知。
查看維護狀態
如要查看預訂或預訂區塊的近期維護狀態,請檢查預訂中繼資料的
upcomingGroupMaintenance欄位值。如果保留項目缺少upcomingGroupMaintenance欄位,表示系統未排定該保留項目或保留項目區塊的維護作業。如要進一步瞭解upcomingGroupMaintenance中的欄位,請參閱「維護狀態定義」。此外,如果預訂區塊排定維護作業,
upcomingGroupMaintenance欄位會包含maintenanceReasons欄位。這個欄位會說明預留區塊排定維護作業的原因,如下表所示:維護作業類型 維護原因 VM 狀態 定期維護的預定維護作業 PLANNED_UPDATE:預定的基礎架構維護作業PLANNED_NETWORK_UPDATE:預定進行網路維護
適用於執行中、已停止或已暫停的 VM。 非預期的緊急維護 FAILURE_DISK:未規劃的維護作業,因 VM 連結的磁碟發生錯誤而排定。FAILURE_INFRA:因基礎架構發生錯誤而安排的非預期維護作業。FAILURE_INTERFACE:由於 NIC 發生錯誤,因此排定非預期的維護作業。FAILURE_MEMORY:非預期,因 VM 的記憶體發生錯誤而排定維護作業。FAILURE_NETWORK:網路發生錯誤,因此安排非預定的維護作業。
僅適用於執行中的 VM。 如要在預訂區塊或子區塊中查看
maintenanceReasons欄位,請使用 gcloud CLI 或 REST API。否則,請選取下列其中一個選項:控制台
前往 Google Cloud 控制台的「Reservations」(預留項目) 頁面。
在「維護狀態」欄中,Compute Engine 會顯示預留項目的維護狀態。如果「隨選預訂」表格中未顯示這個資料欄,請按一下「資料欄顯示選項」,選取「維護狀態」核取方塊,然後按一下「確定」。
如要查看預留區塊的維護狀態,請完成下列步驟:
在「Name」(名稱) 欄中,按一下預訂名稱。系統會顯示預訂詳細資料頁面。
在「區塊」表格的「維護」欄中,Compute Engine 會顯示預訂中區塊的維護狀態。
gcloud
如要查看預訂的維護狀態,請使用
gcloud compute reservations describe指令,並將--flatten標記設為resourceStatus.reservationMaintenance:gcloud compute reservations describe RESERVATION_NAME \ --flatten=resourceStatus.reservationMaintenance \ --zone=ZONE更改下列內容:
RESERVATION_NAME:預訂名稱。ZONE:預留項目所在的可用區。
輸出結果會與下列其中一項類似:
如果保留項目已排定維護作業,輸出內容會類似以下內容:
--- maintenanceOngoingCount: 0 maintenancePendingCount: 6 schedulingType: GROUPED upcomingGroupMaintenance: canReschedule: true maintenanceStatus: PENDING type: UNSCHEDULED windowEndTime: '2025-11-13T14:00:00.000-08:00' windowStartTime: '2025-11-13T12:00:00.000-08:00'如果
schedulingType欄位設為INDEPENDENT,則upcomingGroupMaintenance欄位不會包含windowStartTime和windowEndTime欄位。如果預訂項目未排定維護作業,輸出內容會類似於下列範例:
--- schedulingType: GROUPED
如果預留項目排定維護作業,如要查看預留項目中區塊的維護狀態,請使用
gcloud compute reservations blocks list指令:gcloud compute reservations blocks list RESERVATION_NAME \ --zone=ZONE如果預留區塊已排定或正在進行維護,輸出內容會類似於下列內容:
--- ... name: example-fr-h4d-dense-1-block-0001 ... reservationBlockMaintenance: maintenanceOngoingCount: 0 maintenancePendingCount: 6 schedulingType: GROUPED upcomingGroupMaintenance: canReschedule: true maintenanceReasons: - PLANNED_UPDATE - PLANNED_NETWORK_UPDATE maintenanceStatus: PENDING type: UNSCHEDULED windowEndTime: '2025-11-13T14:00:00.000-08:00' windowStartTime: '2025-11-13T12:00:00.000-08:00' ... --- ... name: example-fr-h4d-dense-1-block-0002 ... schedulingType: GROUPED ...
REST
如要查看預訂項目的維護狀態,請對下列其中一個方法發出
GET要求:如要查看所有區域的預訂項目,請使用
reservations.aggregatedList方法。如要查看特定區域的預留項目,請使用
reservations.list方法。
在要求網址中加入下列查詢參數:
如要只顯示預訂的名稱、保留的機器類型和維護狀態,請加入設為
items.name,items.specificReservation.instanceProperties.machineType,items.resourceStatus.reservationMaintenance的fields查詢參數。如要只依指定機器類型篩選預訂項目,請加入
filter查詢參數,並使用網址編碼值將其設為specificReservation.instanceProperties.machineType:MACHINE_TYPE。
舉例來說,如要查看所有可用區的預留項目,請發出
GET要求,如下所示:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/reservations?fields=items.name,items.specificReservation.instanceProperties.machineType,items.resourceStatus.reservationMaintenance&filter=specificReservation.instanceProperties.machineType%3AMACHINE_TYPE更改下列內容:
PROJECT_ID:預訂項目所在的專案 ID。MACHINE_TYPE:要用來篩選預訂項目的預留機器類型。
如果預留項目已排定或正在進行維護,輸出內容會類似於下列內容:
{ "items": [ { "specificReservation": { "instanceProperties": { "machineType": "MACHINE_TYPE" } }, "name": "example-reservation", "resourceStatus": { "reservationMaintenance": { maintenanceOngoingCount: 0, maintenancePendingCount: 6, "schedulingType": "GROUPED", "upcomingGroupMaintenance": { "type": "SCHEDULED", "canReschedule": true, "windowStartTime": "2025-11-13T12:00:00.000-08:00", "windowEndTime": "2025-11-13T14:00:00.000-08:00", "maintenanceStatus": "PENDING" } } } }, ... ] }如要進一步縮小 VM 清單範圍,請視需要將
filter查詢參數設為其他篩選運算式。如果保留項目已排定維護作業,請對
reservationBlocks.list方法發出GET要求,查看保留項目中區塊的維護狀態。在要求網址中,加入設為items.name,items.reservationMaintenance的fields查詢參數:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationBlocks?fields=items.name,items.reservationMaintenance將
RESERVATION_NAME替換為預留項目名稱。如果預留區塊已排定或正在進行維護,輸出內容會類似於下列內容:
{ "items": [ { "name": "example-fr-h4d-dense-1-block-0001", "reservationBlockMaintenance": { "maintenanceOngoingCount": 0, "maintenancePendingCount": 6, "schedulingType": "GROUPED", "upcomingGroupMaintenance": { "type": "SCHEDULED", "canReschedule": true, "windowStartTime": "2025-11-13T12:00:00.000-08:00", "windowEndTime": "2025-11-13T14:00:00.000-08:00", "maintenanceStatus": "PENDING", "maintenanceReasons": [ "PLANNED_UPDATE", "PLANNED_NETWORK_UPDATE" ] } } }, ... ] }如果區塊的
schedulingType欄位設為INDEPENDENT,則upcomingGroupMaintenance欄位不會包含windowStartTime和windowEndTime欄位。
手動啟動維護作業
您可以手動啟動預留資源或預留資源區塊的維護作業,不必等到排定的時間。這項動作可協助您更主動地控管工作負載的中斷情形。
視預留項目或預留項目區塊的維護狀態而定,系統會執行下列操作:
維護狀態 說明 顯示內容 已排定 Compute Engine 已排定預留資源的維護作業。 您可以在排定的時間之前手動啟動維護作業。 - 在 Google Cloud 控制台中,維護狀態會顯示為「Ready to run - will run on DATE」(準備執行 - 將於 DATE 執行)。
- 在 gcloud CLI 或 REST API 中,Compute Engine 會將
maintenanceStatus欄位設為PENDING。
進行中 維護作業正在進行中。你無法重新安排發布時程。 - 在 Google Cloud 控制台中,維護狀態會顯示為「Running」(執行中)。
- 在 gcloud CLI 或 REST API 中,Compute Engine 會將
maintenanceStatus欄位設為ONGOING。
完成 維護作業已完成。Compute Engine 已從 VM 中移除所有維護通知。 - 在 Google Cloud 控制台中,維護狀態會顯示為 —。
- 在 gcloud CLI 或 REST API 中,
maintenanceStatus欄位不存在。
如要手動啟動預訂區塊中特定主機的維護作業,請使用 gcloud CLI 或 REST API。否則,請選取下列其中一個選項:
控制台
前往 Google Cloud 控制台的「Reservations」(預留項目) 頁面。
在「名稱」欄中,按一下預訂名稱。系統會顯示預訂詳細資料頁面。
按一下「執行維護作業」,然後選取下列其中一個選項:
如要對所有區塊啟動維護作業,請選取「所有容量」。
如要只對執行 VM 的區塊啟動維護作業,請選取「使用中的容量」。
如要只對未使用的區塊,以及含有已停止或暫停 VM 的區塊啟動維護作業,請選取「未使用的容量」。
按一下「確定」確認這項操作。
gcloud
如要開始維護預訂項目,請使用
gcloud compute reservations perform-maintenance指令:gcloud compute reservations perform-maintenance RESERVATION_NAME \ --scope=RESERVATION_MAINTENANCE_SCOPE \ --zone=ZONE如要開始維護保留區塊,請使用
gcloud compute reservations blocks perform-maintenance指令:gcloud compute reservations blocks perform-maintenance RESERVATION_NAME \ --block-name=BLOCK_NAME \ --scope=BLOCK_MAINTENANCE_SCOPE \ --zone=ZONE更改下列內容:
RESERVATION_NAME:預訂名稱。RESERVATION_MAINTENANCE_SCOPE:預留項目的維護範圍。請指定下列其中一個值:如要對所有區塊執行維護作業,請按一下
all。如要只對執行 VM 的模塊啟動維護作業,請執行下列操作:
running如要只對未使用的區塊,以及已停止或暫停 VM 的區塊啟動維護作業,請按一下
unused。
BLOCK_NAME:預留項目中的區塊名稱。BLOCK_MAINTENANCE_SCOPE:預留區塊的維護範圍。請指定下列其中一個值:如要開始維護所有主機,請按照下列步驟操作:
all如要只對執行 VM 的主機啟動維護作業,請執行:
running如要只在閒置主機和已停止或暫停 VM 的主機上啟動維護作業,請按照下列步驟操作:
unused
ZONE:預留項目所在的可用區。
REST
如要開始維護預留項目,請對
reservations.performMaintenance方法發出POST要求:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/performMaintenance { "maintenanceScope": "RESERVATION_MAINTENANCE_SCOPE" }如要對預留項目區塊啟動維護作業,請對
reservationBlocks.performMaintenance方法發出POST要求:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME/reservationBlocks/BLOCK_NAME/performMaintenance { "maintenanceScope": "BLOCK_MAINTENANCE_SCOPE" }
更改下列內容:
PROJECT_ID:Compute Engine 自動建立預留資源的專案 ID。ZONE:預留項目所在的可用區。RESERVATION_NAME:預訂名稱。RESERVATION_MAINTENANCE_SCOPE:預留項目的維護範圍。請指定下列其中一個值:如要對所有區塊執行維護作業,請按一下
ALL。如要只對執行 VM 的模塊啟動維護作業,請執行下列操作:
RUNNING如要只對未使用的區塊,以及已停止或暫停 VM 的區塊啟動維護作業,請按一下
UNUSED。
BLOCK_NAME:預留項目中的區塊名稱。SUB_BLOCK_NAME:預留區塊內的子區塊名稱。BLOCK_MAINTENANCE_SCOPE:預留區塊的維護範圍。請指定下列其中一個值:如要開始維護所有主機,請按照下列步驟操作:
ALL如要只對執行 VM 的主機啟動維護作業,請執行:
RUNNING如要只在閒置主機和已停止或暫停 VM 的主機上啟動維護作業,請按照下列步驟操作:
UNUSED
管理硬體緊急維護通知
如果 VM 發生主機錯誤,或您回報主機故障,VM 的主機就需要進行緊急的非計畫性維護。根據預設,Compute Engine 會在排定這類維護作業時,提前幾小時發出通知。如果是預留主機,您可以啟用緊急維護通知,將通知期限延長至至少七天。這種做法可協助您更主動地控管工作負載的中斷情形。
如要為預訂項目啟用或停用硬體緊急維護通知,請選取下列其中一個選項:
gcloud
如要為預訂項目啟用硬體緊急維護通知,請使用
gcloud compute reservations update指令並加上--enable-emergent-maintenance旗標:gcloud compute reservations update RESERVATION_NAME \ --enable-emergent-maintenance \ --zone=ZONE如要停用預訂的硬體緊急維護通知,請使用
gcloud compute reservations update指令並加上--no-enable-emergent-maintenance標記:gcloud compute reservations update RESERVATION_NAME \ --no-enable-emergent-maintenance \ --zone=ZONE
更改下列內容:
RESERVATION_NAME:預訂名稱。ZONE:預留項目所在的可用區。
REST
如要為預訂啟用或停用硬體緊急維護通知,請對
reservations.update方法發出PATCH要求。在要求網址中,加入設為enableEmergentMaintenance的paths查詢參數。PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME?paths=enableEmergentMaintenance { "name": "RESERVATION_NAME", "enableEmergentMaintenance": EMERGENCY_MAINTENANCE_NOTIFICATIONS }更改下列內容:
PROJECT_ID:預留項目所在的專案 ID。ZONE:預留項目所在的可用區。RESERVATION_NAME:預訂名稱。EMERGENCY_MAINTENANCE_NOTIFICATIONS:指定下列其中一個值:如要啟用通知,請按照下列步驟操作:
true如要停用通知,請按照下列步驟操作:
false
後續步驟
瞭解主機事件期間的本機 SSD 資料保存
瞭解如何執行本機 SSD 資料備份來保存資料
監控主機維護事件時,請瞭解維護狀態定義
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-12-04 (世界標準時間)。
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["難以理解","hardToUnderstand","thumb-down"],["資訊或程式碼範例有誤","incorrectInformationOrSampleCode","thumb-down"],["缺少我需要的資訊/範例","missingTheInformationSamplesINeed","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2025-12-04 (世界標準時間)。"],[],[]] -