在 Compute Engine 中,您可以使用快照備份磁碟資料。由於快照是增量資料,因此與建立完整磁碟映像檔相較,您可以較高效能建立快照,同時還能減少儲存空間的總費用。
應用程式一致性快照會擷取備份時的應用程式資料狀態,包括完成所有應用程式交易,以及將所有待處理的寫入作業排清至磁碟。在 Windows VM 上,您可以使用磁碟區陰影複製服務 (VSS) 建立應用程式一致快照,不必先停止執行個體或從 VM 卸離磁碟。
事前準備
- 建立 Windows 執行個體。
- 查看建立快照的最佳做法。
-
如果尚未設定驗證,請先完成設定。
「驗證」是指驗證身分的程序,確認您有權存取 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.
- VSS 快照只支援具有
v20160810
以上版本映像檔的 Windows 執行個體。如果是具有較舊版本映像檔的執行個體,請建立不使用 VSS 的快照。 - 附加磁碟必須使用 NTFS、exFAT 或 ReFS 檔案系統。
- 只有在您執行的是 VSS 感知應用程式,且這些應用程式可相互協調以建立穩定一致的資料備份時,VSS 快照才有助於保存資料。
- 如果 VSS 快照作業未在 300 秒內完成,快照就會因逾時而失敗。
前往 Google Cloud 控制台的「Create a Snapshot」(建立快照) 頁面。
前往「Create a Snapshot」(建立快照) 頁面- 輸入快照的「Name」(名稱)。
-
選取「快照類型」。預設為
STANDARD
快照,這是長期備份和災難復原的最佳選擇。選擇「封存快照」,即可更有效率地保留資料。
- 選用:輸入快照的「Description」(說明)。
- 在「Source disk」(來源磁碟) 底下,選取要建立快照的現有磁碟。
在「Location」(位置) 部分,選擇快照儲存位置。
系統會自動選取快照設定中指定的預先定義或自訂預設位置。如要覆寫快照設定,將快照儲存在自訂儲存位置,請執行下列步驟:
- 勾選「啟用與應用程式一致的快照」選項。
- 按一下 [Create] (建立) 以建立快照。
如要在快照設定中指定的預先定義或自訂預設位置建立快照,請使用
gcloud compute snapshots create
指令。gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk-zone=SOURCE_ZONE \ --source-disk=SOURCE_DISK_NAME \ --snapshot-type=SNAPSHOT_TYPE \ --guest-flush
-
或者,如要覆寫快照設定,在自訂儲存位置建立快照,請加入
--storage-location
標記來指示快照的儲存位置。gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk-zone=SOURCE_ZONE \ --source-disk=SOURCE_DISK_NAME \ --snapshot-type=SNAPSHOT_TYPE \ --storage-location=STORAGE_LOCATION \ --guest-flush
-
(預先發布版) 如要在允許的區域中建立區域範圍快照,請加入
--region
標記,指出快照的建立位置。gcloud beta compute snapshots create SNAPSHOT_NAME \ --region=SNAPSHOT_SCOPE_REGION --source-disk=SOURCE_DISK_NAME \ --source-disk-zone=SOURCE_ZONE \ --snapshot-type=SNAPSHOT_TYPE
- SNAPSHOT_NAME:快照的名稱。
- SOURCE_ZONE:來源磁碟的可用區。
- SOURCE_DISK_NAME:要建立快照的磁碟區名稱。
- SNAPSHOT_TYPE:快照類型,可以是 STANDARD 或 ARCHIVE。
如果未指定快照類型,系統會建立
STANDARD
快照。 -
STORAGE_LOCATION:選用:如果是全域範圍的快照,則為您要儲存快照的 Cloud Storage 多地區或 Cloud Storage 地區。您只能指定一個儲存位置。
只有在想覆寫快照設定中預先定義或自訂的預設儲存位置時,才使用
--storage-location
參數。 -
SNAPSHOT_SCOPE_REGION:選填:如果是區域範圍快照,則為快照的範圍所屬區域。如果加入這個參數,就無法使用
--storage-location
參數。系統會自動將 STORAGE_LOCATION 設為 SNAPSHOT_SCOPE_REGION。 -
如要在快照設定中指定的預先定義或自訂預設位置建立快照,請對
snapshots.insert
方法發出POST
要求:POST https://compute.googleapis.com/compute/beta/projects/DESTINATION_PROJECT_ID/global/snapshots { "name": "SNAPSHOT_NAME", "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME", "snapshotType": "SNAPSHOT_TYPE", "guestFlush": true, }
-
或者,如要覆寫快照設定,在自訂儲存位置建立快照,請對
snapshots.insert
方法發出POST
要求,並在要求中加入storageLocations
屬性:POST https://compute.googleapis.com/compute/beta/projects/DESTINATION_PROJECT_ID/global/snapshots { "name": "SNAPSHOT_NAME", "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME", "snapshotType": "SNAPSHOT_TYPE", "storageLocations": [ "STORAGE_LOCATION" ], "guestFlush": true, }
-
(預覽版) 如要在允許的區域中建立區域範圍快照,請對
snapshots.insert
方法發出POST
要求,並定義建立區域:POST https://compute.googleapis.com/compute/beta/projects/DESTINATION_PROJECT_ID/regions/SNAPSHOT_SCOPE_REGION/snapshots { "name": "SNAPSHOT_NAME", "sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME", "snapshotType": "SNAPSHOT_TYPE" }
- DESTINATION_PROJECT_ID:要在其中建立快照的專案 ID。
- SNAPSHOT_NAME:快照的名稱。
- SOURCE_PROJECT_ID:來源磁碟專案的 ID。
- SOURCE_ZONE:來源磁碟的可用區。
- SOURCE_DISK_NAME:要建立快照的磁碟名稱。
- SNAPSHOT_TYPE:快照類型,可以是 STANDARD 或 ARCHIVE。
如果未指定快照類型,系統會建立
STANDARD
快照。 -
STORAGE_LOCATION:選用:如果是全域範圍的快照,則為您要儲存快照的 Cloud Storage 多地區或 Cloud Storage 地區。您只能指定一個儲存位置。
只有在想覆寫快照設定中預先定義或自訂的預設儲存位置時,才使用
storageLocations
參數。 SNAPSHOT_SCOPE_REGION:選填:如果是區域範圍快照,快照的範圍所屬區域。如果加入這個參數,就無法使用
storageLocations
參數。系統會自動將 STORAGE_LOCATION 設為 SNAPSHOT_SCOPE_REGION。確認磁碟已附加至 VM:
- 如果您從 VSS 快照建立的磁碟是非開機資料磁碟,可以將該磁碟連結至任何新 VM 或現有 VM。
- 如果您從 VSS 快照建立的磁碟是開機磁碟,且您想用來啟動 VM,則必須暫時將磁碟連結至另一個現有 VM。完成下列步驟後,即可將磁碟與該 VM 卸離,並用來啟動新的 VM 執行個體。
開啟 PowerShell 命令提示字元並執行
diskpart
工具。PS C:\> diskpart
找出要掛接的磁碟。
DISKPART> list disk
使用
select disk
指令選取磁碟。DISKPART> select disk DISK_NUMBER
將
DISK_NUMBER
替換為要掛接的磁碟編號。掛接磁碟。
DISKPART> online disk
列出磁碟中的所有磁碟區。
DISKPART> list volume
選取新磁碟區。
DISKPART> select volume VOLUME_NUMBER
將
VOLUME_NUMBER
替換為要設為讀取和寫入的磁碟區編號。清除唯讀旗標。
DISKPART> attr volume clear readonly hidden nodefaultdriveletter shadowcopy
結束
diskpart
工具。DISKPART> exit
如果磁碟是其他 VM 的開機磁碟,請使用新的磁碟簽章同步處理開機磁碟檔案。
PS C:\> bcdboot DRIVE_LETTERWindows /s DRIVE_LETTER
將
DRIVE_LETTER
替換為要同步處理的磁碟區磁碟機代號,例如,F
代表F:\
。- 登入 Windows VM。
- 從 Microsoft 下載並安裝 Sync 工具。
- 讓應用程式停止將資料寫入磁碟。
- 開啟提升權限的命令提示字元視窗。
在指令列視窗中執行:
PS C:\> sync DRIVE_LETTER
將
DRIVE_LETTER
替換為要同步處理的磁碟區磁碟機代號,例如,F
代表F:\
。登入 Windows VM。
開啟 PowerShell 命令提示字元並執行
diskpart
工具。PS C:\> diskpart
找出要卸載及建立快照的磁碟。
DISKPART> list disk
接著,使用您剛找到的磁碟號碼選取磁碟。
DISKPART> select disk DISK_NUMBER
將
DISK_NUMBER
替換為要重新掛接的磁碟編號。卸載磁碟。
DISKPART> offline disk
- 如果磁碟位在單一區域 (區域永久磁碟或 Hyperdisk),請按照「建立區域永久磁碟磁碟區的快照」一文中的步驟操作。
- 或者,如果永久磁碟位在多個區域中,請按照「建立地區永久磁碟磁碟區的快照」一文中的步驟操作。
登入 Windows VM。
開啟 PowerShell 命令提示字元並執行
diskpart
工具。PS C:\> diskpart
找出要掛接的磁碟。
DISKPART> list disk
使用
select disk
指令選取磁碟。DISKPART> select disk DISK_NUMBER
將
DISK_NUMBER
替換為要掛接的磁碟編號。掛接磁碟。
DISKPART> online disk
- 如果您建立了開機磁碟的快照,可以透過該快照建立 VM。
- 如要瞭解如何設定 Windows Server,以便為 VM 或執行個體範本建立 Windows Server 自訂映像檔,請參閱「建立 Windows Server 自訂映像檔」。
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」。
限制
Windows 磁碟快照有下列限制:
建立 Windows VSS 快照
您可以直接建立磁碟區陰影複製服務 (VSS) 快照,而不必停止執行個體或從 VM 卸離磁碟。VSS 快照是用來備份及還原包含 VSS 感知應用程式的系統。
VSS 快照的費用與一般永久磁碟或 Hyperdisk 快照相同,且只會根據快照總大小計費。
建立快照
主控台
gcloud
如要建立 VSS 快照,請使用
gcloud compute snapshots create
指令並加入--guest-flush
旗標。您可以在快照設定定義的儲存位置政策中建立快照,也可以使用所選的替代儲存位置。詳情請參閱選擇快照儲存位置。
更改下列內容:
如要建立地區永久磁碟的 VSS 快照,請在先前的範例中將
--source-disk-zone=
替換為--source-disk-region=
,並指定地區永久磁碟所在的地區。Google Cloud CLI 會等到作業傳回
READY
或FAILED
狀態之後,或是等到作業達到逾時時間上限,並傳回已知的最新快照詳細資料之後,才會開始運作。REST
建立快照時,請在對
compute.snapshots.insert
方法發出的POST
要求的請求主體中加入guestFlush
屬性,表示您要建立 VSS 快照。您可以在快照設定定義的儲存位置政策中建立快照,也可以使用所選的替代儲存位置。詳情請參閱選擇快照儲存位置。
更改下列內容:
如要建立地區永久磁碟的 VSS 快照,請在先前顯示的
POST
要求中,將下列程式碼行替換為: 建立地區永久磁碟的快照時,請改用這行:"sourceDisk": "projects/SOURCE_PROJECT_ID/zones/SOURCE_ZONE/disks/SOURCE_DISK_NAME",
"sourceDisk": "projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME",
從 VSS 快照建立可寫入的磁碟
建立 VSS 快照時,Windows Server 會將快照中的磁碟區標示為唯讀。透過 VSS 快照建立新磁碟時,該磁碟也會設為唯讀模式。
這可能會導致問題。舉例來說,如果您使用現有開機磁碟的 VSS 快照建立 VM 執行個體,並將該快照做為新的開機磁碟,則新開機磁碟上的唯讀標記會導致 VM 無法正確啟動。
如要解決這個問題,請按照下列步驟,從您使用 VSS 快照建立的任何新磁碟中移除唯讀旗標:
建立不使用 VSS 的快照
在某些情況下,您可能想為連結至 Windows VM 的磁碟建立快照,但不想使用 VSS。
如要在 Windows VM 上建立磁碟快照,但不使用 VSS,請執行下列操作:
準備系統以建立乾淨的快照
建立磁碟快照前,請確認您要建立的快照與所需的磁碟狀態一致。如果您在磁碟處於「不乾淨」狀態時建立快照,系統可能會強制進行磁碟檢查,並可能會導致資料遺失。考慮同步處理並卸載檔案系統。
同步處理檔案系統
如果無法卸載磁碟 (例如在應用程式可能會將資料寫入磁碟的情況下),您可以同步處理檔案系統來清除磁碟緩衝區。如要同步處理檔案系統,請按照下列步驟操作:
卸載磁碟
建立快照
重新掛接磁碟
後續步驟
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-07-11 (世界標準時間)。
-