Как обнулить свободное место на виртуальном диске в 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:\
Ответы:
В Windows используйте инструмент sysinternals sdelete, чтобы обнулить все пустое пространство. Команда, которую вы хотите, будет выглядеть следующим образом
sdelete -z c:
.Для Linux я предлагаю вам использовать zerofree .
источник
В Windows уже есть встроенный инструмент командной строки, который делает это: CIPHER. Смотрите его / W вариант.
Таким образом, полная команда будет: cipher / w: c: (замените c: на фактическую букву диска)
(он записывает нули в неиспользуемое пространство, затем 0xff, так что вы должны смотреть его и останавливать его с помощью ctrl-c, когда он начинает писать 0xff - не идеально, но это бесплатно и уже доступно в Windows начиная с XP по крайней мере)
источник
SDelete не обнуляет пространство для сжатия виртуального диска. SDelete начинает с обнуления свободного места, но затем заполняет его 0xff, а затем случайными байтами. См. Подготовка файла виртуального жесткого диска Virtual Server 2005 для отправки в Службу поддержки продуктов Microsoft. Инструкции по настройке виртуального жесткого диска для сжатия.
Precompact.exe может быть трудно найти по некоторым причинам. Я нашел отдельную загружаемую копию здесь . Однако, если у вас есть Windows Virtual PC, вы также можете получить его из% programfiles (x86)% \ Windows Virtual PC \ Integration Components \ Precompact.iso
источник
trim
(начиная с Win7 и Hyper-V 2012), нет необходимости обнулять перед сжатием. Утилита PreCompact обнуляла только части диска удаленными файлами, часть, которая никогда не использовалась, осталась нетронутой. При использовании чего-то подобногоsdelete
динамический диск заполняется до статического размера, который затем можно сжать обратно до фактически используемого размера.fsutil
не с открытым исходным кодом, но поставляется с Windows и, следовательно, ничего не стоит. Я использовал его для обнуления свободного места на пустом диске WD 250 ГБ 7200 об / мин (F:
). Вот что я запускал из командной строки:Который показал этот отчет:
Я использовал
Total # of avail free bytes
в следующих командах:Написание 250 ГБ нулей заняло около 4 часов.
источник
Я тоже искал способ использования Cipher для записи только 0x00 и выхода, когда начинаю записывать 0xFF в свободное пространство. Это позволит сжать максимально свободное пространство. Я придумал следующую основную работу PowerShell
замените d: \ на нужный диск
С уважением Саймон
источник
Если вы используете VMware, гораздо лучше использовать встроенные в VMware инструменты, чтобы освободить любое неиспользуемое пространство на виртуальном диске.
Я использовал это, чтобы уменьшить размер виртуального диска с 28 гигабайт до 13 гигабайт. Ваш пробег может варьироваться.
Когда я попытался использовать
sdelete -z c:
, он фактически увеличил размер виртуальных дисков до 30 гигабайт, что было его максимальным размером.См. Веб-сайт VMware и компактный виртуальный жесткий диск , который находится под
Using VMware Workstation > Configuring and Managing Devices > Configuring and Maintaining Virtual Hard Disks
.Обновить
Иногда инструменты с графическим интерфейсом не так надежны, как инструменты командной строки. Я столкнулся с проблемами, когда инструменты GUI не работают, но инструменты командной строки работают просто отлично. Вот варианты для
VMware Desktop 10
:Вот пример сжатия диска. Эта командная строка работала, несмотря на неудачную команду из графического интерфейса:
Сообщение об ошибке, начинающееся с,
VizDiskLib
является новым для VMware Desktop 10 и может быть безопасно проигнорировано.источник
Google-up Eraser 5.8.8 32-bit Работает хорошо даже на Windows XP SP3 !
источник
Mit,
Я обнаружил, что сценарий powershell Саймона сделал именно то, что вам нужно, без проблем с версиями sdelete. (переключается, делая разные вещи в разных версиях)
У него была одна проблема: шифр продолжал работать, но я это исправил.
Я также изменил скрипт для очистки временной папки:
Вам нужно будет заменить F: \ буквой вашего диска в обоих местах.
источник
Почему сторонние инструменты, когда Windows уже включает в себя все, что вам когда-либо понадобится, бесплатно и настолько быстро, насколько это возможно:
1)
format X: /fs:XXXX /p:#
гдеX
находится буква диска;XXXX
является файловой системой, Yeither и#
является числом проходов;2)
clean
команда diskpart : http://technet.microsoft.com/library/cc766465.aspx , http://support.microsoft.com/kb/300415 ;Кстати, вам не нужно больше одного прохода, в противном случае утверждение является либо устаревшей информацией об устаревших стратегиях перерисовки / записи диска, людях, продвигающих продукты, приводимых в действие паранойей, либо bs, переданных как «совет специалиста».
Редактировать: nvm, пропустил часть свободного пространства ...
источник