什麼是ZFS?爲什麼人們會它瘋狂呢?

今天,我們來聊聊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嗎?你的經歷是什麼樣的?

可以在下面的評論中告訴我喔!