本文說明如何在新的或現有的 Compute Engine 執行個體中啟用正常關機。如要進一步瞭解正常關機,請參閱「正常關機總覽」。
在執行個體中啟用正常關機功能後,當您停止或刪除執行個體時,可以讓客體 OS 正常關機,時間最多為一小時。這有助於避免資料遺失或檔案系統毀損。
事前準備
-
如果尚未設定驗證,請先完成設定。
驗證可確認您的身分,以便存取 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 驗證說明文件中的「Authenticate for using REST」。
必要的角色
如要取得在 Compute 執行個體中啟用正常關機所需的權限,請要求管理員授予您專案的 Compute 執行個體管理員 (v1) (
roles/compute.instanceAdmin.v1
) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。這個預先定義的角色具備在運算執行個體中啟用正常關機的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要在運算執行個體中啟用正常關機,必須具備下列權限:
-
如要建立執行個體,請按照下列步驟操作:
- 專案的
compute.instances.create
權限 - 如要使用自訂映像檔建立 VM,請按一下映像檔上的
compute.images.useReadOnly
。 - 如要使用快照建立 VM,請按一下快照上的
compute.snapshots.useReadOnly
- 如要使用執行個體範本建立 VM,請按一下執行個體範本上的
compute.instanceTemplates.useReadOnly
- 如要將舊版網路指派給 VM:專案的
compute.networks.use
權限 - 如要為 VM 指定靜態 IP 位址,請在專案中擁有
compute.addresses.use
權限 - 使用舊版網路時,如要將外部 IP 位址指派給 VM,請在專案中設定
compute.networks.useExternalIp
- 為 VM 指定子網路:專案或所選子網路的
compute.subnetworks.use
- 使用虛擬私有雲網路時,如要將外部 IP 位址指派給 VM,請在專案或所選子網路上擁有
compute.subnetworks.useExternalIp
權限 - 如要為專案中的 VM 設定 VM 執行個體中繼資料,請執行下列指令:
compute.instances.setMetadata
- 如要為 VM 設定標記,請在 VM 上按一下
compute.instances.setTags
- 如要為 VM 設定標籤,請在 VM 上執行下列步驟:
compute.instances.setLabels
- 如要設定 VM 使用的服務帳戶,請在 VM 上執行
compute.instances.setServiceAccount
- 如要為 VM 建立新磁碟,請取得專案的
compute.disks.create
權限 - 如要以唯讀或讀寫模式連接現有磁碟,請對磁碟擁有
compute.disks.use
權限 - 如要以唯讀模式連接現有磁碟,請對磁碟擁有
compute.disks.useReadOnly
權限
- 專案的
-
如要建立執行個體範本:
按一下專案的
compute.instanceTemplates.create
-
如要在現有執行個體中啟用正常關機:
在執行個體上執行
compute.instances.update
啟用安全關機
如要在運算執行個體中啟用正常關機,請使用下列其中一種方法:
在現有執行個體中啟用安全關機
您可以在現有的運算執行個體中啟用安全關機,不必停止或重新啟動執行個體。預設的正常關機時間為 10 分鐘,但您可以指定 1 秒至 1 小時的自訂關機時間。
如要在現有執行個體中啟用正常關機,請選取下列其中一個選項:
主控台
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
在「Name」(名稱) 欄中,按一下要啟用正常關機的執行個體名稱。
執行個體的詳細資料頁面隨即開啟。
按一下「Edit」(編輯)
。在「管理」部分,執行下列操作:
選取「按適當流程關閉 VM」核取方塊。
選用:如要指定自訂正常關機時間,請在「Maximum duration」(最長持續時間) 欄位中指定時間長度。
按一下 [儲存]。
gcloud
如要在現有執行個體中啟用正常關機,請使用
gcloud beta compute instances update
指令並加上--graceful-shutdown
旗標:gcloud beta compute instances update INSTANCE_NAME \ --graceful-shutdown \ --zone=ZONE
更改下列內容:
INSTANCE_NAME
:執行個體的名稱。ZONE
:執行個體所在的區域。
如要指定自訂的正常關機期限,請加入
--graceful-shutdown-max-duration
旗標:gcloud beta compute instances update INSTANCE_NAME \ --graceful-shutdown \ --graceful-shutdown-max-duration=MAX_DURATION \ --zone=ZONE
將
MAX_DURATION
替換為關機時間長度。值的格式必須為時數、分鐘數或秒數,後接h
、m
和s
。舉例來說,您可以指定1h
表示一小時,或指定20m10s
表示 20 分鐘 10 秒。REST
建立空白的 JSON 檔案。
如要查看現有執行個體的屬性,請對 beta
instances.get
方法發出GET
要求:GET https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME
更改下列內容:
PROJECT_ID
:執行個體所在的專案 ID。ZONE
:執行個體所在的區域。INSTANCE_NAME
:現有執行個體的名稱。
在您於上一個步驟中建立的空白 JSON 檔案中,執行下列操作:
從
GET
要求輸出內容輸入執行個體設定詳細資料。在
scheduling
欄位中,新增gracefulShutdown
欄位,如下所示:{ ... "scheduling": { ... "gracefulShutdown": { "enabled": true } }, ... }
如要指定自訂正常關機時間,請加入
maxDuration
欄位:{ ... "scheduling": { ... "gracefulShutdown": { ... "enabled": true, "maxDuration": { "seconds": "MAX_DURATION" } } }, ... }
將
MAX_DURATION
替換為安全關機期間 (以秒為單位)。這個值必須介於1
至3600
之間,也就是 3,600 秒 (1 小時)。
如要更新執行個體並重新啟動,請對 Beta 版
instances.update
方法發出PUT
要求。在要求中執行下列操作:在要求網址中,加入設為
RESTART
的mostDisruptiveAllowedAction
查詢參數。在要求主體中,納入您在先前步驟中建立及更新的 JSON 檔案中的執行個體屬性。
更新執行個體的
PUT
要求類似於下列要求:PUT https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME?mostDisruptiveAllowedAction=RESTART { ... "scheduling": { ... "gracefulShutdown": { "enabled": true } }, ... }
如要進一步瞭解如何更新執行個體的屬性,請參閱「更新執行個體屬性」。
在建立執行個體時啟用安全關機
建立啟用正常關機功能的運算執行個體時,預設關機時間為 10 分鐘。您也可以選擇指定自訂關機時間,範圍為一秒到一小時。
如要建立已啟用正常關機程序的執行個體,請選取下列任一選項:
主控台
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
點選「建立執行個體」。
「Create an instance」(建立執行個體) 頁面會隨即開啟。
指定執行個體的 [名稱]。
指定要建立執行個體的「Region」(區域)和「Zone」(可用區)。
指定執行個體的機器類型。
在導覽選單中,按一下「進階」。
展開「VM 佈建模式進階設定」
部分,然後執行下列操作:選取「按適當流程關閉 VM」核取方塊。
選用:如要指定自訂正常關機時間,請在「Maximum duration」(最長持續時間) 欄位中指定時間長度。
點選「建立」。
gcloud
如要建立已啟用正常關機的執行個體,請使用
gcloud beta compute instances create
指令搭配--graceful-shutdown
旗標:gcloud beta compute instances create INSTANCE_NAME \ --graceful-shutdown \ --machine-type=MACHINE_TYPE \ --zone=ZONE
更改下列內容:
INSTANCE_NAME
:執行個體的名稱。MACHINE_TYPE
:執行個體使用的機器類型。ZONE
:要建立執行個體的區域。
如要指定自訂的正常關機期限,請加入
--graceful-shutdown-max-duration
旗標:gcloud beta compute instances create INSTANCE_NAME \ --graceful-shutdown \ --graceful-shutdown-max-duration=MAX_DURATION \ --machine-type=MACHINE_TYPE \ --zone=ZONE
將
MAX_DURATION
替換為正常關機期間的時長。值的格式必須為小時數、分鐘數或秒數,後接h
、m
和s
。舉例來說,您可以指定1h
表示一小時,或指定20m10s
表示 20 分鐘 10 秒。REST
如要建立啟用正常關機程序的執行個體,請對
beta.instances.insert
方法發出POST
要求。在要求主體中加入gracefulShutdown
欄位:POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances { "name": "INSTANCE_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "networkInterfaces": [ { "network": "global/networks/default" } ], "scheduling": { "gracefulShutdown": { "enabled": true } } }
更改下列內容:
PROJECT_ID
:要在其中建立執行個體的專案 ID。ZONE
:要建立執行個體的區域。INSTANCE_NAME
:執行個體的名稱。MACHINE_TYPE
:執行個體的機器類型。IMAGE_PROJECT
:包含圖片的圖片專案,例如debian-cloud
。如要進一步瞭解支援的映像檔專案,請參閱「公開映像檔」。IMAGE
:指定下列其中一項:
如要指定自訂正常關機時間,請在要求主體中加入
maxDuration
欄位:POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances { "name": "INSTANCE_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "networkInterfaces": [ { "network": "global/networks/default" } ], "scheduling": { "gracefulShutdown": { "enabled": true, "maxDuration": { "seconds": "MAX_DURATION" } } } }
將
MAX_DURATION
替換為正常關機期間的秒數。這個值必須介於1
至3600
之間,也就是 3,600 秒 (1 小時)。如要瞭解建立執行個體時的更多設定選項,請參閱「建立及啟動 Compute Engine 執行個體」。
大量建立執行個體時啟用安全關機
大量建立啟用寬限關機功能的運算執行個體時,預設關機時間為 10 分鐘。您也可以選擇指定自訂關機時間,範圍為一秒到一小時。
如要大量建立已啟用正常關機程序的執行個體,請選取下列任一選項:
gcloud
如要大量建立已啟用正常關機的執行個體,請使用
gcloud beta compute instances bulk create
指令搭配--graceful-shutdown
旗標。舉例來說,如要在單一區域中大量建立執行個體,並為執行個體指定名稱模式,請執行下列指令:
gcloud beta compute instances bulk create \ --count=COUNT \ --graceful-shutdown \ --machine-type=MACHINE_TYPE \ --name-pattern="NAME_PATTERN" \ --zone=ZONE
更改下列內容:
COUNT
:要建立的執行個體數量。MACHINE_TYPE
:執行個體的機器類型。NAME_PATTERN
:執行個體的名稱模式。如要取代執行個體名稱中的數列,請使用一連串井字號 (#
) 字元。舉例來說,使用instance-#
做為名稱模式,會產生名稱開頭為instance-1
、instance-2
的執行個體,並持續產生,直到COUNT
指定的執行個體數量為止。ZONE
:要大量建立執行個體的區域。
如要指定自訂的正常關機期限,請加入
--graceful-shutdown-max-duration
旗標:gcloud beta compute instances bulk create \ --count=COUNT \ --graceful-shutdown \ --graceful-shutdown-max-duration=MAX_DURATION \ --machine-type=MACHINE_TYPE \ --name-pattern="NAME_PATTERN" \ --zone=ZONE
將
MAX_DURATION
替換為正常關機期間的時長。值的格式必須為小時數、分鐘數或秒數,後接h
、m
和s
。舉例來說,您可以指定1h
表示一小時,或指定20m10s
表示 20 分鐘 10 秒。REST
如要大量建立啟用正常關機的執行個體,請對Beta 版
instances.bulkInsert
方法發出POST
要求。在要求主體中,請納入gracefulShutdown
欄位。舉例來說,如要在單一可用區中大量建立執行個體,並指定執行個體的名稱模式,請發出下列
POST
要求:POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert { "count": COUNT, "namePattern": "NAME_PATTERN", "instanceProperties": { "machineType": "MACHINE_TYPE", "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "networkInterfaces": [ { "network": "global/networks/default" } ], "scheduling": { "gracefulShutdown": { "enabled": true } } } }
更改下列內容:
PROJECT_ID
:要在其中大量建立執行個體的專案 ID。ZONE
:要大量建立執行個體的區域。COUNT
:要建立的執行個體數量。NAME_PATTERN
:執行個體的名稱模式。如要取代執行個體名稱中的數列,請使用一連串井字號 (#
) 字元。舉例來說,使用instance-#
做為名稱模式,會產生名稱開頭為instance-1
、instance-2
的執行個體,並持續產生,直到COUNT
指定的執行個體數量為止。MACHINE_TYPE
:執行個體的機器類型。IMAGE_PROJECT
:包含圖片的圖片專案,例如debian-cloud
。如要進一步瞭解支援的映像檔專案,請參閱「公開映像檔」。IMAGE
:指定下列其中一項:ZONE
:要大量建立執行個體的區域。
如要指定自訂正常關機時間,請在要求主體中加入
maxDuration
欄位:POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert { "count": COUNT, "namePattern": "NAME_PATTERN", "instanceProperties": { "machineType": "MACHINE_TYPE", "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "networkInterfaces": [ { "network": "global/networks/default" } ], "scheduling": { "gracefulShutdown": { "enabled": true, "maxDuration": { "seconds": "MAX_DURATION" } } } } }
將
MAX_DURATION
替換為正常關機期間的秒數。這個值必須介於1
至3600
之間,也就是 3,600 秒 (1 小時)。如要進一步瞭解大量建立執行個體時的設定選項,請參閱「大量建立 VM」。
建立執行個體範本時啟用正常關機
建立啟用寬限期關機的執行個體範本時,預設關機時間為 10 分鐘。您也可以選擇指定自訂關機時間,範圍為一秒到一小時。
使用執行個體範本建立的所有運算執行個體,都會啟用正常關機功能。
如要建立已啟用正常關機的執行個體範本,請選取下列任一選項:
主控台
前往 Google Cloud 控制台的「Instance Templates」(執行個體範本) 頁面。
點選「建立執行個體範本」。
「建立執行個體範本」頁面隨即開啟。
在「Name」(名稱) 欄位中,輸入執行個體範本的名稱。
按照以下方式選取「Location」(位置):
如要建立區域執行個體範本,減少跨區域依附元件,請按照下列步驟操作:
選擇「區域」(如果尚未選取的話)。
在「Region」(區域) 欄位中,選取要建立執行個體範本的區域。
否則,如要跨區域使用執行個體範本,請選擇「Global」(全域)。
在「機器設定」部分,指定機器類型。
展開「VM 佈建模式進階設定」
部分,然後執行下列操作:選取「按適當流程關閉 VM」核取方塊。
選用:如要指定自訂正常關機時間,請在「Maximum duration」(最長持續時間) 欄位中指定時間長度。
點選「建立」。
gcloud
如要建立啟用正常關機功能的執行個體範本,請使用
gcloud beta compute instance-templates create
指令搭配--graceful-shutdown
旗標。舉例來說,如要建立啟用正常關機的區域執行個體範本,請執行下列指令:
gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \ --graceful-shutdown \ --instance-template-region=REGION \ --machine-type=MACHINE_TYPE
更改下列內容:
INSTANCE_TEMPLATE_NAME
:執行個體範本的名稱。REGION
:要建立執行個體範本的區域。MACHINE_TYPE
:使用執行個體範本建立的執行個體機器類型。
如要指定自訂的正常關機時間,請加入
--graceful-shutdown-max-duration
旗標。gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \ --graceful-shutdown \ --graceful-shutdown-max-duration=MAX_DURATION \ --instance-template-region=REGION \ --machine-type=MACHINE_TYPE
將
MAX_DURATION
替換為關機時間長度。值的格式必須為時數、分鐘數或秒數,後接h
、m
和s
。舉例來說,您可以指定1h
表示一小時,或指定20m10s
表示 20 分鐘 10 秒。REST
如要建立已啟用正常關機程序的執行個體範本,請對下列其中一種方法發出
POST
要求:如要建立全域執行個體範本,請使用 beta
instanceTemplates.insert
方法。如要建立區域執行個體範本,請使用 beta
regionInstanceTemplates.insert
方法。
舉例來說,如要建立啟用正常關機功能的地區執行個體範本,請發出下列
POST
要求:POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceTemplates { "name": "INSTANCE_TEMPLATE_NAME", "properties": { "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "machineType": "MACHINE_TYPE", "networkInterfaces": [ { "network": "global/networks/default" } ], "scheduling": { "gracefulShutdown": { "enabled": true } } } }
更改下列內容:
PROJECT_ID
:要在其中建立執行個體範本的專案 ID。REGION
:要建立執行個體範本的區域。INSTANCE_TEMPLATE_NAME
:執行個體範本的名稱。IMAGE_PROJECT
:包含圖片的圖片專案,例如debian-cloud
。如要進一步瞭解支援的映像檔專案,請參閱「公開映像檔」。IMAGE
:指定下列其中一項:MACHINE_TYPE
:使用執行個體範本建立的執行個體機器類型。
如要指定自訂的正常關機時間,請在要求主體中加入
maxDuration
欄位。POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/global/instanceTemplates { "name": "INSTANCE_TEMPLATE_NAME", "properties": { "disks": [ { "boot": true, "initializeParams": { "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE" } } ], "machineType": "MACHINE_TYPE", "networkInterfaces": [ { "network": "global/networks/default" } ], "scheduling": { "gracefulShutdown": { "enabled": true, "maxDuration": { "seconds": "MAX_DURATION" } } } } }
將
MAX_DURATION
替換為關機期間的秒數。這個值必須介於1
至3600
之間,也就是 3,600 秒 (一小時)。如要進一步瞭解建立執行個體範本時的設定選項,請參閱「建立執行個體範本」。
後續步驟
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-09-04 (世界標準時間)。
-