Como zerar o espaço livre de um disco virtual no Windows para melhorar a compactação?
Eu gostaria de uma ferramenta simples de código aberto (ou pelo menos gratuita) para isso. Provavelmente, ele deve gravar um arquivo o maior possível 0
e apagá-lo posteriormente. Apenas uma passagem (não por motivos de segurança, mas por compactação, estamos fazendo backup de máquinas virtuais).
Deve ser executado de dentro das janelas e não de um disco.
No Linux, faço assim (como usuário):
cd
mkdir wipe
sudo sfill -f -l -l -z ./wipe/
Edit 1: Decidi usar sdelete a partir da resposta aceita. Dei uma olhada na ajuda do 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
Esta é uma versão antiga. Eu usei a opção -c da 2ª invocação e isso foi bastante rápido (sintaxe válida apenas para versões anteriores à V1.6):
c:\>sdelete -c c: (OUTDATED!)
Tenho a impressão de que isso faz o que eu quero. A ferramenta sdelete é fácil de usar e fácil de obter.
Edit 2: Como scottbb apontou em sua resposta abaixo, houve uma alteração de setembro de 2011 na ferramenta (versão 1.6) As opções -c e -z mudaram de significado. O uso correto a partir de 1.6 é
c:\>sdelete -z c:
Edit 3: Existe uma versão 2.0 do sdelete e sdelete64. Eles parecem estar com erros ao zerar. Parece estar preso a 100% por períodos extremamente longos. Algumas pessoas relataram 10 a 40 vezes mais. A versão anterior 1.61 não possui esse problema. Consulte https://social.technet.microsoft.com/Forums/en-US/2ffb2539-34ba-4378-aa8a-941d243f117e/sdelete-hangs-at-100?forum=miscutils
Edição 4: Agora há a questão do espaço em disco virtual alocado dinamicamente . Se você possui um disco de 100 GB que não está cheio e usa apenas 30 GB no host, o preenchimento zero não deve aumentar drasticamente o tamanho do disco, pois isso contradiz o objetivo da alocação dinâmica . Existe uma resposta para Oracle VM VirtualBox
https://superuser.com/q/907196/44402 - mas em outras pilhas como VMWare, Xen, XenServer, etc., isso precisa ser respondido separadamente.
sdelete
é a ferramenta certa para o trabalho, mas uma alteração de setembro de 2011 na ferramenta (versão 1.6) torna as respostas acima incorretas. As opções-c
e-z
mudaram de significado. O uso correto agora ésdelete -z c:\
Respostas:
Nas janelas, use a ferramenta sysinternals sdelete para zerar todo o espaço vazio. O comando que você deseja ficaria assim
sdelete -z c:
.Para Linux, sugiro que você use o zerofree .
fonte
O Windows já possui uma ferramenta de linha de comando interna que faz isso: CIPHER. Veja sua opção / W.
Portanto, o comando completo seria: cipher / w: c: (substitua c: pela letra da unidade real)
(ele grava zeros no espaço não utilizado e, em seguida, 0xff, então você deve assisti-lo e pará-lo com ctrl-c quando começar a escrever 0xff - não é o ideal, mas é gratuito e já está disponível no Windows desde o XP, pelo menos)
fonte
O SDelete não zerará o espaço para compactação de um disco virtual. O SDelete inicia zerando o espaço livre, mas o preenche com 0xff e bytes aleatórios. Consulte Como preparar um arquivo de disco rígido virtual do Virtual Server 2005 para enviar ao Microsoft Product Support Services Para saber como configurar um VHD para compactação
O Precompact.exe pode ser difícil de encontrar por algum motivo. Encontrei uma cópia separada para download aqui . No entanto, se você possui o Windows Virtual PC, também pode obtê-lo em% programfiles (x86)% \ Windows Virtual PC \ Componentes de integração \ Precompact.iso
fonte
trim
(a partir do Win7 e Hyper-V 2012), não há necessidade de zerar antes da compactação. O utilitário PreCompact zera apenas partes do disco com arquivos excluídos; a parte que nunca havia sido usada foi deixada intocada. Usar algo comosdelete
encheria o disco dinâmico para um tamanho estático, que poderia ser compactado novamente para apenas o tamanho realmente usado.fsutil
não é de código aberto, mas é fornecido com o Windows e, portanto, não custa nada extra. Usei para zerar o espaço livre em uma unidade WD 250 GB 7200 RPM vazia (F:
). Aqui está o que eu executei na linha de comando:O que mostrou este relatório:
Eu usei
Total # of avail free bytes
nos seguintes comandos:Demorou cerca de 4 horas para escrever 250 GB de zeros.
fonte
Eu também estava procurando uma maneira de usar o Cipher para escrever apenas 0x00 e sair ao começar a escrever 0xFF no espaço livre. Isso permitirá que o espaço livre máximo seja compactado. Eu criei o seguinte trabalho básico do PowerShell
substitua d: \ pela unidade necessária
Atenciosamente Simon
fonte
Se você estiver usando o VMware, uma maneira muito melhor é usar as ferramentas incorporadas ao VMware para recuperar qualquer espaço não utilizado na unidade virtual.
Eu usei isso para reduzir o tamanho do disco virtual de 28 gigabytes para 13 gigabytes. Sua milhagem pode variar.
Quando tentei usar
sdelete -z c:
, ele na verdade aumentou o tamanho das unidades virtuais para 30 gigabytes, que era o tamanho máximo.Consulte o site da VMware e Compactar um disco rígido virtual , que está abaixo
Using VMware Workstation > Configuring and Managing Devices > Configuring and Maintaining Virtual Hard Disks
.Atualizar
Às vezes, as ferramentas da GUI não são tão confiáveis quanto as ferramentas da linha de comando. Eu encontrei problemas em que as ferramentas da GUI falham, mas as ferramentas da linha de comando funcionam muito bem. Aqui estão as opções para
VMware Desktop 10
:Aqui está um exemplo de redução de um disco. Esta linha de comando funcionou, apesar do mesmo comando da GUI falhar:
A mensagem de erro iniciada com
VizDiskLib
é nova no VMware Desktop 10 e pode ser ignorada com segurança.fonte
Google-up Eraser 5.8.8 32 bits Funciona muito bem, mesmo no Windows XP SP3 !
fonte
Mit,
Descobri que o script PowerShell de Simon fazia exatamente o que você precisava, sem os problemas de versão do sdelete. (muda fazendo coisas diferentes em versões diferentes)
Ele tinha um problema: a cifra continuava funcionando, mas eu consertei isso.
Modifiquei ainda mais o script para limpar a pasta temp:
Você precisará substituir F: \ pela letra da unidade nos dois lugares.
fonte
Por que ferramentas de terceiros, quando o Windows já inclui tudo o que você precisa, gratuitamente e o mais rápido possível:
1)
format X: /fs:XXXX /p:#
, ondeX
está a letra da unidade;XXXX
é o sistema de arquivos Yeither e#
é o número de passes;2)
clean
comando diskpart : http://technet.microsoft.com/library/cc766465.aspx , http://support.microsoft.com/kb/300415 ;Aliás, você também não precisa de mais do que uma única passagem - uma reivindicação, caso contrário, é uma informação desatualizada de estratégias obsoletas de red / write de disco, pessoas empurrando produtos, paranóia ou bs transmitidas como "consultoria especializada".
Edit: nvm, perdeu a parte do espaço livre ...
fonte