Compute Engine 磁碟快照的最佳做法

您隨時可以建立永久磁碟和 Google Cloud Hyperdisk 快照,但採用下列最佳做法能更快更穩妥地建立快照。

安全性考量

為避免提權,請務必只將快照相關的身分與存取權管理 (IAM) 權限授予您信任的主體,確保這些主體只會讀取及還原快照或即時快照資料。下列權限可讓使用者讀取及還原快照或即時快照中的資料:

  • compute.snapshots.useReadOnly
  • compute.instantSnapshots.useReadOnly

任何具備上述任一權限的主體,都能將專案中快照或即時快照的資料,還原至其控管的專案,包括其他組織中的專案。舉例來說,如果惡意行為人取得專案中的快照 IAM 角色,就能在個人專案中還原快照,並存取快照中包含的資料。

如要瞭解如何檢查主體擁有的權限,請參閱「判斷哪些主體具備特定角色或權限」。

讓快照具有一致性的準備作業

如果在應用程式執行期間建立 Persistent Disk 或 Hyperdisk 的快照,快照可能不會擷取從記憶體傳輸至磁碟的待處理寫入作業。由於這些不一致,快照可能無法反映擷取快照時應用程式的確切狀態。在這種情況下,快照會被視為「異常終止一致性」,因為快照會擷取應用程式的狀態,就像機器在擷取快照時異常終止一樣。

您也可以選擇暫停應用程式,讓所有應用程式交易完成,並讓系統在擷取快照前,將所有待處理的寫入作業從記憶體清除到磁碟。在這種情況下,快照會視為應用程式一致。

建立當機一致性快照

建立 Persistent Disk 或 Hyperdisk 磁碟區的快照時,不需要採取任何額外步驟,即可確保快照在當機後仍可正常運作。特別是,您不需要暫停工作負載。

如果工作負載無法容忍暫時停止運作,請考慮採用下列程序建立當機一致性快照:

  1. 在應用程式執行時擷取快照,假設會有一些應用程式資料不一致。
  2. 確認您可以從快照將工作負載還原至可接受的應用程式狀態。
  3. 根據上一個步驟,保留或刪除快照。

使用與當機一致的快照前,可能需要重新播放檔案系統和應用程式層級的日誌。因此,快照的品質取決於應用程式從當機一致性狀態快速復原並重新提供服務的能力。

建立與應用程式一致的快照

應用程式一致性快照的支援情況取決於磁碟類型,以及磁碟所連線執行個體的作業系統,如下所示。

  • 使用 Hyperdisk 的執行個體:Hyperdisk 磁碟區不支援 guest-flush 或磁碟區陰影複製服務 (VSS)。如要為 Hyperdisk 磁碟區建立應用程式一致快照,您必須在建立快照前手動暫停應用程式。詳情請參閱「手動建立應用程式一致性快照」。

  • 使用永久磁碟的 Windows Server 執行個體:對於連接至 Windows Server 執行個體的磁碟,請使用 VSS 快照。

  • 使用永久磁碟的 Linux 執行個體:如要確保 Linux 執行個體所連永久磁碟磁區的快照具有應用程式一致性,請建立快照前和快照後的 Shell 指令碼,為系統準備應用程式一致性。然後建立快照,並啟用 guest-flush 選項。這會在擷取快照前後執行前置和後置指令碼。如需操作說明,請參閱「建立 Linux 應用程式一致性快照」。

手動建立與應用程式一致的快照

在某些情況下,您可能需要手動暫停應用程式,才能建立與應用程式一致的快照。

舉例來說,如果您需要多個磁碟之間或 Hyperdisk 磁碟區的應用程式一致性,請使用這個選項。在這種情況下,您必須凍結每個磁碟上的所有檔案系統,並完成這些磁碟的所有快照,才能繼續使用應用程式。

您不需要停止 VM,應用程式暫停可能包括凍結及卸載檔案系統。手動暫停應用程式後,只有在快照資源達到 UPLOADING 狀態時,才能繼續執行工作負載。

要求快照時,請呼叫 globalOperations.get 方法,檢查作業狀態。下表顯示快照作業狀態與快照資源狀態之間的關係。

作業狀態 快照資源狀態
PENDING 目前沒有任何快照資源。
RUNNING CREATING 或 UPLOADING

CREATING:快照尚未建立完成。
UPLOADING:已建立快照,但尚未儲存至 Cloud Storage。
DONE FAILED 或 READY。

避免使用臨時標準快照

如要立即在相同可用區建立磁碟副本,以便驗證或匯出,請使用磁碟本機副本或即時快照,而非標準快照。相較於磁碟複製和即時快照,標準快照的上傳和下載複製時間較長。

快照頻率限制

磁碟快照的建立頻率有限制。

從 Persistent Disk 或 Hyperdisk 建立快照

每 60 分鐘最多可為個別磁碟建立 6 次快照。

如果超過上限,作業就會失敗並傳回下列錯誤:

"code": "RESOURCE_OPERATION_RATE_EXCEEDED",
"message": "Operation rate exceeded for resource 'projects/project-id/zones/zone-id/disks/disk-name'.
Too frequent operations from the source resource."

這項限制適用於下列作業:

