免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1113 | 回复: 0
打印 上一主题 下一主题

Linux 支援的檔案系統小評測 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-01 09:46 |只看该作者 |倒序浏览

前幾天公司的電源瞬斷,我的一台使用 reiserfs 的主機就此再也無法開機:『root 檔案系統損毀』。後來拔硬碟到另外一台電腦做
fsck 之後是復活了,但也嚇出了我一身的冷汗。長久以來總一直聽到有關 reiserfs
的種種負面評論,親身體驗之後才知道真的不是一般的恐怖。於是興起來把我所有主機裡的 reiserfs 丟掉的念頭。
要轉換檔案系統是很麻煩沒錯。但最麻煩的是:該選擇哪一種檔案系統才好?Google
了半天,幾乎各種檔案系統都有其支持者和種種見証及說法讓人無所適從,甚至種種測試報告及使用心得,其結論都大異其趣,還真叫人不知該聽信哪一個才好。於
是我決定自己動手測試,畢竟自己動手測過,感覺才會實在。
測試環境:
       
               
                       
                                CPU:Intel(R) Pentium(R) 4 CPU 2.80GHz
                                RAM:1GB(其中約 600 MB 掛載為 tmpfs)
                                Kernel:2.6.29-RC1
                                Swap:(none)
                               
                       
               
       
參加測試的檔案系統簡介:
  •    
           
            ext2:老牌 Linux 檔案系統,不支援 journaling。
           
           
  •    
           
            ext3:當今各大 Linux 預設使用的檔案系統。支援 journaling。
           
           
  •    
           
            ext3 (data):加上 journal_data 功能的 ext3。
           
           
  •    
           
            ext4:ext3 的下一版本。已正式進入 kernel 2.6.28 中。
           
           
  •    
           
            reiserfs:號稱最快的 FS。Linux 上第一個支援 journaling 的檔案系統。
           
           
  •    
           
            reiserfs (data):加上 journal_data 功能的 reiserfs。
           
           
  •    
           
            reiser4:reiserfs 的下一版。(尚未進入 kernel 中)
           
           
  •    
           
            jfs:由 IBM 所開發的 journaling 型檔案系統。已停止開發。
           
           
  •    
           
            xfs:由 SGI 所開發的 journaling 型檔案系統。
           
           
  •    
           
            vfat:古老 DOS/Windows 檔案系統,不支援 journaling。
           
           
  •    
           
            ntfs:現今 Windows 的主流檔案系統。在 Linux 上是經由 fuse 來支援 ntfs。
           
           
  •    
           
            zfs:由 Sun 所開發的終極檔案系統。在 Linux 上是經由 fuse 來支援 zfs。
           
           
  •    
           
            btrfs:下一代 Linux 預設使用的檔案系統。已進入 kernel 2.6.29 RC1 的測試分支中。
           
           

測試方式:
  •    
           
            把 Swap 關掉。這是為了避免 Swap 到硬碟會影響測試結果。
           
           
  •    
           
            將650
            MB 掛載為 tmpfs。因為 1GB 的 RAM 太大了,故意減少 RAM 的空間。據說測試資料要是 RAM 的 2
            倍,結果才會較準確。不過要有塞資料給 tmpfs,它才會真的佔用 RAM 的空間,所以敝人計劃要塞 Debian Etch 的 iso
            檔進去,並把它當作資料來源。
           
           
  •    
           
            把 Debian Etch 的 iso 檔複製到 tmpfs 裡。
           
           
  •    
           
            掛載該 Debian Etch 的 iso 檔。因為 RAM 的讀取速度應該會遠大於硬碟的讀取速度,用 RAM 當資料來源比較不會影響到測試結果。
           
           
  •    
           
            開始將該 iso 裡的檔案及目錄複製到測試分割區裡。然後刪除約一半的檔案。如此重覆 24 次。這是模擬人們使用硬碟會不斷寫入刪除資料的動作,讓磁碟裡的資料散亂。最後將硬碟寫滿。
           
           
  •    
           
            再刪除一部份資料以空出空間做為測試用。如此硬碟裡的資料應該算是十分散亂了。
           
           
  •    
           
            開始測試資料的讀出、寫入、列出、搜尋、計算剩餘空間等等。並記錄其時間及 CPU Loading。
           
           

以下為測試結果:
        剛開始寫入硬碟的速度:
       
               
               

               
       
       
               
                btrfs 不愧是下一代 Linux 預設使用的檔案系統,速度實在驚人,竟然連 reiser4 都追不上。
               
               
                而 ext3 / jfs / xfs 就真的有待加強了。ext3 慢 btrfs 約 36%,jfs 慢 btrfs 約 40%,xfs 慢 btrfs 約 60%。
               
               
                而加上了 journal_data 功能的 reiserfs 及 ext3 就更慢了,因為所有的資料都要寫入硬碟 2 次。
               
               
                zfs 和 ntfs 由於是用 fuse 實作的,所以實在慢得可憐。
               
       
        在磁碟裡的資料散亂後,寫入硬碟的速度:
       
               
               

               
               
                看來,在磁碟裡的資料散亂後,btrfs 會有 fragment 的問題,速度上己被 reiser4 追過。但還是遙遙領先其它的檔案系統。
               
               
                此時,ext3 慢 btrfs 約 27%,jfs 慢 btrfs 約 30%,xfs 慢 btrfs 約 60%。
               
       
        fragment 的比率:
       
               
               

               
               
                這是資料在最剛開始及最後時,寫入速度的比較。jfs 的表現令人驚豔,但也慢了約 13%;btrfs 和 xfs 就有待加強了,約慢了 23% 左右。
               
               
                ntfs 和 zfs 也許不是 defragment 做得好,而可能是因為碟裡的資料是否散亂已不是速度的瓶頸 - 用 fuse 來實作的速度實在太慢了,慢到連磁碟 I/O 變慢了都不太影響到測試結果。 XD
               
       
        讀出、寫入、列出、搜尋、計算剩餘空間等等的效能表現:
       
               
               

               
               
                reiserfs 不愧是檔案系統的效能之王,佔據了前 1、2 名。而 jfs 則慢了 reiser4 約 40% 左右,xfs 則是慢了 reiser4 約 65% 左右。差距實在很大。
               
               
                不過在本測試中,操作的多是一些  500MB 大檔案的檔案系統其實並不公平。但個人認為 Linux 系統裡本來就是充斥著小檔案,所以其實也有必要如此測試才行。
               
               
                敝人也試著用 > 500MB 的大檔案來進行測試,除了 ntfs 和 zfs 之外,最慢的 jfs 也只比最快的 reiser4 慢約 13%,個人認為差距沒有想像中大。
               
               
                據
                說 xfs 在操作 > 1TB 的檔案的速度是其它檔案系統完全比不上的:xfs 要刪除一個 1TB 的檔案和刪除 1KB
                的檔案所花費的時間是一樣的;但若是 ext3 則可能要刪上幾個小時。但因為敝人實在沒有什麼操作 1TB
                檔案的機會,所以這個功能對敝人而言實在是英雄無用武之地。
               
               
                另外,每個人、甚至每個目錄操作檔案系統的習慣都不同,有的目錄(像
                /var)常在做讀寫動作;而 像 /usr 就讀取比較多,/home 則用ls、讀寫的機會比較高,find 和 du 因為會耗費大量磁磁
                I/O 敝人就不常用...一個測試要能完全模擬人們使用磁碟的習慣是不可能的。所以這個測試一定有其不準確的地方,僅供參考。
               
       
        CPU 使用量:
       
               
               

                如
                圖,藍色的是 %user,紅色的是 %system,而黃色的是 %iowait。大部份的檔案系統的 %user
                都不到2%,差距實在不大;ntfs 和 zfs 是運作在 user space,所以數據才會如此嚇人。而在 %system 上,xfs /
                jfs /ext3 都約在 10% 上下,其實算是不錯的了。reiserfs 約是 20%,而 btrfs
                則是33%,應該是還有很多的調整空間。xfs 竟然還有 18% 是 idle 的,實在太驚人了。要不是 xfs
                有著一些較為不足之處,其實敝人光看這個數據,真的會直接轉用 xfs。
               
       
        磁碟空間使用量:
       
               
               

               
               
                這個數據是指,當 zfs 塞滿後,用同樣的資料量去塞別的檔案系統,會佔用多少硬碟空間。
               
               
                xfs/btrfs/reiserfs/vfat/ntfs/jfs
                的比率十分接近,而 ext2/3/4 的表現就很糟了。使用ext2/3/4 會無謂得浪費很多硬碟空間,在本測試中,ext3 會比 xfs
                多佔用 12% 的硬碟空間,ext3 據說要再保留 10%的硬碟空間否則效能會嚴重下滑,想想真的是太超過了。zfs 則是磁碟空間使用量最大的。
               
               
                另
                外,圖中 btrfs 的硬碟使用率極佳,但在個人的測試裡,btrfs 只到約 86% 就回應已無可用空間,但 btrfs
                不是支援動態inode 嗎?真令人百思不解。最下方那條 btrfs (guess) 是假設,若那 14% 是被 btrfs 暗槓掉的話,那麼
                btrfs 真正的使用空間應該會再多上 16%,那麼它的使用空間就會比 zfs 更多了。
               
               
                請注意,隨著分割區大小的不同,以上的數據將會跟著不同。
               
       
