亞寵展、全球寵物產業風向標——亞洲寵物展覽會深度解析
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.不支持目錄級別的可寫快照
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小時內刪除侵權內容。