среда, 8 октября 2008 г.

NTFS возвращает неправильный размер свободного места. Окончание

Как-то я разорвал две части статьи на совершенно неожиданном месте, оканчивая первую часть. Что ж. В отместку чтобы искупить свою вину опубликую сразу весь остаток статьи, не растягивая на две публикации, как хотел изначально. Итак, продолжим.

 

Из вывода CHKDSK мы можем видеть, что общее пространство занятое файлами равно 106 095 080Кб (101.18Гб). Это достаточно большой процент общего занятого объема, так что нам следует посмотреть на пользовательские файлы и понять, почему мы не можем увидеть их с помощью Explorer.

Шаг 3

Есть ли у Вас разрешения на просмотр всех файлов/папок в томе?

  1. если это системный диск, просмотрите «\Document and settings» (Windows 2003 & XP и ниже, примечание переводчика, то есть меня) или «\Users» (Windows 2008 & Vista и выше, примечание переводчика, то есть опять меня) и выясните, можете ли Вы просмотреть все папки профилей. Если они похожи на меня, то у них найдутся пятилетние запасы дампов памяти, MP3, PDF и т.д.
  2. попробуйте «CACLS.EXE x:\ /T» или просто просмотрите папки на диске в поисках ошибки «Access Denied». Когда это случится, дайте себе разрешении на эту часть дерева папок, если хватает прав (совет, который лично  не поддерживаю. Прим. переводчика) или попросите человека, который имеет доступ к этой папке подсчитать объем файлов в ней. Добавьте эту цифру к общей сумме.
  3. Продолжайте этот процесс, пока у Вас не будет полной суммы размеров файлов во всех папках.
  4. Цифры сошлись? Если нет, то переходите к следующему шагу.

В случае с моей таинственной разницей в 20Гб, я нашел старый профиль пользователя от предыдущей установки. Само собой я получил ошибку «Access Denied» при попытке просмотреть его. Чтобы получить доступ к ней я получил статус владелец. Этот пользователь имел привычку коллекционировать дампы памяти и виртуальные машины в папке на своем рабочем столе. Я восстановил немало свободного места с помощью кнопки «delete». Я повторил сканирование тома, но, к моему разочарованию, все еще сохранилась значительная разница.

Шаг 4.

А нет ли у нас альтернативных потоков? Попробуйте использовать программу STREAMS.EXE с http://technet.microsoft.com/en-us/sysinternals/default.aspx. она просканирует структуру папок и отчитается о месте, занятом альтернативными именованными потоками. Перенаправьте вывод команды в текстовый файл и проанализируйте этот файл с помощью текстового редактора или программы для работы с электронными таблицами.

Шаг 5.

Жесткие ссылки (hard links)могут быть проблемой при вычислении общего занятого места методом сканирования. Они не часто используются, но все же заслуживают упоминания. Жесткая ссылка это дополнительный элемент индекса, который указывает на существующий файл. Создаются эти ссылки с помощью функции CreateHardLink. хотя файл на самом деле и существует только в одном месте, каждая такая ссылка содержит свое поле «размер». Из-за этого один файл может быть посчитан дважды в общем размере. Еще одна вещь, которую следует знать, это то, что жесткие ссылки не синхронизируются, поэтому возможно, что только одна из них показывает реальный размер (см. пример ниже)

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

Шаг 6.

Хранит ли служба Volume Shadow Copy разностные копии файлов (diff area files – что-то не срослось у меня с переводом, кажется. Прим. переводчика.) для снимков файловой системы? Используйте VSSADMIN LIST SHADOWSTORAGE чтобы выяснить это. Добавьте объем shadow storage к общей цифре.

VSSVC резервирует место для создания снимков тома. Чтобы поддерживать эту возможность, разностные копии файлов хранятся в папке «\System Volume Information». Это зарезервированное место используется при управлении информацией для возможности «Previous Versions» и для приложения «System Restore». Если Вы из числа пользователей, которые предпочитают сводить влияние подобного функционала к минимуму, то Вы можете изменить размер своего теневого хранилища (shadow storage) с помощью VSSADMIN, чтобы он меньше влиял на занятость дискового пространства. Я предпочитаю оставлять настройки по-умолчанию (просто запомнить, сколько дискового пространства оно использует).

Шаг 7

Если числа все еще не совпадают, то настало время поискать активно прячущиеся файлы и папки. Существует множество утилит поиска rootkit’ов, которые могут помочь Вам определить присутствие активно скрывающихся файлов и папок. Попробуйте использовать сканер типа Rootkit Revealer. Если Вы подозреваете, что Ваша машина была скомпрометирована руткитом, то обратитесь сюда: http://www.microsoft.com/uk/business/security/security-malware.mspx

Увидев, что у меня больше нет значительного неопознанного использования, я был удовлетворен. После принятия во внимание всех указанных факторов у меня осталось всего 1.57Гб разницы (которая определялась содержимым корзины).

Когда бы Вы не увидели разницу между «Used space» и «Size on disk», спросите себя: «что я не вижу?»

С наилучшими пожеланиями,

Dennis Middleton, “NTFS доктор”

В завершении снова ссылка на исходную статью: http://blogs.msdn.com/ntdebugging/archive/2008/07/03/ntfs-misreports-free-space.aspx

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

Анонимный комментирует...

Спасибо, очень помогли! Теневые копии занимали сорок гигов - жалко столько пространства. :)

Alexander Trofimov комментирует...

Спасибо больше автору - я только переводчик =)