Вопрос 10. Файловая система NTFS : структура системных файлов, их назначение. Файловый дескриптор, анализ его структуры для резидентного и нерезидентного файла.
Добавил: | DMT |
Дата создания: | 30 декабря 2007, 19:01 |
Дата обновления: | 10 января 2008, 0:09 |
Просмотров: | 20350 последний сегодня, 15:11 |
Комментариев: | 2 |
Вопрос 10. Файловая система NTFS : структура системных файлов, их назначение. Файловый дескриптор, анализ его структуры для резидентного и нерезидентного файла. Пример (фрагмент, процедура) определяющая номера кластеров расположения нерезидентрого файла на диске на основе анализа цепочки данных файлового дескриптора. MFT и его структура Файловая система NTFS представляет собой выдающееся достижение структуризации: каждый элемент системы представляет собой файл - даже служебная информация. Самый главный файл на NTFS называется MFT , или Master File Table - общая таблица файлов. Именно он размещается в MFT зоне и представляет собой централизованный каталог всех остальных файлов диска, и себя самого. MFT поделен на записи фиксированного размера (обычно 1 Кбайт), и каждая запись соответствует какому либо файлу. Первые 16 файлов носят служебный характер и недоступны операционной системе - они называются метафайлами, причем самый первый метафайл - сам MFT. Эти первые 16 элементов MFT - единственная часть диска, имеющая фиксированное положение. Интересно, что вторая копия первых трех записей, для надежности хранится ровно посередине диска. Остальной MFT-файл может располагаться, как и любой другой файл, в произвольных местах диска - восстановить его положение можно с помощью его самого, "зацепившись" за самую основу - за первый элемент MFT. Дескриптор MFT можно определить как набор атрибутов, включая атрибут - имя файла, атрибут - дескриптор защиты и атрибут – данные. NTFS обозначает атрибут его именем, записанным прописными буквами, перед которым стоит знак доллара ($) например: $FILENAME или $ DA ' I ' A . Однако на самом деле эти имена атрибутов соответствуют числовым кодам типа, которые NTFS использует для упорядочения атрибутов внутри дескриптора. Каждым атрибут хранится и файле как отдельный поток байтов. NTFS не выполняет чтения и записи файлов — она читает и записывает потоки, соответствующие атрибутам. Возможны следующие операции над атрибутами: создание, удаление, чтение (диапазона байтов) и запись (диапазона бантов). Операции чтения и записи обычно работают над безымянным атрибутом данных файла. Однако можно указать другой атрибут данных при помощи синтаксиса именованных потоков данных . Структура тома NTFS определяет для файлов набор стандартных атрибутов. Эти системные атрибуты имеют фиксированные имена и коды типа, и формат их значений определяется NTFS . Метафайлы Метафайлы находятся корневом каталоге NTFS диска - они начинаются с символа имени "$". Метафайлы и их назначение: $MFT сам MFT $ MFTmirr копия первых 16 записей MFT, размещенная посередине диска $ LogFile файл поддержки журналирования (см. ниже) $ Volume служебная информация - метка тома, версия файловой системы, т.д. $ AttrDef список стандартных атрибутов файлов на томе $. корневой каталог $ Bitmap карта свободного места тома $ Boot загрузочный сектор (если раздел загрузочный) $ Quota файл, в котором записаны права пользователей на использование дискового пространства (начал работать лишь в NT5) $ Upcase файл - таблица соответствия заглавных и прописных букв в имен файлов на текущем томе. Нужен в основном потому, что в NTFS имена файлов записываются в Unicode , что составляет 65 тысяч различных символов, искать большие и малые эквиваленты которых очень нетривиально. Файловая запись MFT содержит либо все атрибуты данного файла, либо отображения VCN - LCN , которые определяют, где на диске расположены значения нерезидентных атрибутов файла. В процессе работы NTFS записывает информацию в еще один важный файл метаданных — журнал транзакций ( log file ). В журнале транзакций регистрируются все операции, влияющие на структуру тома, включая создание файла и любые команды, изменяющие структуру каталогов. Журнал транзакций применяется для восстановления тома NTFS после сбоя системы. Еще одна запись MFT зарезервирована для корневого каталога (известного также как "\"). Эта запись содержит индекс файлов и каталогов, хранящихся в корне структуры каталогов NTFS. Получив первый запрос на открытие некоторого файла, NTFS начинает поиск этого файла с файловой записи корневого каталога. После того как файл открыт, NTFS запоминает его файловую ссылку, чтобы при последующих операциях ввода-вывода обращаться к записи MFT этого файла напрямую. Схема распределения пространства на томе хранится NTFS в файле битовой карты ( bitmap file ). Атрибут данных этого файла содержит битовую карту, каждый бит которой представляет один кластер тома и указывает, свободен ли данный кластер или занят некоторым файлом. Другой важный системный файл — загрузочный файл ( boot file ), в котором хранится код начального загрузчика Windows NT . Для того чтобы можно было загрузить ОС, код начальной загрузки должен располагаться в определенном месте диска. Однако при форматировании утилита Format определяет эту область как файл, создавая для нее файловую запись. Благодаря созданию загрузочного файла NTFS может придерживаться своего правила рассматривать все, находящееся в томе, как файлы. Загрузочный файл, как и файлы метаданных NTFS , имеет отдельную защиту при помощи дескрипторов защиты, которые применяются к любым объектам Windows NT . Модель "нее, что находится на диске, есть файл" означает также, что начальный загрузчик можно модифицировать путем обычных операций файлового ввода-вывода, хотя н настоящее время загрузочный файл защищен от редактирования. Дескриптор файла в NTFS Вся информация файла хранится в его атрибутах, и таким образом, ряды и колонки MFT описывают всю информацию, хранящуюся на томе NTFS. Размер дескриптора (записи) в MFT для тома — минимум 1 Кбайт и максимум 4 Кбайт — определяется во время его форматирования. Атрибуты файла в записях (дескрипторах) MFT расположены в порядке возрастания числовых значений кодов типа, некоторые типы атрибутов могут встречаться в записи более одного раза. Атрибуты, которые обязательны для каждого файла: атрибут стандартной информации, атрибут имени файла, атрибут дескриптора защиты и атрибут данных. В записи MFT могут встречаться и другие атрибуты, если они необходимы для данного файла. Каждый атрибут в файловой записи имеет имя (необязательное) и значение. Имена используются в основном с атрибутами данных для идентификации второго или третьего потока данных в файле. Значение атрибута — это поток байтов, составляющих его. Для маленького файла все его атрибуты и их значения (например, данные файла) умещаются в файловой записи. Если значение атрибута хранится непосредственно в MFT, он называется резидентным атрибутом ( resident attribute ). В начале каждого атрибута расположен стандартный заголовок, содержащий информацию о данном атрибуте, которую NTFS использует для стандартной обработки всех типов атрибутов. Заголовок, который всегда является резидентным, содержит информацию о том, является ли атрибут резидентным или нерезидентным. В случае резидентного атрибута заголовок содержит также смещение значения атрибута относительно заголовка и длину этого значения для атрибута-имени файла. Если значение атрибута хранится непосредственно в MFT, время, необходимое NTFS для доступа к нему, значительно сокращается. Атрибуты, значения которых хранятся не в MET, а в отрезках, называются нерезидентными атрибутами ( nonresident attributes ). ФС определяет, является ли данный атрибут резидентным или нерезидентным; способ размещения данных прозрачен для программы, осуществляющей доступ к ним. В случае нерезидентного атрибута, такого, каким должен быть атрибут данных большого файла, его заголовок содержит информацию, необходимую NTFS для поиска значения атрибута на диске. Только те из стандартных атрибутов, размер которых может возрастать, бывают нерезидентными. Для файла такие атрибуты — это дескриптор защиты, данные, список атрибутов и расширенные атрибуты HPFS. Атрибуты стандартной информации и имени файла всегда резидентные.
Пример (фрагмент, процедура) определяющая номера кластеров расположения нерезидентрого файла на диске на основе анализа цепочки данных файлового дескриптора. Функция печатает список кластеров:
|
Комментарии для "Вопрос 10. Файловая система NTFS : структура системных файлов, их назначение. Файловый дескриптор, анализ его структуры для резидентного и нерезидентного файла. "
Пользователь: wetmurlyka Сообщений: 6 Статус: Незримый Зарегистрирован: 8 января 2008, 20:08 Был:27 февраля 2008, 19:13 | Дата: 9 января 2008, 1:59 Сообщение № 1 |
Нерезидентные файлы Сначала рассмотрим случай не¬резидентного размещения файла. При этом четыре байта со смеще¬нием 30 относительно атрибута данных - 80, хранят длину файла, рас¬положенного где-то на диске. В данном примере длина файла $MFT составляет 023260 байт (выделено толстым прямоугольником). Для того, чтобы определить точное расположение нерезидент¬ною файла на диске, нужно про¬следить цепочку так называемых блоков виртуальных номеров кла¬стеров Virtual Cluster Number (VCN), или просто блоков VCN. Показатель смещения начала этой цепоч-ки относительно начала атрибута данных хранится в двухбайтовом поле, имеющем сме-шение 20 байт относительно начала атрибута данных. В описываемом случае этот показа-тель равен 0040 (пунктирный прямоугольник на рис.12), а сме¬шение области блоков VCN отно¬сительно начала записи MFT рав¬но 00F8+0040 = 0138. На рис.3 эта область обведена произвольным многоугольником. Анализ области блоков VCN Файл, записанный в разделе NTFS, может быть сегментирован. Он состоит из одного или несколь¬ких фрагментов, называемых экс¬тентами. Размер и расположение каждою экстен-та описывается в блоке VCN. В зависимости оттого, фрагментирован файл или нет, об¬ласть VCN может содержать один блок или их набор. Блоки VCN имеют переменный раз-мер, опре¬деляемый первым байтом. Формат блока стоит показать на конкретном примере. Возьмем пер¬вый блок VCN, имею-щий в рассма¬триваемом примере смещение 0138 относительно начала записи MFT: 21 20 DA 4C Тетрады первого байта со значе¬нием 21 определяют размеры двух полей блока VCN. Пер-вое поле, имеющее длину один байт, хранит количество кластеров, выделенных экстенту файла. Второе поле разме¬ром два байта содержит номер пер¬вого кластера. В данном слу-чае первому экстенту файла $MFT вы¬делено 20 кластеров, а номер пер¬вого кластера для первого экстента равен 4CDA. Таким образом опре¬деляем размер и расположение первого экстента файла. Второй блок VCN расположен сразу вслед за первым: 32 10 23 DO E5 05 Для того чтобы определить пер¬вый кластер второго экстента, не¬обходимо прибавить к ад-ресу пер¬вого экстента смещение, указанное во втором блоке VCN (с учетом зна¬ка). В дан-ном случае второй экстент размещен в кластере с номером 4CDA + 05E5D0 = 632AA. Длина второго экстента составляет 2310 кластера. Анализируя остальные блоки VCN, можно определить размеры и расположение всех экс-тентов фай¬ла. Список блоков VCN закрывает¬ся байтом с нулевым значением (подчеркнут толстой линией). Резидентные файлы Файлы небольшого размера размещаются непосредственно в записи MFT, описывающей этот файл, для сокращения времени доступа. Если в байте со смещени¬ем 8 относительно начала атрибу¬та данных находится нулевое зна¬чение, то не нужно прослеживать цепочки блоков VCN. Это означа¬ет, что файл находится внутри ат¬рибута данных. При этом смещение резидент¬ных данных, т. е. файла, записано в двухбайтовом слове со смещением 14 относительно начала атрибута данных, а размер — в двухбайтовом слове со смещением 10. Приведем небольшой пример. Для иллюстрации формата записи MFT, содержащей рези-дентный ат¬рибут данных, мы подготовили ма¬ленький файл с именем FARGUS01.txt, со-держащий текстовую строку «Test Find MFTS!!». Затем с по¬мощью программы Disk Probe мы обнаружили запись таблицы MFT, созданную для этого файла (рис. 14). Здесь атрибут данных начинает¬ся со смещением 0130 относитель¬но начала записи MFT. Байт со сме¬щением 8 внутри этого атрибута (выделен кружком) равен нулю, следовательно, мы име-ем де¬ло с резидентным атрибутом. Как видно из рис. 6, байты фай¬ла FARGUS01.txt (выделенные цветом) находятся внутри записи MFT со смешением 18 относитель¬но начала атрибута данных, а раз¬мер файла со-ставляет 10 байт. |
Пользователь: wetmurlyka Сообщений: 6 Статус: Незримый Зарегистрирован: 8 января 2008, 20:08 Был:27 февраля 2008, 19:13 | Дата: 9 января 2008, 2:02 Сообщение № 2 |
Байт со смещением 8 относительно начала атрибута данных — это признак резидентного размещения файла. Если его значение равно 1, запись MFT хранит только список кластеров, выделенных файлу, а если 0 — файл находится внутри самой записи MFT. Как правило, записи содержат только файлы небольших размеров. |