Анализ структуры данных файловой системы NTFS
В предыдущей статье мы описали алгоритм работы программ по восстановлению данных, работающих на дисках, использующих файловую систему FAT. Сегодня мы расскажем о том, как работает восстановление удалённых файлов с дисками, отформатированными в файловой системе NTFS.
Что такое NTFS
Файловая система NTFS была разработанная компанией Microsoft с чистого листа для использования в новой операционной системе Windows NT. NTFS должна была заменить собой устаревшую на тот момент файловую систему FAT, многочисленные ограничения которой не позволяли организовать работу в действительно многопользовательской и многозадачной системе.
Разработчики NTFS поставили цель спроектировать надёжную, безопасную, расширяемую и отказоустойчивую файловую систему для HDD-дисков. Им это прекрасно удалось: файловая система получилась на редкость удачной, однако у нее есть как сильные, так и слабые стороны в сравнение с FAT.
Все данные – файлы
В файловой системе FAT ни одну часть данных нельзя было назвать «файлом» в полном смысле этого слова. Концепция NTFS была полностью переработана. В архитектуре NTFS все данные, включая служебные структуры самой файловой системы, универсально представлены в виде файлов. Более того: в NTFS даже сама файловая система представлена в виде отдельных файлов!
В виде файлов хранятся и административные данные базовой файловой системы – те самые данные, которые в других файловых системах находятся в скрытых областях по фиксированному адресу. В NTFS нет нужды резервировать какие-то особые области под файловые таблицы, таблицу разделов или журнал транзакций: они хранятся в виде обычных файлов и могут физически располагаться в любом месте тома.
При необходимости эти файлы могут менять свой размер (в частности, файловые таблицы заметно «распухают» при хранении на томе большого числа файлов), при этом системой используются стандартные механизмы, предусмотренные для работы с файлами. Если не будет непрерывного участка для хранения данных файловой системы – ничего страшного: файл будет фрагментирован (сохранён в виде нескольких фрагментов в разных частях диска).
Описанная концепция является основополагающим принципом NTFS. В отличие от других файловых систем, в NTFS нет жёстко заданной структуры. В ней нет, как в FAT, раздельных областей для системных структур, файловых таблиц и собственно данных. В NTFS вся файловая система считается областью данных, поэтому любой файл может быть сохранён в любом секторе тома. Единственным неизбежным исключением являются загрузочный сектор и загрузочный код, расположенные в первых секторах тома.
Файловая таблица MFT
NTFS хранит информацию о файлах и каталогах в главной файловой таблице MFT. Эта таблица содержит информацию обо всех файлах и каталогах. Каждому файлу или каталогу соответствует как минимум одна запись. Формат записей MFT исключительно прост. Размер записи составляет 1 КБ, при этом первые 42 байта заголовка имеют жёстко заданное предназначение. Остальное пространство используется для хранения атрибутов – например, имени файла и системных атрибутов. Уникальной является возможность сохранения небольших файлов непосредственно в MFT. В этом случае файл хранится в виде атрибута.
Рис. 1. Структура записи MFT, включающая заголовок и три атрибута.
Формат записи MFT
Формально размер записи MFT определяется переменной в загрузочном секторе. Однако все существующие версии Microsoft Windows используют записи размером 1024 байт. В начале записи расположен заголовок размером 42 байта, который содержит 12 полей. Остальные 982 байта не имеют фиксированной структуры и используются для хранения атрибутов.
Формат записи MFT чрезвычайно прост и очень удобен как для быстрой работы операционной системы, так и для поиска удалённых файлов. Фактически запись MFT представляет с собой небольшую ячейку, позволяющую положить в неё всё, что угодно – но в пределах её размера (982 байта). Начало записи зарезервировано для «этикетки», позволяющей корректно идентифицировать и адресовать ячейку.
Адреса записей MFT
Записи MFT адресуются в 48-битной системе, при этом первой записи соответствует нулевой адрес. Адрес последней (максимальной) записи изменяется по мере расширения MFT. Его можно измерить, разделив размер файла $MFT на размер каждой записи. Учитывая, что размер записи в Windows – ровно 1 КБ, данная операция не представляет проблемы.
Записи MFT пронумерованы. Каждой записи соответствует 16-разрядный порядковый номер. При создании новой записи этот номер автоматически увеличивается.
К примеру, рассмотрим запись MFT 313 с порядковым номером 1. При удалении файла, которому была выделена эта запись, и выделении записи другому файлу записи MTF будет выделен новый порядковый номер 2.
Адрес файла формируется следующим образом. Адрес записи MFT объединяется с порядковым номером, занимающим старшие 16 бит. Таким образом формируется уникальный 64-разрядный базовый адрес файла.
Рис. 2. Базовый адрес файла формируется объединением адреса записи MFT и её порядкового номера.
Для обращения к записям MFT в файловой системе NTFS используется порядковый номер записи. Использование уникального порядкового номера записи предоставляет и дополнительное удобство: оно упрощает выявление повреждений файловой системы. К примеру, если сбой происходит на этапе выделения структур данных для нового файла, то по порядковому номеру записи MFT можно будет определить, какому файлу принадлежит данная запись – новому или предыдущему. Соответственно, порядковый номер используют программы для восстановления данных NTFS.
Атрибуты записей MFT
NTFS – уникальная файловая система, не имеющая, в отличие от FAT, жёстко заданной структуры записей. Каждая запись MFT минимально структурирована. Есть заголовок, и есть место для хранения разнообразных атрибутов. Причём атрибутом может быть практически всё, что угодно – дата, время, имя файла и так далее – вплоть до собственно содержимого файла!
Атрибуты могут хранить самую разнообразную информацию. Понятно, что разные типы информации могут быть записаны в разных форматах и занимать больше или меньше места в записи.
Рис. 3. Пример записи MFT с заголовком записи, двумя атрибутами и неиспользуемой областью.
Итак, атрибуты могут содержать любую информацию. Но у каждого атрибута есть универсальная часть: заголовок. Формат заголовка стандартизован и одинаков для всех атрибутов. А вот содержимое атрибута может быть произвольной формы и размера.
В статье «Алгоритм восстановления данных с раздела NTFS» мы рассмотрим процесс поиска и восстановления удаленного файла.
Добрый день! Подскажите возможно ли откатиться к старой файловой системе по номеру MFT после изменения файловой структуры командой chkdsk.
Нет, не возможно откатиться к старой файловой системе по номеру MFT после изменения файловой структуры командой chkdsk. Команда chkdsk используется для проверки и исправления ошибок в файловой системе, таких как поврежденные файлы, отсутствующие ссылки и т. д.
У меня недавно полетел жесткий диск, причем некоторые файлы открывались. Восстановление системы не помогло. Пришлось искать программы для восстановления данных. Помогла программа Hetman Data Recovery Pack, ф она не только восстановил мне данные, но и выявила ошибки, которые, как потом оказалось и повлияли на сбой в жестком диске.
У знакомого как раз полетел жесткий диск, сейчас ему скину ссылку на данную статью. Думаю, что она поможет ему разобраться. А проблема собственно в том что данные не отображаются на диске и сам диск не показывает на индикаторе, что он подключен. Вопрос состоит в том, можно ли прочитать данные с не рабочего жесткого диска? Жаль, что в данной статье не указаны программные продукты, позволяющие сделать это.
Данные прочитать можно. Самый простой способ - отнесите диск в сервис, где за пару дней и несколько тысяч рублей вам восстановят данные (возможно, и не все, все зависит от повреждений и причины поломки). Есть вариант посложнее. Вам помогут программы Live CD или WinPE . При помощи последней можно выполнить огромное количество задач: и резервное копирование, и восстановление данных и т.д. С помощью первой проги записать образ на болванку, в BIOS поставить загрузку с CD и загрузиться с Live CD. В этом случае станут доступны все диски и сможете с них скопировать инфу на внешний носитель. Также есть бесплатная программка для восстановоления данных R.saver.
Как устроена файловая система NTFS?
NTFS (New Technology File System) является файловой системой, используемой в Microsoft Windows. Она предоставляет пользователям больше возможностей, чем другие файловые системы, такие как FAT или FAT32. NTFS использует древовидную структуру файлов, похожую на ту, что используется в Windows. Каждый файл и каталог имеет свою уникальную систему имен, что позволяет однозначно идентифицировать их. NTFS также предоставляет расширенные возможности, такие как управление правами доступа, шифрование файлов, сжатие, аудиторское контролирование и т.д.
Чем характеризуется файловая система NTFS?
NTFS (New Technology File System) - это файловая система, разработанная Microsoft для использования в Windows NT и последующих версиях. Она предоставляет много функций, включая поддержку файлов больше 4 ГБ, поддержку прав доступа, атрибуты файлов, шифрование, сжатие и многое другое.
Что является преимуществом файловой системы NTFS?
Основным преимуществом файловой системы NTFS является большая гибкость и производительность. Она позволяет разделять диск на разные разделы, что облегчает администрирование. NTFS также поддерживает права доступа, шифрование, сжатие данных, аудит, резервное копирование и т.д. Это позволяет администратору системы лучше контролировать, что происходит с файлами и папками.
Где используется NTFS?
NTFS (New Technology File System) используется в Windows для хранения, организации и предоставления доступа к файлам. Это стандартная файловая система для процессоров Intel x86 и совместимых начиная с Windows NT 3.1. NTFS также используется на некоторых редких системах, таких как OS/2 и ReactOS.
Какие ОС поддерживают NTFS?
NTFS поддерживается ОС Windows, включая Windows XP, Vista, 7, 8, 8.1, 10, Server 2003, Server 2008, Server 2012 и Server 2016. Также NTFS поддерживается на некоторых версиях Mac OS X и Linux.
Если у вас остались вопросы про анализ структуры данных файловой системы NTFS, задавайте их в комментариях.