ext2:早期linux中常用的檔案系統
ext3:ext2的更新版,帶日志功能
RAMFS:記憶體檔案系統,速度很快
NFS:網絡檔案系統,由SUN發明,主要用于遠端檔案共享
MS-DOS:MS-DOS檔案系統
VFAT:Windows95/98作業系統采用的檔案系統
FAT:WindowsXP作業系統采用的檔案系統
NTFS:WindowsNT/XP作業系統采用的檔案系統
HPFS:OS/2作業系統采用的檔案系統
PROC:虛拟的程序檔案系統
ISO9660:大部分CD光牒所采用的檔案系統
ufsSun:OS所采用的檔案系統
NCPFS:Novell伺服器所采用的檔案系統
SMBFS:Samba的共享檔案系統
XFS:由SGI開發的先進的日志檔案系統,支援超大容量檔案
JFS:IBM的AIX使用的日志檔案系統
ReiserFS:基于平衡樹結構的檔案系統
udf:可擦寫的資料CD光牒檔案系統
檢視 Linux 支援的檔案系統有哪些,可以察看底這個目錄:
[root@www ~]# ls -l /lib/modules/$(uname -r)/kernel/fs
系統目前已加載到記憶體中支援的檔案系統則有:
[root@www ~]# cat /proc/filesystems
檢視各分區的檔案系統:
[root@www ~]# df -lhT
檢視檔案系統參數
[root@www ~]# tune2fs -l /dev/sda2
ext2
ext2檔案系統的資料塊大小一般為1024B、2048B或4096B
ext2檔案系統采用的索引節點(inode):索引節點采用了多重索引結構,主要展現在直接指針和3個間接指針。直接指針包含12個直接指針塊,它們直接指向包含檔案資料的資料塊,緊接在後面的3個間接指針是為了适應檔案的大小變化而設計的。
e.g:假設資料塊大小為1024B,利用12個直接指針,可以儲存最大為12KB的檔案,當檔案超過12KB時,則要利用單級間接指針,該指針指向的資料塊儲存有一組資料塊指針,這些指針依次指向包含有實際資料的資料塊,假如每個指針占用4B,則每個單級指針資料塊可儲存1024/4=256個資料指針,是以利用直接指針和單級間接指針可儲存1024*12+1024*256=268KB的檔案。
當檔案超過268KB時,再利用二級間接指針,直到使用三級間接指針。利用直接指針、單級間接指針、二級間接指針、三級間接指針可儲存的最大檔案大小為:1024*12+1024*256+1024*256*256+1024*256*256*256=16843020KB,約16GB,若資料塊大小為2048B,指針占4B,則最大檔案大小為:2048*12+2048*512+2048*512*512+2048*512*512*512=268,960,792KB約268GB
若資料塊大小為4096B,指針占4B,則最大檔案大小為:4096*12+4096*1024+4096*1024*1024+4096*1024*1024*1024=4,299,165,744KB,約4TB
注:ext2檔案系統最大檔案名長度:255個字元
ext2檔案系統的缺點:
ext2在寫入檔案内容的同時并沒有同時寫入檔案meta-data,其工作順序是先寫入檔案的内容,然後等空閑時候才寫入檔案的meta-data。若發生意外,則檔案系統就會處于不一緻狀态。在重新啟動系統的時候,linux會啟動fsk(filesystemcheck)的程式,掃描整個檔案系統并試圖修複,但不提供保證。
ext3
ext3基于ext2的代碼,是以磁盤格式與ext2相同,使用相同的中繼資料。
ext2檔案系統無損轉化為ext3檔案系統:
[root@www ~]# tune2fs -j /dev/sda2
日志塊裝置(Journalingblockdevicelayer,JBD)完成ext3檔案系統日志功能。JBD不是ext3檔案系統所特有的,它的設計目标是為了向一個塊裝置添加日志功能。當一個檔案修改執行時,ext3檔案系統代碼将通知JBD,稱為一個事務(transaction)。發生意外時,日志功能具有的重放功能,能重新執行中斷的事務。
日志中的3種資料模式:
1)data=writeback:不處理任何形式的日志資料,給使用者整體上的最高性能
2)data=odered:隻記錄中繼資料日志,但将中繼資料和資料組成一個單元稱為事務(transaction)。此模式保持所句句的可靠性與檔案系統的一緻性,性能遠低于data=writeback模式,但比data=journal模式快
3)data=journal:提供完整的資料及中繼資料日志,所有新資料首先被寫入日志,然後才被定位。意外發生過後,日志可以被重放,将資料與中繼資料帶回一緻狀态。這種模式整體性能最慢,但資料需要從磁盤讀取和寫入磁盤時卻是3種模式中最快的。
ext3檔案系統最大檔案名長度:255個字元
ext3檔案系統的優點:可用性、資料完整性、速度、相容性
ext3與ext4的主要差別
Linux kernel自2.6.28開始正式支援新的檔案系統 Ext4, Ext4是Ext3的改進版,修改了Ext3中部分重要的資料結構,而不僅僅像Ext3對Ext2那樣,隻是增加了一個日志功能而已。Ext4 可以提供更佳的性能和可靠性,還有更為豐富的功能:
1.與Ext3相容。執行若幹條指令,就能從Ext3線上遷移到Ext4,而無須重新格式化磁盤或重新安裝系統。原有Ext3資料結構照樣保留,Ext4作用于新資料,當然,整個檔案系統是以也就獲得了Ext4所支援的更大容量。
2.更大的檔案系統和更大的檔案。較之Ext3目前所支援的最大16TB檔案系統和最大2TB檔案,Ext4分别支援1EB(1,048,576TB,1EB=1024PB,1PB=1024TB)的檔案系統,以及16TB 的檔案。
3.無限數量的子目錄。Ext3目前隻支援32,000個子目錄,而Ext4支援無限數量的子目錄。
4.Extents。Ext3 采用間接塊映射,當操作大檔案時,效率極其低下。比如一個 100MB 大小的檔案,在Ext3中要建立25,600個資料塊(每個資料塊大小為 4KB)的映射表。而Ext4引入了現代檔案系統中流行的extents概念,每個 extent 為一組連續的資料塊,上述檔案則表示為“該檔案資料儲存在接下來的25,600個資料塊中”,提高了不少效率。
5.多塊配置設定。當 寫入資料到 Ext3 檔案系統中時,Ext3 的資料塊配置設定器每次隻能配置設定一個 4KB 的塊,寫一個 100MB 檔案就要調用 25,600 次資料塊配置設定器,而 Ext4 的多塊配置設定器“multiblock allocator”(mballoc) 支援一次調用配置設定多個資料塊。
6.延遲配置設定。Ext3的資料塊配置設定政策是盡快配置設定,而 Ext4 和其它現代檔案作業系統的政策是盡可能地延遲配置設定,直到檔案在 cache 中寫完才開始配置設定資料塊并寫入磁盤,這樣就能優化整個檔案的資料塊配置設定,與前兩種特性搭配起來可以顯著提升性能。
7.快速 fsck。以前執行 fsck 第一步就會很慢,因為它要檢查所有的 inode,現在 Ext4 給每個組的 inode 表中都添加了一份未使用 inode 的清單,今後 fsck Ext4 檔案系統就可以跳過它們而隻去檢查那些在用的 inode 了。
8.日志校驗。日志是最常用的部分,也極易導緻磁盤硬體故障,而從損壞的日志中恢複資料會導緻更多的資料損壞。Ext4的日志校驗功能可以很友善地判斷日志資料是否損壞,而且它将 Ext3 的兩階段日志機制合并成一個階段,在增加安全性的同時提高了性能。
9.“無日志”(No Journaling)模式。日志總歸有一些開銷,Ext4允許關閉日志,以便某些有特殊需求的使用者可以借此提升性能。
10.線上碎片整理。盡管延遲配置設定、多塊配置設定和extents能有效減少檔案系統碎片,但碎片還是不可避免會産生。Ext4支援線上碎片整理,并将提供e4defrag工具進行個别檔案或整個檔案系統的碎片整理。
11.inode 相關特性。Ext4 支援更大的inode,較之Ext3預設的inode大小128位元組,Ext4為了在 inode 中容納更多的擴充屬性(如納秒時間戳或inode版本),預設inode大小為256位元組。Ext4 還支援快速擴充屬性(fast extended attributes)和inode保留(inodes reservation)。
12.持久預配置設定(Persistent preallocation)。 P2P 軟體為了保證下載下傳檔案有足夠的空間存放,常常會預先建立一個與所下載下傳檔案大小相同的空檔案,以免未來的數小時或數天之内磁盤空間不足導緻下載下傳失敗。 Ext4在檔案系統層面實作了持久預配置設定并提供相應的API(libc 中的 posix_fallocate()),比應用軟體自己實作更有效率。
13.預設啟用 barrier。磁 盤上配有内部緩存,以便重新調整批量資料的寫操作順序,優化寫入性能,是以檔案系統必須在日志資料寫入磁盤之後才能寫commit記錄,若commit 記錄寫入在先,而日志有可能損壞,那麼就會影響資料完整性。Ext4預設啟用barrier,隻有當barrier之前的資料全部寫入磁盤,才能寫 barrier之後的資料。(可通過“mount -o barrier=0″指令禁用該特性。)