資料恢復教學 - 5 NTFS檔案系統原理

第五章 NTFS檔案系統原理


5.1.NTFS概述

除了最常用的FAT檔案系統外,還有兩種比較常用的檔案系統,這就是NTFS和HPFS檔案系統。NTFS主要用在Windows NT系統中,HPFS檔案系統則主要用於0S/2系統中。

NTFS是在1993年隨著Windows NT的第一個版本推出而面世的,是一個性能優良的檔案系統。NTFS基於可恢復檔結構而設計,它可使用戶資料檔案不會有丟失或毀壞的危險,適用

於一些要求安全性高、而且在磁片上存儲遠遠大於FAT檔案系統所能處理的巨型檔等場合。


NTFS是新技術檔案系統(New Technology File System)的英文縮寫。與FAT相比,NTFS具有許多新的特性,如容錯性,安全性,檔案壓縮(Compress)和磁片配額(Disk Quotas)等,前面已經介紹過,下面我們來分析簡單NTFS卷的檔案系統結構,對於複雜的NTFS卷,雖然在RAID層面不一樣,但在檔案系統層面,也是一樣的。



5.2.NTFSDBR

對於基本分區和簡單卷,NTFS的引導磁區與FAT16,FAT32的引導磁區作用相同,由MBR引導至使用中的磁碟分割的DBR,再由DBR引導作業系統。對於Windows NT/2000/XP/2003,由DBR調入NTLDR,再由NTLDR調入系統內核,其使用中的磁碟分割的DBR如圖所示。


在NTFS卷上,跟隨在BPB後的資料欄位形成一個擴展BPB。這些欄位中的資料使得Ntldr能夠在啟動過程中找到主檔案表格$MFT(Master File Table)。在NTFS卷上,$MFT被放在一個預定義的磁區中。由於這個原因,如果在$MTF的正常位置中有損毀的磁區的話,就可以把$MFT移到別的位置。但是,如果該資料被破壞,就找不到$MFT的位置,Windows 2000假設該卷沒有被格式化。因此,如果一個NTFS的卷提示未格式化,可能並未破壞$MFT,依據BPB的各欄位的意思是可以重建BPB的。




圖5-1 NTFS的DBR(1)



圖5-2 NTFS分區的DBR(2)


5.3.NTFS的中繼檔

在NTFS檔案系統中,檔亦是按簇進行分配,一個簇必須是物理磁區的整數倍,而且總是2的整數次方。NTFS檔案系統並不去關心什麼是磁區,也不會去關心磁區到底有多大

(如是不是512位元組),而簇大小在使用格式化程式時則會由格式化程式根據卷大小自動的進行分配。


檔通過主檔案表格(MFT,Master File Table)來確定其在磁片上的存儲位置。主檔案表格是一個對應的資料庫,由一系列的檔記錄組成--卷中每一個檔都有一個檔記錄(對

於大型檔還可能有多個記錄與之相對應),其中第一個檔記錄稱為基本檔記錄,其中存儲有其他擴展檔記錄的一些資訊。主檔案表格本身也有它自己的檔記錄。


NTFS分區的區域關係





5.4.$MFT檔分析

中繼檔$MFT是NTFS檔案系統下最重要的一個檔,它記錄著所有檔和目錄的所有情況,包括卷的資訊、開機檔案、$MFT檔本身等一切位於卷上的東西,記錄著如檔案名、安全屬性、檔大小、存儲位置等等資訊,類似於FAT檔案系統下的FAT+FDT的功能,並且存儲著比FAT+FDT要多得多的檔案屬性。


中繼檔表$MFT由一系列的檔記錄組成,每個檔記錄都由記錄頭和屬性部分組成,由“FF FF FF FF”結束,一般大小為1KB,或一個簇大小(這樣一般就更大)。 屬性部分是可變長度區,以“FF FF FF FF”結束,對於1KB長度的MFT記錄,屬性部分的起始偏移一般為0x30。


$MFT分析:

.. $MFT-----------MFT自身;

.. $MFTMIRR----主檔案表格的部分鏡像,不是對MFT的全部備份;

.. $LOGFILE-----日誌檔,為NTFS可恢復性和安全性設計的,記錄了所有能夠影響NTFS卷結構的操作,保證當系統失效時能夠恢復NTFS卷;

.. $VOLUME-----包含卷名、NTFS版本和標明該盤是否損壞的標誌位元(系統決定是否使用CHKDSK來進行修復)。

.. $ATTRDEF----存放卷所支持的所有檔案屬性;

.. $ROOT--------保存了該卷根目錄下的所有檔和目錄的索引;

.. $BITMAP------記錄該卷簇的使用情況,標示簇是空閒還是已分配;

.. $BOOT--------也是一個很重要的系統檔,存放著系統的引導代碼,這個檔必須位於特定的位置才能正確地引導系統;

.. $BADCLUS---記錄所有壞簇的簇號,防止系統對其進行分配使用;

.. $SECURE-----NTFS檔和目錄都有各自的安全性描述元,這個檔就存放了整個卷的安全 描述符。


MFT空間分配:


MFT中繼資料文件

MFT分配空間

檔存儲區

MFT16個中繼資料檔案備份

檔存儲區


NTFS把磁片分成兩個部分,其中約12%的空間分配給MFT,以滿足不斷增長的檔數量。MFT對這些空間享有獨佔權,餘下的空間用來存儲檔,MFT的剩餘空間也包含在內。當檔耗盡存儲空間時,作業系統會簡單減少MFT空間,分配給檔存儲。當有剩餘空間時,這些空間又被重新分配給MFT。


NTFS通過MFT訪問卷的過程如下:

第一步,當NTFS訪問某個卷時,它必須“裝載”該卷:NTFS察看引導檔($BOOT定義的檔),找到MFT的物理磁片位址。

第二步,從檔記錄的資料屬性中獲得VCN到LCN的映射資訊,並存儲在記憶體中。這個映射資訊定位了MFT的運行在磁片上的位置。

第三步,NTFS再打開幾個中繼資料檔的MFT記錄,並打開這些檔,在打開了剩餘的中繼資料檔後,用戶就可以訪問該卷了。

NTFS的中繼檔與DBR參數的關係

NTFS檔案系統由DBR和中繼檔共同組成,其他檔和目錄通過檔案系統來管理,這和FAT檔案系統通過DBRFATFDT來管理檔和目錄是一樣的,不同的是,在NTFS中組成檔案系統的DBR和中繼檔本身也是檔,即一切都是檔。


無論是FAT還是NTFS,一個分區或簡單卷的入口仍然是DBR,由DBR中的引導代碼及BPB參數來定位關鍵的系統引導檔,這些引導檔在FATNTFS下的作用是相同的。同時在前面已經介紹了FATNTFSBPB參數塊各個欄位的意義,下面重點分析一下NTFSBPB參數塊的後四個欄位。


$MFT的起始簇號指的就是$MFT檔的起始位置,它是系統的第一個中繼檔,它的第一條記錄即為MFT自身。在NTFS中,磁片上的一切都是檔,所以第一個磁區也是檔,它是中繼檔$Boot的第一個磁區。


$MFTMirr的起始簇和$MFT的起始簇號意義是一樣重要的,這是因為如果一旦$MFT出錯或者被破壞,就可以用$MFTMirr來替代或者修復,這也是在進行資料恢復時經常用到的。

MFT記錄的簇數,指的是$MFT檔中,每個檔記錄佔有的簇數,一般是固定的1KB,而不管簇本身有多大,所以,對於簇小於1KB的分區,就是實際佔有的值,對於簇大於1KB的分區,一般都是0F6H246


每索引塊的簇數,其意義和MFT記錄的簇數一樣,一般為4KB,根據簇大小換算成簇數即可。

DBR中有$MFT邏輯首簇號,在$MFT中的第八個檔記錄即為$Boot,而DBR又是$Boot的第一個磁區,$Boot檔佔用01兩簇,共16個磁區,如果簇大小為1個磁區,就佔用015磁區。


轉自:http://bbs.intohard.com/index.php

0 意見: