《ntfs文件系統(tǒng)總結(jié)》word版_第1頁(yè)
《ntfs文件系統(tǒng)總結(jié)》word版_第2頁(yè)
《ntfs文件系統(tǒng)總結(jié)》word版_第3頁(yè)
《ntfs文件系統(tǒng)總結(jié)》word版_第4頁(yè)
《ntfs文件系統(tǒng)總結(jié)》word版_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、.ntfs文件系統(tǒng) 總結(jié)ntfs文件系統(tǒng)(總結(jié))2010-07-20 14:30解讀NTFS NTFS是一個(gè)比FAT復(fù)雜的多的文件系統(tǒng),我們一起努力來(lái)把它完整的解讀出來(lái)NTFS的引導(dǎo)扇區(qū)也是完成引導(dǎo)和定義分區(qū)參數(shù),和FAT分區(qū)不同,F(xiàn)AT分區(qū)的BOOT記錄正常,就顯示分區(qū)沒(méi)有錯(cuò)誤,即使文件不正確,而NTFS分區(qū)的BOOT不是分區(qū)的充分條件,它要求必須MFT中的系統(tǒng)記錄如$MFT等正常該分區(qū)才能正常訪問(wèn)。其BPB參數(shù)如下表所示。字節(jié)偏移長(zhǎng)度常用值意義0x0B字0x0002每扇區(qū)字節(jié)數(shù)0x0D字節(jié)0x08每簇扇區(qū)數(shù)0x0E字0x0000保留扇區(qū)0x10 3字節(jié)0x 000000總為0 0x13字0

2、x0000 NTFS未使用,為0 0x15字節(jié)0xF8介質(zhì)描述0x16字0x0000總為0 0x18字0x3F00每磁盤(pán)扇區(qū)數(shù)0x1A字0xFF00磁頭數(shù)0x1C雙字0x3F 000000隱含扇區(qū)0x20雙字0x 00000000 NTFS未使用,為0 0x28 8字節(jié)0x4AF57F 0000000000扇區(qū)總數(shù)0x30 8字節(jié)0x 0400000000000000$MFT的邏輯簇號(hào)0x38 8字節(jié)0x54FF 070000000000$MFTMirr的邏輯簇號(hào)0x40雙字0xF 6000000每MFT記錄簇?cái)?shù)0x44雙字0x 01000000每索引簇?cái)?shù)0x48 8字節(jié)0x14A51B74C

3、91B741C卷標(biāo)0x50雙字0x 00000000檢驗(yàn)和MFT中的文件記錄大小一般是固定的,不管簇的大小是多少,均為1KB。文件記錄在MFT文件記錄數(shù)組中物理上是連續(xù)的,且從0開(kāi)始編號(hào),所以,NTFS是預(yù)定義文件系統(tǒng)。MFT僅供系統(tǒng)本身組織、架構(gòu)文件系統(tǒng)使用,這在NTFS中稱為元數(shù)據(jù)(metadata,是存儲(chǔ)在卷上支持文件系統(tǒng)格式管理的數(shù)據(jù)。它不能被應(yīng)用程序訪問(wèn),只能為系統(tǒng)提供服務(wù))。其中最基本的前16個(gè)記錄是操作系統(tǒng)使用的非常重要的元數(shù)據(jù)文件。這些元數(shù)據(jù)文件的名字都以$開(kāi)始,所以是隱藏文件,在Windows 2000/XP中不能使用dir命令(甚至加上/ah參數(shù))像普通文件一樣列出。在WI

4、NHEX中帶有NFI.EXE,用此工具可以顯示這些記錄與文件的對(duì)應(yīng)關(guān)系,下一次再詳細(xì)解釋。這些元數(shù)據(jù)文件是系統(tǒng)驅(qū)動(dòng)程序管理卷所必需的,Windows 2000/XP給每個(gè)分區(qū)賦予一個(gè)盤(pán)符并不表示該分區(qū)包含有Windows 2000/XP可以識(shí)別的文件系統(tǒng)格式。如果主文件表?yè)p壞,那么該分區(qū)在Windows 2000/XP下是無(wú)法讀取的。為了使該分區(qū)能夠在Windows 2000/XP下能被識(shí)別,就必須首先建立Windows 2000/XP可以識(shí)別的文件系統(tǒng)格式即主文件表,這個(gè)過(guò)程可通過(guò)高級(jí)格式化該分區(qū)來(lái)完成。Windows以簇號(hào)來(lái)定位文件在磁盤(pán)上的存儲(chǔ)位置,在FAT格式的文件系統(tǒng)中,有關(guān)簇號(hào)的指

5、針包含在FAT表中,在NTFS中,有關(guān)簇號(hào)的指針則包含在$MFT及$MFTMirr文件中。NTFS使用邏輯簇號(hào)(Logical Cluster Number,LCN)和虛擬簇號(hào)(Virtual Cluster Number,VCN)來(lái)對(duì)簇進(jìn)行定位。LCN是對(duì)整個(gè)卷中所有的簇從頭到尾所進(jìn)行的簡(jiǎn)單編號(hào)。用卷因子乘以LCN,NTFS就能夠得到卷上的物理字節(jié)偏移量,從而得到物理磁盤(pán)地址。VCN則是對(duì)屬于特定文件的簇從頭到尾進(jìn)行編號(hào),以便于引用文件中的數(shù)據(jù)。VCN可以映射成LCN,而不必要求在物理上連續(xù)。在NTFS卷上,跟隨在BPB后的數(shù)據(jù)字段形成一個(gè)擴(kuò)展BPB。這些字段中的數(shù)據(jù)使得Ntldr能夠在啟動(dòng)

6、過(guò)程中找到主文件表MFT(Master File Tabl)。在NTFS卷上,MFT并不象在FAT 16卷和FAT 32卷上一樣,被放在一個(gè)預(yù)定義的扇區(qū)中。由于這個(gè)原因,如果在MTF的正常位置中有壞扇區(qū)的話,就可以把MFT移到別的位置。但是,如果該數(shù)據(jù)被破壞,就找不到MFT的位置,Windows 2000假設(shè)該卷沒(méi)有被格式化。因此,如果一個(gè)ntfs的卷提示未格式化,可能并未破壞MFT,依據(jù)BPB的各字段的意思是可以重建BPB的。NTFS的缺省簇的大小卷大小每簇的扇區(qū)缺省的簇大小小于等于512MB 1512字節(jié)513MB1024MB(1GB)2 1024字節(jié)(1KB)1025MB2048MB(2

7、GB)4 2048字節(jié)(2KB)大于等于2049MB 84KB從上面可以看出,也就是說(shuō)不管驅(qū)動(dòng)器多大NTFS簇的大小不會(huì)超過(guò)4KB NTFS文檔:文檔屬性定義每個(gè)文檔屬性都由以下部分組成:一個(gè)由該屬性的實(shí)際值組成的被稱為流的重要的字節(jié)序列,元數(shù)據(jù)可訪問(wèn)該流。文件中的每個(gè)文件屬性都可能會(huì)有一個(gè)名字:在這種情況下,在命令行方式下可以通過(guò)語(yǔ)法文件名:屬性名來(lái)訪問(wèn)該流(這也是文件名中不能使用:的原因)。Windows NT使用以下在元數(shù)據(jù)文件$AttrDef中預(yù)定義的文件屬性列表(一般會(huì)有一個(gè)未命名流,為缺省流,未命名流只能有一個(gè),而命名流可以有多個(gè),NTFS支持多流文件):10$STANDARD_I

8、NFORMATION(標(biāo)準(zhǔn)信息)20$ATTRIBUTE_LIST(屬性列表)30$FILE_NAME(文件名)40$VOLUME_VERSION(卷版本)50$SECURITY_DEscriptOR(安全描述符)60$VOLUME_NAME(卷名)70$VOLUME_INFORMATION(卷信息)80$DATA(數(shù)據(jù))90$INDEX_ROOT(索引根)A0$INDEX_ALLOCATION(索引分配)B0$BITMAP(位圖)C0$SYMBOLIC_LINK(符號(hào)鏈接)D0$EA_INFORMATION(?信息)E0$EA屬性流結(jié)構(gòu)每個(gè)文件屬性都分為兩部分:盡管這兩部分屬性在文件記錄的屬

9、性列表中以倒序方式進(jìn)行記錄,但是為了更好的理解它,讓我們按下面的順序進(jìn)行介紹:內(nèi)容部分:它的結(jié)構(gòu)總是以屬性名開(kāi)始(N字節(jié)長(zhǎng)),在屬性名之后定義該屬性是否為常駐屬性。當(dāng)文件屬性的數(shù)據(jù)流就存儲(chǔ)在其屬性名后時(shí),它就是常駐屬性,這樣,對(duì)于那些流較小且不會(huì)增長(zhǎng)的文件屬性就可以提供更佳的訪問(wèn)次數(shù)。如果一個(gè)文件屬性是非常駐的,那么其流就存儲(chǔ)在一個(gè)或多個(gè)擴(kuò)展或稱為運(yùn)行中。運(yùn)行是一個(gè)在邏輯簇號(hào)上連續(xù)的區(qū)域。為訪問(wèn)這些運(yùn)行,NTFS緊跟在文件屬性名后存儲(chǔ)有一個(gè)稱為運(yùn)行列表的表。頭部:從頭部開(kāi)始的偏移長(zhǎng)度描述:0 4Type(類型)4 4Length(長(zhǎng)度)8 1Non-resident flag(非常駐標(biāo)志)9

10、1N=Name length(文件名長(zhǎng)度)A 2Offset to the content part(相對(duì)內(nèi)容部分的偏移值)C 2Compressed flag(壓縮標(biāo)志)E 2Identificator(標(biāo)識(shí))文件名長(zhǎng)度:00表示文件屬性沒(méi)有命名。壓縮標(biāo)志:在NTFS中,數(shù)據(jù)壓縮是在文件屬性級(jí)別上實(shí)現(xiàn)的,這就意味著,如果出現(xiàn)意外,你也不會(huì)釋放出很多的數(shù)據(jù)。這樣,盡管只是對(duì)文件進(jìn)行壓縮,但壓縮文件同時(shí)就意味著其屬性數(shù)據(jù)也一樣被壓縮。從現(xiàn)在開(kāi)始,其頭部的安排依賴文件的常駐屬性:對(duì)一個(gè)常駐屬性來(lái)說(shuō),從頭部開(kāi)始的偏移描述如下:10 4Length of the stream(流長(zhǎng)度)14 2Offs

11、et to the stream(流偏移)16 2Indexed flag(索引標(biāo)志)索引標(biāo)志:文件屬性通過(guò)一個(gè)索引入口進(jìn)行索引。對(duì)于一個(gè)非常駐的文件屬性,從頭部開(kāi)始的偏移描述如下:10 8Starting VCN(起始VCN)18 8Last VCN(結(jié)束VCN)20 2Offset to the runlist(運(yùn)行列表偏移)22 2?Number of compression engine?(壓縮引擎號(hào))28 8Allocated size of the stream(為流分配的單元大小)30 8Real size of the stream(實(shí)際的流大小)38 8Initialized

12、 data size of the stream(流已初始化大小)VCN:Virtual Cluster Number(虛擬簇號(hào))的縮略詞。VCN是一個(gè)與非常駐屬性相關(guān)聯(lián)的概念。VCN從文件屬性流的第一個(gè)運(yùn)行的第一個(gè)簇(VCN 0)到最后一個(gè)運(yùn)行的最后一個(gè)簇進(jìn)行編號(hào)。當(dāng)某個(gè)運(yùn)行列表非常大,文件屬性不能放在一個(gè)文件記錄中時(shí),描述文件的文件屬性就會(huì)存儲(chǔ)在幾個(gè)文件記錄中,運(yùn)行列表也分成幾個(gè)小片。起始VCN域和結(jié)束VCN域都用于定位其文件記錄指示-即運(yùn)行列表-運(yùn)行所指定的VCN。注:如果屬性可以放在一個(gè)文件記錄內(nèi),則結(jié)束VCN域(這種情況下沒(méi)有使用)可能是00 00 00 00 00 00 00 00

13、。壓縮引擎的數(shù)量:為達(dá)到最好的壓縮比率,NTFS可以根據(jù)不同類型的數(shù)據(jù)使用不同的壓縮引擎。當(dāng)前的壓縮引擎使用值04。為流分配的單元大小:它幾倍于卷上用來(lái)存儲(chǔ)文件屬性流所描述的分配空間。如果流沒(méi)有壓縮,它就是數(shù)倍于簇空間大小的實(shí)際大小,相反,則比較小。流的實(shí)際大小:文件屬性流在壓縮前的大小。流的初始化大小:這是文件屬性流的壓縮后的大小(總是低于分配大小)。如果此流未被壓縮,就是它的實(shí)際大小。注意:常駐文件屬性從不被壓縮(也沒(méi)有壓縮引擎號(hào)域),因?yàn)樗牧魈 P畔⑹亲銐虻模好珠L(zhǎng)+內(nèi)容部分的偏移值=到流的偏移值(常駐屬性)或者到運(yùn)行列表的偏移值(非常駐屬性)。-解讀NTFS NTFS文件系統(tǒng)結(jié)構(gòu)分

14、析在NTFS文件系統(tǒng)中,文件存取是按簇進(jìn)行分配,一個(gè)簇必需是物理扇區(qū)的整數(shù)倍,而且總是2的整數(shù)次方。NTFS文件系統(tǒng)并不去關(guān)心什么是扇區(qū),也不會(huì)去關(guān)心扇區(qū)到底有多大(如是不是512字節(jié)),而簇大小在使用格式化程序時(shí)則會(huì)由格式化程序根據(jù)卷大小自動(dòng)的進(jìn)行分配。文件通過(guò)主文件表(MFT)來(lái)確定其在磁盤(pán)上的存儲(chǔ)位置。主文件表是一個(gè)對(duì)應(yīng)的數(shù)據(jù)庫(kù),由一系列的文件記錄組成-卷中每一個(gè)文件都有一個(gè)文件記錄(對(duì)于大型文件還可能有多個(gè)記錄與之相對(duì)應(yīng))。主文件表本身也有它自己的文件記錄。NTFS卷上的每個(gè)文件都有一個(gè)64位(bit)稱為文件引用號(hào)(File Reference Number,也稱文件索引號(hào))的唯一標(biāo)

15、識(shí)。文件引用號(hào)由兩部分組成:一是文件號(hào),二是文件順序號(hào)。文件號(hào)為48位,對(duì)應(yīng)于該文件在MFT中的位置。文件順序號(hào)隨著每次文件記錄的重用而增加,這是為NTFS進(jìn)行內(nèi)部一致性檢查而設(shè)計(jì)的。NTFS使用邏輯簇號(hào)(Logical Cluster Number,LCN)和虛擬簇號(hào)(Virtual Cluster Number,VCN)來(lái)進(jìn)行簇的定位。LCN是對(duì)整個(gè)卷中所有的簇從頭到尾所進(jìn)行的簡(jiǎn)單編號(hào)。卷因子乘以LCN,NTFS就能夠得到卷上的物理字節(jié)偏移量,從而得到物理磁盤(pán)地址。VCN則是對(duì)屬于特定文件的簇從頭到尾進(jìn)行編號(hào),以便于引用文件中的數(shù)據(jù)。VCN可以映射成LCN,而不必要求在物理上連續(xù)。NTFS

16、的目錄只是一個(gè)簡(jiǎn)單的文件名和文件引用號(hào)的索引,如果目錄的屬性列表小于一個(gè)記錄的長(zhǎng)度,那么該目錄的所有信息都存儲(chǔ)在主文件表的記錄中,對(duì)于大于記錄的目錄則使用B+樹(shù)進(jìn)行管理。主文件表中的基本文件記錄中有一個(gè)指針指向一個(gè)存儲(chǔ)非常駐索引緩沖-包括該目錄下所有下一級(jí)子目錄和文件的外部簇,而B(niǎo)+樹(shù)結(jié)構(gòu)便于大型目錄中文件和子目錄的快速查找。主文件表中的基本文件記錄中有一個(gè)指針指向一個(gè)存儲(chǔ)非常駐索引緩沖-包括該目錄下所有下一級(jí)子目錄和文件的外部簇,而B(niǎo)+樹(shù)結(jié)構(gòu)便于大型目錄中文件和子目錄的快速查找。在NTFS中,所有存儲(chǔ)在卷上的數(shù)據(jù)都包含在文件中,包括用來(lái)定位和獲取文件的數(shù)據(jù)結(jié)構(gòu),引導(dǎo)程序和記錄這個(gè)卷的記錄(N

17、TFS元數(shù)據(jù))的位圖,這體現(xiàn)了NTFS的原則:磁盤(pán)上的任何事物都為文件。在文件中存儲(chǔ)一切使得文件系統(tǒng)很容易定位和維護(hù)數(shù)據(jù),而在NTFS中,卷中所有存放的數(shù)據(jù)均在一個(gè)叫做MFT的文件記錄數(shù)組中,稱為主文件表(Master File Table),MFT是由高級(jí)格式化產(chǎn)生的。而MFT則由文件記錄(File Record)數(shù)組構(gòu)成。File Record的大小一般是固定的,不管簇的大小是多少,均為1KB,這個(gè)概念相當(dāng)于Linux中的inode(i節(jié)點(diǎn))。File Record在MFT文件記錄數(shù)組中物理上是連續(xù)的,且從0開(kāi)始編號(hào)。MFT僅供系統(tǒng)本身組織、架構(gòu)文件系統(tǒng)使用,這在NTFS中稱為元數(shù)據(jù)(me

18、tadata)。其中最基本的前16個(gè)記錄是操作系統(tǒng)使用的非常重要的元數(shù)據(jù)文件。這些NTFS主文件表的重要的元數(shù)據(jù)文件都是以$(美元符號(hào))開(kāi)始的名字,所以是隱藏文件,在Windows 2000中不能使用dir命令(甚至加上/ah參數(shù))像普通文件一樣列出這些元數(shù)據(jù)文件。實(shí)際上File System Driver(ntfs.sys)維護(hù)了一個(gè)系統(tǒng)變量NTFS Protect System Files用于隱藏這些元數(shù)據(jù)。但是微軟公司也提供了一個(gè)OEM TOOL,叫做NFI.EXE,用此工具可以轉(zhuǎn)儲(chǔ)NTFS主文件表的重要的元數(shù)據(jù)文件(元數(shù)據(jù):是存儲(chǔ)在卷上支持文件系統(tǒng)格式管理的數(shù)據(jù)。它不能被應(yīng)用程序來(lái)訪問(wèn)

19、,它只能為系統(tǒng)提供服務(wù)),使用NFI顯示結(jié)果如下:C:nfi C:|MORE而這些元數(shù)據(jù)文件文件是系統(tǒng)驅(qū)動(dòng)程序裝配卷所必需的,WINDOWS 2000給每個(gè)分區(qū)賦予一個(gè)盤(pán)符并不表示該分區(qū)包含有WINDOWS 2000可以識(shí)別的文件系統(tǒng)格式,如果一旦主文件表?yè)p壞,那么該分區(qū)在WINDOWS 2000下是無(wú)法讀取的。為了使該分區(qū)能夠在WINDOWS 2000下能被識(shí)別,也就是必須首先建立WINDOWS 2000可以識(shí)別的文件系統(tǒng)格式即主文件表,這可通過(guò)高級(jí)格式化該分區(qū)來(lái)完成。眾所周知,Windows以簇號(hào)來(lái)定位文件在磁盤(pán)存儲(chǔ)的位置,在FAT格式的文件系統(tǒng)中有關(guān)簇號(hào)的指針是包含在FAT表中的,而在N

20、TFS中有關(guān)簇號(hào)的指針是包含在$MFT及$MFTMirr文件中的。NTFS元文件伴隨著以上這些新增功能的是更多的用于存放與功能相關(guān)的數(shù)據(jù)的元文件。最后,在下面的表中羅列出NTFS5中所有的元文件:每個(gè)MFT記錄都對(duì)應(yīng)著不同的文件,如果一個(gè)文件有很多屬性或是分散成很多碎片,就很可能需要多個(gè)文件記錄。這時(shí),存放其文件記錄位置的第一個(gè)記錄就叫做基文件記錄(base file record)。MFT中的第1個(gè)記錄就是MFT自身。由于MFT文件本身的重要性,為了確保文件系統(tǒng)結(jié)構(gòu)的可靠性,系統(tǒng)專門(mén)為它準(zhǔn)備了一個(gè)鏡像文件($MftMirr),也就是MFT中的第2個(gè)記錄。第3個(gè)記錄是日志文件($LogFile

21、)。該文件是NTFS為實(shí)現(xiàn)可恢復(fù)性和安全性而設(shè)計(jì)的。當(dāng)系統(tǒng)運(yùn)行時(shí),NTFS就會(huì)在日志文件中記錄所有影響NTFS卷結(jié)構(gòu)的操作,包括文件的創(chuàng)建和改變目錄結(jié)構(gòu)的命令,例如復(fù)制,從而在系統(tǒng)失敗時(shí)能夠恢復(fù)NTFS卷。第4個(gè)記錄是卷文件($Volume),它包含了卷名、被格式化的卷的NTFS版本和一個(gè)標(biāo)明該磁盤(pán)是否損壞的標(biāo)志位(NTFS系統(tǒng)以此決定是否需要調(diào)用Chkdsk程序來(lái)進(jìn)行修復(fù))。第5個(gè)記錄是屬性定義表($AttrDef,attribute definition table),其中存放了卷所支持的所有文件屬性,并指出它們是否可以被索引和恢復(fù)等。第6個(gè)記錄是根目錄(),其中保存了存放于該卷根目錄下所

22、有文件和目錄的索引。在訪問(wèn)了一個(gè)文件后,NTFS就保留該文件的MFT引用,第二次就能夠直接進(jìn)行對(duì)該文件的訪問(wèn)。第7個(gè)記錄是位圖文件($Bitmap)。NTFS卷的分配狀態(tài)都存放在位圖文件中,其中每一位(bit)代表卷中的一簇,標(biāo)識(shí)該簇是空閑的還是已被分配了的,由于該文件可以很容易的被擴(kuò)大,所以NTFS的卷可以很方便的動(dòng)態(tài)的擴(kuò)大,而FAT格式的文件系統(tǒng)由于涉及到FAT表的變化,所以不能隨意的對(duì)分區(qū)大小進(jìn)行調(diào)整。第8個(gè)記錄是引導(dǎo)文件($Boot),它是另一個(gè)重要的系統(tǒng)文件,存放著Windows 2000/XP的引導(dǎo)程序代碼。該文件必須位于特定的磁盤(pán)位置才能夠正確地引導(dǎo)系統(tǒng)。該文件是在Format程

23、序運(yùn)行時(shí)創(chuàng)建的,這正體現(xiàn)了NTFS把磁盤(pán)上的所有事物都看成是文件的原則。這也意味著雖然該文件享受NTFS系統(tǒng)的各種安全保護(hù),但還是可以通過(guò)普通的文件I/O操作來(lái)修改。第9個(gè)記錄是壞簇文件($BadClus),它記錄了磁盤(pán)上該卷中所有的損壞的簇號(hào),防止系統(tǒng)對(duì)其進(jìn)行分配使用。第10個(gè)記錄是安全文件($Secure),它存儲(chǔ)了整個(gè)卷的安全描述符數(shù)據(jù)庫(kù)。NTFS文件和目錄都有各自的安全描述符,為了節(jié)省空間,NTFS將具有相同描述符的文件和目錄存放在一個(gè)公共文件中。第11個(gè)記錄為大寫(xiě)文件($UpCase,upper case file),該文件包含一個(gè)大小寫(xiě)字符轉(zhuǎn)換表。第12個(gè)記錄是擴(kuò)展元數(shù)據(jù)目錄($E

24、xtended metadata directory)。第13個(gè)記錄是重解析點(diǎn)文件($Extend$Reparse)。第14個(gè)記錄是變更日志文件($Extend$UsnJrnl)。第15個(gè)記錄是配額管理文件($Extend$Quota)。第16個(gè)記錄是對(duì)象ID文件($Extend$ObjId)。第1723記錄是是系統(tǒng)保留記錄,用于將來(lái)擴(kuò)展。MFT的前16個(gè)元數(shù)據(jù)文件是如此重要,為了防止數(shù)據(jù)的丟失,NTFS系統(tǒng)在該卷文件存儲(chǔ)部分的正中央對(duì)它們進(jìn)行了備份,參見(jiàn)下圖。NTFS把磁盤(pán)分成了兩大部分,其中大約12%分配給了MFT,以滿足其不斷增長(zhǎng)的文件數(shù)量。為了保持MFT元文件的連續(xù)性,MFT對(duì)這12%

25、的空間享有獨(dú)占權(quán)。余下的88%的空間被分配用來(lái)存儲(chǔ)文件。而剩余磁盤(pán)空間則包含了所有的物理剩余空間-MFT剩余空間也包含在里面。MFT空間的使用機(jī)制可以這樣來(lái)描述:當(dāng)文件耗盡了存儲(chǔ)空間時(shí),Windows操作系統(tǒng)會(huì)簡(jiǎn)單地減少M(fèi)FT空間,并把它分配給文件存儲(chǔ)。當(dāng)有剩余空間時(shí),這些空間又會(huì)重新被劃分給MFT。雖然系統(tǒng)盡力保持MFT空間的專用性,但是有時(shí)不得不做出犧牲。盡管MFT碎片有時(shí)是無(wú)法忍受的,卻無(wú)法阻止它的發(fā)生。那么NTFS到底是怎么通過(guò)MFT來(lái)訪問(wèn)卷的呢?首先,當(dāng)NTFS訪問(wèn)某個(gè)卷時(shí),它必須裝載該卷:NTFS會(huì)查看引導(dǎo)文件(在圖中的$Boot元數(shù)據(jù)文件定義的文件),找到MFT的物理磁盤(pán)地址。然

26、后它就從文件記錄的數(shù)據(jù)屬性中獲得VCN到LCN的映射信息,并存儲(chǔ)在內(nèi)存中。這個(gè)映射信息定位了MFT的運(yùn)行(run或extent)在磁盤(pán)上的位置。接著,NTFS再打開(kāi)幾個(gè)元數(shù)據(jù)文件的MFT記錄,并打開(kāi)這些文件。如有必要NTFS開(kāi)始執(zhí)行它的文件系統(tǒng)恢復(fù)操作。在NTFS打開(kāi)了剩余的元數(shù)據(jù)文件后,用戶就可以開(kāi)始訪問(wèn)該卷了。文件和目錄記錄NTFS將文件作為屬性/屬性值的集合來(lái)處理,這一點(diǎn)與其他文件系統(tǒng)不一樣。文件數(shù)據(jù)就是未命名屬性的值,其他文件屬性包括文件名、文件擁有者、文件時(shí)間標(biāo)記等。下圖顯示了一個(gè)用于小文件的MFT記錄。每個(gè)屬性由單個(gè)的流(stream)組成,即簡(jiǎn)單的字符隊(duì)列。嚴(yán)格地說(shuō),NTFS并不

27、對(duì)文件進(jìn)行操作,而只是對(duì)屬性流進(jìn)行讀寫(xiě)。NTFS提供對(duì)屬性流的各種操作:創(chuàng)建、刪除、讀取(字節(jié)范圍)以及寫(xiě)入(字節(jié)范圍)。讀寫(xiě)操作一般是針對(duì)文件的未命名屬性的,對(duì)于已命名的屬性則可以通過(guò)已命名的數(shù)據(jù)流句法來(lái)進(jìn)行操作。一個(gè)文件通常占用一個(gè)文件記錄。然而,當(dāng)一個(gè)文件具有很多項(xiàng)屬性值或很零碎的時(shí)候,就可能需要占用一個(gè)以上的文件記錄。這種情況下,第一個(gè)文件記錄是其基本的文件記錄,存儲(chǔ)有該文件需要的其它文件記錄的位置。小文件和文件夾(典型的如1500字節(jié)或更少)將全部存儲(chǔ)在文件的MFT記錄里。文件夾記錄包括索引信息,小文件夾記錄完全存儲(chǔ)在MFT結(jié)構(gòu)內(nèi),然而大的文件夾則被組織成B+樹(shù)結(jié)構(gòu),用一個(gè)指針指向一

28、個(gè)外部簇,該簇用來(lái)存儲(chǔ)那些MFT內(nèi)存儲(chǔ)不了的文件夾的屬性。NTFS卷上文件的常用屬性在下表中列出(并不是所有文件都有所有這些屬性)。常駐屬性與非常駐屬性當(dāng)一個(gè)文件很小時(shí),其所有屬性和屬性值可存放在MFT的文件記錄中。當(dāng)屬性值能直接存放在MFT中時(shí),該屬性就稱為常駐屬性(resident attribute)。有些屬性總是常駐的,這樣NTFS才可以確定其他非常駐屬性。例如,標(biāo)準(zhǔn)信息屬性和根索引就總是常駐屬性。每個(gè)屬性都是以一個(gè)標(biāo)準(zhǔn)頭開(kāi)始的,在頭中包含該屬性的信息和NTFS通常用來(lái)管理屬性的信息。該頭總是常駐的,并記錄著屬性值是否常駐、對(duì)于常駐屬性,頭中還包含著屬性值的偏侈量和屬性值的長(zhǎng)度。如果屬

29、性值能直接存放在MFT中,那么NTFS對(duì)它的訪問(wèn)時(shí)間就將大大縮短。NTFS只需訪問(wèn)磁盤(pán)一次,就可立即獲得數(shù)據(jù);而不必像FAT文件系統(tǒng)那樣,先在FAT表中查找文件,再讀出連續(xù)分配的單元,最后找到文件的數(shù)據(jù)。小文件或小目錄的所有屬性,均可以在MFT中常駐。小文件的未命名屬性可以包括所有文件數(shù)據(jù)。建立一個(gè)小文件如下圖所示:如通過(guò)NFI查看文件新建文本文檔.txt的文件記錄號(hào)為36,顯示內(nèi)容如下:File 36新建文本文檔.txt$STANDARD_INFORMATION(resident)$FILE_NAME(resident)$FILE_NAME(resident)$DATA(resident)從

30、顯示內(nèi)容可以看出文件的全部屬性都是常駐屬性,包括DATA屬性,沒(méi)有非常駐屬性,所以,用WINHEX打開(kāi)MFT,查看該文件記錄,有如下圖的內(nèi)容小文件的文件記錄小目錄的索引根屬性可以包括其中所有文件和子目錄的索引。參見(jiàn)下圖小目錄的MFT記錄大文件或大目錄的所有屬性,就不可能都常駐在MFT中。如果一個(gè)屬性(如文件數(shù)據(jù)屬性)太大而不能存放在只有1KB的MFT文件記錄中,那么NTFS將從MFT之外分配區(qū)域。這些區(qū)域通常稱為一個(gè)運(yùn)行(run)或一個(gè)盤(pán)區(qū)(extent),它們可用來(lái)存儲(chǔ)屬性值,如文件數(shù)據(jù)。如果以后屬性值又增加,那么NTFS將會(huì)再分配一個(gè)運(yùn)行,以便用來(lái)存儲(chǔ)額外的數(shù)據(jù)。值存儲(chǔ)在運(yùn)行中而不是在MFT文件記錄中的屬性稱為非常駐屬性(nonresident attribute)。NTFS決定了一個(gè)屬性是常駐還是非常駐的;而屬性值的位置對(duì)訪問(wèn)它的進(jìn)程而言是透明的。當(dāng)一個(gè)屬性為非常駐時(shí),如大文件的數(shù)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論