ZFS 檔案系統主要功能特色
ZFS 作為較現代化、較先進的作業系統,在功能上當然比其實作業系統顯得更有優勢,當中的功能包括保障資料完整性、資料減量、多層快取架構及快照保護等,以下一一詳盡說明。
支援更大容量的磁碟區
ZFS 是採用 128 Bit 定址的檔案系統,定址能力遠高於其他 64 Bit 定址的檔案系統,也因此能管理高達 16EB 的容量,比其他檔案系統高出不少。當然,即使 ZFS 理論上能支援高達 16EB 的容量,NAS 廠商也不一定會在網頁管理介面上讓用家建立這麼大的磁碟區。QNAP 的 QuTS hero 及 QES 作業系統目前限制了磁碟區容量為 1PB,隨著 QNAP 新款式的擴充裝置能支援更多硬碟及硬碟的容量愈出愈大,相信日後要支援更大的磁碟區也是輕易而舉。
資料完整性 (Data Integrity)
企業都著重資料完整性,ZFS 能針對所有資料區塊及 Metadata 校驗 Checksum,確保資料正確及完整。當資料寫進 ZFS 時,系統會自動建立 Checksum。而當資料讀出來的時候,系統則會自動透過 Checksum 校驗資料,確保讀出來的資料正確無誤。當發現資料有錯誤時,即出現所謂的靜態資料損毀 (Silent Data Corruption) 時,ZFS 能自動進行修復 (Self-healing),自我修正因各種原因導致的資料損毀,確保系統能回報正確的資料,也確保存在硬碟內的資料正確。
此外,ZFS 也支援 WORM (Write Once, Read Many) 功能,即寫入後不能作任何修改,只能夠讀取,避免資料被變更,確保存檔的完整性。也讓從事敏感行業的企業能附合相關法規。
資料縮減 (Data Reduction)
對用家來說,同一個容量的儲存空間能塞進更多資料,就代表著空間能更有效地利用,也代表儲存成本更低,更合乎成本效益。同時,有些儲存媒體如 SSD 在物理上就存在寫入次數上限的限制,假如能把寫入的資料盡可能縮減,一方面可以延長 SSD 壽命,另一方面可以讓相對昂貴的 SSD 容量能更有效率地使用,是降低成本的關鍵!
ZFS 提供了兩大資料減量技術,分別是「在線資料壓縮」(Inline Data Compression) 及「在線重複資料刪減」(Inline Data Deduplication) 。為何稱為「線上」呢?因為資料在寫入硬碟前,就會經過演算法壓縮及刪減資料。在「在線資料壓縮」方面,ZFS 支援目前壓縮速度最快的 LZ4 壓縮演算法,這個演算法並不會對系統造成太大的負擔,當數據寫入時,會以 LZ4 無損壓縮處理,以縮減容量。而「在線重複資料刪減」是在區塊層級 (Block Level) 運作的功能,ZFS 檔案系統在寫入數據前會先計算數據特徵紋路,並檢查有沒有相同的資料已經存在於硬碟中,如有的話,他只會更新 Metadata ,而不會再次寫入相同的資料,達到刪減重複資料的目標,節省寶貴的儲存空間。
支援更多 RAID 組態
有別於標準的 Linux mdadm RAID,ZFS能支援更多 RAID 組態,除了 QTS 原有的 RAID 0 (Striped)、RAID 1 (Mirror)、RAID 5 (RAID Z1)、RAID 6 (RAID Z2)、RAID 10、RAID 50 與 RAID 60 外,更新增支援 Triple Parity (RAID Z3) 功能,即可提供 3 個冗余容錯保護,以及 Triple Mirror 以提供高達 3 個資料鏡射保護,大幅提升資料保護的安全性層級。在企業需要更大型的儲存空間的情況下,更先進的 RAID 50、RAID 60 及 Triple Parity (RAID Z3) 能讓企業在容量、效能及安全性之間取得平衡,提供更安全更彈性的配置方法。此外也可以支援建立容量高達 1PB 的單一空間,讓空間更有效地利用,方便管理。
另外,有別於 Linux mdadm RAID,當發生硬碟損壞後需要進行 RAID Rebuild (ZFS 稱為 Resilver)時,ZFS 只會針對有資料的區塊進行重建,大幅提升重建效率,讓 RAID 盡快回到正常運作,減低在重建時遇到多個硬碟同時損壞的機會,增加安全性。
支援多層快取
ZFS 檔案系統原生已經支援多層快取架構,當中包括主記憶體讀取快取 (L1 ARC)、SSD 讀取快取 (L2 ARC),及 ZFS 意圖日誌 (ZFS Intent Log,ZIL)。
ARC 全寫為 Adaptive Replacement Cache,他是一種讀取快取演算法,他會自動同時追蹤 LFU (Least Frequently Used, 最近最少使用) 及 LRU (Least Recently Used, 最久未使用) 兩大行為,他會根據系統的負載,自行把快取空間分配給 LFU 及 LRU,以提高快取的效益。ARC 第一層是採用記憶體作為讀取快取,第二層則需要用家安裝及把 SSD 設定為 L2 ARC 快取,在兩者同時運作下,能減少資料從硬碟 (HDD) 讀取的存取次數,大幅提升 ZFS 的讀取效能。
而 ZIL 則是用作加速寫入,在 ZFS 中寫入動作可分為同步寫入 (Synchronous Transaction) 及非同步寫入 (Asynchronous Transaction)。同步寫入是用來保證系統把數據直接寫入硬碟中,即使發生斷電等情況,也不會造成數據損失;而非同步寫入則是容許數據先存放到快取中(通常是記憶體),雖然非同步寫入可以提升寫入效能,但是當發生斷電等情況時,有機會造成數據損失。而 ZIL 是為了同步寫入而設,透過安裝 SSD 及設定成 ZIL 儲存空間,數據會先寫入到速度較快的 ZIL 儲存空間,之後再合併寫入到硬碟中,為同步寫入工作如資料庫等應用降低延遲並增進寫入效能,也為斷電等情況作出保護,確保資料完整性。
更先進的快照功能
ZFS 跟其他原生支援快照的檔案系統一樣,都是以 COW (Copy On Write, 寫入時複製) 技術作為基礎,對數據進行修改時,ZFS 並不會把原有的數據直接覆蓋,而是會某找空白的空間寫入已更新的數據,待數據寫入完成後才會更新 Metadata,把指標指向新寫入的區塊,最後再把儲存著要被修改舊數據的數據區塊刪掉來釋放空間,才算是正式完成整個寫入動作。這樣可以確保數據不會因各種原因導致的寫入失敗而丟失,保護了數據的完整性。受惠於 COW 技術,ZFS 在建立快照時並不會影響系統效能,而且能更密集地建立快照,也支援更多的快照數量;跟 LVM + EXT4 架構及 LVM + Btrfs 架構比較,ZFS 的快照更加輕量化,有關快照的操作也更高效率,顯得更有優勢。