文件系統(tǒng) - 磁盤(pán)上組織文件的方法
文件系統(tǒng)是操作系統(tǒng)用于明確磁盤(pán)或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu);即在磁盤(pán)上組織文件的方法。也指用于存儲(chǔ)文件的磁盤(pán)或分區(qū),或文件系統(tǒng)種類(lèi)。操作系統(tǒng)中負(fù)責(zé)管理和存儲(chǔ)文件信息的軟件機(jī)構(gòu)稱(chēng)為文件管理系統(tǒng),簡(jiǎn)稱(chēng)文件系統(tǒng)。文件系統(tǒng)由三部分組成:與文件管理有關(guān)軟件、被管理文件以及實(shí)施文件管理所需數(shù)據(jù)結(jié)構(gòu)。從系統(tǒng)角度來(lái)看,文件系統(tǒng)是對(duì)文件存儲(chǔ)器空間進(jìn)行組織和分配,負(fù)責(zé)文件存儲(chǔ)并對(duì)存入的文件進(jìn)行保護(hù)和檢索的系統(tǒng)。具體地說(shuō),它負(fù)責(zé)為用戶(hù)建立文件,存入、讀出、修改、轉(zhuǎn)儲(chǔ)文件,控制文件的存取,當(dāng)用戶(hù)不再使用時(shí)撤銷(xiāo)文件等。

系統(tǒng)簡(jiǎn)介
文件的系統(tǒng)是操作系統(tǒng)用于明確磁盤(pán)或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu);即在磁盤(pán)上組織文件的方法。也指用于存儲(chǔ)文件的磁盤(pán)或分區(qū),或文件系統(tǒng)種類(lèi)。因此,可以說(shuō)"我有2個(gè)文件系統(tǒng)"意思是他有2個(gè)分區(qū),一個(gè)存文件,或他用"擴(kuò)展文件系統(tǒng)",意思是文件系統(tǒng)的種類(lèi)。
磁盤(pán)或分區(qū)和它所包括的文件系統(tǒng)的不同是很重要的。少數(shù)程序(包括最有理由的產(chǎn)生文件系統(tǒng)的程序)直接對(duì)磁盤(pán)或分區(qū)的原始扇區(qū)進(jìn)行操作;這可能破壞一個(gè)存在的文件系統(tǒng)。大部分程序基于文件系統(tǒng)進(jìn)行操作,在不同種文件系統(tǒng)上不能工作。
一個(gè)分區(qū)或磁盤(pán)能作為文件系統(tǒng)使用前,需要初始化,并將記錄數(shù)據(jù)結(jié)構(gòu)寫(xiě)到磁盤(pán)上。這個(gè)過(guò)程就叫建立文件系統(tǒng)。
大部分UNIX文件系統(tǒng)種類(lèi)具有類(lèi)似的通用結(jié)構(gòu),即使細(xì)節(jié)有些變化。其中心概念是超級(jí)塊superblock,i節(jié)點(diǎn)inode,數(shù)據(jù)塊data?block,目錄塊directory?block,和間接塊indirection?block。超級(jí)塊包括文件系統(tǒng)的總體信息,比如大?。ㄆ錅?zhǔn)確信息依賴(lài)文件系統(tǒng))。i節(jié)點(diǎn)包括除了名字外的一個(gè)文件的所有信息,名字與i節(jié)點(diǎn)數(shù)目一起存在目錄中,目錄條目包括文件名和文件的i節(jié)點(diǎn)數(shù)目。i節(jié)點(diǎn)包括幾個(gè)數(shù)據(jù)塊的數(shù)目,用于存儲(chǔ)文件的數(shù)據(jù)。i節(jié)點(diǎn)中只有少量數(shù)據(jù)塊數(shù)的空間,如果需要更多,會(huì)動(dòng)態(tài)分配指向數(shù)據(jù)塊的指針空間。這些動(dòng)態(tài)分配的塊是間接塊;為了找到數(shù)據(jù)塊,這名字指出它必須先找到間接塊的號(hào)碼。
UNIX文件系統(tǒng)通常允許在文件中產(chǎn)生孔,意思是文件系統(tǒng)假裝文件中有一個(gè)特殊的位置只有0字節(jié),但沒(méi)有為這文件的這個(gè)位置保留實(shí)際的磁盤(pán)空間。這對(duì)小的二進(jìn)制文件經(jīng)常發(fā)生,Linux共享庫(kù)、一些數(shù)據(jù)庫(kù)和其他一些特殊情況。
孔有一定的用處。在筆者的系統(tǒng)中,一個(gè)簡(jiǎn)單的測(cè)量工具顯示在200MB使用的磁盤(pán)空間中,由于孔,節(jié)約了大約4MB。在這個(gè)系統(tǒng)中,程序相對(duì)較少,沒(méi)有數(shù)據(jù)庫(kù)文件。
文件系統(tǒng)的功能包括:管理和調(diào)度文件的存儲(chǔ)空間,提供文件的邏輯結(jié)構(gòu)、物理結(jié)構(gòu)和存儲(chǔ)方法;實(shí)現(xiàn)文件從標(biāo)識(shí)到實(shí)際地址的映射,實(shí)現(xiàn)文件的控制操作和存取操作,實(shí)現(xiàn)文件信息的共享并提供可靠的文件保密和保護(hù)措施,提供文件的安全措施。
文件的邏輯結(jié)構(gòu)是依照文件的內(nèi)容的邏輯關(guān)系組織文件結(jié)構(gòu)。文件的邏輯結(jié)構(gòu)可以分為流式文件和記錄式文件。
流式文件:文件中的數(shù)據(jù)是一串字符流,沒(méi)有結(jié)構(gòu)。
記錄文件:由若干邏輯記錄組成,每條記錄又由相同的數(shù)據(jù)項(xiàng)組成,數(shù)據(jù)項(xiàng)的長(zhǎng)度可以是確定的,也可以是不確定的。
主要缺陷:數(shù)據(jù)關(guān)聯(lián)差,數(shù)據(jù)不一致,冗余性。
FAT
通常PC機(jī)使用的文件系統(tǒng)是FAT16。像基于MS-DOS,Win?95等系統(tǒng)都采用了FAT16文件系統(tǒng)。在Win 9X下,F(xiàn)AT16支持的分區(qū)最大為2GB。我們知道計(jì)算機(jī)將信息保存在硬盤(pán)上稱(chēng)為“簇”的區(qū)域內(nèi)。使用的簇越小,保存信息的效率就越高。在FAT16的情況下,分區(qū)越大簇就相應(yīng)的要大,存儲(chǔ)效率就越低,勢(shì)必造成存儲(chǔ)空間的浪費(fèi)。并且隨著計(jì)算機(jī)硬件和應(yīng)用的不斷提高,F(xiàn)AT16文件系統(tǒng)已不能很好地適應(yīng)系統(tǒng)的要求。在這種情況下,推出了增強(qiáng)的文件系統(tǒng)FAT32。同F(xiàn)AT16相比,F(xiàn)AT32主要具有以下特點(diǎn):
同F(xiàn)AT16相比FAT32最大的優(yōu)點(diǎn)是可以支持的磁盤(pán)大小達(dá)到32GB,但是不能支持小于512MB的分區(qū)。
基于FAT32的Win?2000可以支持分區(qū)最大為32GB;而基于FAT16的Win 2000支持的分區(qū)最大為4GB。
由于采用了更小的簇,F(xiàn)AT32文件系統(tǒng)可以更有效率地保存信息。如兩個(gè)分區(qū)大小都為2GB,一個(gè)分區(qū)采用了FAT16文件系統(tǒng),另一個(gè)分區(qū)采用了FAT32文件系統(tǒng)。采用FAT16的分區(qū)的簇大小為32KB,而FAT32分區(qū)的簇只有4KB的大小。這樣FAT32就比FAT16的存儲(chǔ)效率要高很多,通常情況下可以提高15%。
FAT32文件系統(tǒng)可以重新定位根目錄和使用FAT的備份副本。另外FAT32分區(qū)的啟動(dòng)記錄被包含在一個(gè)含有關(guān)鍵數(shù)據(jù)的結(jié)構(gòu)中,減少了計(jì)算機(jī)系統(tǒng)崩潰的可能性。
NTFS
NTFS文件系統(tǒng)是一個(gè)基于安全性的文件系統(tǒng),是Windows?NT所采用的獨(dú)特的文件系統(tǒng)結(jié)構(gòu),它是建立在保護(hù)文件和目錄數(shù)據(jù)基礎(chǔ)上,同時(shí)照顧節(jié)省存儲(chǔ)資源、減少磁盤(pán)占用量的一種先進(jìn)的文件系統(tǒng)。使用非常廣泛的Windows?NT?4.0采用的就是NTFS?4.0文件系統(tǒng),相信它所帶來(lái)的強(qiáng)大的系統(tǒng)安全性一定給廣大用戶(hù)留下了深刻的印象。Win?2000采用了更新版本的NTFS文件系統(tǒng)NTFS?5.0,它的推出使得用戶(hù)不但可以像Win?9X那樣方便快捷地操作和管理計(jì)算機(jī),同時(shí)也可享受到NTFS所帶來(lái)的系統(tǒng)安全性。
NTFS?5.0的特點(diǎn)主要體現(xiàn)在以下幾個(gè)方面:
NTFS可以支持的分區(qū)(如果采用動(dòng)態(tài)磁盤(pán)則稱(chēng)為卷)大小可以達(dá)到2TB。而Win?2000中的FAT32支持分區(qū)的大小最大為32GB。
NTFS是一個(gè)可恢復(fù)的文件系統(tǒng)。在NTFS分區(qū)上用戶(hù)很少需要運(yùn)行磁盤(pán)修復(fù)程序。NTFS通過(guò)使用標(biāo)準(zhǔn)的事物處理日志和恢復(fù)技術(shù)來(lái)保證分區(qū)的一致性。發(fā)生系統(tǒng)失敗事件時(shí),NTFS使用日志文件和檢查點(diǎn)信息自動(dòng)恢復(fù)文件系統(tǒng)的一致性。
NTFS支持對(duì)分區(qū)、文件夾和文件的壓縮。任何基于Windows的應(yīng)用程序?qū)TFS分區(qū)上的壓縮文件進(jìn)行讀寫(xiě)時(shí)不需要事先由其他程序進(jìn)行解壓縮,當(dāng)對(duì)文件進(jìn)行讀取時(shí),文件將自動(dòng)進(jìn)行解壓縮;文件關(guān)閉或保存時(shí)會(huì)自動(dòng)對(duì)文件進(jìn)行壓縮。
NTFS采用了更小的簇,可以更有效率地管理磁盤(pán)空間。在Win?2000的FAT32文件系統(tǒng)的情況下,分區(qū)大小在2GB~8GB時(shí)簇的大小為4KB;分區(qū)大小在8GB~16GB時(shí)簇的大小為8KB;分區(qū)大小在16GB~32GB時(shí),簇的大小則達(dá)到了16KB。而Win?2000的NTFS文件系統(tǒng),當(dāng)分區(qū)的大小在2GB以下時(shí),簇的大小都比相應(yīng)的FAT32簇小;當(dāng)分區(qū)的大小在2GB以上時(shí)(2GB~2TB),簇的大小都為4KB。相比之下,NTFS可以比FAT32更有效地管理磁盤(pán)空間,最大限度地避免了磁盤(pán)空間的浪費(fèi)。
在NTFS分區(qū)上,可以為共享資源、文件夾以及文件設(shè)置訪問(wèn)許可權(quán)限。許可的設(shè)置包括兩方面的內(nèi)容:一是允許哪些組或用戶(hù)對(duì)文件夾、文件和共享資源進(jìn)行訪問(wèn);二是獲得訪問(wèn)許可的組或用戶(hù)可以進(jìn)行什么級(jí)別的訪問(wèn)。訪問(wèn)許可權(quán)限的設(shè)置不但適用于本地計(jì)算機(jī)的用戶(hù),同樣也應(yīng)用于通過(guò)網(wǎng)絡(luò)的共享文件夾對(duì)文件進(jìn)行訪問(wèn)的網(wǎng)絡(luò)用戶(hù)。與FAT32文件系統(tǒng)下對(duì)文件夾或文件進(jìn)行訪問(wèn)相比,安全性要高得多。另外,在采用NTFS格式的Win?2000中,應(yīng)用審核策略可以對(duì)文件夾、文件以及活動(dòng)目錄對(duì)象進(jìn)行審核,審核結(jié)果記錄在安全日志中,通過(guò)安全日志就可以查看哪些組或用戶(hù)對(duì)文件夾、文件或活動(dòng)目錄對(duì)象進(jìn)行了什么級(jí)別的操作,從而發(fā)現(xiàn)系統(tǒng)可能面臨的非法訪問(wèn),通過(guò)采取相應(yīng)的措施,將這種安全隱患減到最低。這些在FAT32文件系統(tǒng)下,是不能實(shí)現(xiàn)的。
在Win?2000的NTFS文件系統(tǒng)下可以進(jìn)行磁盤(pán)配額管理。磁盤(pán)配額就是管理員可以為用戶(hù)所能使用的磁盤(pán)空間進(jìn)行配額限制,每一用戶(hù)只能使用最大配額范圍內(nèi)的磁盤(pán)空間。設(shè)置磁盤(pán)配額后,可以對(duì)每一個(gè)用戶(hù)的磁盤(pán)使用情況進(jìn)行跟蹤和控制,通過(guò)監(jiān)測(cè)可以標(biāo)識(shí)出超過(guò)配額報(bào)警閾值和配額限制的用戶(hù),從而采取相應(yīng)的措施。磁盤(pán)配額管理功能的提供,使得管理員可以方便合理地為用戶(hù)分配存儲(chǔ)資源,避免由于磁盤(pán)空間使用的失控可能造成的系統(tǒng)崩潰,提高了系統(tǒng)的安全性。
NTFS使用一個(gè)“變更”日志來(lái)跟蹤記錄文件所發(fā)生的變更。
CDFS
CDFS是大部分的光盤(pán)的文件系統(tǒng),只有小部分光盤(pán)使用其他文件系統(tǒng)。這些文件系統(tǒng)只能在CD-R或CD-RW上讀取。
exFAT
(全稱(chēng)Extended?File?Allocation?Table?File?System,擴(kuò)展FAT,即擴(kuò)展文件分配表)是
擴(kuò)展文件分配表主界面
Microsoft在Windows?Embeded?5.0以上(包括Windows?CE?5.0、6.0、Windows?Mobile5、6、6.1)中引入的一種適合于閃存的文件系統(tǒng),為了解決FAT32等不支持4G及其更大的文件而推出。對(duì)于閃存,NTFS文件系統(tǒng)不適合使用,exFAT更為適用。相對(duì)FAT文件系統(tǒng),exFAT有如下好處:
1·增強(qiáng)了臺(tái)式電腦與移動(dòng)設(shè)備的互操作能力
2·單文件大小最大可達(dá)16EB(就是理論值,16×1024×1024TB,1TB=1024G)
3·簇大小可高達(dá)32MB
4·采用了剩余空間分配表,剩余空間分配性能改進(jìn)
5·同一目錄下最大文件數(shù)可達(dá)65536個(gè)
6·支持訪問(wèn)控制
7·支持TFAT
采用該文件系統(tǒng)的閃存盤(pán)不支持Windows?Vista?ReadyBoost。Windows?Vista?SP1支持該文件系統(tǒng)。
請(qǐng)注意:exFAT只是一個(gè)折中的方案,只為U盤(pán)而生。
超過(guò)4GB的U盤(pán)格式化時(shí)默認(rèn)是NTFS分區(qū),但是這種格式是很傷U盤(pán)的,因?yàn)镹TFS分區(qū)是采用“日志式”的文件系統(tǒng),需要記錄詳細(xì)的讀寫(xiě)操作,肯定會(huì)比較傷閃盤(pán)芯片,因?yàn)橐粩嘧x寫(xiě)。
下面請(qǐng)看exFAT、NTFS、FAT分區(qū)的比較
文件系統(tǒng)
FAT32
NTFS
exFAT
操作系統(tǒng)
Win?95?OSR2之后
Win2000之后
Win?CE?6/Vista?SP1
最小扇區(qū)
512bytes
512bytes
512bytes
最大扇區(qū)
64KB
64KB
32768KB
最大單一文件
2bytes-4GB
受最大分割容量
16EB(理論值)
最大格式化容量
32GB、2TB
2TB
16EB(理論值)
檔案數(shù)量
4194304
無(wú)
至少可以大于1000
[1]1.支持非常大的文件和存儲(chǔ)設(shè)備
對(duì)性能的改進(jìn)支持
對(duì)未來(lái)的創(chuàng)新的可擴(kuò)展性功能的支持
RAW
RAW文件系統(tǒng)是一種磁盤(pán)未經(jīng)處理或者未經(jīng)格式化產(chǎn)生的的文件系統(tǒng),一般來(lái)說(shuō)有這幾種可能造成正常文件系統(tǒng)變成RAW文件系統(tǒng):
●沒(méi)有格式化。
●格式化中途取消操作。
●硬盤(pán)出現(xiàn)壞道。
●硬盤(pán)出現(xiàn)不可預(yù)知的錯(cuò)誤。
●病毒所致。
解決RAW文件系統(tǒng)的最快的方法是立即格式化,并且使用殺毒軟件全盤(pán)殺毒。當(dāng)然,如果文件很重要的話(huà)可以考慮用磁盤(pán)數(shù)據(jù)恢復(fù)軟件先救出數(shù)據(jù),然后再格式化和殺毒,或者在網(wǎng)上查找一些有關(guān)于“raw文件系統(tǒng)恢復(fù)”的內(nèi)容。
Ext2
Ext2是GNU/Linux系統(tǒng)中標(biāo)準(zhǔn)的文件系統(tǒng),其特點(diǎn)為存取文件的性能極好,對(duì)于中小型的文件更顯示出優(yōu)勢(shì),這主要得利于其簇快取層的優(yōu)良設(shè)計(jì)。
其單一文件大小與文件系統(tǒng)本身的容量上限與文件系統(tǒng)本身的簇大小有關(guān),在一般常見(jiàn)的x86電腦系統(tǒng)中,簇最大為4KB,則單一文件大小上限為2048GB,而文件系統(tǒng)的容量上限為16384GB。
但由于目前核心2.4所能使用的單一分割區(qū)最大只有2048GB,實(shí)際上能使用的文件系統(tǒng)容量最多也只有2048GB。
至于Ext3文件系統(tǒng),它屬于一種日志文件系統(tǒng),是對(duì)ext2系統(tǒng)的擴(kuò)展。它兼容ext2,并且從ext2轉(zhuǎn)換成ext3并不復(fù)雜。
Ext3
Ext3是一種日志式文件系統(tǒng),是對(duì)ext2系統(tǒng)的擴(kuò)展,它兼容ext2。日志式文件系統(tǒng)的優(yōu)越性在于:由于文件系統(tǒng)都有快取層參與運(yùn)作,如不使用時(shí)必須將文件系統(tǒng)卸下,以便將快取層的資料寫(xiě)回磁盤(pán)中。因此每當(dāng)系統(tǒng)要關(guān)機(jī)時(shí),必須將其所有的文件系統(tǒng)全部shutdown后才能進(jìn)行關(guān)機(jī)。
如果在文件系統(tǒng)尚未shutdown前就關(guān)機(jī)(如停電)時(shí),下次重開(kāi)機(jī)后會(huì)造成文件系統(tǒng)的資料不一致,故這時(shí)必須做文件系統(tǒng)的重整工作,將不一致與錯(cuò)誤的地方修復(fù)。然而,此一重整的工作是相當(dāng)耗時(shí)的,特別是容量大的文件系統(tǒng),而且也不能百分之百保證所有的資料都不會(huì)流失。
為了克服此問(wèn)題,使用所謂‘日志式文件系統(tǒng) - Journal?File?System。此類(lèi)文件系統(tǒng)最大的特色是,它會(huì)將整個(gè)磁盤(pán)的寫(xiě)入動(dòng)作完整記錄在磁盤(pán)的某個(gè)區(qū)域上,以便有需要時(shí)可以回溯追蹤。
由于資料的寫(xiě)入動(dòng)作包含許多的細(xì)節(jié),像是改變文件標(biāo)頭資料、搜尋磁盤(pán)可寫(xiě)入空間、一個(gè)個(gè)寫(xiě)入資料區(qū)段等等,每一個(gè)細(xì)節(jié)進(jìn)行到一半若被中斷,就會(huì)造成文件系統(tǒng)的不一致,因而需要重整。
然而,在日志式文件系統(tǒng)中,由于詳細(xì)紀(jì)錄了每個(gè)細(xì)節(jié),故當(dāng)在某個(gè)過(guò)程中被中斷時(shí),系統(tǒng)可以根據(jù)這些記錄直接回溯并重整被中斷的部分,而不必花時(shí)間去檢查其他的部分,故重整的工作速度相當(dāng)快,幾乎不需要花時(shí)間。
Ext4
Linux?kernel自2.6.28開(kāi)始正式支持新的文件系統(tǒng)Ext4。Ext4是Ext3的改進(jìn)版,修改了Ext3中部分重要的數(shù)據(jù)結(jié)構(gòu),而不僅僅像Ext3對(duì)Ext2那樣,只是增加了一個(gè)日志功能而已。Ext4可以提供更佳的性能和可靠性,還有更為豐富的功能:
與Ext3兼容。執(zhí)行若干條命令,就能從Ext3在線(xiàn)遷移到Ext4,而無(wú)須重新格式化磁盤(pán)或重新安裝系統(tǒng)。原有Ext3數(shù)據(jù)結(jié)構(gòu)照樣保留,Ext4作用于新數(shù)據(jù),當(dāng)然,整個(gè)文件系統(tǒng)因此也就獲得了Ext4所支持的更大容量。
更大的文件系統(tǒng)和更大的文件。較之Ext3目前所支持的最大16TB文件系統(tǒng)和最大2TB文件,Ext4分別支持1EB(1,048,576TB,1EB=1024PB,1PB=1024TB)的文件系統(tǒng),以及16TB的文件。
無(wú)限數(shù)量的子目錄。Ext3目前只支持32,000個(gè)子目錄,而Ext4支持無(wú)限數(shù)量的子目錄。
Extents。Ext3采用間接塊映射,當(dāng)操作大文件時(shí),效率極其低下。比如一個(gè)100MB大小的文件,在Ext3中要建立25,600個(gè)數(shù)據(jù)塊(每個(gè)數(shù)據(jù)塊大小為4KB)的映射表。而Ext4引入了現(xiàn)代文件系統(tǒng)中流行的extents概念,每個(gè)extent為一組連續(xù)的數(shù)據(jù)塊,上述文件則表示為“該文件數(shù)據(jù)保存在接下來(lái)的25,600個(gè)數(shù)據(jù)塊中”,提高了不少效率。
多塊分配。當(dāng)寫(xiě)入數(shù)據(jù)到Ext3文件系統(tǒng)中時(shí),Ext3的數(shù)據(jù)塊分配器每次只能分配一個(gè)4KB的塊,寫(xiě)一個(gè)100MB文件就要調(diào)用25,600次數(shù)據(jù)塊分配器,而Ext4的多塊分配器“multiblock?allocator”(mballoc)支持一次調(diào)用分配多個(gè)數(shù)據(jù)塊。
延遲分配。Ext3的數(shù)據(jù)塊分配策略是盡快分配,而Ext4和其它現(xiàn)代文件操作系統(tǒng)的策略是盡可能地延遲分配,直到文件在cache中寫(xiě)完才開(kāi)始分配數(shù)據(jù)塊并寫(xiě)入磁盤(pán),這樣就能優(yōu)化整個(gè)文件的數(shù)據(jù)塊分配,與前兩種特性搭配起來(lái)可以顯著提升性能。
快速fsck。以前執(zhí)行fsck第一步就會(huì)很慢,因?yàn)樗獧z查所有的inode,現(xiàn)在Ext4給每個(gè)組的inode表中都添加了一份未使用inode的列表,今后fsck?Ext4文件系統(tǒng)就可以跳過(guò)它們而只去檢查那些在用的inode了。
日志校驗(yàn)。日志是最常用的部分,也極易導(dǎo)致磁盤(pán)硬件故障,而從損壞的日志中恢復(fù)數(shù)據(jù)會(huì)導(dǎo)致更多的數(shù)據(jù)損壞。Ext4的日志校驗(yàn)功能可以很方便地判斷日志數(shù)據(jù)是否損壞,而且它將Ext3的兩階段日志機(jī)制合并成一個(gè)階段,在增加安全性的同時(shí)提高了性能。
“無(wú)日志”(No?Journaling)模式。日志總歸有一些開(kāi)銷(xiāo),Ext4允許關(guān)閉日志,以便某些有特殊需求的用戶(hù)可以借此提升性能。
在線(xiàn)碎片整理。盡管延遲分配、多塊分配和extents能有效減少文件系統(tǒng)碎片,但碎片還是不可避免會(huì)產(chǎn)生。Ext4支持在線(xiàn)碎片整理,并將提供e4defrag工具進(jìn)行個(gè)別文件或整個(gè)文件系統(tǒng)的碎片整理。
inode相關(guān)特性。Ext4支持更大的inode,較之Ext3默認(rèn)的inode大小128字節(jié),Ext4為了在inode中容納更多的擴(kuò)展屬性(如納秒時(shí)間戳或inode版本),默認(rèn)inode大小為256字節(jié)。Ext4還支持快速擴(kuò)展屬性(fast?extended?attributes)和inode保留(inodes?reservation)。
持久預(yù)分配(Persistent?preallocation)。P2P軟件為了保證下載文件有足夠的空間存放,常常會(huì)預(yù)先創(chuàng)建一個(gè)與所下載文件大小相同的空文件,以免未來(lái)的數(shù)小時(shí)或數(shù)天之內(nèi)磁盤(pán)空間不足導(dǎo)致下載失敗。Ext4在文件系統(tǒng)層面實(shí)現(xiàn)了持久預(yù)分配并提供相應(yīng)的API(libc中的posix_fallocate()),比應(yīng)用軟件自己實(shí)現(xiàn)更有效率。
默認(rèn)啟用barrier。磁盤(pán)上配有內(nèi)部緩存,以便重新調(diào)整批量數(shù)據(jù)的寫(xiě)操作順序,優(yōu)化寫(xiě)入性能,因此文件系統(tǒng)必須在日志數(shù)據(jù)寫(xiě)入磁盤(pán)之后才能寫(xiě)commit記錄,若commit記錄寫(xiě)入在先,而日志有可能損壞,那么就會(huì)影響數(shù)據(jù)完整性。Ext4默認(rèn)啟用barrier,只有當(dāng)barrier之前的數(shù)據(jù)全部寫(xiě)入磁盤(pán),才能寫(xiě)barrier之后的數(shù)據(jù)。(可通過(guò)"mount?-o?barrier=0"命令禁用該特性。)
Btrfs
Btrfs(通常念成Butter?FS),是由Oracle于2007年宣布并進(jìn)行中的copy-on-write文件系統(tǒng)。目標(biāo)是取代Linux目前的ext3文件系統(tǒng),改善ext3的限制,特別是單個(gè)文件的大小,總文件系統(tǒng)大小或文件檢查和加入目前ext3未支持的功能,像是writable?snapshots、snapshots?of?snapshots、內(nèi)建磁盤(pán)陣列(RAID)支持,以及subvolumes。Btrfs也宣稱(chēng)專(zhuān)注在“容錯(cuò)、修復(fù)及易于管理”。
ZFS
ZFS源自于Sun?Microsystems為Solaris操作系統(tǒng)開(kāi)發(fā)的文件系統(tǒng)。ZFS是一個(gè)具有高存儲(chǔ)容量、文件系統(tǒng)與卷管理概念整合、嶄新的磁盤(pán)邏輯結(jié)構(gòu)的輕量級(jí)文件系統(tǒng),同時(shí)也是一個(gè)便捷的存儲(chǔ)池管理系統(tǒng)。ZFS是一個(gè)使用CDDL協(xié)議條款授權(quán)的開(kāi)源項(xiàng)目。
HFS
1 HFS文件系統(tǒng)概念
分層文件系統(tǒng)(Hierarchical?File?System,HFS)是一種由蘋(píng)果電腦開(kāi)發(fā),并使用在Mac?OS上的文件系統(tǒng)。最初被設(shè)計(jì)用于軟盤(pán)和硬盤(pán),同時(shí)也可以在在只讀媒體如CD-ROM上見(jiàn)到。
2?HFS文件系統(tǒng)開(kāi)發(fā)過(guò)程
HFS首次出現(xiàn)在1985年9月17日,作為Macintosh電腦上新的文件系統(tǒng)。它取代只用于早期Mac型號(hào)所使用的平面文件系統(tǒng)Macintosh?File?System(MFS)。因?yàn)镸acintosh電腦所產(chǎn)生的數(shù)據(jù),比其它通常的文件系統(tǒng),如DOS使用的FAT或原始Unix文件系統(tǒng)所允許存儲(chǔ)的數(shù)據(jù)更多。蘋(píng)果電腦開(kāi)發(fā)了一種新式更適用的文件系統(tǒng),而不是采用現(xiàn)有的規(guī)格。例如,HFS允許文件名最多有31個(gè)字符的長(zhǎng)度,支持metadata和雙分支(每個(gè)文件的數(shù)據(jù)和資源支分開(kāi)存儲(chǔ))文件。
盡管HFS象其它大多數(shù)文件系統(tǒng)一樣被視為專(zhuān)有的格式,因?yàn)橹挥兴鼮榇蠖鄶?shù)最新的操作系統(tǒng)提供了很好的通用解決方法以存取HFS格式磁盤(pán)。
在1998年,蘋(píng)果電腦發(fā)布了HFS?Plus,其改善了HFS對(duì)磁盤(pán)空間的地址定位效率低下,并加入了其它的改進(jìn)。當(dāng)前版本的Mac?OS仍舊支持HFS,但從Mac?OS?X開(kāi)始HFS卷不能作為啟動(dòng)用。
3?構(gòu)成方式
分層文件系統(tǒng)把一個(gè)卷分為許多512字節(jié)的“邏輯塊”。這些邏輯塊被編組為“分配塊”,這些分配塊可以根據(jù)卷的尺寸包含一個(gè)或多個(gè)邏輯塊。HFS對(duì)地址分配塊使用16位數(shù)值,分配塊的最高限制數(shù)量是65536。
組成一個(gè)HFS卷需要下面的五個(gè)結(jié)構(gòu):
卷的邏輯塊0和1是啟動(dòng)塊,它包含了系統(tǒng)啟動(dòng)信息。例如,啟動(dòng)時(shí)載入的系統(tǒng)名稱(chēng)和殼(通常是Finder)文件。
邏輯塊2包含主目錄塊(Master?Directory?Block,簡(jiǎn)稱(chēng)MDB)。
邏輯塊3是卷位圖(Volume?Bitmap)的啟動(dòng)塊,它追蹤分配塊使用狀態(tài)。
總目錄文件(Catalog?File)是一個(gè)包含所有文件的記錄和儲(chǔ)存在卷中目錄的B*-tree。
擴(kuò)展溢出文件(Extent?Overflow?File)是當(dāng)最初總目錄文件中三個(gè)擴(kuò)展占用后,另外一個(gè)包含額外擴(kuò)展記錄的分配塊對(duì)應(yīng)信息的B*-tree。
HFS+文件系統(tǒng)
1998年,蘋(píng)果公司又發(fā)布了HFS+文件系統(tǒng),是針對(duì)以前的HFS文件系統(tǒng)的不足進(jìn)行了改進(jìn)。
1.HFS+文件系統(tǒng)相對(duì)于HFS文件系統(tǒng)的特點(diǎn)
- 1采用32bit記錄分配塊數(shù)量
HFS和HFS+文件系統(tǒng)對(duì)磁盤(pán)卷采用分塊進(jìn)行分配,將一個(gè)卷分成等大的分配塊。HFS文件系統(tǒng)采用16bit來(lái)記錄分配塊的數(shù)量,最多只能描述216個(gè)分配塊。而對(duì)于HFS+文件系統(tǒng),采用32bit來(lái)記錄分配塊的數(shù)量,最多能描述232個(gè)分配塊。對(duì)于Mac系統(tǒng)上的非空數(shù)據(jù),都必須占用整數(shù)個(gè)分配塊,也就是說(shuō),即使一個(gè)數(shù)據(jù)只有一個(gè)字節(jié),也要占用一個(gè)分配塊。而HFS+文件系統(tǒng)增大了每個(gè)卷分配塊的數(shù)量,可以使分配塊的單位空間更小,從而達(dá)到減少存儲(chǔ)空間浪費(fèi)的目的。
- 2目錄樹(shù)節(jié)點(diǎn)大小增加到4KB
HFS文件系統(tǒng)的目錄樹(shù)節(jié)點(diǎn)大小為512字節(jié),由于HFS+文件系統(tǒng)目錄樹(shù)索引節(jié)點(diǎn)需要存儲(chǔ)附加指針和節(jié)點(diǎn)描述符兩個(gè)關(guān)鍵值,HFS+文件系統(tǒng)的目錄樹(shù)節(jié)點(diǎn)大小增加到4KB。
- 3單一文件大小得到提升
HFS文件系統(tǒng)的單一文件大小上限為2^31bit,而HFS+文件系統(tǒng)的單一文件大小最大可達(dá)到2^63bit。
- 4支持長(zhǎng)文件名
HFS文件系統(tǒng)對(duì)文件名最長(zhǎng)支持到31個(gè)字符,而HFS+文件系統(tǒng)對(duì)文件名采用Unicode編碼,最長(zhǎng)達(dá)到255個(gè)字符。
ReiserFS
ReiserFS,是一種文件系統(tǒng)格式,作者是Hans?Reiser及其團(tuán)隊(duì)Namesys,1997年7月23日他將ReiserFS文件系統(tǒng)在互聯(lián)網(wǎng)上公布。Linux內(nèi)核從2.4.1版本開(kāi)始支持ReiserFS。
ReiserFS的命名是源自作者Hans?Reiser的姓氏,這個(gè)日志型文件系統(tǒng)發(fā)展比ext2/3晚近許多。在技術(shù)上使用的是B*-tree為基礎(chǔ)的文件系統(tǒng),其特色為能很有效率地處理大型文件到眾多小文件都可以用很高的效率處理;實(shí)務(wù)上ReiserFS在處理文件小于1k小文件時(shí),甚至效率可以比ext3快約10倍。
ReiserFS原先是Novell公司的SuSE?Linux?Enterprise采用的缺省文件系統(tǒng),直到2006年10月12日其宣稱(chēng)將在未來(lái)的版本改采ext3為缺省。Novell公司否認(rèn)這與Hans?Reiser被控殺妻案有任何關(guān)系。
JFS
JFS - JOURNAL?FILE?SYSTEM),一種字節(jié)級(jí)日志文件系統(tǒng),借鑒了數(shù)據(jù)庫(kù)保護(hù)系統(tǒng)的技術(shù),以日志的形式記錄文件的變化。JFS通過(guò)記錄文件結(jié)構(gòu)而不是數(shù)據(jù)本身的變化來(lái)保證數(shù)據(jù)的完整性。這種方式可以確保在任何時(shí)刻都能維護(hù)數(shù)據(jù)的可訪問(wèn)性。
該文件系統(tǒng)主要是為滿(mǎn)足服務(wù)器(從單處理器系統(tǒng)到高級(jí)多處理器和群集系統(tǒng))的高吞吐量和可靠性需求而設(shè)計(jì)、開(kāi)發(fā)的。JFS文件系統(tǒng)是為面向事務(wù)的高性能系統(tǒng)而開(kāi)發(fā)的。在IBM的AIX系統(tǒng)上,JFS已經(jīng)過(guò)較長(zhǎng)時(shí)間的測(cè)試,結(jié)果表明它是可靠、快速和容易使用的。2000年2月,IBM宣布在一個(gè)開(kāi)放資源許可證下移植Linux版本的JFS文件系統(tǒng)。JFS也是一個(gè)有大量用戶(hù)安裝使用的企業(yè)級(jí)文件系統(tǒng),具有可伸縮性和健壯性。與非日志文件系統(tǒng)相比,它的突出優(yōu)點(diǎn)是快速重啟能力,JFS能夠在幾秒或幾分鐘內(nèi)就把文件系統(tǒng)恢復(fù)到一致?tīng)顟B(tài)。雖然JFS主要是為滿(mǎn)足服務(wù)器(從單處理器系統(tǒng)到高級(jí)多處理器和群集系統(tǒng))的高吞吐量和可靠性需求而設(shè)計(jì)的,但還可以用于想得到高性能和可靠性的客戶(hù)機(jī)配置,因?yàn)樵谙到y(tǒng)崩潰時(shí)JFS能提供快速文件系統(tǒng)重啟時(shí)間,所以它是因特網(wǎng)文件服務(wù)器的關(guān)鍵技術(shù)。使用數(shù)據(jù)庫(kù)日志處理技術(shù),JFS能在幾秒或幾分鐘之內(nèi)把文件系統(tǒng)恢復(fù)到一致?tīng)顟B(tài)。而在非日志文件系統(tǒng)中,文件恢復(fù)可能花費(fèi)幾小時(shí)或幾天。
JFS的缺點(diǎn)是,使用JFS日志文件系統(tǒng)性能上會(huì)有一定損失,系統(tǒng)資源占用的比率也偏高,因?yàn)楫?dāng)它保存一個(gè)日志時(shí),系統(tǒng)需要寫(xiě)許多數(shù)據(jù)。
VMFS
VMware?Virtual?Machine?File?System(VMFS)是一種高性能的群集文件系統(tǒng),它使虛擬化技術(shù)的應(yīng)用超出了單個(gè)系統(tǒng)的限制。VMFS的設(shè)計(jì)、構(gòu)建和優(yōu)化針對(duì)虛擬服務(wù)器環(huán)境,可讓多個(gè)虛擬機(jī)共同訪問(wèn)一個(gè)整合的群集式存儲(chǔ)池,從而顯著提高了資源利用率。VMFS是跨越多個(gè)服務(wù)器實(shí)現(xiàn)虛擬化的基礎(chǔ),它可啟用VMware?VmotionTM、Distributed?Resource?Scheduler?和VMware?High?Availability等各種服務(wù)。VMFS還能顯著減少管理開(kāi)銷(xiāo),它提供了一種高效的虛擬化管理層,特別適合大型企業(yè)數(shù)據(jù)中心。采用VMFS可實(shí)現(xiàn)資源共享,使管理員輕松地從更高效率和存儲(chǔ)利用率中直接獲益。
XFS
XFS是Silicon?Graphics,Inc.于90年代初開(kāi)發(fā)的文件系統(tǒng)。它至今仍作為SGI基于IRIX的產(chǎn)品(從工作站到超級(jí)計(jì)算機(jī))的底層文件系統(tǒng)來(lái)使用。現(xiàn)在,XFS也可以用于Linux。XFS的Linux版的到來(lái)是激動(dòng)人心的,首先因?yàn)樗鼮長(zhǎng)inux社區(qū)提供了一種健壯的、優(yōu)秀的以及功能豐富的文件系統(tǒng),并且這種文件系統(tǒng)所具有的可伸縮性能夠滿(mǎn)足最苛刻的存儲(chǔ)需求。
UFS
UFS文件系統(tǒng):基于BSD高速文件系統(tǒng)的傳統(tǒng)UNIX文件系統(tǒng),是Solaris的默認(rèn)文件系統(tǒng)。默認(rèn)啟用UFS日志記錄功能。在早期的Solaris版本中,UFS日志記錄功能只能手動(dòng)啟用。Solaris?10在運(yùn)行64位Solaris內(nèi)核的系統(tǒng)上支持多TB UFS文件系統(tǒng)。以前,UFS文件系統(tǒng)在64位系統(tǒng)和32位系統(tǒng)上的大小僅限于約1TB(Tbyte)。現(xiàn)在,所有UFS文件系統(tǒng)命令和公用程序已更新為支持多TB?UFS文件系統(tǒng)。
UFS1文件系統(tǒng)是OpenBSD和Solaris的默認(rèn)文件系統(tǒng)。UFS1也曾是NetBSD和FreeBSD的默認(rèn)文件系統(tǒng),但NetBSD2.0和FreeBSD5.0以后版本開(kāi)始使用UFS2做默認(rèn)的文件系統(tǒng)。UFS2增加了對(duì)大文件和大容量磁盤(pán)的支持和一些先進(jìn)的特性。目前似乎還只有FreeBSD和NetBSD支持UFS2。Apple?OS?X和Linux也支持UFS1,但并不做為它們的默認(rèn)文件系統(tǒng)。
VXFS
VeritasFileSystem - VxFS)是首個(gè)商業(yè)日志記錄文件系統(tǒng)。通過(guò)日志記錄功能,元數(shù)據(jù)更改首先寫(xiě)入到日志,然后再寫(xiě)入到磁盤(pán)。由于無(wú)需在多處寫(xiě)入更改,且元數(shù)據(jù)是異步寫(xiě)入的,因此吞吐量的速度較快。VxFS也是基于擴(kuò)展區(qū)的意向日志記錄文件系統(tǒng)。VxFS設(shè)計(jì)用于要求高性能和高可用性,并且可以處理大量數(shù)據(jù)的操作環(huán)境。
