MCP

суббота, 24 мая 2014 г.

Деградация размера MFT от времени

Небольшая заметка посвящена тому, что недавно я обнаружил тот факт, что MFT в Windows не умеет уменьшаться.

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

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

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

Если вы найдёте способ лучше, буду премного благодарен.

3 комментария:

  1. Кроме Paragon Hard Disk Manager пожалуй и нет, больше я не знаю.
    Acronis Disk Director этого делать не умеет, а программы других производителей и тем более.

    Лучше делать все на неактивной Windows, иначе Paragon Hard Disk Manager попросит перезагрузиться, и все будет делать при перезагрузке.

    Paragon Hard Disk Manager >>> Дефрагментировать MFT (шаг необязательный, но полезный).
    Paragon Hard Disk Manager >>> Сжать MFT.

    При этом действии Paragon Hard Disk Manager выкидывает из MFT все файловые записи с атрибутом "удаленный", потом сжимает оставшиеся, а так же урезает концовку MFT, если поставить ему соответствующую галочку.

    Все это можно сделать и вручную, помню восстанавливал первые 7 записей MFT после глюка с Acronis Disk Director, пересчитывал вручную последовательности обновления, но пересчитать всю MFT, которая у меня сейчас порядка 360 Mb, как говорится "поседеешь".

    P.S. Баловался с удалением "неудаляемых" файлов, хотя, конечно, все можно сделать гораздо проще, особенно на неактивной Windows.
    Ставлю в MFT при помощи WinHex "неудаляемому" файлу атрибут "удаленный".
    Перезагружаюсь - файл на месте, проверяю - атрибут исправлен.
    NTFS ведь у нас все-таки как-бы есть "неубиваемая" система, восстанавливает все из $LogFile, $BitMap.
    Ладно, снова ставлю в MFT "неудаляемому" файлу атрибут "удаленный", запускаю Paragon Hard Disk Manager - Сжать MFT.
    Перезагружаюсь - файла нет.

    ОтветитьУдалить
    Ответы
    1. Спасибо за Paragon Disk Manager, буду иметь его в виду.

      Удалить
  2. Еще хотел немного похвалить Paragon Disk Manager.

    Paragon Disk Manager через свой инструмент "Файловый менеджер" может легко скопировать в любое место, хоть на Рабочий стол, или в сеть, любые системные файлы или папки, например такие, как кусты реестра SAM, SECURITY, SOFTWARE, SYSTEM и так далее, или даже всю папку с реестром C:\Windows\System32\config целиком, или папку D:\BOOT вместе с файлом BCD, или файл BCD отдельно.

    Так же Paragon Disk Manager через свой инструмент "Редактировать/Показать сектора" легко может править те сектора, где другие Hex-редакторы напишут: "Невозможно изменить, занято системой".

    ОтветитьУдалить