A redução de disco não funciona nos convidados do ESXi

11

EHLO a todos! Meu primeiro post na rede StackOverflow :)

Estamos executando uma infraestrutura ESXi 5.0 / vCenter para hospedar principalmente sistemas convidados Debian 6 / amd64 com partições ext3 e open-vm-toolscompilados a partir da fonte por bug 471784 da debian .

Tem um problema que é visto sendo levantado em toda a Internet, mas sem uma resposta conclusiva dada em qualquer lugar.

Ao tentar reduzir um disco thin-provisioned no modo persistente independente, sem instantâneos, pais ou clones, sempre recebo o seguinte erro:

root@linux64:~# vmware-toolbox-cmd disk list
Shrink disk is disabled for this virtual machine.

Shrinking is disabled for linked clones, parents of linked clones,
pre-allocated disks, snapshots, or due to other factors.
See the User's manual for more information.

(A propósito, quais são os "outros fatores" e qual das toneladas de white papers e manuais técnicos é o manual do usuário? :)

Eu sei que posso encher as partições com zeros (na verdade, eu uso shred -fuzn0ao excluir arquivos grandes) e desligar o convidado em questão e usar vários métodos vmkfstools, como clonar ou vMotioning discos no modo thin-provision, etc, mas todos um deles incorre na penalidade de tempo de inatividade para o convidado ser desviado ou resulta em uma movimentação injustificada de dados entre os datastores e / ou hosts.


E a resposta é: não há encolhimento no ESX / ESXi (a partir da versão 5).

A documentação diz:

IMPORTANTE A redução de discos não é permitida nas seguintes circunstâncias:

  1. A máquina virtual está hospedada em um servidor ESX / ESXi. O ESX / ESXi Server pode reduzir o tamanho de um disco virtual somente quando uma máquina virtual é exportada. O espaço ocupado pelo disco virtual no servidor ESX / ESXi, no entanto, não muda.

  2. A máquina virtual possui um sistema operacional convidado para Mac .

  3. Você pré-alocou todo o espaço em disco no disco virtual quando o criou.

  4. A máquina virtual contém um instantâneo .

  5. A máquina virtual é um clone vinculado ou o pai de um clone vinculado.

  6. O disco virtual é um disco independente no modo não persistente .

  7. O sistema de arquivos é um sistema de arquivos de registro no diário , como um sistema de arquivos ext4, xfs ou jfs .

Não admira que é uma opção para encolher em VMWare Workstation, mas não no cliente vSphere conectado a uma instância ESXi ou vCenter.

NekojiruSou
fonte
2
você poderia mostrar um valor da chave isolamento.tools.diskShrink.disable que pode ser encontrado no arquivo vmx?
Cikuraku
1
Não estava lá. A adição de isolamento.tools.diskShrink.disable = "false" não mudou nada.
precisa

Respostas:

3

http://www.vmware.com/pdf/vmware-tools-cli.pdf Página 13:

A redução de discos não é permitida nas seguintes circunstâncias:

A máquina virtual está hospedada em um servidor ESX / ESXi. O ESX / ESXi Server pode reduzir o tamanho de um disco virtual somente quando uma máquina virtual é exportada. O espaço ocupado pelo disco virtual no servidor ESX / ESXi, no entanto, não muda.

Li Ni
fonte
Triste mas é verdade ...
NekojiruSou
18

Na verdade, existe uma maneira de reduzir uma VM no ESXi, embora você precise desligar a VM para isso. Aqui está como:

  1. Zere todo o espaço não utilizado dentro da VM:

    dd if=/dev/zero bs=1048576 of=/zero ; sync ; rm /zero

  2. Faça o mesmo com outros pontos de montagem, partições de troca etc.

  3. Desligue a VM.

  4. SSH para ESXi e emita este comando:

    vmkfstools -K /vmfs/volumes/volumename/vmname/vmname.vmdk

Isso levará algum tempo ... vmkfstools "faz furos" dentro do seu VMDK, por exemplo, desaloca todos os blocos preenchidos com zeros, reduzindo efetivamente o seu VMDK.

haimg
fonte
6
Para o Windows, você pode pegar uma cópia do Virtual Server 2005 , extraia o Precompact.iso arquivo dele, ele contém um programa Procompact.exe que irá zerar tudo o ritmo disco não utilizado no Windows.
Chris S
O vmkfstools não está funcionando quando a VM está em um armazenamento NFS.
Sven 31415
0

A única maneira de reduzir um VMDK no vSphere ESXi seria exportar ou migrar / Storage vMotion para outro armazenamento de dados. Faço isso muito com servidores ativos que podem lidar com uma migração (não SQL ou Exchange). Um administrador de servidor anterior criou todas as VMs com discos provisionados espessos. Migro as VMs de um armazenamento de dados para outro e altero o VMDK para thin-provisioned.

Você também pode executar o vmkfstools se o servidor estiver offline.

Jarrod LJ Gibson
fonte
-1

É possível reduzir os discos no ESXi.

  1. Encontre o arquivo grande e exclua-o.

    find / -type f -size +50M

  2. Desfragmentar (não é necessário desmontar / remontar nada). Ignore os erros. Alguns arquivos, como links simbólicos e arquivos de dispositivos, não podem ser desfragmentados.

    sudo e4defrag /

  3. Preencher com zero todo o espaço não utilizado, para que a VMware saiba que é realmente não utilizado:

    dd if=/dev/zero of=wipefile bs=1M; sync; rm wipefile

  4. Execute a operação de redução: Se 4 falhar, prossiga para 5.

    sudo vmware-toolbox-cmd disk shrinkonly

  5. Reinicie o sistema linux com a opção try e edite a tabela de partições com o gparted. Reduza o sistema de arquivos raiz e exclua e mova a partição swap para perto da partição raiz.

  6. SSH para ESXi e emita este comando:

    vmkfstools -K /vmfs/volumes/volumename/vmname/vmname.vmdk

  7. Precisamos editar o arquivo * .vmdk. Após as letras RW, define o tamanho do disco virtual VMware (VMDK)

    * 40 GB = 40 * 1024 * 1024 * 1024/512 = 83886080 *

  8. Migre-o para outro armazenamento de dados para refletir o novo tamanho.

Kondapaneni
fonte