在 Compute Engine 中,您可以使用標準快照備份磁碟資料。由於快照是遞增的,因此與建立完整的磁碟映像檔相比,建立快照的效能更高,總儲存費用也更低。
應用程式一致性快照會擷取備份時的應用程式資料狀態,包括所有已完成的應用程式交易,以及所有已排清至磁碟的待處理寫入作業。在 Windows 虛擬機器 (VM) 執行個體上,您可以使用磁碟區陰影複製服務 (VSS) 建立應用程式一致性快照,不必先停止執行個體或從 VM 中卸離磁碟。
事前準備
- 建立 Windows 執行個體。
- 查看建立快照的最佳做法。
-
如果尚未設定驗證,請先完成設定。驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:
選取這個頁面上範例的預計用途分頁:
控制台
使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,不需要設定驗證。
gcloud
-
安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:
gcloud init如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
- 設定預設區域和可用區。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。
必要角色和權限
如要取得建立 Windows VSS 快照所需的權限,請要求管理員授予您專案的下列 IAM 角色:
- Compute 執行個體管理員 (v1) (
roles/compute.instanceAdmin.v1) -
如要連線至可做為服務帳戶執行的 VM:
服務帳戶使用者 (v1) (
roles/iam.serviceAccountUser)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這些預先定義的角色具備建立 Windows VSS 快照所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
您必須具備下列權限,才能建立 Windows VSS 快照:
-
專案的
compute.snapshots.create -
compute.disks.createSnapshot磁碟
支援的磁碟類型
您可以為連結至 Windows 執行個體的 Persistent Disk 磁碟區建立 VSS 快照。
Hyperdisk 磁碟區不支援 guest-flush 或 (VSS)。如要為 Hyperdisk 磁碟區建立應用程式一致性快照,您必須先手動暫停應用程式,再建立快照,如「建立不使用 VSS 的快照」一文所述。
限制
Windows 上的磁碟快照有下列限制:
- VSS 快照只支援具有
v20160810以上版本映像檔的 Windows 執行個體。如果執行個體使用較舊的映像檔,請建立不使用 VSS 的快照。 - 所連磁碟必須使用 NTFS、exFAT 或 ReFS 檔案系統。
- 只有在您執行的是 VSS 感知應用程式,且這些應用程式可相互協調以建立穩定一致的資料備份時,VSS 快照才有助於保存資料。
- 如果 VSS 快照作業未在 300 秒內完成,快照就會因逾時而失敗。
- Hyperdisk 磁碟區不支援 VSS 快照。您必須建立快照,而不使用 VSS。
建立 Windows VSS 快照
您可以建立磁碟區陰影複製服務 (VSS) 快照,不必停止執行個體或從 VM 卸載磁碟。VSS 快照適用於備份及復原作業,可搭配支援 VSS 的應用程式使用。
VSS 快照的價格與一般永久磁碟或 Hyperdisk 快照相同,且只會根據快照總大小計費。
建立快照
控制台
前往 Google Cloud 控制台的「Create a Snapshot」(建立快照) 頁面。
前往「Create a Snapshot」(建立快照) 頁面- 輸入快照的「Name」(名稱)。
-
選取「快照類型」。預設為
STANDARD快照,最適合用於長期備份和災難復原。選擇「Archive snapshot」(封存快照),即可更具成本效益地保留資料。
- 選用:輸入快照的說明。
- 在「來源磁碟」下方,選取要建立快照的現有磁碟。
在「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。
如要建立區域性 Persistent Disk 的 VSS 快照,請在上述範例中將 --source-disk-zone= 替換為 --source-disk-region=,並指定區域性 Persistent Disk 所在的區域。
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 快照建立可寫入的磁碟
建立 VSS 快照時,Windows Server 會將快照中的磁碟區標示為唯讀。從 VSS 快照建立新磁碟時,該磁碟也會設為唯讀模式。
這可能會導致問題。舉例來說,如果您使用現有開機磁碟的 VSS 快照建立 VM 執行個體,並將該快照做為新開機磁碟,新開機磁碟上的唯讀標記會導致 VM 無法正確啟動。
如要解決這個問題,請按照下列步驟,從您使用 VSS 快照建立的任何新磁碟中移除唯讀標記:
確認磁碟已連接至 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:\。
建立快照,但不使用 VSS
在某些情況下,您可能會想建立連結至 Windows VM 的磁碟快照,但不想使用 VSS。
如要在 Windows VM 上建立磁碟快照,而不使用 VSS,請按照下列步驟操作:
準備系統以建立乾淨的快照
建立磁碟快照前,請確認快照與您想要的磁碟狀態一致。如果您在磁碟處於「不乾淨」狀態時建立快照,可能會強制執行磁碟檢查,並可能導致資料遺失。建議同步處理並卸載檔案系統。
同步處理檔案系統
如果無法卸載磁碟 (例如應用程式可能正在將資料寫入磁碟),可以同步處理檔案系統來清除磁碟緩衝區。如要同步處理檔案系統,請按照下列步驟操作:
- 登入 Windows VM。
- 從 Microsoft 下載並安裝同步工具。
- 停止讓應用程式寫入磁碟。
- 開啟已提升權限的命令提示字元視窗。
在指令列視窗中執行:
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
建立快照
- 如果磁碟位於單一可用區 (可用區 Persistent Disk 或 Hyperdisk),請按照「建立可用區 Persistent Disk 磁碟區的快照」中的步驟操作。
- 或者,如果 Persistent Disk 位於多個可用區,請按照「建立區域 Persistent Disk 磁碟區的快照」一文中的步驟操作。
重新掛接磁碟
登入 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 映像檔」。