
Criei uma imagem de um sistema Windows Server 2008 usando o VMware Player gratuito e defini o tamanho máximo do disco rígido para 100 GB. Em seguida, entreguei esses arquivos de imagem - 30 GB na época - para uma empresa de hospedagem de servidores. Algumas semanas depois, pedi-lhes uma cópia; a imagem não deveria ter mudado muito de tamanho, mas os arquivos que recebi tinham o tamanho total de 100 GB.
Não sou um especialista em VMware, então tenho duas perguntas:
- Como/por que eles expandiram todo o disco dinâmico?
- Existe alguma maneira de reduzir essa imagem ao tamanho que realmente contém dados?
Tentei o conversor VMware e ele não consegue ler meu arquivo de imagem (vmdk); apenas gera um erro genérico.
Responder1
Minha especulação é que quando eles criaram a VM a partir da sua imagem, eles pré-alocaram o tamanho total das imagens (isso pode ter melhor desempenho). Quando eles os exportaram, você obteve a imagem completa.
Duvido que você consiga reduzir as imagens com o VMware player. VMware Workstation vem com vmware-vdiskmanager que aparentemente pode converter de um disco de tamanho fixo em um disco expansível, reduzindo o tamanho da imagem. Nunca tentei isso, então não posso dizer se funciona bem.
O manual está aqui:http://www.vmware.com/support/developer/vddk/vddk12_diskmanager.pdf
Responder2
Não sei sobre o VMWare Player, mas o VMWare Workstation vem com o utilitário de linha de comando vmware-vdiskmanager.exe. Encontre a pasta C:\Program Files\VMware\VMware Workstation.
Aqui estão as opções de linha de comando:
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>)
Você pode obter uma avaliação gratuita do VMWare Workstation.
Responder3
Normalmente existem duas fases para reduzir um disco virtual:
- Limpando. Isso zera os blocos não utilizados do sistema de arquivos convidado. Isso deve ser realizado dentro do convidado.
- Compactação. Isso remove os blocos zerados do arquivo .vmdk da fase de limpeza. Isso deve ser realizado pelo host(embora possa ser acionado pelo hóspede).
A execução vmware-vdiskmanager
no host pode realizar a fase de compactação, mas não a fase de limpeza. Existem algumas maneiras de fazer a limpeza:
Correr
vmware-toolbox-cmd disk shrink LOCATION
. Corravmware-toolbox-cmd help disk
para mais informações. (vmware-toolbox-cmd
é nomeadoVMwareToolboxCmd
nos convidados do Windows.) Isso acionará o estágio de compactação quando a limpeza for concluída.O
vmshrink
programa doPacote de ferramentas de terceiros do VM Back. Esta pode ser uma boa alternativa para convidados para os quais o VMware Tools não está disponível. Isso também acionará o estágio de compactação quando a limpeza estiver concluída.Você provavelmente poderia usar
dd
(ou algo equivalente) no convidado, mas isso fica como exercício para o leitor.
Existem também algumas circunstâncias em que a fase de limpeza não é necessária. Por exemplo, se o convidado já zerar o conteúdo dos arquivos ao excluí-los do sistema de arquivos ou se o convidado for Windows, nesse caso o VMware Workstation sabe por conta própria como inspecionar partições convidadas NTFS para determinar quais blocos não são usados .