Como preencher o espaço livre de um disco virtual no Windows para melhor compactação?

40

Como preencher o espaço livre de um disco virtual no Windows para melhor compactação?

Eu gostaria de uma ferramenta simples de código aberto (ou pelo menos gratuita) para isso. Ele provavelmente deve escrever um arquivo tão grande quanto possível cheio de 0 e apagá-lo depois. Apenas uma passagem (isso não é por motivos de segurança, mas para compactação, estamos fazendo o backup de máquinas virtuais).

Deve ser executado de dentro do Windows e não de um disco.

No Linux eu faço assim (como usuário):

cd
mkdir wipe
sudo sfill -f -l -l -z ./wipe/

Editar 1: decidi usar sdelete a partir do resposta aceita. Eu 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 segunda chamada e isso foi muito rápido (a sintaxe só é válida para versões mais antigas antes da 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.

Editar 2: Como o scottbb apontou em sua resposta abaixo, houve uma mudança em setembro de 2011 na ferramenta (versão 1.6). As opções -c e -z mudaram de significado. O uso correto de 1,6 em diante é

c:\>sdelete -z c:

Editar 3: Existe uma versão 2.0 do sdelete e do sdelete64. Eles parecem estar com erros quando zeram. Ele parecerá estar preso em 100% por períodos extremamente longos. Algumas pessoas relataram 10 a 40 vezes mais. A versão mais antiga 1.61 não tem esse problema. Consulte link

Editar 4: agora há o problema de espaço em disco virtual alocado dinamicamente . Se você tem 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 propósito da alocação dinâmica . Há uma resposta para Oracle VM VirtualBox link - mas em outras pilhas como VMWare, Xen, XenServer, etc., isso precisa para ser respondido separadamente.

    
por mit 28.07.2010 / 23:39

9 respostas

41

No Windows, use a ferramenta sysinternals sdelete para zerar todo o espaço vazio. O comando que você quer ficaria assim sdelete -z c: .

Usage: sdelete [-p passes] [-s] [-q]  ...  
sdelete [-p passes] [-z|-c] [drive letter] ...  
-a         Remove Read-Only attribute.  
-c         Clean free space.  
-p passes  Specifies number of overwrite passes (default is 1).  
-q         Don't print errors (Quiet).  
-s or -r   Recurse subdirectories.  
-z         Zero free space (good for virtual disk optimization).

Para Linux, sugiro que você use zerofree .

    
por 28.07.2010 / 23:43
14

O Windows já tem uma ferramenta de linha de comando integrada que faz isso: CIPHER. Veja sua opção / W.

Portanto, o comando completo seria: cipher / w: c: (substitua c: pela letra de unidade real)

(ele escreve zeros no espaço não utilizado, então 0xff, então você tem que assisti-lo e pará-lo com ctrl-c quando ele começa a escrever 0xff - não é o ideal, mas é gratuito e já está disponível no Windows desde XP menos)

    
por 08.10.2014 / 13:17
6

O SDelete não zera o espaço para compactação de um disco virtual. O SDelete começa zerando o espaço livre, mas, em seguida, preenche-o com 0xff e, em seguida, com bytes aleatórios Consulte Como preparar um arquivo de disco rígido virtual do Virtual Server 2005 para enviar para o Atendimento Microsoft Para saber como configurar um VHD para compactação

O Precompact.exe pode ser difícil de encontrar por algum motivo. Eu encontrei uma cópia para download separada aqui . No entanto, se você tiver o Windows Virtual PC, também poderá obtê-lo em% programfiles (x86)% \ Windows Virtual PC \ Componentes de Integração \ Precompact.iso

    
por 29.07.2010 / 03:01
6

fsutil não é código aberto, mas vem com o Windows e, portanto, não custa nada extra. Eu usei-o para zerar o espaço livre em uma unidade WD 250 GB 7200 RPM vazia ( F: ). Aqui está o que eu corri da linha de comando:

fsutil volume diskfree f:

Que mostrou este relatório:

Total # of free bytes        : 249899469856
Total # of bytes             : 249997291520
Total # of avail free bytes  : 249899469856

Eu usei Total # of avail free bytes nos seguintes comandos:

fsutil file createnew F:\clear 249899469856
fsutil file setvaliddata F:\clear 249899469856
fsutil file setzerodata offset=0 length=249899469856 F:\clear
del f:\clear

Demorou cerca de 4 horas para escrever 250 GB de zeros.

    
por 16.12.2016 / 21:08
3

Eu também estava procurando uma maneira de usar Cipher para escrever apenas 0x00 e sair quando 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

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

Cumprimentos Simon

    
por 07.11.2016 / 02:15
1

Se você estiver usando o VMware, uma maneira muito melhor é usar as ferramentas integradas no 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 realmente aumentou o tamanho das unidades virtuais para 30 gigabytes, que era seu tamanho máximo.

Consulte o site da VMware e Compacte um Disco Rígido Virtual , que está em Using VMware Workstation > Configuring and Managing Devices > Configuring and Maintaining Virtual Hard Disks .

Atualizar

Às vezes, as ferramentas GUI não são tão confiáveis quanto as ferramentas de linha de comando. Já me deparei com problemas em que as ferramentas da GUI falham, mas as ferramentas de linha de comando funcionam bem. Aqui estão as opções para VMware Desktop 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.

Aqui está um exemplo de redução de um disco. Esta linha de comando funcionou, apesar do mesmo comando da GUI ter falhado:

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.

A mensagem de erro que começa com VizDiskLib é nova no VMware Desktop 10 e pode ser ignorada com segurança.

    
por 29.07.2015 / 19:37
0

Google-up Borracha 5.8.8 de 32 bits Funciona muito bem, mesmo no Windows XP SP3 !

    
por 11.01.2017 / 15:44
-1

Com

Descobri que o script powershell do Simon fez exatamente o que você precisa, sem os problemas de versionamento do sdelete. (muda fazendo coisas diferentes em diferentes versões)

Teve um problema, aquele código continuou correndo, mas eu consertei isso.

Eu ainda modifiquei o script para limpar a pasta temp:

Você precisará substituir F: \ pela letra da sua unidade nos dois locais.

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
    
por 31.08.2017 / 17:17
-4

Por que ferramentas de terceiros, quando o Windows já inclui tudo o que você precisa, por "grátis" e o mais rápido que pode ser:

1) format X: /fs:XXXX /p:# , em que X é a letra da unidade; XXXX é o sistema de arquivos, Yeither e # é o número de passagens;

2) comando diskpart clean : link , ;

Btw, você não precisa mais do que uma única passagem - uma declaração de outra forma é uma informação desatualizada para estratégias obsoletas de disco vermelho / gravação, pessoas empurrando produtos, paranoia dirigida ou bs passadas como "consultoria especializada".

Edit: nvm, perdeu a parte espaço livre ...

    
por 09.07.2013 / 21:52