Mft на диске с что это
Перейти к содержимому

Mft на диске с что это

NTFS изнутри. Как устроена файловая таблица MFT в Windows

Стандарт файловой системы NTFS версии 3.1 появился в 2001 году с выходом на рынок Windows XP и с тех пор не претерпел фундаментальных изменений. В Windows 10 также используется NTFS v3.1. Архитектуру и особенности внутреннего устройства этой файловой системы Крис Касперски подробно описал в своей книге «Восстановление данных», которая сейчас готовится к переизданию. Мы публикуем отрывок из этой книги, где Крис рассказывает о том, что представляет собой NTFS изнутри.

NTFS с высоты птичьего полета

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

Обычный и распределенный тома

Обычный и распределенный тома

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

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

Остальные служебные файлы, называемые метафайлами (metafiles) или метаданными (metadata), всегда имеют имена, начинающиеся со знака доллара ( $ ), и носят сугубо вспомогательный характер, интересный только самой файловой системе. К ним в первую очередь относится: $LogFile — файл транзакций, $Bitmap — карта свободного/занятого пространства, $BadClust — перечень плохих кластеров. Текущие версии Windows блокируют доступ к служебным файлам с прикладного уровня (даже с правами администратора!), и всякая попытка открытия или создания такого файла в корневом каталоге обречена на неудачу.

Классическое определение, данное в учебниках информатики, отождествляет файл с именованной записью на диске. Большинство файловых систем добавляет к этому понятие атрибута (attribute) — некоторой вспомогательной характеристики, описывающей время создания, права доступа и так далее. В NTFS имя файла, данные файла и его атрибуты полностью уравнены в правах. Иначе говоря, всякий файл NTFS представляет собой совокупность атрибутов, каждый из которых хранится как отдельный поток байтов. Поэтому, во избежание путаницы, атрибуты, хранящие данные файла, часто называют потоками (streams).

Каждый атрибут состоит из тела (body) и заголовка (header). Атрибуты подразделяются на резидентные (resident) и нерезидентные (non-resident). Резидентные атрибуты хранятся непосредственно в $MFT , что существенно уменьшает грануляцию дискового пространства и сокращает время доступа. Нерезидентные атрибуты хранят в $MFT лишь свой заголовок, описывающий порядок размещения атрибута на диске.

Назначение атрибута определяется его типом (type), представляющим собой четырехбайтное шестнадцатеричное значение. При желании атрибуту можно дать еще и имя (name), состоящее из символов, входящих в соответствующее пространство имен (namespace). Подавляющее большинство файлов имеет по меньшей мере три атрибута. К их числу относится стандартная информация о файле (время создания, модификации, последнего доступа, права доступа), которая хранится в атрибуте типа 10h , условно обозначаемом $STANDARD_INFORMATION . Ранние версии Windows NT позволяли обращаться к атрибутам по их условным обозначениям, но начиная с Windows 2000 мы лишены этой возможности. Полное имя файла (не путать с путем!) хранится в атрибуте типа 30h ( $FILE_NAME ).

Если у файла есть одно или несколько альтернативных имен, таких атрибутов может быть и несколько. Здесь же хранится ссылка (file reference) на родительский каталог, позволяющая разобраться, к какому каталогу принадлежит данный файл или подкаталог. По умолчанию данные файла хранятся в безымянном атрибуте типа 80h ( $DATA ). Однако при желании прикладные программы могут создавать дополнительные потоки данных, отделяя имя атрибута от имени файла знаком двоеточия (например: ECHO xxx > file:attr1; ECHO yyy > file:attr2; more < file:attr1; more < file:attr2 ).

Изначально в NTFS была заложена способность индексации любых атрибутов, значительно сокращающая время поиска файла по заданному списку критериев (например, времени последнего доступа). Индексы хранятся в виде двоичных деревьев, поэтому среднее время выполнения запроса оценивается как O(lg n) . На практике в большинстве драйверов NTFS реализована индексация лишь по имени файла. Как уже говорилось ранее, каталог представляет собой файл особого типа — файл индексов. В отличие от FAT, где файл каталога представляет собой единственный источник данных об организации файлов, в NTFS файл каталога используется лишь для ускорения доступа к содержимому каталога. Он не является обязательным, так как ссылка на родительский каталог всякого файла в обязательном порядке присутствует в атрибуте его имени ( $FILE_NAME ).

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.

Крис Касперски

Крис Касперски

