windows作為最流行的個人計算機作業系統,成為了我們學習、工作和生活的一部分。我們幾乎每天都會經歷開啟檔案管理器,進入具體磁碟,開啟具體檔案,而windows採用檔案系統管理著所有的檔案和磁碟空間,這個檔案系統就是ntfs。
ntfs檔案系統
文件主要分為兩大部分:
1.ntfs檔案系統簡介
2.檔案磁碟位置計算
ntfs檔案系統簡介
ntfs(new technology file system)是微軟2023年推出的用於windows系統的檔案系統,用於代替原來的fat檔案系統,從而提高效能。ntfs自推出以來經歷了多個版本的更新,更新歷史如下:
可見2023年發行3.1版本後,ntfs就再沒有更新過了。
ntfs資料結構
乙個ntfs分割槽的結構如下圖所示:
整個分割槽主要分為三大區域:
1.vbr(volume boot record):非常重要,儲存跟引導相關的資料,大小為16個扇區;
2.檔案區域:在ntfs的概念裡,一切皆為檔案,包括元資料檔案、常規檔案、目錄、一切的一切都是檔案;
3.bbs(backup boot sector):分割槽的第乙個扇區是分割槽引導記錄,是能否引導系統的關鍵,所以ntfs用分割槽的最後乙個扇區備份第乙個扇區,用於修復損壞的第乙個扇區。
檔案
檔案可分為三種型別:元資料檔案、常規檔案和目錄。
元資料檔案
任何檔案系統都會有元資料用於描述檔案資訊,資訊有如名稱、大小、修改時間、存放位置等等,注意的是ntfs元資料也用檔案表示,總有16個元資料檔案,這些檔案的名稱都是以$開頭,屬於隱藏檔案。
檢視這些檔案:
非常重要的檔案,包含了所有檔案的元資料,定位檔案必須要經過$mft檔案。mft由乙個個檔案記錄組成,乙個檔案至少占用乙個記錄,$mft檔案占用第乙個記錄。
mft檔案記錄(固定大小為1kb)由記錄頭部和屬性組成,記錄頭部大小為42或48位元組,3.1版本之前是42位元組,之後是48位元組。記錄頭部資料結構定義如下:
檔案記錄屬性分為常駐屬性和非常駐屬性,常駐屬性代表屬性的全部內容在檔案記錄中,非常駐屬性代表屬性內容超過了檔案記錄的大小,需要另外開闢空間儲存,例如檔案內容比較大。
檔案記錄頭部中標明了第乙個屬性的偏移量,ntfs支援的屬性定義在$attrdef中,每個屬性有唯一標識id,常見的id有:
檔案內容
檔案內容由屬性$data描述,由於檔案記錄的大小固定為1kb,記錄頭佔了48位元組,所以留給檔案存放內容的空間不會超過976位元組。如果檔案內容比較少,則全部存在檔案記錄中,否則另外開闢extents儲存。開闢的extents以族為單位,ntfs基本分配單位是族,族大小為4kb。
檔案磁碟位置計算
借助微軟公司提供的工具fsutil可計算出檔案的資料分布範圍,根據檔案的大小,可分為兩種情況。
小檔案
小檔案指的是檔案內容可容納在檔案記錄中,不用開闢extents存放,也是最不方便計算的情況。
第一步:
獲取$mft檔案的磁碟分布範圍,方式如下:
指令為:fsutil file queryextents 檔案路徑
輸出結果(結果可能為多行,代表檔案存放位置不連續):
vcn:虛擬族編號,相對於檔案內部的偏移量,單位為族;
族:該extent大小,單位為族;
lcn:邏輯族編號,extent相對於分割槽的偏移量,單位為族。
這樣就可以知道$mft檔案在分割槽的0xc0000(10進製為786432)族(大小4096)處,換算為位元組為786432 4096=3221225472,檔案大小為0x1640(10進製為5696)族,換算為位元組為5696 4096 = 23330816。
第二步:
獲取檔案在$mft檔案的位置,檔案參考編號的低4位元組就是檔案在$mft檔案的位置,求檔案參考編號的方法如下:
通過fsutil volume filelayout 檔案路徑 可獲取到檔案參考編號,0x0007000000005206的低4位元組為0x5206,也就是說e:\12.txt的檔案記錄位於$mft的第0x5206(10進製為20998)個記錄處。
乙個檔案記錄固定為1kb,那麼e:\12.txt的檔案記錄則位於 20998 * 1024 = 21501952 = 0x1481800。
用ftk看看$mft的0x1481800處是什麼內容:
字元「fife」代表是乙個檔案記錄,第二個紫框表明檔名匹配,第三個紫框是檔案內容「helios89」,看看12.txt的內容:
可見計算得到的e:\12.txt在$mft的位置是正確的,知道了$mft在分割槽的分布範圍,也知道了e:\12.txt在$mft的位置,通過簡單的計算便可知道e:\12.txt在分割槽的分布範圍了。
大檔案
大檔案指的是檔案記錄容納不下檔案的內容,需要開闢extents存放,這種檔案是最容易計算其資料分布範圍的,參考小檔案計算的第一步。
分割槽偏移量
上面的計算結果得到的是檔案在分割槽的偏移量,需要加上分割槽偏移量才是磁碟的偏移量。分割槽偏移量可通過ftk軟體檢視。
方法如下:
選擇【file】->【add evidence item..】,彈框如下:
選擇【physical drive】【下一步】選擇磁碟,點選完成。
在【view】中選擇【properties】顯示出屬性框
在左側的【evidence tree】中選擇乙個分割槽,在屬性框中便可檢視到分割槽的偏移量(單位扇區)了,如下圖所示:
結束語
windows作為最流行的個人計算機作業系統,也證明了ntfs檔案系統的強大和穩定。本文件只是對ntfs進行了簡單的介紹,還有更多的技術原理值得我們繼續研究,讓我們繼續前進吧。
WINDOWS與NTFS檔案系統
ntfs即new technology file system,是windows nt 200 xp 和server2003 專用的檔案系統 server用的是ntfs5.2版。ntfs特性如下 1。容錯性 ntfs可以自動的修復磁碟錯誤而不顯示任何出錯資訊,windows server 2003在...
Windows環境檔案系統 NTFS
ntfs,new technology file system ntfs,是 windowsnt 環境的檔案系統。windows xp和windows 7等下的檔案系統大多為ntfs。老式檔案系統是fat檔案系統。主要特點 1 支援大小 ntfs可以支援的分割槽 如果採用動態磁碟則稱為卷 大小可以達...
NTFS檔案系統
卷 volume 和簇 cluster 是ntfs用來描述物理磁碟的單位。卷之間是相對獨立的,卷的概念其實就是分割槽 partition 簇的引入是為了方便處理不同容量的卷,通常在格式化乙個卷時,可以設定該卷的簇的大小的,預設值是根據卷的容量算出來的,容量越大,簇也劃分得越大。簇劃分得很大,優點在於...