1. 程式人生 > >ZFS檔案系統簡介

ZFS檔案系統簡介

ZFS熟悉Solaris的兄弟一定不會陌生,它就是Solaris10上推出的檔案系統,有著諸如平滑擴容,秒級回滾等諸多優點,而且結合Solaris的zone堪稱完美。

ZFS(Zettabyte File System)是由SUN公司的Jeff Bonwick領導設計的一種基於Solaris的檔案系統,最初發佈於20014年9月14日。 SUN被Oracle收購後,現在稱為Oracle Solaris ZFS。單個ZFS檔案系統最多支援 256 quadrillion zettabytes (ZB), 1ZB等於2的70次方位元組。相對於傳統的EXT、XFS、JFS、ReiserFS或NTFS,ZFS的一個重要側重點就是突出了對資料完整性的保護。

ZFS 檔案系統是一種革新性的新檔案系統,可從根本上改變檔案系統的管理方式,並具有目前面市的其他任何檔案系統所沒有的功能和優點。ZFS 強健可靠、可伸縮、易於管理。因為其先進性,ZFS被稱為最後檔案系統,21世紀最好的作業系統,也曾經被蘋果用於Mac OSX 10.5作業系統中,但是當Mac OSX10.6雪豹釋出時,大家發現蘋果完全棄用了ZFS。原因可能是,當Oracle收購SUN時,Oracle自己已經有了開原始檔系統BTRFS,外界認為它無力分身繼續ZFS的開發;另一方面,Netapp稱ZFS檔案系統侵犯其WAFL專利技術,綜合這些,蘋果最終停止支援ZFS檔案系統。


ZFS 池儲存
ZFS 使用儲存池的概念來管理物理儲存。以前,檔案系統是在單個物理裝置的基礎上構造的。為了利用多個裝置和提供資料冗餘性,引入了卷管理器的概念來提供單個裝置的表示,以便無需修改檔案系統即可利用多個裝置。此設計增加了更多複雜性,並最終阻礙了特定檔案系統的繼續發展,因為這類檔案系統無法控制資料在虛擬捲上的物理放置。

ZFS 可完全避免使用卷管理。ZFS 將裝置聚集到儲存池中,而不是強制要求建立虛擬卷。儲存池說明了儲存的物理特徵(裝置佈局、資料冗餘等),並充當可以從其建立檔案系統的任意資料儲存庫。檔案系統不再僅限於單個裝置,從而可與池中的所有檔案系統共享磁碟空間。您不再需要預先確定檔案系統的大小,因為檔案系統會在分配給儲存池的磁碟空間內自動增長。新增新儲存器後,無需執行其他操作,池中的所有檔案系統即可立即使用所增加的磁碟空間。在許多方面,儲存池與虛擬記憶體系統相似:將一個記憶體 DIMM 加入系統時,作業系統並不強迫您執行命令來配置記憶體並將其指定給個別程序。系統中的所有程序都會自動使用所增加的記憶體。

事務性語義
ZFS 是事務性檔案系統,這意味著檔案系統狀態在磁碟上始終是一致的。傳統檔案系統可就地覆寫資料,這意味著如果系統斷電(例如,在分配資料塊到將其連結到目錄中的時間段內斷電),則會使檔案系統處於不一致狀態。以前,此問題是通過使用 fsck 命令解決的。此命令負責檢查並驗證檔案系統狀態,並嘗試在操作過程中修復任何不一致性。這種檔案系統不一致問題曾給管理員造成巨大困擾,fsck 命令並不保證能夠解決所有可能的問題。最近,檔案系統引入了日誌記錄的概念。日誌記錄過程在單獨的日誌中記錄操作,在系統發生崩潰時,可以安全地重放該日誌。由於資料需要寫入兩次,因此該過程會引入不必要的開銷,而且通常會導致一組新問題,例如在無法正確地重放日誌時。

對於事務性檔案系統,資料是使用寫複製語義管理的。資料永遠不會被覆寫,並且任何操作序列會全部被提交或全部被忽略。因此,檔案系統絕對不會因意外斷電或系統崩潰而被損壞。儘管最近寫入的資料片段可能丟失,但是檔案系統本身將始終是一致的。此外,只有在寫入同步資料(使用 O_DSYNC 標誌寫入)後才返回,因此同步資料決不會丟失。

校驗和與自我修復資料
對於 ZFS,所有資料和元資料都通過使用者可選擇的校驗和演算法進行驗證。提供校驗和驗證的傳統檔案系統出於卷管理層和傳統檔案系統設計的必要,會逐塊執行此操作。在傳統設計中,某些故障可能導致資料不正確但沒有校驗和錯誤,如向錯誤位置寫入完整的塊等。ZFS 校驗和的儲存方式可確保檢測到這些故障並可以正常地從其中進行恢復。所有校驗和驗證與資料恢復都是在檔案系統層 執行的,並且對應用程式是透明的。

此外,ZFS 還會提供自我修復資料。ZFS 支援儲存池具有各種級別的資料冗餘性。檢測到壞的資料塊時,ZFS 會從另一個冗餘副本中提取正確的資料,而且會用正確的資料替換錯誤的資料。

獨一無二的可伸縮性
ZFS 檔案系統的一個關鍵設計要素是可伸縮性。該檔案系統本身是 128 位的,所允許的儲存空間是 256 quadrillion zettabyte (256×1015 ZB)。所有元資料都是動態分配的,因此在首次建立時無需預先分配 inode,否則就會限制檔案系統的可伸縮性。所有演算法在編寫時都考慮到了可伸縮性。目錄最多可以包含 248(256 萬億)項,並且對於檔案系統數或檔案系統中可以包含的檔案數不存在限制。

ZFS 快照
快照是檔案系統或卷的只讀副本。可以快速而輕鬆地建立快照。最初,快照不會佔用池中的任何附加磁碟空間。
活動資料集中的資料更改時,快照通過繼續引用舊資料來佔用磁碟空間。因此,快照可防止將資料釋放回池中。

簡化的管理
最重要的是,ZFS 提供了一種極度簡化的管理模型。通過使用分層檔案系統佈局、屬性繼承以及自動管理掛載點和 NFS 共享語義,ZFS 可輕鬆建立和管理檔案系統,而無需使用多個命令或編輯配置檔案。可以輕鬆設定配額或預留空間,啟用或禁用壓縮,或者通過單個命令管理許多檔案系統的掛載點。您就可以檢查或替換裝置,而無需學習另外的一套卷管理命令。您可以傳送和接收檔案系統快照流

ZFS 通過分層結構管理檔案系統,該分層結構允許對屬性(如配額、預留空間、壓縮和掛載點)進行這一簡化管理。在此模型中,檔案系統是中央控制點。檔案系統本身的開銷非常小(相當於建立一個新目錄),因此鼓勵您為每個使用者、專案、工作區等建立一個檔案系統。通過此設計,可定義細分的管理點。

參考http://zh.wikipedia.org/zh/ZFS