Come posso ridurre l'image di VMware?

Ho creato un'image di un sistema Windows Server 2008 utilizzando il VMware Player gratuito e impostato la dimensione massima del disco rigido a 100GB. Quindi ho dato quei file di immagini – 30 GB in quel momento – ad un'azienda di hosting del server. Poche settimane dopo ho chiesto loro una copia di loro; l'image non avrebbe dovuto cambiare molto nelle size, ma i file che sono tornati sono stati la dimensione 100GB completa.

Non sono un esperto di VMware affatto, quindi ho due domande:

  1. Come / perché hanno ampliato l'integer disco dinamico?
  2. C'è qualche modo in grado di ridurre in qualche modo questa image alla dimensione che contiene effettivamente i dati?

Ho provato il converter di VMware e non riesco a leggere il mio file (vmdk); emette solo un errore generico.

La mia speculazione è che quando hanno creato la VM dalla tua image hanno pre-assegnato la dimensione totale delle immagini (questo può avere performance migliori). Quando li esportrono hai l'image completa.

Dubito che puoi ridurre le immagini con il lettore VMware. VMware Workstation viene fornito con vmware-vdiskmanager che può apparentemente essere convertito da un disco fisso a un disco crescente riducendo la dimensione dell'image. Non ho mai provato questo, quindi non posso dire quanto funziona bene.

Il manuale è qui: http://www.vmware.com/support/developer/vddk/vddk12_diskmanager.pdf

Non so su VMWare Player, ma VMWare Workstation viene fornito con l'utilità di linea di command vmware-vdiskmanager.exe. Individuare la cartella C: \ Programmi \ VMware \ VMware Workstation.

Ecco le opzioni della row di command:

VMware Virtual Disk Manager - build 385536. 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. -D : make disk deletable. This should only be used on disks that have been copied from another product. Other Options: -q : do not log messages Additional options for create and convert: -a <adapter> : (for use with -c only) adapter type (ide, buslogic, lsilogic). Pass lsilogic for other adapter types. -s <size> : capacity of the virtual disk -t <disk-type> : disk type id Options for remote disks: -h <hostname> : hostname of remote server -u <username> : username for remote server -f <filename> : file containing password -P <port> : optional TCP port number (default: 902) -S : specifies that the source disk is remote, by default the remote options are assumed to refer to the destination. Disk types: 0 : single growable virtual disk 1 : growable virtual disk split in 2GB files 2 : preallocated virtual disk 3 : preallocated virtual disk split in 2GB files 4 : preallocated ESX-type virtual disk 5 : compressed disk optimized for streaming 6 : thin provisioned virtual disk - ESX 3.x and above The capacity can be specified in sectors, KB, MB or GB. The acceptable ranges: ide adapter : [1MB, 2040.0GB] scsi adapter: [1MB, 2040.0GB] ex 1: vmware-vdiskmanager.exe -c -s 850MB -a ide -t 0 myIdeDisk.vmdk ex 2: vmware-vdiskmanager.exe -d myDisk.vmdk ex 3: vmware-vdiskmanager.exe -r sourceDisk.vmdk -t 0 destinationDisk.vmdk ex 4: vmware-vdiskmanager.exe -x 36GB myDisk.vmdk ex 5: vmware-vdiskmanager.exe -n sourceName.vmdk destinationName.vmdk ex 6: vmware-vdiskmanager.exe -r sourceDisk.vmdk -t 4 -h esx-name.mycompany.com \ -u username -f passwordfile "[storage1]/path/to/targetDisk.vmdk" ex 7: vmware-vdiskmanager.exe -k myDisk.vmdk ex 8: vmware-vdiskmanager.exe -p <mount-point> (A virtual disk first needs to be mounted at <mount-point>) 

È ansible get una prova gratuita di VMWare Workstation.

Ci sono tipicamente due fasi per ridurre un disco virtuale:

  1. Asciugandosi. Questo blocca i blocchi inutilizzati del file system guest. Questo deve essere eseguito all'interno dell'ospite .
  2. Compattazione. Ciò rimuove i blocchi azzerati del file .vmdk dalla fase di pulitura. Questo deve essere eseguito dall'host (anche se può essere innescato dall'ospite).

L'esecuzione di vmware-vdiskmanager sull'host può eseguire la fase di compattazione ma non la fase di pulitura. Ci sono alcuni modi per fare la pulizia:

  • Esegui il vmware-toolbox-cmd disk shrink LOCATION . Esegui il vmware-toolbox-cmd help disk per ulteriori informazioni. ( vmware-toolbox-cmd viene denominato VMwareToolboxCmd sugli ospiti di Windows). Ciò innesca la fase di compattazione quando la pulizia è completa.

  • Il programma vmshrink dal pacchetto di strumenti di terze parti di VM Back . Questo può essere una buona alternativa per gli ospiti per i quali VMware Tools non è disponibile. Questo attiverà anche la fase di compattazione quando la pulizia è completa.

  • Probabilmente potresti usare dd (o qualcosa del genere equivalente) nell'ospite, ma questo è lasciato come esercizio per il lettore.

Ci sono anche alcune circostanze in cui la fase di pulitura non è necessaria. Ad esempio, se l'ospite accende già il contenuto dei file quando li elimina dal file system o se l'ospite è Windows, in questo caso VMware Workstation sa da solo come esaminare le partizioni guest di NTFS per determinare quali blocchi sono inutilizzati .