MFT (главна файлова таблица)
Лични инструменти
Главна файлова таблица |
Таблица, хеширано B-дърво |
растерно изображение (свободно пространство), таблица (метаданни) |
4096 байта |
255 байта |
$DATA, $BITMAP, $BAD [1] |
не |
Не (предоставя се на ниво блоково устройство) |
не |
Microsoft Windows |
MFT(англ.MasterFileTable) е основната файлова таблица (база данни), която съхранява информация за съдържанието на том с файловата система NTFS, която е таблица, чиито редове съответстват на файловете на тома, а колоните съответстват на файловите атрибути.
Съдържание
MFT е файл (разделен на записи (редове), обикновено с размер 1 KB), който съхранява информация за всички файлове на том, включително самия MFT. Файловете, присвоени на първите 16 записа, са метафайлове, които са недостъпни за операционната система, но са важни за файловата система NTFS и се дублират точно в средата на тома. Системата не може да премества записите на MFT-зона, за да елиминира фрагментацията им, докато се разширяват, следователно, веднага след форматирането на NTFS, обемът се разделя на две части, така да се каже: зоната на обслужване, която се предоставя за използване от потребителя и е запазена за MFT (12,5%). Механизмът за използване на MFT зоната е доста гъвкав и когато файловото пространство се запълни, тогава MFT-зоната просто се намалява и когато във файловото пространство се появи свободно място, може да се разшири отново. MFT зоната остава непокътната възможно най-дълго, тъй като когато се разшири, тя може да се фрагментира, което е нежелателно поради възможността за намаляване на скоростта на работа с обема. Модулността на MFT структурата прави NTFS устойчива на грешки в сравнение с FAT, тъй като MFT може да премества и фрагментира всички свои области без повреда на диска (с изключение на първите 16 записа).
NTFS метафайловете са служебни файлове (области), всеки от които изпълнява определена функция на файловата система NTFS. Всички метафайлове се намират в основната директория на NTFS на тома, която е недостъпна за операционната система.
- $MFT - MFT основна таблица
- $MFTmirr - копие на първите шестнадесет MFT записа (поставени точно в средата на тома)
- $Boot - буутлоудър (само на основния том)
- . - (с точка като име) главна директория
- $LogFile - лог на файловата система
- $Volume - сервизна информация (етикет на том и ID, версия на файловата система и т.н.)
- $Bitmap - карта на свободното пространство на обема
- $AttrDef - списък със стандартни файлови атрибути на тома
- $Quota - записи с потребителски права за използване на дисково пространство (квоти)
- $Secure - дескриптори за сигурност на файлов обект (разрешения)
Комуникация с NTFS
В основата на файловата система NTFS е файл, наречен Master File Table (MFT). Един MFT файл съдържа поне един запис за всеки файл на NTFS том, включително самия MFT файл.
Тъй като инструментите за дефрагментиране на NTFS обем не могат да преместват MFT записи и тъй като значителната MFT фрагментация може да повлияе неблагоприятно на производителността на системата,NTFS запазва дисково пространство за MFT, така че с нарастването на размера на MFT, той ще претърпи минимална фрагментация.
MFT записите се използват за описание на файловете, на които отговарят. Цялата информация за файла, включително неговия размер, дата и час на създаване, разрешения и съдържание, се съхранява или в MFT записите, или на друго място, което не е свързано с MFT, но е посочено в неговите записи.
Тъй като нови файлове се появяват на NTFS том, нови записи се добавят към MFT файла и по този начин размерът на MFT се увеличава. Когато файловете се изтрият от NTFS том, съответните записи в MFT файла се маркират като свободни и могат да се използват повторно, но размерът на MFT не се намалява. По този начин дисковото пространство, използвано от тези записи, остава недостъпно.
Поради важността на MFT и възможните отрицателни ефекти от прекомерната фрагментация на този файл върху производителността на системата, в NTFS се полагат всички усилия, за да се запази този файл непрекъснат. NTFS запазва определен процент от пространството на тома, който може да се използва изключително от MFT файла, докато останалата част от пространството на тома бъде напълно изразходвана. По този начин пространството от тази MFT зона може да бъде разпределено за файлове и папки само след като цялото останало пространство е изразходвано.
В зависимост от средния размер на файла и други критерии, когато дискът се запълни, първо може да се използва MFT запазената област или нерезервираното дисково пространство.
Томовете с малък брой относително големи файлове първи изчерпват незарезервирано дисково пространство, докато томовете с голям брой относително малки файлове първо изчерпват мястото, запазено за MFT. Така или иначе,когато една от тези области прелее, започва фрагментирането на MFT. Когато нерезервираното дисково пространство е пълно, MFT зоната започва да разпределя място за потребителски файлове и папки, което води до фрагментация на MFT. Когато една MFT зона се запълни, пространството за нови MFT записи започва да се разпределя от нерезервирано дисково пространство, което отново води до фрагментиране на MFT. [2]
Ако броят на файловете в директория е малък, тогава списъкът с файлове може да се намира в MFT запис, който е директория. В този случай се нарича малка директория. Малък списък с файлове съдържа стойностите на атрибутите на файла. По подразбиране това е името на файла, както и номера на MTF записа, съдържащ началния запис на файла.
С нарастването на директорията списъкът с файлове може да изисква нерезидентна форма на съхранение. Но водещата част от списъка винаги остава резидентна в записа на главната директория в MFT. Имената на файловете на резидентната част от списъка с файлове са възлите на B-дървото. Останалите части от списъка с файлове се поставят извън MFT. За търсенето им се използва специален атрибут "разпределение на списък" (Разпределение на индекс - IA), което е набор от номера на клъстери, които сочат към останалата част от списъка. Някои части от списъците са листа на дървото, докато други са междинни възли, т.е. съдържат заедно с имената на файловете атрибута Index Allocation, който сочи към файловите списъци от по-ниско ниво. [3]