天天看點

Solaris 10 最新版:使用ZFS的十條理由 - ZFS特性介紹

 Sun Microsystems公司正式釋出ZFS(Zettabyte File System)檔案系統。ZFS是第一個128位的檔案系統,同時ZFS又被Sun Microsystems稱作史上最後一個檔案系統。因為這個檔案系統含有多項創新技術,不僅成功地解決現有檔案系統的問題和陋習,而且前瞻性地考量了未來對存儲空間的需求,單個檔案系統可以達到256 quadrillion(264) Zettabytes(221)。 ZFS不僅符合POSIX檔案系統的标準,而且提供了許多進階功能比如:Quota(配額),Reservation(預留), Compression(壓縮), Snapshot(快照),Clone(克隆)等。如果你還在堅持使用現有32位或者64位的檔案系統,如果你還在“痛并不快樂着”地用着各式各樣的 Volume Manager,那就很值得看看這裡列出的使用ZFS的十條理由。

      1. 再也不需要fsck, scandisk

      不管你是在用Linux,UNIX還是Windows,相信大家都有過類似的體會:當系統意外斷電或者非法關機,系統重起後發現檔案系統有inconsistent的問題,這時 候就需要fsck或者scandisk 來修複,這段時間是非常耗時而且最後不一定能夠修複成功。更糟糕的是,如果這是一台伺服器需要做fsck的時候,隻能offline(下線),而且現有應用往往都是大硬碟,相應fsck修 複時間也很長,這對許多使用該伺服器的使用者來說幾乎不能忍受的。 而使用ZFS後大家可以徹底抛棄fsck這種工具,因為ZFS是一個基于COW(Copy on Write)機制的檔案系統。COW是不會對硬碟上現有的檔案進行重寫,保證所有硬碟上的檔案都是有效的。是以不會有這種inconsistent的概念,自然就不需要這種工具了。

      2. 管理簡單

      ZFS作為一個全新的檔案系統,全面抛棄傳統File System + Volume Manager + Storage的架構,所有的儲存設備是通過ZFS Pool進行管理,隻要把各種儲存設備加 入同一個ZFS Pool,大家就可以輕松的在這個ZFS Pool管理配置檔案系統。大家再也不用牢記各種專業概念,各種指令newfs, metinit及各種Volume Manager的用法。在ZFS中我們隻需要兩個指令,zpool(針 對ZFS Pool管理)和zfs(針對ZFS檔案系統的管理),就可以輕松管理128位的檔案系統。舉個例子,我們經常會遇到系統資料增長過 快,現有存儲容量不夠,需要添加硬碟,如果依照傳統的Volume Manager管理方式,那我 們需要預先要考慮很多現有因素,還要預先根據應用計算出需要配置的各種參數。在ZFS情況下,我們的系統管理者可以徹底解放,再也不需要這種人為的複雜 考慮和計算,我們可以把這些交給ZFS,因為ZFS Pool會自動調節,動态适應需求。我們隻需一個簡單的指令為 這個ZFS Pool加入新的硬碟就可以了:

      zpool add zfs_pool mirror c4t0d0 c5t0d0

      基于這個動态調節的ZFS Pool之上的所有的檔案系統就可以立即使用到這個新的硬碟,并且會自動的選擇最優化的參數。

而且ZFS同時也提供圖形化的管理界面,下面是一個ZFS圖形化管理的一個截屏:

      3.      沒有任何容量限制

      ZFS(Zettabyte File System)檔案系統就如其名字所預示,可以提供真正的海量存儲,在現實中幾乎不可能遇到容量問題。在現有的64位kernel(内 核)下,它可以容納達到16 Exabytes(264)大小的單個檔案,可以使用264個儲存設備,可以建立264個檔案系統。

      4.      完全保證 資料 的正确和完整

      由于ZFS所有的資料操作都是基 于Transaction(事務),一組相應的操作會被ZFS解 析為一個事務操作,事務的操作就代表着一組操作要麼一起失敗,要麼一起成功。而且如前所說,ZFS對 所有的操作是基于COW(Copy on Write), 進而保證裝置上的數 據始終都是有效的,再也不會因為系統崩潰或者意外掉電導緻資料檔案的inconsistent。

      還有一種潛在威脅 資料的可能是來自于硬體裝置的問題,比如磁 盤,RAID卡的硬體問題或者驅動bug。現有檔案系統通常遇到這個問題,往往隻是簡單的把錯誤資料直接交給上層應用,通常我們把這個問題稱作Silent Data Corruption。而在ZFS中,對所有資料不管是使用者資料還是檔案系統自身的metadata數 據都進行256位的Checksum(校 驗),當ZFS在送出資料時會進行校驗,徹底杜絕這種Silent Data Corruption情況。

      5.      提供優異 性能和擴充性

      和傳統File System + Volume Manager + Storage架構不同,ZFS則是直接基于儲存設備提供所有的功能,是以有自己獨有的創新特性,性能自然非比尋常。

      Dynamic Striping vs. Static Striping

      由于ZFS是基于COW和一個全局動态的ZFS Pool,任何一次寫 操作,都是對一塊新資料塊(Block)的一次寫操作。ZFS從ZFS Pool中動态挑選出一個最優的裝置,并且以一個transaction(事 務)線性寫入,充分有效地利用了現有裝置的帶寬,我們把這個特性稱為Dynamic Striping。而相對應的Static Striping則是傳統檔案系統所使用的方式,Static Striping需要管理者預先對這組Stripe進行正确地計算人為 設定,而且如果加入新的裝置則需要再次人為的計算和設定,更為嚴重的是如果人為計算錯誤,則會直接影響系統的性能。而在使用Dynamic Striping這種特性之後,我們根本不需要人為介入,ZFS會自動調整,智能的為你 提供最佳的裝置,最快的操作方式。

      支援多種 大小的資料塊(Multiple Block Size)

      ZFS支援多種大小的資料塊定義,從512位元組到1M位元組。和傳統檔案系統往往都是固定大小資料塊不同,ZFS則是可以動态的根據不同 大小的檔案進行計算,動态的選擇最佳的資料塊。

因為不同大小資料 塊,直接影響到實際使用硬碟容量和讀取速度。如果使用較小的資料塊,存儲檔案所導緻的碎片則較少,讀寫小檔案更快一些,但是會導緻需要建立更多的metadata,讀寫大檔案則會更費時。如果使用較大的資料塊,使用的metadata較少,更利于讀寫大檔案,但是會導緻更多的碎片。ZFS根據實際調查現有檔案使 用的情況,分析出一個選擇資料塊大小的算法,動态的根據實際檔案大小确定最佳的資料塊。是以ZFS是 非常智能的,在不需要系統管理者介入,就可以得到一個自我調優的結果。當然ZFS也支援使用者對單個檔案或者整個檔案系統 所使用的資料塊大小的自定義設定。 

      智能預讀取(Intelligent Prefetch)

      多數的作業系統都 有這種将資料預先讀取的功能,而ZFS則是建立在檔案系統上直接提供的一種更加智能的資料預讀取功能。它不僅可以智能地識别出多種讀取模式, 進 行提前讀取資料,而且可以對每個讀取資料流進行這種預讀取智能識别,這個對許多流媒體提供者來說是件非常好的事情。

      在擴充性上,和現有檔案系統多是基于一個受限的靜态模型不同,ZFS是采用ZFS Pool這個動态概念,它的metadata也是動态,并且讀寫操作都是可并行的,并且具有優先級概念,是以即使在大資料量,多裝置的情況下仍可以保證性能的線性增長。

      6.      自我修複功能

      ZFS Mirror 和 RAID-Z

傳統的硬碟Mirror及RAID 4,RAID 5陣列方式都會遇到前面提到過的問題:Silent Data Corruption。如果發生了某塊硬碟實體問題導緻資料錯誤,現有的Mirror,包括RAID 4,RAID 5陣列會默默地把這個錯誤資料送出給上層應用。如果這個錯誤發生在Metadata中,則會直接導緻系統的Panic。 而且還有一種更為嚴重的情況是:在RAID 4和RAID 5陣列中,如果系統正在計算Parity數值,并再次寫入新資料和新Parity值的時候發生斷電,那麼整個陣列的所有存儲的資料都毫無意義了。

      在ZFS中則提出了相對應的ZFS Mirror和RAID-Z方式,它在負責讀取資料的時候會自動和256位校驗碼進行校驗,會主動發現這種Silent Data Corruption,然後通過相應的Mirror硬 盤或者通過RAID-Z陣列中其他硬碟得到正确的資料傳回給上層應用,并且同時自動修複原硬碟的Data Corruption 。

      Fault Manager

      在Solaris 10中,包含 一個ZFS診斷引擎和Solaris的 Fault Manager(這也是Solaris 10的 另一個新特性)互動,可以實時地診斷分析并且報告ZFS Pool和儲存設備的錯誤,使用者可以通過Fault Manager及時得到一個非常友善的消息。這個診斷引擎雖然不會采取主動的行為去修複或者解決 問題,但是會在消息中提示系統管理者可采取的動作。類似下面一個ZFS報錯消息,其中REC-ACTION就是建議采取的動作:

      SUNW-MSG-ID: ZFS-8000-D3, TYPE: Fault, VER: 1,             SEVERITY: Major

      EVENT-TIME: Fri Mar 10 11:09:06 MST 2006

      PLATFORM: SUNW,Ultra-60, CSN: -, HOSTNAME: neo

      SOURCE: zfs-diagnosis, REV: 1.0

      EVENT-ID: b55ee13b-cd74-4dff-8aff-ad575c372ef8

      AUTO-RESPONSE: No automated response will occur.

      IMPACT: Fault tolerance of the pool maybe compromised.

      REC-ACTION: Run ’zpool status -x’ and replace the bad device.

      7. 安全

      在安全上,ZFS支援類似NT風格NFSv4版的ACL(讀取控制清單)。而且前面所提到的256位驗證碼,使用者可選擇多種驗證方式,包括SHA-256驗證算法,進而在實體存儲單元級别上保證資料的安全性。

      8. 超強功能

      ZFS作為“最後一個檔案系統”,涵蓋了基本的檔案系統和Volume管理的功能,同時 一并提供許多企業級别的超強功能:Quota(配額),Reservation(預留), Compression(壓 縮), Snapshot(快照),Clone(克隆)。并且速度非常快。有了這個檔案系統,大家再也不需要任何Volume Manager了。

      相容性

      ZFS是一個完全相容POSIX規範的檔案系統,是以處于上層的應用程式是完全不受影響。ZFS也提供一個Emulated Volume子產品,可以把任何一個ZFS檔案系統作為普通的塊裝置使用。同時ZFS也可以使用基于Volume Manager建構的Volume作為儲存設備單 元。這樣在不需要修改應用程式,不修改已有檔案系統下,給了大家最大的自由度去獲得ZFS提供的各 種特性。

      10. 開源

      參考:

本文轉自 xkdcc 51CTO部落格,原文連結:http://blog.51cto.com/brantc/116006,如需轉載請自行聯系原作者

繼續閱讀