Известный российский хакер. Легенда ][, ex-редактор ВЗЛОМа. Также известен под псевдонимами мыщъх, nezumi (яп. 鼠, мышь), n2k, elraton, souriz, tikus, muss, farah, jardon, KPNC.

Таблица master file (локальные файловые системы)

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

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

Файловая система NTFS резервирует место для MFT, чтобы сохранить MFT как можно более непрерывным по мере роста. Пространство, зарезервированное файловой системой NTFS для MFT в каждом томе, называется зоной MFT. Пространство для файлов и каталогов также выделяется из этого пространства, но только после выделения всего пространства тома за пределами зоны MFT.

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

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

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

Чтобы определить текущий размер MFT, проанализируйте диск файловой системы NTFS с помощью дефрагментатора диска, а затем нажмите кнопку «Просмотреть отчет «. Отобразится статистика диска, включая текущий размер MFT и количество фрагментов. Вы также можете получить размер MFT с помощью FSCTL_GET_NTFS_VOLUME_DATA кода элемента управления.

Утилита для очистки свободного места в MFT Ссleaner. Что это, как использовать?

Любой пользователь компьютера сталкивается с «засорением» операционной системы. За продолжительный срок своей работы «Виндовс» бережно хранит файлы и служебные папки. В итоге он начинает тормозить и свободного места на диске не остается. С помощью утилиты Ccleaner можно очистить компьютер от лишнего мусора.

Что это такое

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

Но с перезаписью в MFT данных о файлах, которые лежали когда-то на свободном месте нет. Кроме того, их невозможно восстановить, так как нет информации о том, где они находились и что в них содержалось.

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

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

ToVm

Таким образом, дисковое пространство, применяемое для таких записей, остается недоступным. Функция Ccleaner «Очистить свободное место MFT» позволяет удалить ненужные записи в MFT. После удаления восстановить данные станет практически невозможно.

Как проводить освобождение диска от мусора

Очищение диска от мусора с помощью MFT может оказаться длительным процессом. Оно зависит от объема пространства на диске и указанного количества проходов при перезаписи данных.

Прежде чем чистить диск от мусора, нужно провести анализ и выяснить, какие именно файлы на ПК занимают много места. Считается, что на системном разделе диска пространства в свободном доступе должно быть не меньше 15% от его общего объема. Это необходимо, чтобы «Виндовс» функционировала полноценно, без торможений и подвисаний.

Функционал «Анализ» в утилите не уступает подобным возможностям, реализованных в отдельных программах.

  1. В окне программы Ccleaner нужно выбрать раздел «Сервис» и перейти на вкладку «Анализирование дисков». Если это необходимо, то можно прибавить файлы из архивов и электронной почты.
  2. Далее нужно выбрать диск компьютера С, D, E и нажать на кнопку «Анализ».
  3. По итогам анализа слишком большие файлы можно перенести с системного диска на несистемный. Для этого нужно выбрать необходимый файл, вызвать контекстное меню и нажать «Открыть папку». Откроется окно проводника, где можно будет убрать файл с диска или удалить его навсегда.

Часто на ПК скапливаются файлы-дубликаты. Они находятся в разных папках. Смысла хранить дубли нет, они только засоряют диск.

  1. Чтобы удалить дубликаты, нужно открыть меню «Сервис», найти позицию «Поиск дубликатов», запустить ее.
  2. Далее необходимо задать места поиска повторяющихся файлов, а также задать исключения — папки из ранее указанной области, которые программа не будет просматривать.
  3. Затем нужно отметить предназначенные для удаления документы и нажать «Удалить выделенные».

После того как будет проведен анализ и удалены все дубликаты, можно приступить к очищению диска.

  1. Для этого нужно в Ccleaner выбрать вкладку «Сервис» и далее «Стирание дисков».
  2. В первой вкладке выбрать «Только свободное место».Если выбрать весь диск, то утилита сотрет его, включая все программы, файлы и документы.
  3. В поле «Способ» нужно выбрать алгоритм DOD три раза.
  4. В поле «Диски» нужно выбрать, на каких дисках требуется очистка, и нажать на вкладку «Стереть».

Из видео узнаете о стирании свободного места на диске с помощью программы CCleaner:

Многократное стирание файлов на диске с помощью Ccleaner

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

Уничтоженный файл с диска никуда не пропадает и его легко восстановить до тех пор, пока сверху на него не будет записана какая-нибудь новая информация. Но даже двух или трех циклов перезаписи мало и данные можно извлечь.

В утилите Ccleaner есть функция «Очистка свободного места». Ее работа заключается не в очищении мусора для освобождения свободного места, а в очищении самого свободного места. Другими словами, очистка — перезапись пустых областей, где когда-то находились удаленные данные. Чтобы запустить эту функцию, нужно запустить Ccleaner.

  1. Далее нужно сначала удалить ненужные файлы обычными методами, не забыв почистить корзину.
  2. Затем запустить утилиту. Перейти в настройки и в графе «Режим очистки» нажать на кружок «Безвозвратное удаление» и выбрать количество циклов перезаписи таким образом, чтобы информацию никто не восстановил.
  3. Отметить места, на которых была стерта информация. Поставить галочку «Очистить свободное место MFT».
  4. Перейти на вкладку «Очистка» и здесь поставить галочку «Очистка свободного места».
  5. Дальше нажать на кнопку «Очистка» и подождать.

Теперь вы знаете, что такое очистка свободного места в MFT Ccleaner, поэтому можете применить эту возможность и без опасения удалить определенный системный файл.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *