文件系統和ZFS設計的思考

      網友投稿 2389 2025-03-31

      在我看來,文件系統的發展大致分為下面幾個階段。

      第一階段,解決如何在塊設備上構建文件系統的問題,也就是把塊地址轉變成文件和樹形目錄等概念,這樣更方便。fat/ufs/ffs/ext2/minix等都處于這個階段。這個階段的文件系統設計者考慮最多的如何實現這些概念,對性能,可靠性,其他增值特性考慮較少。

      第二階段,在第一階段的基礎上,嘗試解決性能、可靠性、可擴展性等問題。這個階段的文件系統包括:xfs、ext3、ReiserFS、NTFS、vxfs、lfs等。這些文件系統并沒有提供更豐富的功能,但是對內部設計做了很多改進。很多文件系統都支持日志型,崩潰之后可以快速回復,有些文件系統還是log-structure的。很多文件系統使用了B+樹來組織目錄和文件內的數據塊布局,xfs/ReiserFS。很多文件系統的inode table是擴展的,NFS/vxfs/xfs...。

      第三個階段,突破POSIX規范的限制,提供更豐富的功能。這個階段的文件包括:ZFS、btrfs、ext4等等。這些功能主要包括:快照、多硬盤支持、重刪、RAID等等。btrfs和ext4要更保守一些,嚴格說來還算不上第三代。ZFS更加激進一些。

      ZFS在設計上有很多創新,比如:

      -在文件系統中實現RAID,這個功能以前是在磁盤陣列中實現的。

      -提升了對可靠性的重視水平,為每個數據塊做強校驗。

      -引入了SSD作為L2cache,

      -引入了dedup功能,增強了ACL。

      -文件系統架構被設計成兩層:(1) 基礎設施層,object、sio、zap等;(2)文件系統層,ZPL。

      也繼承了一些其他文件系統的設計,比如:ROW/日志性文件系統(WAFL/lfs)。拋棄了一些,比如fsck、B+ Tree等。

      對ZFS的贊美很多了,附件集中描述了ZFS的優點。是不是真的像是ZFS開發者聲稱的那樣,ZFS是這個世界上最后一個文件系統了,沒有必要再開發其他文件系統了?下面我們從另外的角度,思考一下ZFS設計中還有那些地方值得改進。

      1.文件內部定長塊,用direct-map組織文件布局,沒有使用變長的extent和B+樹組織文件內的布局

      ZFS拋棄了被vxfs/xfs等文件系統采用的變長extent。extent的好處是:元數據少,提升性能,特別是大文件隨即讀性能和大文件刪除性能。不清楚ZFS為啥不用。

      2.ZFS的空間利用不是特別有效,運行時間長了會有很多碎片,這是ROW文件系統的普遍問題,btrfs有在線碎片整理,似乎ZFS沒有。碎片帶來幾個問題:a、新數據寫入時,查找空閑塊的效率降低,影響寫入性能;b、新寫入的數據塊在硬盤上不連續,順序讀出的性能變差;c、ZFS使用space-map管理空閑塊,多個小的、碎片化的空閑塊需要更多的space-map條目來描述,需要占用更多內存。

      3.對于這種應用場景“大文件,順序讀為主,更改頻繁”,性能差,ROW會把原本地址連續的大文件變為不連續。

      4.CPU開銷比較大,這是因為ZFS增加了對數據塊的校驗和RAID。

      5.不支持目錄級別的可寫快照

      對文件系統和ZFS設計的思考

      6.重刪特性可用性差,ZFS采用定長分塊,并且分塊粒度比較大,指紋查找的性能也不太好。

      7.RAIDZ恢復性能,當出現硬盤失效時,ZFS的RAIDZ是通過遍歷文件來進行數據重構的,當文件數量很少的時候,可以很快完成,當文件數量較多的時候,性能就會很差。對用戶來說,最不能忍受的是性能不穩定,重構時間不確定。

      8.同步處理流程,等待IO操作完成時,掛起當前進程。幾乎現有所有文件系統都是這樣的,但是對于打算支持多硬盤的文件系統來說,最好采用異步模式。理論上說,采用同步流程的文件系統,要想充分利用硬盤能夠提供的性能,就需要與所有硬盤并發IO數量相同的線程數量。假設每個硬盤最多能支持10并發IO,那么就需要每塊硬盤就要10個線程才能被充分利用,當系統中有200塊硬盤的時候,就需要2000個線程,這2000個線程在4 - 8個CPU核心上被頻繁切換,開銷是比較大的。

      9.兩層架構和object抽象,ZFS的兩層架構增加了代碼規模,在一定程度上限制了靈活性。猜測,在ZFS開始設計那個年代,對象存儲的概念剛剛被提出,也許ZFS是為了利用對象硬盤做準備。

      10.對SSD的使用,ZFS把SSD用作L2cache。在存儲行業中,除了把SSD用作讀cache之外,還另外一種用法,分級存儲,ZFS不支持這種用法。

      11.FCL(vxfs)和inotify(linux),文件更改列表(FCL, file change list),或者文件更改通知(inode notify)。很多應用需要這個功能,比如備份,或者遠程復制,需要知道上次備份以來,哪些文件更改了。安全(防病毒),需要知道上次檢查之后,哪些文件更改了。ZFS似乎不支持。

      相對于現存的其他文件系統來說,ZFS足夠好了。

      轉載請注明出處:華為云博客 https://portal.hwclouds.com/blogs

      文件系統 云設計

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:表單(表單是什么意思)
      下一篇:Excel2010表格中引用別的表格內容的操作方法(excel引用其他表格內容)
      相關文章
      国产成人精品日本亚洲11| 国产亚洲精品拍拍拍拍拍| 亚洲视频在线一区二区三区| 亚洲神级电影国语版| 国产乱辈通伦影片在线播放亚洲 | 亚洲系列中文字幕| 国产成人综合亚洲绿色| 亚洲一区AV无码少妇电影☆| 亚洲欧洲视频在线观看| 亚洲精品无码久久久| 亚洲成a人片在线网站| 亚洲第一页综合图片自拍| 亚洲伊人久久大香线蕉在观| 亚洲校园春色另类激情| 亚洲高清专区日韩精品| 无码色偷偷亚洲国内自拍| 亚洲国产精品成人综合久久久| 在线日韩日本国产亚洲| tom影院亚洲国产一区二区| 国产精品亚洲视频| 亚洲AV成人无码久久WWW| 亚洲美女色在线欧洲美女| 久久精品国产精品亚洲艾草网美妙| 亚洲制服丝袜精品久久| 亚洲AV无码久久精品狠狠爱浪潮| 亚洲国产中文字幕在线观看| 亚洲国产精品xo在线观看| 亚洲日韩一区精品射精| 亚洲一区二区三区亚瑟| 亚洲国产精品久久久久婷婷软件| 国产精品亚洲玖玖玖在线观看| 久久精品国产精品亚洲色婷婷| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 亚洲AV午夜成人影院老师机影院| 国产精品亚洲精品爽爽| 亚洲日本在线观看视频| 亚洲视频在线精品| 国产亚洲美女精品久久久久| 国产成人精品日本亚洲网址 | 亚洲熟女综合一区二区三区| 亚洲高清资源在线观看|