今天,我們來聊聊ZFS,一個高級文件系統。它為什麼在技術人員和企業中如此受歡迎?
溫馨提示一下:ZFS在文中會提到很多次,但是當我談到功能和安裝的時候,我指的是OpenZFS而不是ZFS哦,因為自Oracle關閉OpenSolaris以來,ZFS (由Oracle開發)和OpenZFS遵循不同的路徑。
ZFS的歷史
ZFS文件系統是由Matthew Ahrens和Jeff Bonwick在2001年創建的,是第一個128位文件系統。
ZFS被設計為Sun Microsystems公司的OpenSolaris的下一代文件系統。2008年,ZFS被移植到FreeBSD。同年,一個項目開始將ZFS移植到Linux。
但是,由於ZFS是根據通用開發和發行許可證(與GNU通用公共許可證不兼容)授權的,所以它不能包含在Linux內核中。
為了解決這個問題,大多數Linux發行版都提供了安裝ZFS的方法。
在甲骨文Oracle收購Sun Microsystems後不久,OpenSolaris就成為了開源軟件。ZFS的所有進一步開發也成為了封閉資源。
ZFS的許多開發人員對這事件的轉變感到不滿,有三分之二的ZFS核心開發者,包括Ahrens和Bonwick,因為此事離開了甲骨文Oracle。
由於OpenZFS項目與Oracle是分開的,一些人可能想知道為什麼他們不將許可證更改為與GPL兼容的東西,以便將其包含在Linux內核中。
根據OpenZFS網站,更改許可證將涉及聯繫任何貢獻代碼的人到當前的OpenZFS實施(包含最初的常見ZFS代碼,直到OpenSolaris)並獲得更改許可證的許可。由於這項工作幾乎不可能(因為一些貢獻者可能已經去世或很難找到),他們決定保留他們的許可證。
ZFS的特點
正如我之前所說,ZFS是一個高級文件系統,它有一些有趣的功能。如:
- 存儲池
- 寫時拷貝事務模型
- 快照與克隆
- 數據完整性驗證和自動修復
- RAID-Z
- 最大16 Exabyte文件大小
- 最大256萬億Zettabytes存儲
存儲池
與大多數文件系統不同,ZFS結合了文件系統和卷管理器的功能。
這意味著與其他文件系統不同,ZFS可以創建跨越一系列驅動器或池的文件系統。不僅如此,您還可以通過添加其他驅動器將存儲添加到池中。ZFS將處理分區和格式化。
寫時拷貝事務模型
Copy-on-write是另一個有趣而且很酷的功能。
在大多數文件系統上,當數據被覆蓋時,它將永遠丟失。在ZFS上,新信息被寫入不同的塊。寫入完成後,文件系統元數據將更新為指向新信息。這可確保在寫入過程中如果系統崩潰(或其他事情發生),舊數據將被保留。這也意味著系統崩潰後系統不需要運行fsck。
快照與克隆
ZFS使用寫時拷貝技術的一個優勢在於,寫新數據時,包含舊數據的塊被保留著,提供了一個可以被保留的文件系統的快照版本。由於ZFS在讀寫操作中已經存儲了所有構建快照的數據,所以快照的創建非常快。而且由於任何文件的修改都是在文件系統和它的快照之間共享的,所以ZFS的快照也是空間優化的。
可寫快照("克隆")也可以被創建。結果就是兩個獨立的文件系統共享一些列的塊。當任何一個克隆版本的文件系統被改變時,新的數據塊為了反映這些改變而創建,但是不管有多少克隆版本的存在,未改變的塊仍然在其他的克隆版本中共享
數據完整性驗證和自動修復
每當將新數據寫入ZFS時,它都會為該數據創建校驗和。讀取該數據時,將驗證校驗和。如果校驗和不匹配,則ZFS知道已檢測到錯誤。然後,ZFS將自動嘗試更正錯誤。
RAID-Z
ZFS可以處理RAID而無需任何額外的軟件或硬件。
毫不奇怪,ZFS有自己的RAID實現:RAID-Z。RAID-Z實際上是RAID-5的一種變體。但是,它旨在克服RAID-5寫入孔錯誤(在這種錯誤中其中數據和奇偶校驗信息在意外重啟後變得不一致)。
要使用基本級別的RAID-Z(RAID-Z1),至少需要兩個磁盤用於存儲,一個磁盤用於奇偶校驗。
RAID-Z2需要至少兩個存儲驅動器和兩個驅動器才能實現奇偶校驗。RAID-Z3需要至少兩個存儲驅動器和三個驅動器才能實現奇偶校驗。
當驅動器添加到RAID-Z池時,它們必須以2的倍數添加。
巨大的存儲潛力
ZFS是一個128位的文件系統,這意味著它能存儲1800億億(18.4 × 10)倍於當前64位文件系統的數據。ZFS的設計如此超前以至於這個極限就當前現實實際可能永遠無法遇到。項目領導Bonwick曾說:“要填滿一個128位的文件系統,將耗盡地球上所有存儲設備。除非你擁有煮沸整個海洋的能量,不然你不可能將其填滿。
如何安裝ZFS?
如果你想開箱即用ZFS,就需要安裝FreeBSD或使用illumos內核的操作系統。illumos是OpenSolaris內核的一個分支。
事實上,對ZFS的支持是一些有經驗的Linux用戶選擇BSD的主要原因之一。
如果你想在Linux上嘗試ZFS,你只能在存儲文件系統中使用它。
對其支持的操作系統有:
· Sun Solaris
· OpenSolaris
· Illumos發行版
· OpenIndiana
· FreeBSD
· Mac OS X Server 10.5
· NetBSD
· Linux(通過用戶空間文件系統或原生第三方內核可加載核心模組支持)
ZFS雖好,但使用RAID-Z 可能會很貴,因為你需要購買許多驅動器來增加存儲空間。
你有用過ZFS嗎?你的經歷是什麼樣的?
可以在下面的評論中告訴我喔!
閱讀更多 芯享家科技 的文章