linux 檔案系統對比

2021-09-26 23:38:58 字數 3531 閱讀 7161

本文將對linux下常見的幾種檔案系統進行對比,包括ext2、ext3、ext4、xfs和btrfs,希望能幫助大家更好的選擇合適的檔案系統。

歷史

檔案系統

建立者建立時間

最開始支援的平台

ext2

rémy card

1993

linux,hurd

xfssgi

1994

irix, linux, freebsd

ext3

dr. stephen c. tweedie

1999

linux

zfssun

2004

solaris

ext4

眾多開發者

2006

linux

btrfs

oracle

2007

linux

大小限制

檔案系統

最大檔名長度

最大檔案大小

最大分割槽大小

ext2

255 bytes

2 tb

16 tb

ext3

255 bytes

2 tb

16 tb

ext4

255 bytes

16 tb

1 eb

xfs255 bytes

8 eb

8 eb

btrfs

255 bytes

16 eb

16 eb

最大檔案和分割槽大小受格式化分割槽時所採用的塊大小(block size)所影響,塊越大,所支援的最大檔案和分割槽越大,也越可能浪費磁碟空間,上表列出的資料基於4k的塊大小。

**規模

從**規模可以看出檔案系統的功能豐富程度以及複雜度,下面列出的資料來自於kernel-4.1-rc8,只是簡單的用wc -l來統計,沒有過濾空行、注釋等。

檔案系統

原始檔(.c)

標頭檔案(.h)

ext2

8363

1016

ext3

16496

1567

ext4

44650

4522

xfs89605

15091

btrfs

105254

7933

ext2

ext的優點是比較簡單,檔案比較少時效能較好,比較適合檔案少的場景,主要缺點如下

ext3

ext3在ext2的基礎上實現了下面幾個功能,其它的都保持不變,即ext2的缺點ext3也有

ext4

ext4借鑑了當前成熟的一些檔案系統技術,在ext3上增加了一些功能,並且對效能做了一些改進,主要變化如下

這裡是乙個檢視檔案/etc/fstab建立時間的例子(檔案存在/dev/sda1分割槽上):

dev@ubuntu:~$ ls -i /etc/fstab 

10747906 /etc/fstab 

dev@ubuntu:~$ sudo debugfs -r 'stat <10747906>' /dev/sda1 

inode: 10747906   type: regular    mode:  0644   flags: 0x80000 

links: 1   blockcount: 8 

ctime: 0x5546dc54:6e6bc80c -- sun may  3 22:41:24 2015 

atime: 0x55d1b014:8bcf7b44 -- mon aug 17 05:57:40 2015 

mtime: 0x5546dc54:6e6bc80c -- sun may  3 22:41:24 2015 

crtime: 0x5546dc54:6e6bc80c -- sun may  3 22:41:24 2015 

size of extra inode fields: 28 

extents: (0):46712815  

extents: 在最開始的ext2檔案系統中,資料塊都是乙個乙個單獨管理的,inode中存有指向資料塊的指標,檔案占用了多少個資料塊,inode裡面就有多少個指標(多級),想象一下乙個1g的檔案,4k的塊大小,那麼需要(1024 * 1024)/4=262144個資料塊,即需要262144個指標,建立檔案的時候需要初始化這些指標,刪除檔案的時候需要**這些指標,影響效能。現代的檔案系統都支援extents的功能,簡單點說,extent就是資料塊的集合,以前一次分配乙個資料塊,現在可以一次分配乙個extent,裡面包含很多資料塊,同時inode裡面只需要分配指向extent的指標就可以了,從而大大減少了指標的數量和層級,提高了大檔案操作的效能。

inode數量固定: 在ext2/3/4系列的檔案系統中,inode的數量都是固定的,壞處是如果存很多小檔案的話,有可能造成inode被用光,但磁碟還有很多剩餘空間無法被使用的情況,不過它也有乙個好處,就是一旦磁碟損壞,恢復起來要相對簡單些,因為資料在磁碟上布局相對要固定簡單。

xfs

和ext4相比,xfs不支援下面這些功能

但xfs有下面這些特性

btrfs

btrfs是乙個和zfs類似的檔案系統,支援的功能非常多,據說將來會替換ext4成為linux下的預設檔案系統。這裡列舉一些重要的功能

如何選擇

下表僅供參考

檔案系統

適用場景

原因ext2

u盤u盤一般不會存很多檔案,且u盤的檔案在電腦上有備份,安全性要求沒那麼高,由於ext2不寫日誌(journal),所以寫u盤效能比較好。當然由於ext2的相容性沒有fat好,目前大多數u盤格式還是用fat

ext3

對穩定性要求高的地方

有了ext4後,好像沒什麼原因還要用ext3,ext4現在的問題是出來時間不長,還需要一段時間變穩定

ext4

小檔案較少

ext系列的檔案系統都不支援inode動態分配,所以如果有大量小檔案需要儲存的話,不建議用ext4

xfs小檔案多或者需要大的xttr空間,如openstack swift將資料檔案的元資料放在了xttr裡面

xfs支援inode動態分配,所以不存在inode不夠的情況,並且xttr的最大長度可以達到64k

btrfs

沒有頻繁的寫操作,且需要btrfs的一些特性

btrfs雖然還不穩定,但支援眾多的功能,如果你需要這些功能,且不會頻繁的寫檔案,那麼選擇btrfs

另外,ext系列檔案系統內部結構相對簡單一些,出問題後恢復相對容易。

結束語

本篇沒有比較它們的效能,在通常情況下,他們之間沒有太大的效能差別,只有在特定的場景下,才能看出區別,如果對效能比較敏感,建議根據自己的使用場景來測試不同的檔案系統,然後根據結果來選擇。

Linux下常見檔案系統的對比

本文將對linux下常見的幾種檔案系統進行對比,包括ext2 ext3 ext4 xfs和btrfs,希望能幫助大家更好的選擇合適的檔案系統。內容來自於網上找的資料以及自己的一些經驗,能力有限,錯誤在所難免,僅供參考 歷史 檔案系統 建立者建立時間 最開始支援的平台 ext2 r my card 1...

Linux下常見檔案系統的對比

本文將對linux下常見的幾種檔案系統進行對比,包括ext2 ext3 ext4 xfs和btrfs,希望能幫助大家更好的選擇合適的檔案系統。內容來自於網上找的資料以及自己的一些經驗,能力有限,錯誤在所難免,僅供參考 歷史 檔案系統 建立者建立時間 最開始支援的平台 ext2 r my card 1...

linux 檔案系統 Linux 檔案系統結構介紹

ubuntu 像所有類unix系統一樣 在分層樹中組織檔案,其中的關係就像父母和孩子一樣。目錄可以包含其他目錄以及常規檔案,它們是樹的 葉子 樹的任何元素都可以通過路徑名引用 絕對路徑以字元 標識根目錄,其中包含所有其他目錄和檔案 開頭,然後列出必須遍歷以到達該元素的每個子目錄,每個子目錄用 符號分...