zabika.ru 1

Файловая система NTFS. Тома NTFS.

Простой том (simple)

Составной (набор) том (spanned) – том, использующий более одного раздела для формирования одного протяженного. Можно использовать разделы с разных дисков для создания набора томов, большего по объему, чем любой имеющийся на компьютере физический диск.

Зеркальный том (mirrored) содержит копии своих данных на двух разделах. В случае зеркала запись данных производится на оба раздела, а считывание происходит только с одного. Зеркальный том устойчив к сбою одного диска, в этом случае работает оставшаяся половина.

Чередующийся набор томов (stripped) – том, состоящий из нескольких разделов, по которым равномерными блоками распределены данные. NT использует блоки данных по 64 Кбайт. Первый блок данных размером в 64 Кбайт хранится на первом разделе, вторые 64 Кбайт на втором и т.д. по кругу, возвращаясь к первому разделу. Чередующиеся наборы томов могут повысить производительность системы, если использовать разделы, размещенные на разных дисках, поскольку операции чтения-записи могут выполняться параллельно.

Чередующийся набор томов с четностью (RAID-5 volume) – это чередующийся набор с дополнительным блоком данных размером в 64 Кбайт для разделов, образующих чередующийся набор. Дополнительный блок содержит информацию о четности, которую система NT может использовать при восстановлении данных, расположенных на одном из разделов чередующегося набора, в случае выхода из строя диска, где был расположен раздел.

Физическая структура MFT и метафайлы.

Каждый файл на томе NTFS представлен записью в специальном файле, называемом главной файловой таблицей (MFT – master file table). NTFS резервирует первые 16 записей таблицы для специальной информации. Первая запись этой таблицы описывает непосредственно главную файловую таблицу;


за ней следует зеркальная запись (mirror record) MFT. Если первая запись MFT разрушена, то NTFS читает вторую запись для отыскания зеркального файла MFT, первая запись которого идентична первой записи MFT. Местоположения сегментов данных MFT и зеркального файла MFT записаны в секторе начальной загрузки. Дубликат сектора начальной загрузки находится в логическом центре диска.

Третья запись MFT — файл регистрации (log file); используется для восстановления файлов. Файл регистрации подробно описан ниже. Семнадцатая и последующие записи главной файловой таблицы используются собственно файлами и каталогами (также рассматриваются как файлы NTFS) на томе. На слайде показана упрощенная структура MFT.

Метафайлы

Метафайлы находятся корневом каталоге NTFS диска - они начинаются с символа имени "$"

Для метафайлов указан реальный размер - можно узнать, например, сколько ОС тратит на каталогизацию всего диска.

Первые 16 файлов NTFS (метафайлы) носят служебный характер. Каждый из них отвечает за какой-либо аспект работы системы. Преимущество настолько модульного подхода заключается в поразительной гибкости - например, на FAT-е физическое повреждение в самой области FAT фатально для функционирования всего диска, а NTFS может сместить, даже фрагментировать по диску, все свои служебные области, обойдя любые неисправности поверхности - кроме первых 16 элементов MFT. 

Атрибуты в NTFS.

Главная файловая таблица отводит определенное количество пространства для каждой записи файла. Атрибуты файла записываются в распределенное пространство MFT.

Каждая запись MFT состоит из заголовка записи, за которым следует последовательность пар (заголовок атрибута, значение). Всего в файловой системе NTFS определено 13 атрибутов. Как правило значения атрибутов располагаются непосредственно после заголовков, однако если длина значения слишком велика, чтобы поместиться в запись таблицы MFT, она может быть помещена в отдельный блок диска. Такой атрибут называется нерезидентным. Например, таким атрибутом может являться атрибут Data.


Standard Information (стандартная информация) - Стандартный атрибут. Дата и время создания и последнего изменения файла, дата и время последнего доступа к файлу, флаги доступа к файлу, а также дата и время изменения записи MFT, соответствующей данному файлу.

Attribute List (список атрибутов)

Filename (имя файла) - Перечисляет все другие атрибуты.

MS-DOS Name - Имя файла в формате 8.3

