本頁說明快照的用途和運作方式,並討論限制和最佳做法。
如要瞭解如何使用快照,請參閱下列指南:
什麼是快照?
Filestore 快照會保留建立快照時的檔案共用資料狀態。執行個體會維護在建立快照後修改的檔案狀態。如要將檔案還原至快照中保留的狀態,可以從相關快照目錄覆寫目前的檔案。
快照會儲存在 Filestore 執行個體中,是執行個體的子項資源。在修改執行個體上的資料之前,這些執行個體不會複製任何資料或耗用容量。執行個體的所有快照都會共用資料,也就是說,執行個體只會保留快照之間的差異。
與其他 Filestore 資料復原作業相比,快照確實能節省成本,但隨著檔案修改次數增加,可用執行個體容量會持續減少。
支援的層級
下表列出支援快照和 revert instance
作業的 Filestore 服務層級:
級別 | 建立快照 | 還原執行個體 |
---|---|---|
基本傳統硬碟 | 否 | 否 |
基本固態硬碟 | 否 | 否 |
可用區 | 是 | 是 |
區域 | 是 | 是 |
Enterprise | 是 | 是 |
先前推出的高規模 SSD 服務層級也支援快照和相關的 revert
作業。
企業服務層級支援快照,但無法與 Filestore 多重共用功能搭配使用。
建立快照
檔案共用的每個目錄都包含隱藏的 .snapshot
目錄。每個 .snapshot
目錄都包含您建立的父項目錄快照,例如:
volume1/
│ genomics-file.txt
│
└───.snapshot
│
├───snap1/
│ genomics-file.txt
│
├───snap2/
│ genomics-file.txt
│
└───snap3/
genomics-file.txt
快照包含建立時父項目錄中的所有檔案和子目錄,但只能以唯讀模式檢視。所有檔案屬性 (例如 atime
、ownership
,以及讀取和寫入權限) 都會保留。
建立快照通常不會超過兩分鐘,因為這項作業不涉及複製資料,也不會影響執行個體效能。
每個執行個體一次最多可以有 240 張快照。檔案共用區名稱和快照名稱的總長度最多可達 78 個字元。
快照一致性
Filestore 快照具有 NFSv3 一致性語意。啟動快照之前,Filestore 執行個體確認已寫入穩定儲存空間的任何寫入作業,或後續有確認的 COMMIT
,都會納入快照。詳情請參閱 NFSv3 RFC-1813 的 3.3.7 節。
備妥檔案共用區,以便建立一致性極高的快照
應用程式能否復原您在系統執行繁重寫入工作負載時所建立的快照,會影響快照的品質。多數情況下,即使應用程式正將資料寫入檔案共用區,您也能建立一致性良好的快照。不過,如果您的應用程式需要嚴格一致性,建議採取下列一或多項做法:
- 使用 sync 掛接選項,或使用
O_DIRECT|O_SYNC
開啟檔案。這兩種方法都能提高一致性,但無法保證一定能達成。 - 暫停會將資料寫入檔案共用的應用程式或作業系統程序,並在啟動快照前,讓這些程序將變更排清至檔案共用。詳情請參閱 fsync(2)。
- 如果應用程式需要多個共用磁碟之間皆具備一致性,請先暫停所有執行個體上正在寫入所有檔案共用磁碟的應用程式,並為所有檔案共用磁碟建立快照,再重新啟用應用程式。
- 如果您需要應用程式層級的一致性,請先停止應用程式並卸載檔案共用,再建立快照。
.snapshot
目錄的 NFS 語意
.snapshot
目錄是特殊的隱藏目錄,內含其上層目錄的快照。所有 NFS 和 bash 指令都適用於這些目錄,但下列情況除外:
- 您無法建立名為
.snapshot
的檔案或目錄,因為該名稱保留給快照使用。 .snapshot
目錄不會列在READDIR
或READDIRPLUS
指令的輸出內容中,也不會列在ls -a
bash 指令中。- 如要變更為
.snapshot
目錄,您必須明確輸入.snapshot
字串。範例:cd somedir/.snapshot/
- 殼層指令的自動完成功能不會將
.snapshot
列為選項。
刪除快照中擷取的檔案
如果檔案已擷取至快照,刪除該檔案不會增加執行個體的可用磁碟空間。
還原至快照狀態
將執行個體還原至快照狀態的功能已正式推出,但僅適用於可用區、區域和企業執行個體。
執行個體還原至快照擷取的狀態時,系統會刪除目標快照建立後寫入的所有新資料,且無法復原。還原程序也會刪除目標快照之後建立的快照。
功能限制
還原快照是無法復原的操作,會刪除即時檔案系統中的資料,並刪除鏈結中每個後續較新的快照。因此,意外遺失資料的風險較高。與從備份還原相比,這項行為有顯著差異。從備份還原後,備份會維持目前狀態,方便您嘗試從多個備份還原,找出最合適的備份。請謹慎使用還原功能。
還原程序開始時,系統會刪除目標快照建立後寫入的所有資料,且無法復原。目標快照之後的所有快照也會一併刪除。例如,
snapshot1
、snapshot2
和snapshot3
是依序建立。將執行個體還原至snapshot2
中擷取的狀態,表示系統會在還原程序中刪除snapshot2
之後寫入的所有資料,以及snapshot2
建立後的所有快照。系統可能需要六小時到十天,才能清除這些已刪除的資料。這段期間執行個體的容量和效能可能會受到影響。
將執行個體還原至快照狀態時,NFS 檔案系統 ID (fsid) 會更新。如果嘗試使用現有掛接點存取用戶端,系統會傳回過時的檔案控制代碼錯誤。最佳做法是,在還原作業前先從執行個體卸載所有用戶端,並在作業完成後重新掛接。
還原作業最多可能需要兩分鐘才能完成。
- 還原作業的相關清理作業 (例如刪除鏈結中的後續快照) 可能需要 6 小時到 10 天才能完成,實際時間取決於檔案數量。
- 還原作業執行期間,以及清理作業完成前,您都可以執行其他作業。
- 您必須等待還原作業完成,才能啟動另一項還原作業。
大多數服務層級都提供快照和相關的
revert
作業。基本固態硬碟和基本傳統硬碟服務級別不支援快照。只有具有單一共用的執行個體可以還原至快照狀態。
企業服務層級支援快照,但無法與 Filestore 多重共用功能搭配使用。