本文說明如何在新的或現有的 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
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
-
如要建立執行個體,請按照下列步驟操作:
- 專案的
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
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
在「Name」(名稱) 欄中,按一下要啟用正常關機的執行個體名稱。
執行個體的詳細資料頁面隨即開啟。
按一下「Edit」(編輯)
。在「管理」部分執行下列操作:
選取「按適當流程關閉 VM」核取方塊。
選用:如要指定自訂正常關機時間,請在「Maximum duration」(最長持續時間) 欄位中指定時間長度。
按一下 [儲存]。
INSTANCE_NAME
:執行個體的名稱。ZONE
:執行個體所在的區域。建立空白的 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 } }, ... }
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
點選「建立執行個體」。
「Create an instance」(建立執行個體) 頁面會隨即開啟。
指定執行個體的 [名稱]。
指定要建立執行個體的「Region」(區域)和「Zone」(可用區)。
指定執行個體的機器類型。
在導覽選單中,按一下「進階」。
展開「VM 佈建模式進階設定」
部分,然後執行下列操作:選取「按適當流程關閉 VM」核取方塊。
選用:如要指定自訂正常關機時間,請在「Maximum duration」(最長持續時間) 欄位中指定時間長度。
點選「建立」。
INSTANCE_NAME
:執行個體的名稱。MACHINE_TYPE
:執行個體使用的機器類型。ZONE
:要建立執行個體的區域。PROJECT_ID
:要在其中建立執行個體的專案 ID。ZONE
:要建立執行個體的區域。INSTANCE_NAME
:執行個體的名稱。MACHINE_TYPE
:執行個體的機器類型。IMAGE_PROJECT
:包含圖片的圖片專案,例如debian-cloud
。如要進一步瞭解支援的映像檔專案,請參閱「公開映像檔」。IMAGE
:指定下列其中一項:COUNT
:要建立的執行個體數量。MACHINE_TYPE
:執行個體的機器類型。NAME_PATTERN
:執行個體的名稱模式。如要取代執行個體名稱中的數列,請使用一連串井字號 (#
) 字元。舉例來說,使用instance-#
做為名稱模式,會產生名稱開頭為instance-1
、instance-2
的執行個體,並持續產生,直到COUNT
指定的執行個體數量為止。ZONE
:要大量建立執行個體的區域。PROJECT_ID
:要大量建立執行個體的專案 ID。ZONE
:要大量建立執行個體的區域。COUNT
:要建立的執行個體數量。NAME_PATTERN
:執行個體的名稱模式。如要取代執行個體名稱中的數列,請使用一連串井字號 (#
) 字元。舉例來說,使用instance-#
做為名稱模式,會產生名稱開頭為instance-1
、instance-2
的執行個體,並持續產生,直到COUNT
指定的執行個體數量為止。MACHINE_TYPE
:執行個體的機器類型。IMAGE_PROJECT
:包含圖片的圖片專案,例如debian-cloud
。如要進一步瞭解支援的映像檔專案,請參閱「公開映像檔」。IMAGE
:指定下列其中一項:ZONE
:要大量建立執行個體的區域。前往 Google Cloud 控制台的「Instance Templates」(執行個體範本) 頁面。
點選「建立執行個體範本」。
「建立執行個體範本」頁面隨即開啟。
在「Name」(名稱) 欄位中,輸入執行個體範本的名稱。
按照以下方式選取「Location」(位置):
如要建立區域執行個體範本,減少跨區域依附元件,請按照下列步驟操作:
選擇「區域」(如果尚未選取的話)。
在「Region」(區域) 欄位中,選取要建立執行個體範本的區域。
否則,如要跨區域使用執行個體範本,請選擇「Global」(全域)。
在「機器設定」部分,指定機器類型。
展開「VM 佈建模式進階設定」
部分,然後執行下列操作:選取「按適當流程關閉 VM」核取方塊。
選用:如要指定自訂正常關機時間,請在「Maximum duration」(最長持續時間) 欄位中指定時間長度。
點選「建立」。
INSTANCE_TEMPLATE_NAME
:執行個體範本的名稱。REGION
:要建立執行個體範本的區域。MACHINE_TYPE
:使用執行個體範本建立的執行個體機器類型。如要建立全域執行個體範本,請使用 beta
instanceTemplates.insert
方法。如要建立區域執行個體範本,請使用 beta
regionInstanceTemplates.insert
方法。PROJECT_ID
:要在其中建立執行個體範本的專案 ID。REGION
:要建立執行個體範本的區域。INSTANCE_TEMPLATE_NAME
:執行個體範本的名稱。IMAGE_PROJECT
:包含圖片的圖片專案,例如debian-cloud
。如要進一步瞭解支援的映像檔專案,請參閱「公開映像檔」。IMAGE
:指定下列其中一項:MACHINE_TYPE
:使用執行個體範本建立的執行個體機器類型。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。
必要的角色
如要取得在 Compute 執行個體中啟用正常關機所需的權限,請要求管理員授予您專案的 Compute 執行個體管理員 (v1) (
roles/compute.instanceAdmin.v1
) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。這個預先定義的角色具備在運算執行個體中啟用正常關機所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要在運算執行個體中啟用正常關機,必須具備下列權限:
啟用安全關機
如要在運算執行個體中啟用正常關機,請使用下列其中一種方法:
在現有執行個體中啟用安全關機
您可以在現有的運算執行個體中啟用安全關機,不必停止或重新啟動執行個體。預設的正常關機時間為 10 分鐘,但您可以指定 1 秒至 1 小時的自訂關機時間。
如要在現有執行個體中啟用正常關機,請選取下列其中一個選項:
主控台
gcloud
如要在現有執行個體中啟用正常關機,請使用
gcloud beta compute instances update
指令並加上--graceful-shutdown
旗標:gcloud beta compute instances update INSTANCE_NAME \ --graceful-shutdown \ --zone=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
如要進一步瞭解如何更新執行個體的屬性,請參閱「更新執行個體屬性」。
在建立執行個體時啟用安全關機
建立啟用正常關機功能的運算執行個體時,預設關機時間為 10 分鐘。您也可以選擇指定自訂關機時間,範圍介於一秒到一小時。
如要建立已啟用正常關機程序的執行個體,請選取下列任一選項:
主控台
gcloud
如要建立已啟用正常關機的執行個體,請使用
gcloud beta compute instances create
指令搭配--graceful-shutdown
旗標:gcloud beta compute instances create INSTANCE_NAME \ --graceful-shutdown \ --machine-type=MACHINE_TYPE \ --zone=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 } } }
更改下列內容:
如要指定自訂正常關機時間,請在要求主體中加入
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
更改下列內容:
如要指定自訂的正常關機期限,請加入
--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 } } } }
更改下列內容:
如要指定自訂正常關機時間,請在要求主體中加入
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 分鐘。您也可以選擇指定自訂關機時間,範圍介於一秒到一小時。
使用執行個體範本建立的所有運算執行個體都會啟用正常關機。
如要建立已啟用正常關機的執行個體範本,請選取下列任一選項:
主控台
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
更改下列內容:
如要指定自訂的正常關機時間,請加入
--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
要求:舉例來說,如要建立啟用正常關機功能的地區執行個體範本,請發出下列
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 } } } }
更改下列內容:
如要指定自訂的正常關機時間,請在要求主體中加入
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 秒 (1 小時)。如要進一步瞭解建立執行個體範本時的設定選項,請參閱「建立執行個體範本」。
後續步驟
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-07-10 (世界標準時間)。
-