快照廣泛應用在數據庫、文件系統和塊存儲領域。使用快照的目的,恢復被刪除或者被損壞的文件。目前實現快照的方式有兩種寫時復制和寫時重定向。
寫時重定向 VS 寫時復制
兩種實現的時間復雜度都是o(1),兩者最重要的區別在于如何處理(存儲)對前一個版本的修改。
寫時復制會將原先的版本在被覆蓋寫之前,拷貝到其他位置。這是會產生一次讀兩次寫操作。對于讀操作如果沒有修改將會讀取原先的版本,如果已經產生了修改則將由快照管理系統返回特定版本的數據。對于每一個數據塊進行這樣的判斷過程增加了計算開銷。
寫時重定向僅僅在寫時將數據指針指向新的塊。快照系統管理數據塊的指針。如果打算獲取特定的快照內容只要訪問具體的指針即可。在讀取時的為判斷產生的開銷將不會產生,只產生了1/3的IO操作。
隨著快照數量的增加性能區別將會很明顯。寫時復制只適合零時文件以及那些不長期維護的文件。如果打算長期使用一個系統并且定期產生快照,建議使用寫時重定向的快照方式。
快照 VS 備份
快照和備份的不同。備份是實實在在的文件,而快照是虛擬的副本,一個具體的表現是刪除之后可能并不會釋放很多空間,原因就在于快照實現只是一個標記。
文件系統快照
EMC的Isilon?OneFS提供文件/目錄級別的快照。
Btrfs和OCFS2支持為文件創建快照。