Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Файловая система. Структура тома NTFS, файловые потоки, принципы хранения резидентных и нерезидентных файлов



Каждый том (т.е. дисковый раздел) NTFS представляет собой линейную последовательность блоков (кластеров). Размер блока фиксирован для каждого тома и варьируется от 512 байт (1 сектор) до 64 Кбайт. В большинстве случаев используется размер в 4 Кбайта.

Главной структурой данных в каждом томе является главная файловая таблица MFT (Master File Table), представляющая собой линейную последовательность записей фиксированного (1 Кбайт) размера. Каждая запись MFT описывает один файл или один каталог. В ней содержатся атрибуты файла, такие как его имя и временные штампы, а также список дисковых адресов, указывающих на расположение блоков файла. Если файл очень большой и необходимо использовать две и более записей главной таблицы для перечисления всех блоков, первая запись MFT, посвященная данному файлу, указывает на другие записи MFT.

Сама главная таблица представляет собой файл и NTFS отводит под него специальную зону — первые 12% диска. Запись каких-либо данных в эту область невозможна. MFT-зона всегда держится пустой - это делается для того, чтобы файл с MFT не фрагментировался при своем росте. Остальные 88% диска представляют собой обычное пространство для хранения файлов.

Свободное место диска, однако, включает в себя всё физически свободное место - незаполненные куски MFT-зоны туда тоже включаются. Механизм использования MFT-зоны таков: когда файлы уже нельзя записывать в обычное пространство, MFT-зона просто сокращается (в текущих версиях операционных систем ровно в два раза), освобождая таким образом место для записи файлов. При освобождении места в обычной области MFT зона может снова расширится. При этом не исключена ситуация, когда в этой зоне остались и обычные файлы: никакой аномалии тут нет. Что ж, система старалась оставить её свободной, но ничего не получилось. Жизнь продолжается... Метафайл MFT все-таки может фрагментироваться, хоть это и было бы нежелательно.

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

Информацию об этих файлах можно получить, изучая MFT. Для них указан вполне реальный размер — и можно узнать, например, сколько операционная система тратит на каталогизацию всего жесткого диска.

В следующей таблице приведены используемые в данный момент метафайлы и их назначение.

0. $MFT сам MFT
1. $MFTmirr копия первых 16 записей MFT, размещенная посередине диска
2. $LogFile файл поддержки журналирования (см. ниже)
3. $Volume служебная информация - метка тома, версия файловой системы, т.д.
4. $AttrDef список стандартных атрибутов файлов на томе
5. $. корневой каталог
6. $Bitmap карта свободного места тома
7. $Boot загрузочный сектор (если раздел загрузочный)
11. $Quota файл, в котором записаны права пользователей на использование дискового пространства (начал работать лишь в NT5)
10. $Upcase файл - таблица соответствия заглавных и прописных букв в имен файлов на текущем томе. Нужен в основном потому, что в NTFS имена файлов записываются в Unicode, что составляет 65 тысяч различных символов, искать большие и малые эквиваленты которых очень нетривиально.

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

Каждый файл в NTFS представляет собой набор атрибутов. Атрибут состоит из заголовка и значения. Запись MFT, описывающая файл, содержит заголовки его атрибутов и указывает на местонахождение значений.

Так, например, имя файла, записанное в кодировке Unicode, является одним из его атрибутов. Другим атрибутом файла является его содержимое.

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

Как правило, файл в NTFS имеет множество коротких атрибутов и один длинный — содержимое файла, представляющее собой поток данных. Однако у файла может быть произвольное количество потоков данных, для обращения к которым необходимо использовать имя потока (указывается через двоеточие после имени файла).

Многие троянские кони и вирусы прячут себя в дополнительных потоках данных файла. Дополнительные потоки не видны стандартными средствами. Наблюдаемый размер файла — это всего лишь размер основного потока.

Файл может не иметь потоков вообще, если он пуст, либо слишком мал и его содержимое помещается непосредственно внутри килобайтовой записи MFT.

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

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

Непрерывный файл описывается всего одной записью. К этой категории относятся файлы, записываемые за одну операцию от начала до конца. Файл с одной «дыркой» (например, файл, для которого определены только блоки с 0 по 49 и с 60 по 79), будет описываться двумя записями. Такой файл может быть создан, если сначала записать в него первые 50 блоков, затем переместить указатель в файле на логический блок 60 и записать еще 20 блоков. Когда из такого файла читается «дырка», все отсутствующие байты оказываются нулями.

Каждая запись начинается с заголовка, определяющего смещение первого блока в файле. Затем располагается смещение первого блока, не покрываемого первой записью.

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

Следом за каждым заголовком располагаются пары, в которых содержатся дисковые адреса и длины серий блоков. Эти дисковые адреса представляют собой смещение блока от начала дискового раздела. Длина серии — это количество блоков в серии. В записи серии может содержаться любое необходимое количество пар.

Имя файла может содержать любые символы, включая полый набор национальных алфавитов, так как данные представлены в Unicode — 16-битном представлении, которое дает 65535 разных символов. Максимальная длина имени файла — 255 символов.

Практические вопросы





Дата публикования: 2015-10-09; Прочитано: 659 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...