這項限制不適用於下列作業:

最佳做法是每小時建立一個磁碟快照。請避免以更頻繁的頻率建立快照。最簡單的做法是設定快照排程。

從快照建立新的區域磁碟

您最多每 60 分鐘可從指定快照,在每個目標可用區建立 6 個新的可用區永久磁碟或 Hyperdisk。目標可用區是指從快照建立新磁碟的儲存位置。Google Cloud 不保證您能以高於該速率的速度從快照建立磁碟,但如果您在過去一小時內未從快照建立任何磁碟,或許可以更頻繁地建立磁碟。

請注意,就這項頻率限制而言,同一磁碟的多個快照會視為不同的快照。

如果超過上限,作業就會失敗並傳回下列錯誤:

"code": "RESOURCE_OPERATION_RATE_EXCEEDED",
"message": "Operation rate exceeded for resource 'projects/project-id/global/snapshots/snapshot-name'.
Too frequent operations from the source resource."

這項限制適用於下列作業:

下列作業不受此限制:

  • 從快照建立新的區域 Persistent Disk。
  • 使用映像檔做為來源,建立新的可用區或區域性 Persistent Disk。

如要從快照建立多個磁碟,請使用快照建立映像檔,然後從映像檔建立磁碟:

  1. 從快照建立映像檔。
  2. 根據映像檔建立磁碟。

如果是非開機磁碟,請按照這篇文章的說明,從映像檔建立永久磁碟,然後按照下列步驟操作:

  • 在 Google Cloud 控制台中,選取「映像檔」做為磁碟「來源類型」。
  • 使用 gcloud CLI 時,請使用 image 旗標。
  • 如果使用 REST,請使用 sourceImage 參數。

使用現有快照做為後續快照的基準

如果您有磁碟 (永久磁碟或 Hyperdisk) 的現有快照,系統會自動將這些快照做為基準,用於您從該磁碟建立的任何後續快照。

  • 從磁碟建立新快照,然後再刪除該磁碟的舊快照。如果系統可以使用先前的快照,並只從磁碟讀取新資料或變更的資料,就能更快建立新的快照。
  • 請等待新快照完成,再從同一磁碟建立後續快照。如果您在同一個磁碟上同時執行兩個快照,兩者都會從相同的基準開始,並重複執行。如果等待新的快照完成,後續快照的執行速度會更快,因為只會取得上次快照完成後變更的資料。

將快照建立作業安排在離峰時段

如果為磁碟 (永久磁碟或 Hyperdisk) 排定定期快照,請盡可能在離峰時段建立快照,縮短完成每個快照所需的時間。

  • 在磁碟所在區域的營業時間內,排定自動快照。一般而言,建立快照的高峰時間是在工作天結束時。
  • 請在磁碟所在區域排定自動快照作業,時間為清晨,而非午夜。一般而言,建立快照的高峰時間是在午夜。

在不同磁碟上整理資料

如果您建立磁碟 (Persistent Disk 或 Hyperdisk) 的快照,儲存在磁碟上的任何資料都會包含在快照中。磁碟中的資料量越龐大,快照檔案也會越大。換句話說,建立快照的成本與時間也會增加。為確保只建立所需資料的快照,請將資料整理到不同的磁碟。

  • 將重要資料儲存在次要磁碟或資料磁碟,而非開機磁碟。 這樣一來,您就能只在必要時或以較低的頻率建立開機磁碟快照。
  • 如果建立開機磁碟的快照,請將交換分區、頁面檔、快取檔案和非重要記錄儲存在另一個磁碟上。由於這類檔案和分區會經常變更,系統很可能會在建立快照的程序中將其視為變更過的資料,因而加入增量快照中。
  • 將類似資料放在同一磁碟上,減少需要建立的快照數量。請將作業系統和揮發性資料與要建立快照的資料分開,但您不需要像實體機器一樣,將重要資料分散到多個磁碟。一個大型磁碟的效能,與多個總大小相同的小型磁碟效能相同。

啟用 discard 選項,或在磁碟上執行 fstrim

在 Linux 執行個體上,如果您未以捨棄選項格式化及掛接磁碟 (永久磁碟或 Hyperdisk),請先在執行個體上執行 fstrim 指令,再建立快照。這個指令會移除檔案系統不再需要的區塊,讓系統能更快建立快照,且快照大小更小。如要瞭解如何設定磁碟的捨棄選項,請參閱「在 Linux VM 中格式化及掛接非開機磁碟」。

建立常用快照的映像檔

如果您在同一個可用區中重複使用快照建立磁碟 (Persistent Disk 或 Hyperdisk),請先使用快照一次,然後建立該快照的映像檔,即可節省網路費用。儲存這個映像檔,並用來建立磁碟及啟動 VM 執行個體。如需操作說明,請參閱建立自訂的映像檔一節。

最佳做法是每小時建立一個磁碟快照。請避免以更頻繁的頻率建立快照。達成上述建議的最簡單方法就是設定快照排程。

其他最佳做法

  • 使用記錄檔案系統 (例如 ext4),降低資料快取但未實際寫入永久磁碟的風險。
  • 定期建立資料快照,能將因非預期故障而遺失資料的情形降到最低。

後續步驟