26

Я использовал Defraggler для дефрагментации свободного места на моем диске C:\ объемом 100 ГБ, который был заполнен на 85 ГБ. После дефрагментации накопитель показал всего 75 ГБ заполненных. Как магически появились 10 ГБ свободного места? Я потерял какие-либо данные?

Я сделал очистку диска перед дефрагментацией, и мой мусор был только около 11 МБ, так что не может быть из-за очистки временных файлов. Обратите внимание, что я дефрагментировал "свободное пространство", что означает, что он должен был переставить пустые блоки, чтобы они были смежными.

2 ответа2

23

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

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

Но, может быть, я ошибаюсь ...

Редактировать: Вспомогательная информация здесь:

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

Перевод: Если у вас сильная фрагментация, общие допущения в отношении ситуации с файловой системой не будут применяться. Таким образом, ФС должна предпринять шаги, чтобы приспособиться к фрагментации и, в конечном итоге, потребовать дополнительное пространство для хранения, просто чтобы управлять фрагментами. Именно мое предположение с самого начала.


Изменить: Учитывая вышеизложенное, все еще кажется, что 10 ГБ теряются только из-за фрагментации файла, это безумие. Держу пари, что во время дефрагментации у вас было несколько типичное повреждение файловой системы, которое было исправлено автоматически. Я думаю, что у вас была не только большая фрагментация, но и частично удаленные файлы, занимающие место на диске. Было бы неплохо увидеть журнал скандиска от этой дефрагментации (или прогон скандиска до дефрагментации)

14

Вероятно, произошло то, что операция дефрагментации вынудила Windows выбросить некоторые снимки восстановления системы. Это было бы патологическим случаем фрагментации, когда заголовок метаданных занимал бы 10% вашего дискового пространства в дополнение к тому, что обычно использует Windows. даже тогда я не уверен, что это возможно.

В истории версий или документации Defraggler я не вижу ничего, что указывало бы на то, что он способен правильно дефрагментировать файлы, чтобы предотвратить очистку теневых копий. Фактически, эта ветка на форуме поддержки Defraggler указывает на то, что они знают, что это происходит (в ветке есть сообщение от администратора с пометкой "Официальное исправление ошибки Piriform"), но не указывают, собираются ли они это исправлять.

Теневые копии могут быть потеряны при дефрагментации тома . Причина, по которой это происходит, заключается в том, что по умолчанию VSS работает с кластерами по 16 КБ, в то время как большинство томов NTFS отформатированы с кластерами по 4 КБ. Таким образом, если операция дефрагментации перемещает данные, которые не кратны кластеру 16 КБ (или "расстояние", на которое оно перемещено, не кратно 16 КБ), то VSS будет отслеживать его как изменение и может удалить все ваши данные. моментальные снимки.

MSDN: Дефрагментация файлов:

По возможности перемещайте данные в блоках, выровненных относительно друг друга, с шагом 16 килобайт (КБ). Это снижает накладные расходы на копирование при записи, когда теневые копии включены, поскольку пространство теневого копирования увеличивается и производительность снижается при следующих условиях:

  • Размер блока запроса на перемещение меньше или равен 16 КБ.
  • Дельта перемещения не с шагом 16 КБ.

Встроенная дефрагментация Vista не делает этого:

Одним из изменений, которое неочевидно для пользователей, является наша оптимизация теневого копирования во время дефрагментации. Defrag имеет специальную эвристику для перемещения файловых блоков таким образом, чтобы минимизировать активность копирования при записи и использование области хранения теневых копий. Без этой оптимизации процесс дефрагментации ускорил бы удаление старых теневых копий.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .