Как заполнять нулями виртуальный диск'ы свободного пространства на Windows для лучшего сжатия?
Я хотел как простой инструмент с открытым исходным кодом (или, по крайней мере бесплатно) для этого. Надо, наверное, написать как можно большим файлом, полный `0 ' и стереть его потом. Только один проход (это не из соображений безопасности, но и для сжатия, мы резервное копирование виртуальных машин).
Должен работать из Windows, а не с диска.
На Linux я делаю это, как это (как пользователь):
cd
mkdir wipe
sudo sfill -f -l -l -z ./wipe/
Редактировать 1: я решил использовать программа из принятого ответа. Я взглянул на Программа'ы помочь:
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!)
У меня такое впечатление, это то, что я хочу. Инструмент программа проста в использовании и легко получить.
Редактировать 2: Как scottbb указал в своем ответе ниже, произошел в сентябре 2011 года изменение к инструменту (версия 1.6)- C и-Z опции изменились смыслы. Правильное использование от 1.6 и далее
c:\>sdelete -z c:
Редактировать 3: Есть версия 2.0 SDelete и sdelete64. Они, кажется, глючит при пристрелке. Он будет застрял на 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: Теперь там's вопрос от динамически выделяемой виртуального дискового пространства. Если у вас есть диск с 100 Гб, что не является полным и использует только 30 Гб на хост, обнуление не следует резко увеличивать размер диска, потому что это противоречит цели динамическое размещение. Ответ для виртуальных машин Oracle VirtualBox для` https://superuser.com/q/907196/44402 - но на другие стеки, такие как VMware и Xen, XenServer С и т. д. это надо ответить отдельно.
На Windows использовать средства Sysinternals программа, чтобы обнулить все пустое пространство. Команду, которую вы хотите, будет выглядеть эта программа SDelete -Z и с:`.
в <предварительно> Использование: программа SDelete [-п проходит] [-с] [-м] <файл или каталог> ... программа SDelete [-п пасует] [-з|-с] [буква диска] ... -снять атрибут только для чтения. -с чистого свободного пространства. -п пассов определяет количество перезаписи проходит (по умолчанию-1). -вопрос Не'ошибки печати Т (тихо). -ы или-R рекурсивно в подкаталогах. -з ноль свободного пространства (хорошо для оптимизация виртуального диска). </пред>
Для Linux я предлагаю вам использовать zerofree.
В Windows уже есть встроенный инструмент командной строки, который делает это: шифра. Посмотреть ее параметр /W.
Поэтому полная команда будет: cipher /б:с: (замените ° с:_ с фактическое букву)
(он пишет нули в свободное пространство, тогда как 0xFF, так что вы должны смотреть его и остановить его с помощью ctrl-c, когда он начинает писать, как 0xFF - не идеал, но она бесплатна и уже доступна в Windows начиная с XP по крайней мере)
В этом случае не будет обнулить пространство для сжатия виртуального диска. Программа начинается с обнуления свободного пространства, но затем заполняет его с 0xFF, а затем случайными байтами см. Как подготовить виртуальный сервер 2005 файл виртуального жесткого диска, чтобы отправить в службу поддержки продуктов Microsoft о том, как создать виртуальный жесткий диск для уплотнения
Precompact.exe может быть трудно найти по каким-то причинам. Я нашел отдельно загружаемую копию здесь. Однако, если у вас Windows виртуальный компьютер вы можете также сделать это из %programfiles(х86)%\Windows в виртуальных ПК\интеграция Components\Precompact.iso
команду fsutil
это'т открытым исходным кодом, но это не поставляются с ОС Windows и, следовательно, не'т ничего лишнего. Я использовал его до нуля свободного места на пустой накопитель WD 250 Гб 7200 об / мин привод (Ф:
). Здесь's то, что я бежал из командной строки:
fsutil volume diskfree f:
Что показал этот отчет:
Total # of free bytes : 249899469856
Total # of bytes : 249997291520
Total # of avail free bytes : 249899469856
Я использовала всего воспользоваться бесплатной байты в следующие команды:
fsutil file createnew F:\clear 249899469856
fsutil file setvaliddata F:\clear 249899469856
fsutil file setzerodata offset=0 length=249899469856 F:\clear
del f:\clear
Это заняло около 4 часов, чтобы написать 250ГБ нулей.
Я тоже искал способ, используя шифр, чтобы писать только от 0x00 затем выйти, когда начинают писать 0xFF чтобы свободное пространство. Это позволит максимально освободить пространство, чтобы быть сжаты. Я придумал следующие основные задания PowerShell
замените D:\ диск
Function CipherFreeSpace
{
$cipherjob = @()
$Job = start-job -ScriptBlock {cipher /w:d:\ }
while ($cipherjob -notcontains "Writing 0xFF")
{
Write-host "." -nonewline
Start-Sleep 2
$cipherjob += $job | Receive-Job
}
$Job | Stop-Job | Remove-Job -Force
}
CipherFreeSpace
Что касается Симон
Если вы используете VMware, гораздо эффективнее использовать средства, встроенные в VMware, чтобы освободить неиспользуемое пространство на виртуальном диске.
Я использовал это, чтобы уменьшить размер виртуального диска из 28 ГБ до 13 Гб. Ваш пробег может варьироваться.
Когда я попытался с помощью `программы SDelete -Z на диск C:, он на самом деле повышение размер виртуальных дисков до 30 гигабайт, который был его максимальный размер.
Смотрите на веб-сайте VMware и сжатие виртуального жесткого диска, который является Под помощью русификатора > настройка и управление устройствами > настройка и поддержка виртуального жесткого диска.
Обновление ##
Иногда, графического средства не столь надежны, как инструменты командной строки. Я столкнуться с проблемами, где графические инструменты, но инструменты командной строки работает просто отлично. Здесь представлены варианты для VMware для настольных 10`:
C:\Program Files (x86)\VMware\VMware Workstation>vmware-vdiskmanager -h
Diskname or some other argument is missing.
VMware Virtual Disk Manager - build 1895310.
Usage: vmware-vdiskmanager.exe OPTIONS <disk-name> | <mount-point>
Offline disk manipulation utility
Operations, only one may be specified at a time:
-c : create disk. Additional creation options must
be specified. Only local virtual disks can be
created.
-d : defragment the specified virtual disk. Only
local virtual disks may be defragmented.
-k : shrink the specified virtual disk. Only local
virtual disks may be shrunk.
-n <source-disk> : rename the specified virtual disk; need to
specify destination disk-name. Only local virtual
disks may be renamed.
-p : prepare the mounted virtual disk specified by
the mount point for shrinking.
-r <source-disk> : convert the specified disk; need to specify
destination disk-type. For local destination disks
the disk type must be specified.
-x <new-capacity> : expand the disk to the specified capacity. Only
local virtual disks may be expanded.
-R : check a sparse virtual disk for consistency and attempt
to repair any errors.
-e : check for disk chain consistency.
-D : make disk deletable. This should only be used on disks
that have been copied from another product.
Вот пример сжатие диска. Эта командная строка работала, несмотря на ту же команду из графического интерфейса не работает:
C:\Program Files (x86)\VMware\VMware Workstation>vmware-vdiskmanager.exe -k
"H:\VMware\WindowsXP.vmdk"
VixDiskLib: Invalid configuration file parameter. Failed to read configuration file.
Shrink: 100% done.
Сообщение об ошибке начиная с VizDiskLib
нового в VMware Desktop 10 и можно игнорировать.
МИТ
Я обнаружил, что Симон'скрипт с помощью PowerShell сделал именно то, что вам нужно, без проблем версий программа. (выключатели делать разные вещи в разных версиях)
Это была одна проблема, что Сайфер продолжал бежать, но я исправил это.
Я изменил скрипт для очистки папки Temp:
Вам нужно заменить на F:\ с диска в обоих местах.
Function CipherFreeSpace
{
$cipherjob = @()
$Job = start-job -ScriptBlock {cipher /w:F:\ }
while ($cipherjob -notcontains "Writing 0xFF")
{
Write-host "." -nonewline
Start-Sleep 2
$cipherjob += $job | Receive-Job
}
Stop-Process -processname cipher
Start-Sleep -s 3
Remove-Item -recurse F:\EFSTMPWP
$Job | Stop-Job | Remove-Job -Force
}
CipherFreeSpace
Почему сторонние инструменты, когда Windows уже содержит все, что вам'будете когда-нибудь понадобится, для "на свободе" и как это вообще может быть:
в формате X: /ФС:ХХХХ /П:#
, где X
- это буква диска; ХХХХ
- это файловая система,Yeither и #
- это число проходов;
программа diskpart команду очистить
: http://technet.microsoft.com/library/cc766465.aspx, http://support.microsoft.com/kb/300415;
Кстати, вы Дон'т нужно больше, чем один проход, либо - утверждать обратное-это либо устаревшая информация по устаревшим диск красный/записи стратегий, люди толкаются продукты, паранойи, или БС передается на как "советы экспертов и".
Редактировать: НВМ, пропустили свободное место часть...