Как обнулить свободное место на виртуальном диске в Windows для лучшего сжатия?
Я хотел бы простой инструмент с открытым исходным кодом (или, по крайней мере, бесплатно) для этого. Вероятно, он должен написать максимально большой файл 0
и стереть его потом. Только один проход (это не из соображений безопасности, а из-за сжатия, мы выполняем резервное копирование виртуальных машин).
Должен запускаться изнутри windows, а не с диска.
На Linux я делаю это так (как пользователь):
cd
mkdir wipe
sudo sfill -f -l -l -z ./wipe/
Изменить 1: я решил использовать sdelete из принятого ответа. Я посмотрел на помощь sdelete:
C:\WINDOWS\system32>sdelete /?
SDelete - Secure Delete v1.51
Copyright (C) 1999-2005 Mark Russinovich
Sysinternals - www.sysinternals.com
usage: sdelete [-p passes] [-s] [-q] <file or directory>
sdelete [-p passes] [-z|-c] [drive letter]
-c Zero free space (good for virtual disk optimization)
-p passes Specifies number of overwrite passes (default is 1)
-q Don't print errors (Quiet)
-s Recurse subdirectories
-z Clean free space
Это старая версия. Я использовал ключ -c из 2-го вызова, и это было довольно быстро (синтаксис действителен только для более старых версий до V1.6):
c:\>sdelete -c c: (OUTDATED!)
У меня сложилось впечатление, что это делает то, что я хочу. Инструмент sdelete прост в использовании и легко получить.
Редактировать 2: Как scottbb указал в своем ответе ниже, в сентябре 2011 года произошли изменения в инструменте (версия 1.6). Опции -c и -z изменили значения. Правильное использование с 1.6 года
c:\>sdelete -z c:
Редактировать 3: есть версии sdelete и sdelete64 2.0. Они кажутся глючными при обнулении. Это будет зависать на 100% в течение очень долгого времени. Некоторые люди сообщают в 10 - 40 раз дольше. Более старая версия 1.61 не имеет этой проблемы. См. Https://social.technet.microsoft.com/Forums/en-US/2ffb2539-34ba-4378-aa8a-941d243f117e/sdelete-hangs-at-100?forum=miscutils
Редактировать 4: Теперь существует проблема динамически распределенного пространства виртуального диска . Если у вас диск 100 ГБ, который не заполнен и использует только 30 ГБ на хосте, заполнение нулями не должно значительно увеличить размер диска, потому что это противоречит цели динамического выделения . Существует ответ для Oracle VM VirtualBox
https://superuser.com/q/907196/44402 - но в других стеках, таких как VMWare, Xen, XenServer и т. Д., На этот вопрос нужно отвечать отдельно.
sdelete
это правильный инструмент для работы, но изменение инструмента в сентябре 2011 года (версия 1.6) делает приведенные выше ответы неверными. Параметры-c
и-z
изменили значения. Правильное использование сейчасsdelete -z c:\