Version - Номер последней версии файла

Security Descriptor (дескриптор безопасности) - Фиксирует информацию о том, кто может обращаться к файлу, кто является его владельцем и так далее (ACL)

Data (данные)

Volume Version - версия тома, используется только в системных файлах тома

Volume Information (информация о томе)

Volume Name - отметка тома

Index Root (корневой индекс)

Index Allocation (размещение индекса)- Узлы ветвей дерева типа B+. нерезидентные части индексного списка B-дерева

External Attribute Information - номер первого кластера и количество кластеров нерезидентного атрибута

Bitmap (битовый массив)- Предоставляет информацию об использовании записей в MFT или каталоге

Хранение файлов и каталогов.

Хранение каталогов

Небольшие записи каталогов находятся полностью внутри структуры MFT так же, как записи файла (копии атрибута File_Name файлов и подкаталогов). Для хранения используется атрибут $Index_Root (корневой индекс), который всегда резидентный !

В том случае, когда атрибуты файла (или каталога) не умещаются в MFT и требуется выделение дополнительного пространства:


  • для хранения описания файлов выделяются нерезидентные индексные буферы (4 Кбайт), каждый из которых имеет виртуальный номер кластера (virtual clusters numbers, VCN);

  • корневой индекс хранит корень дерева B+ и ссылки (VCN) на индексные буферы.
  • соответствие между VCN и LCN хранится в атрибуте каталога $Index_Allocation. Примечание: Логические номера кластеров (LCN), представляют последовательность кластеров всего тома


а) запись MFT для небольшого каталога (резидентное хранение)mft_catalog_small

б) запись MFT для “большого” каталога (нерезидентное хранение)mft_catalog_large

Непосредственное хранение файлов

Небольшие файлы и каталоги (меньше 1 Кбайт), типа файла, показанного на слайде, могут полностью содержаться внутри записи MFT.

Если значение атрибута хранится непосредственно в MFT, время, необходимое NTFS для доступа к нему, значительно сокращается. Вместо того, чтобы искать файл в таблице и затем считывать цепочку кластеров для поиска данных файла (как это делается, например, в файловой системе FAT), NTFS обращается к диску только один раз и немедленно считывает данные.

Подобный подход обеспечивает очень быстрый доступ к файлам.

direct_file

Нерезидентное хранение файлов



Конечно, в большинстве случаев все данные файла не помещаются в запись MFT, поэтому этот атрибут как правило является нерезидентным.

Рассмотрим каким образом как в файловой системе NTFS отслеживается расположение нерезидентных атрибутов.

Для увеличения эффективности кластеры назначаются файлам по возможности в виде серий последовательных кластеров (сегментов файла). Блоки в файле описываются последовательностью записей, каждая из которых описывает последовательность логических непрерывных блоков. Непрерывный файл описывается всего одной записью.

Каждая запись начинается с заголовка, определяющего смещение первого блока в файле. Затем располагается смещение первого блока, не покрываемого первой записью. Для приведенного примера у первой записи будет заголовок (0, 50), а сама запись будет содержать дисковые адреса для первых 50 блоков файла. Вторая запись будет иметь заголовок (60, 80) и содержать дисковые адреса для следующих 20 блоков файла.


Следом за каждым заголовком располагаются пары, в которых содержатся дисковые адреса и длины серий блоков. Использование этой схемы для 9-блочного файла, состоящего из трех сегментов приведено на слайде.

На этом рисунке показана запись MFT для короткого файла (короткий файл, здесь означает, что вся информация о блоках помещается в одну запись MFT). Файл состоит из 3-х серий блоков: 20 – 23, 64 – 65, 80 – 82. Число таких серий зависит от того насколько удачно ФС сумела найти место для хранения файла.

Что произойдет, если файл будет слишком велик или будет настолько фрагментирован, что информация о блоках не поместится в одну запись MFT. В этом случае используется более одной записи MFT. В базовой записи “большого” файла записываются все индексы MFT, которые используются для расширения. Если базовой записи MFT не хватает для хранения индексов, то список записей MFT делается нерезидентным.