Master File Table (MFT - главная таблица файлов)
Как и любая другая система,
NTFS делит все полезное место на кластеры - блоки данных, используемые единовременно.
NTFS поддерживает почти любые размеры кластеров - от 512 байт до 64 Кбайт, неким стандартом же считается кластер размером 4 Кбайт. Никаких аномалий
кластерной структуры NTFS не имеет, поэтому на эту, в общем-то, довольно банальную тему, сказать особо нечего.
Диск NTFS условно делится на две части. Первые 12% диска отводятся под так называемую MFT зону - пространство, в которое растет метафайл MFT (об этом ниже). Запись каких-либо данных в эту область невозможна. MFT-зона всегда держится пустой - это делается для того, чтобы самый главный, служебный файл ( MFT ) не фрагментировался при своем росте. Остальные 88% диска представляют собой обычное пространство для хранения файлов.
Свободное место диска, однако, включает в себя всё физически свободное место - незаполненные куски MFT-зоны туда тоже включаются. Механизм использования MFT-зоны таков: когда файлы уже нельзя записывать в обычное пространство, MFT-зона просто сокращается (в текущих версиях операционных систем ровно в два раза), освобождая таким образом место для записи файлов. При освобождении места в обычной области MFT зона может снова расширится. При этом не исключена ситуация, когда в этой зоне остались и обычные файлы: никакой аномалии тут нет. Что ж, система старалась оставить её свободной, но ничего не получилось. Жизнь продолжается... Метафайл MFT все-таки может фрагментироваться, хоть это и было бы нежелательно.
MFT и его структура
Файловая система NTFS представляет собой выдающееся достижение структуризации: каждый элемент системы представляет собой файл - даже служебная информация. Самый главный файл на NTFS называется MFT, или Master File Table - общая таблица файлов. Именно он размещается в MFT зоне и представляет собой централизованный каталог всех остальных файлов диска, и, как не парадоксально, себя самого. MFT поделен на записи фиксированного размера (обычно 1 Кбайт), и каждая запись соответствует какому либо файлу (в общем смысле этого слова). Первые 16 файлов носят служебный характер и недоступны операционной системе - они называются метафайлами, причем самый первый метафайл - сам MFT. Эти первые 16 элементов MFT - единственная часть диска, имеющая фиксированное положение. Интересно, что вторая копия первых трех записей, для надежности - они очень важны - хранится ровно посередине диска. Остальной MFT-файл может располагаться, как и любой другой файл, в произвольных местах диска - восстановить его положение можно с помощью его самого, "зацепившись" за самую основу - за первый элемент MFT.
Как уже было сказано выше, MFT состоит из массива записей размеров 1 Кб. Каждая запись идентифицирует один файл, расположенный на диске. При создании файла NTFS находит пустую запись в MFT, затем заполняет ей информацией о создаваемом файле. Можно привести инфоррмацию о составе информации, записываемой в главную таблицу файлов.
Тип информации |
Описание |
Стандартная информация |
Атрибуты файла, например "Read Only", "скрытый", "системный", время создания, последнего доступа, последнего измененения, счетчик жестких связей файла. |
Имя |
Имя файла или папки в кодировке Unicode. Если файл имеет жесткие связи, аттрибутов имени файла может быть несколько |
Дескриптор безопасности |
Структура, хранящая данные безопасности, ассоциированные с файлом, управляющим доступом пользователя к файлу. |
Данные |
Содержимое файла; папки не имеют этого типа информации. |
Метафайлы
Первые 16 файлов NTFS ( метафайлы ) носят служебный характер. Каждый из них отвечает за какой-либо аспект работы системы. Преимущество настолько модульного подхода заключается в поразительной гибкости - например, на FAT-е физическое повреждение в самой области FAT фатально для функционирования всего диска, а NTFS может сместить, даже фрагментировать по диску, все свои служебные области, обойдя любые неисправности поверхности - кроме первых 16 элементов MFT. Метафайлы находятся корневом каталоге NTFS диска - они начинаются с символа имени "$", хотя получить какую-либо информацию о них стандартными средствами сложно. Любопытно, что и для этих файлов указан вполне реальный размер - можно узнать, например, сколько операционная система тратит на каталогизацию всего вашего диска, посмотрев размер файла $MFT. В следующей таблице приведены используемые в данный момент метафайлы и их назначение.
$MFT |
сам MFT |
$MFTmirr |
копия первых 16 записей MFT, размещенная посередине диска |
$LogFile |
файл поддержки журналирования (см. ниже) |
$Volume |
служебная информация - метка тома, версия файловой системы, т.д. |
$AttrDef |
список стандартных атрибутов файлов на томе |
$. |
корневой каталог |
$Bitmap |
карта свободного места тома |
$Boot |
загрузочный сектор (если раздел загрузочный) |
$Quota |
файл, в котором записаны права пользователей на использование дискового пространства (начал работать лишь в NT5) |
$Upcase |
файл - таблица соответствия заглавных и прописных букв в имен файлов на текущем томе. Нужен в основном потому, что в NTFS имена файлов записываются в Unicode, что составляет 65 тысяч различных символов, искать большие и малые эквиваленты которых очень нетривиально. |
Поскольку
ОС Windows XP широко использует механизм доступа к ресурсам с помощью ярлыков, на жестком диске хранится большое количество файлов с расширением .lnk. Кроме этого, на
жестком диске находится множество файлов Desktop.ini. Описаннная выше схема хранения информации файлов в
MFT позволяет держать данные небольших файлов в опеоативной памяти, что резко
повышает производительность системы...
Master File Table (MFT - главная таблица файлов)