在 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.
REST
To use the REST API samples on this page in a local development environment, you use the credentials you provide to the 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.
For more information, see Authenticate for using REST in the Google Cloud authentication documentation.
-
限制
Windows 上的磁碟快照有下列限制:
- VSS 快照只支援具有
v20160810
以上版本映像檔的 Windows 執行個體。如果是具有較舊版本映像檔的執行個體,請不使用 VSS 建立快照。 - 已連結的磁碟必須使用 NTFS、exFAT 或 ReFS 檔案系統。
- 只有在您執行的是 VSS 感知應用程式,且這些應用程式可相互協調以建立穩定一致的資料備份時,VSS 快照才有助於保存資料。
- 如果 VSS 快照作業未在 300 秒內完成,快照作業就會失敗,並顯示逾時錯誤。
建立 Windows VSS 快照
您可以直接建立磁碟區陰影複製服務 (VSS) 快照,而不必停止執行個體或卸離 VM 的磁碟。VSS 快照是用來備份及還原包含 VSS 感知應用程式的系統。
VSS 快照的費用與一般永久磁碟或 Hyperdisk 快照相同,且只會根據快照總大小計費。
建立快照
主控台
前往 Google Cloud 主控台的「Create a Snapshot」(建立快照) 頁面。
前往「Create a Snapshot」(建立快照) 頁面- 輸入快照的「Name」(名稱)。
-
選取快照類型。預設值為
STANDARD
快照,這是長期備份和災難復原的最佳選項。選擇「Archive snapshot」(封存快照),即可以更低廉的成本保留資料。
- 選用步驟:輸入快照的「Description」(說明)。
- 在「Source disk」下方,選取要建立快照的現有磁碟。
在「Location」(位置) 部分,選擇快照儲存位置。
系統會自動選取快照設定中指定的預先定義或自訂預設位置。如要覆寫快照設定,將快照儲存在自訂儲存位置,請執行下列步驟:
選擇快照的儲存位置類型。
- 若選擇「Multi-regional」(多區域),費用較高但提供較高可用性。
- 選擇「Regional snapshots」(區域快照),便能以較低的費用進一步控管資料的實際位置。
- 在「Select location」(選取位置) 欄位,選擇要使用的特定區域或多區域。如要使用最接近來源磁碟的區域或多區域,請選取「Based on disk's location」(以磁碟位置為準)。
- 勾選「啟用應用程式一致的快照」選項。
- 按一下 [Create] (建立) 以建立快照。
gcloud
如要建立 VSS 快照,請使用 gcloud compute snapshots create
指令並加入 --guest-flush
標記。
您可以在快照設定中定義的儲存位置政策中建立快照,也可以使用您選擇的其他儲存位置。詳情請參閱「選擇快照儲存位置」一文。
如要在快照設定中預先定義或自訂的預設位置建立快照,請使用
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。
如要建立地區永久磁碟的 VSS 快照,請在上述範例中將 --source-disk-zone=
替換為 --source-disk-region=
,並指定地區永久磁碟所在的地區。
Google Cloud CLI 會等到作業傳回 READY
或 FAILED
狀態之後,或是等到作業達到逾時時間上限,並傳回已知的最新快照詳細資料之後,才會開始運作。
REST
建立快照時,如要表示您要建立 VSS 快照,請在 POST
要求的 compute.snapshots.insert
方法要求主體中加入 guestFlush
屬性。
您可以在快照設定中定義的儲存位置政策中建立快照,也可以使用您選擇的其他儲存位置。詳情請參閱「選擇快照儲存位置」一文。
-
如要在預先定義或自訂的預設位置建立快照,請對
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。
如要建立區域永久磁碟的 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 快照時,Windows Server 會將快照中的磁碟區標示為唯讀。透過 VSS 快照建立新磁碟時,該磁碟也會設為唯讀模式。
這可能會導致問題。舉例來說,如果您使用現有開機磁碟的 VSS 快照,建立具有新開機磁碟的 VM 執行個體,新開機磁碟上的唯讀標記會導致 VM 無法正確啟動。
如要解決這個問題,請按照下列步驟,從 VSS 快照建立的任何新磁碟移除唯讀標記:
確認磁碟已連接至 VM:
- 如果您從 VSS 快照建立的磁碟是非開機資料磁碟,則可以將磁碟連結至任何新的或現有的 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:\
。
不使用 VSS 建立快照
在某些情況下,您可能需要為連結至 Windows VM 的磁碟建立快照,而不需要使用 VSS。
如要在 Windows VM 上建立磁碟快照,但不使用 VSS,請執行下列操作:
為系統準備清除快照
建立磁碟快照前,請確認您要建立的快照與所需的磁碟狀態一致。如果您在磁碟處於「不乾淨」狀態時建立快照,系統可能會強制進行磁碟檢查,並可能會導致資料遺失。建議您同步處理及卸載檔案系統。
同步處理檔案系統
如果無法卸載磁碟 (例如在應用程式可能會將資料寫入磁碟的情況下),您可以同步處理檔案系統來清除磁碟緩衝區。如要同步處理檔案系統,請按照下列步驟操作:
- 登入 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
為磁碟移除唯讀標記
如有需要,請完成下列步驟:
登入 Windows VM。
開啟 PowerShell 命令提示字元,並執行
diskpart
工具。PS C:\> diskpart
列出磁碟中的所有磁碟區。
DISKPART> list volume
選取新的磁碟區。
DISKPART> select volume VOLUME_NUMBER
將
VOLUME_NUMBER
替換為您要設定讀取/寫入的磁碟區數量。清除唯讀標記。
DISKPART> attr volume clear readonly hidden nodefaultdriveletter shadowcopy
結束
diskpart
工具。DISKPART> exit
如果磁碟是其他 VM 執行個體的開機磁碟,請在 PowerShell 指令提示中使用新的磁碟簽章同步處理開機磁碟檔案。
PS C:\> bcdboot DRIVE_LETTER:\Windows /s DRIVE_LETTER
將
DRIVE_LETTER
替換為您要同步處理的磁碟區磁碟機代號。例如:F
代表F:\
。
後續步驟
- 如果您建立了開機磁碟的快照,可以透過快照建立 VM。
- 如要瞭解如何設定 Windows Server,以便為 VM 或執行個體範本建立自訂的 Windows Server 映像檔,請參閱「建立自訂 Windows Server 映像檔」。