2012-07-23 43 views
1

正如我們所知,在NTFS結構中,我們將數據存儲在MFS記錄(其中包含一些運行)。MFT記錄 - NTFS

該書詢問下一個答案:「難道這是一個短文件使用更多的MFT記錄比長文件嗎?」。

我認爲答案是否定的 - 因爲如果我們有一個文件,它的數據是多個MFT的大小,那麼我們必須使用運行。還有其他建議嗎?

謝謝

回答

4

答案是肯定的。包含文件屬性(如文件名,安全信息,小文件數據等); MFT記錄(至NT4有4KB,現在有1KB)包含文件屬性(如文件名,安全信息,小文件數據等);其中一些屬性可以是駐留的(=屬性頭和屬性數據都位於MFT記錄中),或者非駐留(只有attrbite頭在MFT中,屬性數據存儲在磁盤的其他位置 - 例如,data屬性通常非居民)。一些屬性必須保持駐留 - 例如,文件名屬性;一些屬性可以是駐留的,或者是不駐留的 - 例如數據屬性。

如果你有大文件,這意味着MFT記錄只包含數據屬性的屬性頭,但數據位於其他地方 - 即使文件很大,它也只使用一個MFT記錄;另一方面,如果你甚至有非常小的文件,但是這個文件有更多的文件名(鏈接),NTFS必須分配更多的MFT記錄來容納所有文件名屬性,並且它可以跨越很多MFT記錄(使用稱爲屬性的特殊屬性列表)。

+0

謝謝,但數據並不位於MFT? – 2012-07-24 13:34:19

+1

只有高達300字節的文件數據以MFT形式存在(作爲常駐$ DATA屬性) - 如果文件數據較大,$ DATA屬性變爲非駐留並且數據在MFT之外移動到磁盤上的4KB(通常)羣集。如果你想玩MFT記錄,看看這個頁面:http://support.microsoft.com/kb/253066並專門查找稱爲NFI(NTFS文件扇區信息實用程序)的實用程序 - 例如,它轉儲內容文件記錄。 – 2012-07-25 20:35:32

0

一般情況下,一個新創建的文件(沒有數據)將駐留。這意味着只要有足夠的空間可用,任何新數據都將放入其MFT記錄中。隨着數據增長並且不再適合可用的MFT記錄空間,通過將數據從MFT移出並進入羣集塊(並且具有運行列表),數據不再是常駐數據。一個文件是非常駐文件,如果數據稍後縮減爲一個或零個字節,則它永遠不會回到常駐程序。

如果文件的類型爲sparse,並且尚未寫入任何數據,則不一定會有大數據。只要寫入的數據符合其可用的MFT記錄空間,您就可以擁有一個1MB大小的稀疏文件並且仍然駐留。

如果零字節文件具有多個硬鏈接,則甚至可以使用多個MFT記錄。在這種情況下,其他MFT記錄存儲剩餘的硬鏈接名稱。