Como posso reduzir minha imagem VMware?

Como posso reduzir minha imagem VMware?

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:

  1. Como/por que eles expandiram todo o disco dinâmico?
  2. 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:

  1. Limpando. Isso zera os blocos não utilizados do sistema de arquivos convidado. Isso deve ser realizado dentro do convidado.
  2. 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-vdiskmanagerno 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. Corra vmware-toolbox-cmd help diskpara mais informações. ( vmware-toolbox-cmdé nomeado VMwareToolboxCmdnos convidados do Windows.) Isso acionará o estágio de compactação quando a limpeza for concluída.

  • O vmshrinkprograma 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 .

informação relacionada