68 votes

Comment remplir à zéro l'espace libre d'un disque virtuel sous Windows pour une meilleure compression ?

Comment remplir à zéro l'espace libre d'un disque virtuel sous Windows pour une meilleure compression ?

J'aimerais disposer d'un outil open source simple (ou au moins gratuit) pour cela. Il devrait probablement écrire un fichier aussi gros que possible rempli de 0 et l'effacer ensuite. Une seule passe (ce n'est pas pour des raisons de sécurité mais pour la compression, nous sauvegardons des machines virtuelles).

Il doit être exécuté depuis l'intérieur de Windows et non depuis un disque.

Sous Linux, je procède comme suit (en tant qu'utilisateur) :

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

Edit 1 : J'ai décidé d'utiliser sdelete de la réponse acceptée. J'ai regardé l'aide de 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

Il s'agit d'une ancienne version. J'ai utilisé le commutateur -c dès la 2ème invocation et cela a été assez rapide (syntaxe uniquement valable pour les anciennes versions avant V1.6) :

c:\>sdelete -c c: (OUTDATED!)

J'ai l'impression que cela fait ce que je veux. L'outil sdelete est facile à utiliser et à obtenir.

Edit 2 : Comme scottbb l'a indiqué dans sa réponse ci-dessous, l'outil a été modifié en septembre 2011 (version 1.6). Les options -c et -z ont changé de signification. L'utilisation correcte à partir de la version 1.6 est

c:\>sdelete -z c:

Edit 3 : Il existe une version 2.0 de sdelete et sdelete64. Elles semblent présenter des bogues lors de la mise à zéro. Ils semblent rester bloqués à 100% pendant des périodes extrêmement longues. Certaines personnes ont rapporté des durées de 10 à 40 fois plus longues. L'ancienne version 1.61 n'a pas ce problème. Voir https://social.technet.microsoft.com/Forums/en-US/2ffb2539-34ba-4378-aa8a-941d243f117e/sdelete-hangs-at-100?forum=miscutils

Edit 4 : Maintenant, il y a la question de espace disque virtuel alloué dynamiquement . Si vous avez un disque de 100 Go qui n'est pas plein et qui n'utilise que 30 Go sur l'hôte, le remplissage est nul. ne doit pas augmenter considérablement la taille du disque, car cela contredit l'objectif de l'allocation dynamique. . Il y a une réponse pour Oracle VM VirtualBox https://superuser.com/q/907196/44402 - mais sur d'autres piles comme VMWare, Xen, XenServer, etc., il faut répondre à cette question séparément.

2voto

Georgi121270 Points 691

Si vous utilisez VMware, la meilleure solution consiste à utiliser les outils intégrés à VMware pour récupérer l'espace inutilisé sur le disque virtuel.

Je l'ai utilisé pour réduire la taille du disque virtuel de 28 gigaoctets à 13 gigaoctets. Votre expérience peut varier.

Lorsque j'ai essayé d'utiliser sdelete -z c: en fait, il augmentation de la taille des lecteurs virtuels à 30 gigaoctets, qui était sa taille maximale.

Consultez le site Web de VMware et Compacter un disque dur virtuel qui est sous Using VMware Workstation > Configuring and Managing Devices > Configuring and Maintaining Virtual Hard Disks .

Mise à jour

Parfois, les outils de l'interface graphique ne sont pas aussi fiables que ceux de la ligne de commande. J'ai rencontré des problèmes où les outils de l'interface graphique échouaient, mais où les outils de la ligne de commande fonctionnaient parfaitement. Voici les options pour 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.

Voici un exemple de rétrécissement d'un disque. Cette ligne de commande a fonctionné, malgré l'échec de la même commande depuis l'interface graphique :

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.

Le message d'erreur commençant par VizDiskLib est nouveau dans VMware Desktop 10 et peut être ignoré sans risque.

0voto

Frankie Fong Points 31

Google-up Effaceur 5.8.8 32 bits Fonctionne bien, même sur Windows XP SP3 !

-1voto

Mit,

J'ai trouvé que le powershell script de Simon faisait exactement ce dont vous avez besoin, sans les problèmes de versionnement de sdelete. (les interrupteurs faisant différentes choses dans différentes versions)

Il y avait un problème, le cryptogramme continuait à fonctionner, mais je l'ai résolu.

J'ai encore modifié le script pour nettoyer le dossier temporaire :

Vous devrez remplacer F:³ par votre lettre de lecteur aux deux endroits.

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

-5voto

user180961 Points 11

Pourquoi des outils tiers, alors que Windows inclut déjà tout ce dont vous aurez jamais besoin, gratuitement et aussi rapidement que possible :

1) format X: /fs:XXXX /p:#X est la lettre du lecteur ; XXXX est le système de fichiers, soit et # est le nombre de passages ;

2) diskpart clean commandement : http://technet.microsoft.com/library/cc766465.aspx , http://support.microsoft.com/kb/300415 ;

En outre, vous n'avez pas besoin de plus d'un seul passage - toute affirmation contraire est soit une information périmée pour des stratégies obsolètes de rouge/écriture de disque, soit des personnes qui font de la publicité pour des produits, soit une paranoïa, soit des conneries transmises en tant que "conseil d'expert".

Edit : nvm, j'ai manqué le espace libre partie...

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X