7

Чтобы сэкономить место на диске, я подумал, что было бы неплохо сжать установленный клиент VMware vSphere, потому что я почти никогда не использую его.

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

Я повторил сжатие / распаковку цилиндров три раза, чтобы другая программа случайно не заняла место на диске. Примечательно, что папка содержит большое количество небольших файлов (≈ 30 КБ).

Почему это так, и я могу как-то найти другие папки, которые мне нужно распаковать, чтобы сэкономить место на диске?


Без сжатия:

размер папки без сжатия свободное пространство без сжатия

Со сжатием:

размер папки со сжатием свободное пространство со сжатием

3 ответа3

8

Немного базовых знаний о предоставленных вами скриншотах размера папок:

несжатого

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

Каждый файл должен выделяться кратным 4 КБ, то есть независимо от того, есть ли у вас файл 1 КБ или 3,5 КБ, оба будут занимать 4 КБ места. Если у вас есть файл 13 КБ, он будет использовать 16 КБ на вашем диске. Разница между "размером" и "размером на диске" заключается в накладных расходах, вызванных неиспользуемым пространством в блоках, так называемых подсказках кластера.

Сжатый

После сжатия "Размер" остается прежним, так как объем чистых данных не изменился вообще. Однако сжатие удалось уменьшить общий размер около 130 МБ. На самом деле даже больше, потому что накладные расходы здесь также применяются. Таким образом, сжатие действительно сэкономило место в этой папке, и это также отображается в размере папки.

Теперь о поведении, которое вы видите с уменьшенным свободным дисковым пространством на диске C: это может иметь несколько причин. Следует понимать, что свободного места на диске всегда будет меньше, чем

<Disk size> - <total size of all files>

Это связано с тем, что существует много метаданных, которые также занимают много места (снимки VSS, точки восстановления системы, MFT и т.д.).

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

Для более точной проверки результатов вы можете сделать следующее:

  • Начните с несжатой папки
  • Отключить защиту системы для каждого тома (Свойства компьютера / Защита системы)
  • Удалить точки восстановления для каждого тома в том же диалоговом окне
  • Используйте "Очистка диска" в свойствах вашего тома C: для удаления временных файлов
  • Обратите внимание на свободное место на диске
  • Сожмите папку
  • Перезагрузите компьютер
  • Используйте очистку диска снова
  • Проверьте свободное место на вашем диске

Теоретически вы должны увидеть увеличение свободного пространства

3

Недавно исследовав аналогичную проблему, я также могу сказать, что сжатый файл занимает по крайней мере 4 килобайта пространства на файл и временное пространство 64 килобайта, что является размером одного "модуля сжатия" для NTFS с размером кластера 4 КБ. В статье на blogs.msdn.com также упоминается, что при сжатии файла дисковое пространство выделяется для хранения одного полного CU и освобождается в неопределенное время. Это должно быть причиной того, что вы испытываете потерю 5 ГБ, хотя и временную (перезагрузка должна обязательно исправить эту потерю, некоторые другие средства должны это сделать, но не дефрагментировать - попытаться и потерпеть неудачу). Очевидно то, что выделено, кажется намного больше (64 КБ * (31048+582) = 2072903680 или 1,93 ГБ), но это объяснимо, поскольку NTFS имеет транзакции, которые требуют времени и процессорных единиц для фиксации в необработанные данные, и когда этот процесс будет По окончании, вы получите все 5 ГБ плюс 150 МБ свободного места из-за сжатия обратно.

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

1

У меня были такие же явления:

При переносе сервера я скопировал папки данных на диске старой Windows Server 2012R2 (с 2 сжатыми папками) на более новый диск Windows Server 2016 Datacenter того же размера, где я создал структуру папок и установил сжатые флаги для этих двух папок. предварительно в процессе копирования. Во время копирования у меня заканчивается дисковое пространство, и везде, где я смотрел, используются только 3 ГБ из 20 ГБ, но сам диск говорит мне, что используются 19x ГБ. Коллега сказал мне убрать флаг сжатия, и чудесным образом вновь появилось потерянное 17 ГБ.

Затем я прочитал вашу статью и решил повторно применить флаг и попробовать перезагрузить компьютер, но, как ни странно, использованное дисковое пространство на этот раз не увеличилось.

Я предполагаю, что может быть проблема в Windows Server 2016 (возможно, с тех пор), что внутренние сгенерированные временные файлы не очищаются должным образом, когда файлы копируются в сжатую папку (в отличие от того, когда флаг сжатия применяется к уже существующим файлам).

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