隨著Linux的不斷發展,Linux所支持的文件系統類型也在迅速 擴充。伴隨著 Linux 2.4 版本的發行,出現了大量的文件系統可能性,其中包括 ReiserFS、XFS、JFS 和其它文件系統。每一個不同版本的Linux所支持的文件系統類型種類都有所不同,如何知道自己的Linux發行版本的類型哪?可以這樣操作:(以筆者使 用的Mandrake Linux 8.2為例,)
以超級用戶權限登陸Linux,進入/Lib/modules/2.4.18-6mdk/kernel/fs目錄執行命令(不同Linux發行版本的Fs目錄有些不同你可以用查找FS文件夾的方法找到它):
#ls
Mandrake Linux 支持的文件系統類型
/Lib/modules/2.4.18-6mdk/kernel/fs中查出當前系統所支持的文件系統種類。從圖-1中可以看到筆者使用的 Mandrake Linux 8.2支持的文件系統非常多。Linux系統核心支持十多種文件系統類型:jfs、 ReiserFS、ext、ext2、ext3、iso9660、xfs、 minx、msdos、umsdos、Vfat、NTFS、Hpfs、Nfs、smb、sysv、proc等。
這裡我們對最常用的幾個文件系統的發展情況和優缺點作詳細介紹:ext、ext2、ext3、jsf、 、xfs、ReiserFS。
一、 ext
ext是第一個專門為Linux的文件系統類型,叫做擴展文件系統。它在1992年4月完成的。它為Linux的發展取得了重要作用。但是在性能和兼容性上存在許多缺陷。現在已經很少使用了。
二、 ext2
ext2是為解決ext文件系統的缺陷而設計的可擴展的高性能的文件系統。又被稱為二級擴展文件系統。它是在1993年發布的,設計者是Rey Card。ext2是Linux文件系統類型中使用最多的格式。並且在速度和CPU利用率上較突出,是 GNU/Linux 系統中標准的文件系統,其特點為存取文件的性能極好,對於中小型的文件更顯示出優勢,這主要得利於其簇快取層的優良設計。Ext2 可以支持256字節的長文件名,其單一文件大小與文件系統本身的容量上限與文件系統本身的簇大小有關,在一般常見的Intel x86兼容處理器的系統中,簇最大為 4KB, 則單一文件大小上限為 2048GB, 而文件系統的容量上限為 6384GB。盡管Linux可以支持種類繁多的文件系統,但是2000年以前幾乎所有的Linux發行版都用ext2作為默認的文件系統。
ext2的缺點:ext2的設計者主要考慮的是文件系統性能方面的問題。ext2在寫入文件內容的同時並沒有同時寫入文件的meta-data (和文件有關的信息,例如:權限、所有者以及創建和訪問時間)。換句話說,Linux先寫入文件的內容,然後等到有空的時候才寫入文件的meta- data。這樣若出現寫入文件內容之後但在寫入文件的meta-data之前系統突然斷電,就可能造成在文件系統就會處於不一致的狀態。在一個有大量文件 操作的系統中出現這種情況會導致很嚴重的後果。另外但由於目前核心 2.4 所能使用的單一分割區最大只有 2048GB,盡管文件系統的容量上限為 6384G但是實際上能使用的文件系統容量最多也只有 2048GB。
三、 ext3
ext3是由開放資源社區開發的日志文件系統,主要開發人員是Stephen tweedie。ext3被設計成是ext2的升級版本,盡可能地方便用戶從ext2fs向ext3fs遷移。ext3在ext2的基礎上加入了記錄元數 據的日志功能,努力保持向前和向後的兼容性。這個文件系統被稱為ext2的下一個版本。也就是在保有目前 ext2 的格式之下再加上日志功能。ext3是一種日志式文件系統。日志式文件系統的優越性在於:由於文件系統都有快取層參與運作,如不使用時必須將文件系統卸 下,以便將快取層的資料寫回磁盤中。因此每當系統要關機時,必須將其所有的文件系統全部卸下後才能進行關機。如果在文件系統尚未卸下前就關機 (如停電) 時,下次重開機後會造成文件系統的資料不一致,故這時必須做文件系統的重整工作,將不一致與錯誤的地方修復。然而,此一重整的工作是相當耗時的,特別是容 量大的文件系統,而且也不能百分之百保證所有的資料都不會流失。故這在大型的伺服器上可能會造成問題。
ext3的缺點:其最大的缺點是沒有現代文件系統所具有的能提高文件數據處理速度和解壓的高性能,另外使用ext3文件系統時要注意硬盤限額問題,在這個問題解決之前,不推薦在重要的企業應用上采用ext3+disk quota(磁盤配額)。
四、 jsf
jsf提供了基於日志的字節級文件系統,該文件系統是為面向事務的高性能系統而開發的。jsf(Journaled File System Technology for Linux)的開發者包括AIX(IBM的Unix)的jsf的主要開發者。在AIX上,jfs已經經受住了考驗。它是可靠、快速和容易使用的。2000 年2月,ibm宣布在一個開放資源許可證下,移植linux版的JSF文件系統。JSFs也是一個有大量用戶安裝使用的企業級文件系統。它具有可伸縮性和 健壯性,與非日志文件系統相比,它的優點是其快速重啟能力:Jfs 能夠在幾秒或幾分鐘內就把文件系統恢復到一致狀態。雖然 jsf 主要是為滿足服務器(從單處理器系統到高級多處理器和群集系統)的高吞吐量和可靠性需求而設計的,jsf 還可用於想得到高性能和可靠性的客戶機配置因為在系統崩潰時,jsf 能提供快速文件系統重啟時間,所以它是因特網文件服務器的關鍵技術。使用數據庫日志處理技術,jsf 能在幾秒或幾分鐘之內把文件系統恢復到一致狀態。而在非日志文件系統中,文件恢復可能花費幾小時或幾天。
jsf的缺點:使用jsf日志文件系統,性能上會有一定損失,系統資源占用的比率也偏高。是因為當它保持一個日志時,系統需要寫許多數據。
五、ReiserFS
ReiserFS的第一次公開亮相是在1997年7月23日,Hans Reiser把他的基於平衡樹結構的ReiserFS文件系統在網上公布。ReiserFS 3.6.x(作為 Linux 2.4 一部分的版本)是由 Hans Reiser 和他的在Namesys 的開發組共同開發設計的。Hans 和他的組員們相信最好的文件系統是那些能夠有助於創建獨立的共享環境或者命名空間的文件系統,應用程序可以在其中更直接、有效和有力地相互作用。為了實現 這一目標,文件系統就應該滿足其使用者對性能和功能方面的需要。那樣,使用者就能夠繼續直接地使用文件系統,而不必建造運行在文件系統之上(如數據庫之 類)的特殊目的層。Reise
rFS 使用了特殊的優化 b* 平衡樹(每個文件系統一個)來組織所有的文件系統數據。這為其自身提供了非常不錯的性能改進,也能夠減輕文件系統設計上的人為約束。例如,現在一個目錄下 可以容納 ext00,000 個子目錄。另一個使用 b* 樹的好處就是 ReiserFS 能夠像大多其它的下一代文件系統一樣,根據需要動態地分配索引節,而不必在文件系統創建時建立固定的索引節。這有助於文件系統更靈活地適應其面臨的各種存 儲需要,同時提供附加的空間有效率。
Reiserfs被看作是一個更加激進和現代的文件系統。傳統的UNIX文件系統是按盤塊來進行空間分配的,對於目錄和文件等的查找使用了簡單的線性查 找。這些設計在當時是合適的,但隨著磁盤容量的增大和應用需求的增加,傳統文件系統在存儲效率,速度和功能上已顯落後。在reiserfs的下一版 reiser4中還提供了對事務的支持。在[url]http://www.namesys.com/v4/v4.html[/url] 中有reiser4的介紹和一個簡單的reiser4的性能測試。
ReiserFS的缺點:ReiserFS一個最受人批評的缺點是每升級一個版本,都將要將磁盤重新格式化一次。你可以在[url]http://www.namesys.com/[/url] 網站了解關於 ReiserFS 的更多信息。
六、Xfs
xfs是一種非常優秀的日志文件系統,它是SGI公司設計的。xfs被稱為業界最先進的、最具可升級性的文件系統技術。它是一個全64位,快速、穩固的日 志文件系統,多年用於SGI的IRIX操作系統。sgi決定支持Linux社區,將關鍵的基本架構技術授權於Linux。它以開放資源形式發布了他們自己 擁有的xfs的源代碼,並開始進行移植。此工作進展得很快,目前已進入beta版階段。作為一個64位文件系統,xfs可以支持超大數量的文件(9g× 1gb,甚至更大的18g×1gb),可在大型 2d 和 3d 數據方面提供顯著的性能。xfs有能力預測其它文件系統薄弱環節,同時xfs提供了在不妨礙性能的情況下增強可靠性和快速的事故恢復。SGI的xfs可為 linux和開放資源社區帶來的新特性有:可升級性:xfs被設計成可升級,以面對大多數的存儲容量和i/o存儲需求,可處理大型文件和包含巨大數量文件 的大型目錄,滿足二十一世紀快速增長的磁盤需求。xfs有能力動態地為文件分配索引空間,使系統形成高效支持大數量文件的能力。在它的支持下,用戶可使用 1exabyte (1g×1gb) 大的文件,遠遠大於現在最大的文件系統。優秀的i/o 性能:典型的現代服務器使用大型的條帶式磁盤陣列,以提供達數gb/秒的總帶寬。xfs可以很好地滿足I/O請求的大小和並發I/O請求的數量。 xfs 可作為root文件系統,並被lilo支持.在NFS服務器上使用也沒問題.支持軟件磁盤陣列(RAID)和虛擬集群(LVM)。SGI最新發布xfs為 1.0.1版.(在:[url]http://http://oss.sgi.com/projects/xfs/[/url] 可以下載它)。
xfs的缺點:由於xfs比較復雜,實施起來有一些難度,所以目前xfs主要應用於Linux企業應用的高端。
其他文件系統簡介:
Minix:Llnux支持的第一個文件系統,對用戶有很多限制而且性能低下。有些沒有時間標記,其文件名最長l 4個字符。minix 文件系統最大的缺點是最大只能使用64M 的硬盤分區,所以在目前已經沒有人使用它了。
Xia:Minix文件系統修正後的版本。在一定程度上解決了文件名和文件系統大小的局限。但沒有新的特色,目前很少有人使用。
Msdos:msdos 是在Dos、Windows和某些OS/2 操作系統上使用的一種文件系統,其名稱采用“8+3”的形式,即8個字符的文件名加上3個字符的擴展名。
umsdos: Linux下的擴展msdos文件系統驅動,支持長文件名、所有者、允許權限、連接和設備文件。允許一個普通的msdo s文件系統用於Linux,而且無須為它建立單獨的分區。
iso9660: 標准CDROM文件系統,通用的Rock Ridge增強系統,允許長文件名。
Vfat:vfat是Windows9x 和 Windows NT/2000下使用的一種Dos文件系統,其在 Dos 文件系統的基礎上增加了對長文件名的支持。
Nfs: Sun公司推出的網絡文件系統,允許多台計算機之間共享同一文件系統,易於從所有這些計算機上存取文件。
Hpfs: High Performance File System(HPFS) 高性能文件系統(HPFS) HPFS是Microsoft的LAN Manager中的文件系統,同時也是IBM的LAN Server和OS/2的文件系統。HPFS能訪問較大的硬盤驅動器,提供更多的組織特性並改善了文件系統的安全特性。
Smb:smb是一種支持 Windows for workgroups、Windows NT 和Lan Manager的基於SMB協議的網絡操作系統。
Sysv: sysv文件系統實際上是System V/Coherent 在Linux平台上的文件系統。
Ncpfs:ncpfs是一種Novell NetWare 使用的NCP協議的網絡操作系統。
Proc:proc是Linux 系統中作為一種偽文件系統出現的,它用來作為連接內核數據結構的界面。
NTFS:微軟Windows NT內核的系列操作系統支持的、一個特別為網絡和磁盤配額、文件加密等管理安全特性設計的磁盤格式