Compute Engine 磁碟快照的最佳做法


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

安全性考量

為避免權限提升,請務必只將快照相關的 IAM 權限授予您信任的實體,讓對方能讀取及還原快照或即時快照資料。使用者可透過下列權限,讀取快照或即時快照中的資料,並還原資料:

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

任何擁有上述權限之一的實體,都可以將專案中的快照或即時快照還原至其控制的專案,包括位於其他機構的專案。舉例來說,如果惡意使用者在您的專案中取得快照 IAM 角色,就能在個人專案中還原快照,並存取快照中的資料。

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

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

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

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

建立與當機一致的快照

擷取永久磁碟或 Hyperdisk 的快照時,您不需要採取任何額外步驟,即可讓快照發生當機時保持一致。特別是,您不需要暫停工作負載。

如果工作負載無法容許暫停,請考慮採用下列程序建立與當機相符的快照:

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

當您使用與當機相符的快照時,可能需要先重播檔案系統和應用程式層級的記錄。因此,快照的品質取決於應用程式能否從與當機一致的狀態快速復原,並繼續提供服務。

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

  • Windows Server 使用者:如果磁碟已連結至 Windows Server 執行個體,請使用 VSS 快照
  • Linux 使用者:如要讓已連結至 Linux 執行個體的磁碟快照達到應用程式一致性,請建立快照前置和後置殼層指令碼,為應用程式一致性做好準備。然後建立啟用 guest-flush 選項的影像。這會在擷取快照前後執行前置和後置指令碼。如需操作說明,請參閱「建立與 Linux 應用程式一致的快照」。

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

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

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

您不需要停止 VM。應用程式暫停可能涉及凍結及卸載檔案系統等作業。手動暫停應用程式後,請務必等到快照資源達到 UPLOADING 狀態,再繼續執行工作負載。

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

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

CREATING:快照建立作業尚未完成。
UPLOADING:已建立快照,但尚未儲存至 Cloud Storage。
DONE FAILEDREADY

快照頻率限制

您可以拍攝磁碟快照的頻率有限制。

使用永久磁碟或 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."

此限制適用於下列作業:

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

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

使用快照建立新的區域磁碟

您可以針對每個目標可用區,從指定的快照建立新的區域性永久磁碟或 Hyperdisk,每 60 分鐘最多 6 次。目標可用區是指從快照建立的新磁碟的儲存位置。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."

此限制適用於下列作業:

以下作業不適用這項限制:

  • 使用快照建立新的地區永久磁碟。
  • 使用映像檔做為來源,建立新的區域性或地區性永久磁碟。

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

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

如為非開機磁碟,請按照從映像檔建立永久磁碟的操作說明操作,並使用下列步驟:

  • 在 Google Cloud 控制台中,將磁碟的「來源類型」設為「圖片」
  • 使用 gcloud CLI 時,請使用 image 旗標
  • 如果使用 REST,請使用 sourceImage 參數

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

如果您已為某個磁碟 (永久磁碟或 Hyperdisk) 建立快照,日後再為同一個磁碟建立快照時,系統會自動使用現有快照做為基準。

  • 請先為磁碟建立新的快照,再刪除同一個磁碟先前的快照。系統若能使用先前的快照,並僅讀取磁碟中新增或修改過的資料,就能更迅速地建立新快照。
  • 請先等新快照建立完成後,再繼續為同一個磁碟建立快照。如果您在同一個磁碟上同時執行兩個快照,這兩個快照會從相同的基準開始執行,導致重複執行相同作業。如果您等到新快照建立完成後才採取動作,則系統能更快速地建立後續快照,這是因為後續快照只會取得上一個快照建立後才變更的資料。

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

如果安排系統定期建立磁碟 (永久磁碟或 Hyperdisk) 快照,建議盡可能將作業時間安排在離峰時段,以縮短製作每個快照所需的時間。

  • 請將自動建立快照的作業時間安排在磁碟所在區域的工作天。一般而言,建立快照的高峰時間是在工作天結束時。
  • 請於磁碟所在區域的早晨較早安排自動執行快照建立作業,而不是在午夜立即安排該作業。一般而言,建立快照的高峰時間是在午夜。

在不同的磁碟上整理資料

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

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

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

在 Linux 執行個體上,如果您沒有使用 discard 選項格式化及掛接磁碟 (永久磁碟或 Hyperdisk),請先在執行個體上執行 fstrim 指令,再建立快照。此指令會移除檔案系統不再需要的區塊,讓系統更快建立大小較小的快照。如要瞭解如何在磁碟上設定 discard 選項,請參閱「在 Linux VM 上格式化及掛接非啟動磁碟」。

建立常用快照的映像檔

如果您反覆使用同一區域中的某個快照來建立磁碟 (永久磁碟或 Hyperdisk),可改成使用快照一次,然後建立該快照的映像檔來節省網路費用。儲存並使用此映像檔來建立磁碟和啟動 VM 執行個體。如需操作說明,請參閱建立自訂的映像檔一節。

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

其他最佳做法

  • 使用日誌記錄檔案系統 (例如 ext4),避免資料只經過快取而未實際寫入永久磁碟的情況發生。
  • 定期建立資料快照,能將因非預期故障而遺失資料的情形降到最低。

後續步驟