敝人對以上各種檔案系統的評語:
        ext2:
       
  •       
                   
                    在隨身碟上可以考慮使用這個格式,以減少磁碟讀寫,延長隨身碟使用年限。
                   
                   
  •       
                   
                    無謂得浪費很多硬碟空間。
                   
                   

        ext3:
       
  •    
                   
                    因架構上的優勢及長年的開發測試,據說有著最可靠的回復能力。
                   
                   
  • 在掛載硬碟時,可用 -o journal_data 啟用 data journaling
                    功能。那麼,在寫入磁碟時,會先把資料內容先寫入journal
                    裡,然後再真的寫到磁碟上,如此能有效再進一步降低資料丟失的機率。不過因為資料會寫入磁碟 2 次,效能也會因而大幅下滑。
  •          
                   
                    沒有 undelete 功能。
                   
                   
  •          
                   
                    在開機時會視情況進行自我檢查。有時會等上半小時。非常令人不耐。ext4 據說有試著解決這個問題了。
                   
                    可用:
                   
                           
                                   
                                           
                                                    tune2fs -c 0 -i 1m /dev/hdXY
                                                   
                                                   
                                                   
                                           
                                   
                           
                   
                    來關閉 max-mount-counts,讓它不會在掛載多次後便進行 fsck;並設定 interval-between-checks 為 1 個月。
  •    
                   
                    除了 journal 會佔用大量的硬碟空間之外,有人建議至少要保留 10% 的未使用空間,否則會造成 ext3 效能低落。
                   
                   

        ext4:
       
  •       
                   
                    向前相容於 ext3,但有著更可靠的 checksumming in journal 功能。
                   
                   
  •       
                   
                    在個人測試中,速度可逼進 ext2。
                   
                   
  •       
                   
                    和 ext3 類似的,會無謂得浪費很多硬碟空間。
                   
                   
  • 加快了 fsck 的速度。
  •       
                   
                    可線上重整。
                   
                   

        reiserfs:
       
  •    
                   
                    速度飛快。這也是之前敝人選擇這種檔案系統的主因。
                   
                   
  •       
                   
                    和 ext3 一樣,也支援 data journaling 功能。不過效能也會大幅下滑。
                   
                   
  • 有些目錄的操作是非同步的,不太適合用於某些系統(像 postfix)上。
  •    
                   
                    會佔用較多的 CPU 及記憶體。較適合用於較新的電腦上。
                   
                   
  •    
                   
                    回復能力較差。常常有人抱怨說,硬碟裡的資料在不正常斷電後就一去不回了。
                   
                   
  •    
                   
                    掛載及卸載速度很慢,嚴重影響到開機速度。
                   
                   
  • 個人在使用時,偶爾偶爾在搬移檔案時會出現 Disk I/O 100% 超過 30 秒的怪事。
  •    
                   
                    隨著主要開發者入獄,開發工作幾近停頓了。
                   
                   

        reiser4:
       
  •       
                   
                    改進了 reiserfs 的眾多缺點,且速度比 reiserfs 更快!
                   
                   
  •       
                   
                    隨著主要開發者入獄,開發工作幾近停頓,應該不可能進入 kernel 了。
                   
                   

        xfs:
       
       
  •    
                   
                    在操作一些充斥著小檔案的目錄,或是在大量新增或移除檔案或目錄時,速度很慢。因此不太建議使用在 / 上。
                   
                   
  •    
                   
                    在操作 > 200MB 的檔案時有其優勢。但個人以 600MB 的檔案實測結果是相差無幾。
                   
                   
  •    
                   
                    可線上重整磁區。
                   
                   
  •    
                   
                    只要使用時日一久,效能下降得很嚴重。
                   
                   
  •    
                   
                    沒有 undelete 功能。
                   
                   
  •    
                   
                    有報告指出,在強迫關機後,甚至只是 umount,檔案可能因而損壞且難以復原。
                   
                   
  •       
                   
                    在所有的檔案系統中,佔用最少的 CPU Loading。
                   
                   
  • 掛載及卸載速度極快。
  •       
                   
                    仍在開發維護中。
                   
                   

        jfs:
       
  •    
                   
                    佔用較低的 CPU Loading。
                   
                   
  •    
                   
                    綜合比較起來,速度會比起 ext3 快上一些些。
                   
                   
  •    
                   
                    據說其修復能力可以和 ext3 比擬。
                   
                   
  •    
                   
                    磁碟較不容易有 fragment 的問題。
                   
                   
  • 掛載及卸載速度極快。
  •       
                   
                    可將 journal 放到另一顆硬碟上,不過在實作上是有點麻煩。
                   
                   
  • 在刪除大量檔案時速度很慢。
  •    
                   
                    雖然 IBM 開發這個磁碟系統時間超過 10 年,但在它在 Linux 真正普及之前就已停止開發了,所以使用的人並不多。所以是否有潛在的問題也未可知。
                   
                   
  • Debian Installer 預設就會提供 fsck.jfs。

        vfat:
       
  • 還是很常見於數位相機、數位攝影機、手機等等攜帶裝置中。
  •       
                   
                    速度中下,且不支援 journaling。
                   
                   
  • 磁碟 fragment 的問題很嚴重。

        ntfs:
       
  •       
                   
                    因為是經由 fuse 來支援 ntfs 的,所以速度很慢很慢。但對於還在使用 Window/Linux 雙系統的使用者而言,它仍是一個很重要的工具程式。
                   
                   
  • 在個人測試中常導致 Kernel Panic。

        zfs:
       
  • 雖然號稱是終極檔案系統,但因為授權的因素而無法進入 kernel 中,因而是經由 fuse 來支援 zfs 的,所以速度很慢很慢。在 Linux 上幾乎沒有競爭力。

        btrfs:
       
  •       
                   
                    基本上是為了向 zfs 看齊而開發出來的 Linux 終極檔案系統。
                   
                   
  •       
                   
                    支援一些很先進的磁碟功能,像是磁碟快照、磁碟陣列、動態掛載等等。
                   
                   
  •       
                   
                    在速度上也是傲視群倫。
                   
                   
  •       
                   
                    更可靠的 checksumming in journal 功能。
                   
                   
  •       
                   
                    有對 SSD 做最佳化。
                   
                   
  •       
                   
                    可線上重整磁區。
                   
                   
  •       
                   
                    尚在測試實驗階段,連基本架構都未定案。
                   
                   

於是,幾經考慮,在 btrfs 推出之前,在 ext3、reiserfs、jfs 和 xfs 等 4
種檔案系統之間,敝人的首選應該會是jfs - CPU Loading 低、硬碟使用率高、效能中上、回復能力佳。至於 IBM 已停止開發 jfs
一事,我想只好先不管了。
不過,關於資料回復一事,其實以上的評論大多來自網路一些使用者本身的使用經驗。但同是 ext3,有些人說它的回復能力是其它檔案系統所比不上的,但也有使用者回報他的 ext3 死了無數次。所以這些評論請頂多當作參考,不要太過相信呀!
而要讓磁碟資料長保安康,請確保:
  •    
           
            記憶體務必好好測過。有問題的記憶體是硬碟資料殺手。
           
           
  •    
           
            請安裝 UPS。電腦常不正常關機肯定會影響到磁碟資料的。
           
           
  •    
           
            要進行可能會 kernel panic 的動作,像測試 kernel module 前,請先祈禱。\n       
           
  •    
           
            備份、備份、備份,永遠不嫌少。
           
           

然後,再加點運氣,也許那些磁碟資料真能跟著您直到天長地久、海枯石爛呢!
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/28158/showart_1809323.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP