如何選擇文件系統:EXT4、Btrfs 和 XFS
![](https://linuxstory.org/wp-content/uploads/2024/06/105057apy6dlybkikld9kt-800x400.jpg)
老實說,人們最不曾思考的問題之一是他們的個人電腦中使用了什麼文件系統。Windows 和 Mac OS X 用戶更沒有理由去考慮,因為對於他們的操作系統,只有一種選擇,那就是 NTFS 和 HFS+。相反,對於 Linux 系統而言,有很多種文件系統可以選擇,現在默認的是廣泛採用的 ext4。然而,現在也有改用一種稱為 btrfs 文件系統的趨勢。那是什麼使得 btrfs 更優秀,其它的文件系統又是什麼,什麼時候我們又能看到 Linux 發行版作出改變呢?
首先讓我們對文件系統以及它們真正幹什麼有個總體的認識,然後我們再對一些有名的文件系統做詳細的比較。
文件系統是幹什麼的?
如果你不清楚文件系統是幹什麼的,一句話總結起來也非常簡單。文件系統主要用於控制所有程序在不使用數據時如何存儲數據、如何訪問數據以及有什麼其它信息(元數據)和數據本身相關,等等。聽起來要編程實現並不是輕而易舉的事情,實際上也確實如此。文件系統一直在改進,包括了更多的功能、更高效地完成它需要做的事情。總而言之,它是所有計算機的基本需求、但並不像聽起來那麼簡單。
為什麼要分區?
由於每個操作系統都能創建或者刪除分區,很多人對分區都有模糊的認識。Linux 操作系統即便使用標準安裝過程,在同一塊磁碟上仍使用多個分區,這看起來很奇怪,因此需要一些解釋。擁有不同分區的一個主要目的就是為了在災難發生時能獲得更好的數據安全性。
通過將硬碟劃分為分區,數據會被分隔以及重組。當事故發生的時候,只有存儲在被損壞分區上的數據會被破壞,很大可能上其它分區的數據能得以保留。這個原因可以追溯到 Linux 操作系統還沒有日誌文件系統、任何電力故障都有可能導致災難發生的時候。
使用分區也考慮到了安全和健壯性原因,因此操作系統部分損壞並不意味著整個計算機就有風險或者會受到破壞。這也是當前採用分區的一個最重要因素。舉個例子,用戶創建了一些會填滿磁碟的腳本、程序或者 web 應用,如果該磁碟只有一個大的分區,如果磁碟滿了那麼整個系統就不能工作。如果用戶把數據保存在不同的分區,那麼就只有那個分區會受到影響,而系統分區或者其它數據分區仍能正常運行。
記住,擁有一個日誌文件系統只能在掉電或者和存儲設備意外斷開連接時提供數據安全性,並不能在文件系統出現壞塊或者發生邏輯錯誤時保護數據。對於這種情況,用戶可以採用 廉價磁碟冗餘陣列 的方案。
為什麼要切換文件系統?
ext4 文件系統由 ext3 文件系統改進而來,而後者又是從 ext2 文件系統改進而來。雖然 ext4 文件系統已經非常穩定,是過去幾年中絕大部分發行版的默認選擇,但它是基於陳舊的代碼開發而來。另外, Linux 操作系統用戶也需要很多 ext4 文件系統本身不提供的新功能。雖然通過某些軟體能滿足這種需求,但性能會受到影響,在文件系統層次做到這些能獲得更好的性能。
Ext4 文件系統
ext4 還有一些明顯的限制。最大文件大小是 16 tebibytes(大概是 17.6 terabytes),這比普通用戶當前能買到的硬碟還要大的多。使用 ext4 能創建的最大卷/分區是 1 exbibyte(大概是 1,152,921.5 terabytes)。通過使用多種技巧, ext4 比 ext3 有很大的速度提升。類似一些最先進的文件系統,它是一個日誌文件系統,意味著它會對文件在磁碟中的位置以及任何其它對磁碟的更改做記錄。縱觀它的所有功能,它還不支持透明壓縮、重複數據刪除或者透明加密。技術上支持了快照,但該功能還處於實驗性階段。
Btrfs 文件系統
btrfs 有很多不同的叫法,例如 Better FS、Butter FS 或者 B-Tree FS。它是一個幾乎完全從頭開發的文件系統。btrfs 出現的原因是它的開發者起初希望擴展文件系統的功能使得它包括快照、 池化 、校驗以及其它一些功能。雖然和 ext4 無關,它也希望能保留 ext4 中能使消費者和企業受益的功能,並整合額外的能使每個人,尤其是企業受益的功能。對於使用大型軟體以及大規模資料庫的企業,讓多種不同的硬碟看起來一致的文件系統能使他們受益並且使數據整合變得更加簡單。刪除重複數據能降低數據實際使用的空間,當需要鏡像一個單一而巨大的文件系統時使用 btrfs 也能使數據鏡像變得簡單。
用戶當然可以繼續選擇創建多個分區從而無需鏡像任何東西。考慮到這種情況,btrfs 能橫跨多種硬碟,和 ext4 相比,它能支持 16 倍以上的磁碟空間。btrfs 文件系統一個分區最大是 16 exbibytes,最大的文件大小也是 16 exbibytes。
XFS 文件系統
XFS 文件系統是 擴展文件系統 的一個擴展。XFS 是 64 位高性能日誌文件系統。對 XFS 的支持大概在 2002 年合併到了 Linux 內核,到了 2009 年,紅帽企業版 Linux 5.4 也支持了 XFS 文件系統。對於 64 位文件系統,XFS 支持最大文件系統大小為 8 exbibytes。XFS 文件系統有一些缺陷,例如它不能壓縮,刪除大量文件時性能低下。目前RHEL 7.0 文件系統默認使用 XFS。
總結
不幸的是,還不知道 btrfs 什麼時候能到來。官方說,其下一代文件系統仍然被歸類為「不穩定」,但是如果用戶下載最新版本的 Ubuntu,就可以選擇安裝到 btrfs 分區上。什麼時候 btrfs 會被歸類到 「穩定」 仍然是個謎, 直到真的認為它「穩定」之前,用戶也不應該期望 Ubuntu 會默認採用 btrfs。有報道說 Fedora 18 會用 btrfs 作為它的默認文件系統,因為到了發布它的時候,應該有了 btrfs 文件系統校驗器。由於還沒有實現所有的功能,另外和 ext4 相比性能上也比較緩慢,btrfs 還有很多的工作要做。
那麼,究竟使用哪個更好呢?儘管性能幾乎相同,但 ext4 還是贏家。為什麼呢?答案在於易用性以及廣泛性。對於桌面或者工作站, ext4 仍然是一個很好的文件系統。由於它是默認提供的文件系統,用戶可以在上面安裝操作系統。同時, ext4 支持最大 1 exabytes 的卷和 16 terabytes 的文件,因此考慮到大小,它也還有很大的進步空間。
btrfs 能提供更大的高達 16 exabytes 的卷以及更好的容錯,但是,到現在為止,它感覺更像是一個附加的文件系統,而部署一個集成到 Linux 操作系統的文件系統。比如,儘管 btrfs 支持不同的發行版,使用 btrfs 格式化硬碟之前先要有 btrfs-tools 工具,這意味著安裝 Linux 操作系統的時候它並不是一個可選項,即便不同發行版之間會有所不同。
儘管傳輸速率非常重要,評價一個文件系統除了文件傳輸速度之外還有很多因素。btrfs 有很多好用的功能,例如 寫複製 、擴展校驗、快照、清洗、自修複數據、冗餘刪除以及其它保證數據完整性的功能。和 ZFS 相比 btrfs 缺少 RAID-Z 功能,因此對於 btrfs, RAID 還處於實驗性階段。對於單純的數據存儲,和 ext4 相比 btrfs 似乎更加優秀,但時間會驗證一切。
迄今為止,對於桌面系統而言,ext4 似乎是一個更好的選擇,因為它是默認的文件系統,傳輸文件時也比 btrfs 更快。btrfs 當然值得嘗試、但要在桌面 Linux 上完全取代 ext4 可能還需要一些時間。數據場和大存儲池會揭示關於 ext4、XCF 以及 btrfs 不同的場景和差異。
如果你有不同或者其它的觀點,在下面的評論框中告訴我們吧。
via: http://www.unixmen.com/review-ext4-vs-btrfs-vs-xfs/
作者:M.el Khamlichi 譯者:ictlyh 校對:Caroline
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive