當前位置:吉日网官网 - 傳統節日 - 關於NTFS-MFT

關於NTFS-MFT

壹個ntfs文件系統由引導扇區、MFT(包含MFT元數據)和數據區組成。

NTFS中存儲了兩份MFT備份以防MFT文件損壞,兩個MFT備份的具體起始位置都存儲在引導扇區中。

引導扇區是從NTFS文件系統的第壹個扇區開始,以55 AA結尾。我們主要關註前88字節的信息,其中重要的就是“NTFS”標識、扇區大小、每簇扇區數、MFT起始簇以及MFT備份MFTMirr位置這些信息。我們可以根據MFT起始簇信息找到MFT,或者根據MFT備份MFTMirr位置找到MFT的另外壹個MFT備份。如下圖所示:

MFT是什麽,什麽作用?

在NTFS中,整個卷的所有文件信息(包括MFT本身、數據文件、文件夾等等)都存儲在MFT。每壹個文件在 MFT 中都有壹個或多個 MFT 項記錄文件屬性信息。而且每項大小是固定的(壹般為1KB),MFT保留了前16項用於特殊文件記錄,稱為元數據。

可以根據MFT快速的找到文件的詳細信息和具體位置等。

壹個MFT項包括MFT頭和關於文件的4條屬性,以FF FF FF FF結尾。

在壹個MFT項中前56字節是MFT頭部信息,其中比較重要的是FILE標識、第壹個屬性的偏移和flags。

flags顯示了此文件是否是正常文件,或者是刪除文件等。

每條屬性都包含屬性頭和屬性結構。每條屬性的前4字節顯示該屬性的類型,不同類型的屬性有不同的屬性結構。

具體屬性頭的大小根據是否是常駐屬性來進行計算。

是否是常駐屬性根據屬性頭的第9個字節判斷,1為非常駐,0為常駐。

如果是非常駐屬性,屬性頭大小為64;如果是常駐屬性,屬性頭大小為24字節。

常駐和非常駐的區別:

常駐屬性是直接保存再MFT中,非常駐屬性保存再MFT之外的其他地方。如果文件或文件夾小於1500字節,那麽它們的所有屬性,包括內容都會常駐在MFT中。

不同類型的屬性有不同的屬性結構,這裏主要介紹10H屬性、30H屬性和80H屬性。

關於文件傳統屬性,對照下表:

這個屬性比較重要,包含了文件的詳細資料和父目錄的參考號等。根據父目錄參考號可以知道文件之間的父子關系,從而構建文件的子父關系。

其實在10H屬性中已經描述了文件的部分信息(時間、標誌等),30H屬性主要關註父目錄的參考號、文件名命名空間和文件名。

NTFS通過為壹個文件創建多個30H屬性實現POSIX (Portable Operating System Interface, 可移植操作系統接口) 式硬連接,每個30H屬性都有自己的詳細資料和父目錄;壹個硬連接刪除時,就從MFT中刪除這個文件名,最後壹個硬連接被刪除時,這個文件就算是真正被刪除了。

LCN(logical cluster number):整個文件卷的相對位置,單位(簇)。

VCN(virtual cluster number):文件內部的相對位置,單位(簇)。

每個運行列表中第壹個字節的低4位表示運行簇大小(filesize)的len,高4位表示起始簇(start)的len。如果壹個運行列表後面的第壹個字節是00,說明運行列表結束,後面的數值暫時不用管;如果不是00,則是下壹個運行列表開始。

0x00~0x3F 是屬性頭;運行列表在橘黃色框中,0x40開始,可以得到運行列表 33 40 BC 00 00 00 0C。

分析如下:

首先0x33,低4位是3,表示緊隨其後的3Byte 0xBC40作為運行簇大小(簇個數),即文件所占總大小;高4位是3,表示簇大小之後的3個Byte 0x0C0000 是起始簇,即文件起始,這裏是說的是LCN。

分析如下:

第壹個運行列表,首先是0x31,低4位是1,表示緊接著的1Byte(03)是運行簇大小;高4位是3,表示緊接著3Byte(65 9A 00)是起始簇,這裏說的是LCN;

第二個運行列表,首先是0x11,低4位是1,表示緊接著的1Byte(01)是運行簇大小;高4位是1,表示緊接著3Byte(13)是起始簇,這裏說的是VCN。

註意,只有第壹個運行列表的起始簇說的是LCN,從第二個運行列表開始每個運行列表的起始簇都說的是VCN。想要得到LCN需要按下面的公式計算:

第n個運行列表的LCN = 第壹個運行列表的起始簇(LCN) + 第二個運行列表的起始簇(VCN) +...+第n個運行列表的起始簇(VCN)

1、從引導扇區找到“MFT起始簇”或者”MFT備份MFTMirr位置“;

2、根據“MFT起始簇”或者”MFT備份MFTMirr位置“找到第壹個MFT項(1KB),第壹個MFT項就是$MFT的屬性內容;

3、在第壹個MFT項中找到80H屬性,根據80H屬性的屬性結構找到文件起始和總大小;

4、上面3找到的就是MFT文件的起始和總大小了。

MFT文件是對NTFS中全部MFT(卷上的所有文件,包括文件名、時間戳、流名和數據流所在的群集號列表、索引、安全標識符以及諸如“只讀”、“壓縮”、“加密”之類的文件屬性)的存儲,可以根據MFT文件快速的查找卷上的所有文件;而MFTMirr文件是對MFT文件中比較重要項的復制,壹般是4KB。

參考:

blogs.com/mwwf-blogs/archive/2015/05/04/4467687.html

/view/f204bb89e518964bce847cae.html

備註:如果想了解其他類型的屬性,詳見參考文章。

  • 上一篇:全民大煉鋼背景,過程,影響
  • 下一篇:關於圍棋傳統文化的文章。
  • copyright 2024吉日网官网