вторник, 7 октября 2008 г.

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

Категорически приветствую. У нас на форумах TechNet часто бывают вопросы типа “где моё место, чувак???!!!”, касающиеся неизвестно куда девшегося пространства на диске. Я доселе отправлял людей к некой статье, опубликованной в блоге одной из команд MSFT. Но недавно наличие этих вопросов стало превращаться в тенденцию, посему я испросил разрешения перевести и опубликовать это бессмертное творение, на что и получил утвердительный ответ. Я все-таки не переводчик, потому строго не судите. Здесь первая часть той статьи, вторая будет на днях, как только закончу перевод. Ну и полная ссылка на исходную статью, желающие могут ее прочитать в оригинале:

http://blogs.msdn.com/ntdebugging/archive/2008/07/03/ntfs-misreports-free-space.aspx

Итак…

“В последнее время я стал свидетелем множеству запросов, в которых пользователи сообщали о существенной разнице между показателем "Размер на диске", взятым для корня тома, и счетчиком "Использованное место", возвращаемым из свойств тома. Рассматривая эти запросы, я обратил внимание, что мой собственный диск С: имеет такую же мистическую разницу в показаниях в 20Гб.

Ниже приведена история моих поисков ответа.

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

Метод 1 - анализ маски тома (Volume Bitmap Analysis)

Данные использованного и свободного места в процентах, показанные ниже в круговой диаграмме, базируются на анализе битовой маски в скрытом потоке $Bitmap:$Data:”” и считываются с тома через контрольный код (IO control code) FSCTL_GET_VOLUME_BITMAP, после чего подсчитываются единицы и ноли. Двоичная единица представляет занятый кластера на диске, в то время как ноль отображает свободный кластер. Общее число установленных бит обозначает количество занятых кластеров на томе. Это самый быстрый и надежный способ вычислить занятое и пустое пространство.

Метод 2 сканирование файлов при помощи FindFirstFileEx/FindNextFile.

Добираемся до папки "С:", выделяем все файлы и папки, потом жмем правую кнопку мыши и выбираем "Свойства". Появится окно, в котором отображается информация о файлах, которые найдены Explorer. Поля "Размер" и "Размер на диске" в конечном счете, покажут полный размер всех первичных потоков данных всех файлов, найденных Explorer. В моем случае этот метод нашел всего 80.25Гб из 102 (оставляя 21.75Гб разницы).

image image

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

Как найти скрытое использование диска...

Шаг 1

Для начала проверьте, действительно ли все Ваши файлы видны под текущей учетной записью и настройки Explorer. Уберите галочку с пункта "Hide protected operating system files" и выберите пункт "Show hidden files and folders". Когда закончите с этим, проверьте занятое место снова.

image

Есть совпадение с круговой диаграммой с погрешностью в несколько процентов? Если нет, то переходим к Шагу 2.

Шаг 2

Запустите программу CHKDSK и сохраните ее вывод. Итоговая информация в конце это то, что Вы желаете видеть.

clip_image002

Основываясь на выводе CHKDSK, мы можем вычислить полное использование метаданных, сложив следующее:

image 

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

Окончание статьи

Комментариев нет: