Olá, tudo bem?

Bem, o tema discutido de hoje será redimensionamento de disco virtual no XenServer.

Muitas vezes, por falta de planejamento ou fatos inesperados, o tamanho do disco de uma VM precisa ser aumentado. Por conta deste problema, alguns administradores, com a visão estática de sistemas não virtualizados, não conseguem compreender com clareza como redimensionar um disco virtual.

Se você prestar atenção, o XenServer deixa você alterar o tamanho de um disco de uma VM. Para isso, é só ir na aba configurações do storage da VM e alterar o valor do tamanho dele. Mas, calma que o tamanho da partição la ná VM não vai alterar automaticamente! rs. (assim você quer demais).

Primeiro vamos entender o que é um disco de uma VM. A partir das imagens abaixo, explicarei sucintamente.

O conjunto do relacionamento de objetos de storage do XenServer:

Desenhado pela Citrix:

 objects_storage_Vdi.png

Desenhado por Gohar Ahmed:

 objects_storage_Vdi.png

 

Desenhado por Martez Reed:

 objects_storage_Vdi.png

 

As três imagens demonstram os mesmos relacionamentos, só que com representações diferentes (para uma melhor didática).

Todo dispositivo relacionado com armazenamento (um disco rídigo, por exemplo) que é conectado ao XenServer será reconhecido como um PBD (dispositivo de bloco físico). Então, quando você cria um SR (repositório de storage – storage repository) dentro do XenServer, está justamente configurando este(s) PBD(s) para ser(em) o armazenamento deste SR.

Dentro deste SR eu posso ter vários VDI (imagem de disco virtual – virtual disk image), que é um objeto criado pelo XenServer que fornece uma abstração de um HDD (Disco Físico) e contém informações sobre a mídia física no qual se encontra (tipo de SR, se é compartilhável, se a mídia física é somente leitura, etc.).

O VBD (Dispositivo de Bloco Virtual), por sua vez, é uma abstração necessária para fazer a ponte entre a VM e o VDI. Ele representa o conteúdo do VDI. Caso não existisse o VBD, a VM não conseguiria utilizar o espaço que o VDI oferece dentro do SR. O VBD dá a possibilidade de a VM enxergá-lo como um dispositivo de bloco (neste caso um disco rígido) que pode ser formatado em um tipo de sistemas de arquivos. Por fim, o VBD contém atributos que ligam o VDI a VM, como QoS, atributos de leitura/escrita, se o disco é bootável, etc.

Ainda não entendeu?

Deixa eu explicar melhor:

Imagine um PC físico com um disco rígido e você instalando um debian 8 nele. Blz né? Pois bem, analogicamente, temos uma VM sendo criada no XenServer com um disco virtual. Esse disco virtual é o nosso VBD. Por trás dele teremos o VDI correspondente, que por sua vez está dentro de um SR e este SR é composto por um ou vários PBDs.

Agora, continuando o objetivo do tutorial, segue a pergunta: Como faço pra aumentar o tamanho de um disco de uma VM?

Bem, como sabemos agora, um disco de uma VM é um VBD, que por sua vez tem um correspondente VDI. Até agora beleza!

Os procedimentos genéricos padrão para aumentar (expandir) um vDisk são:

1- Ir no xencenter, configurações do storage da VM e aumentar o tamanho do disco especificado (neste ponto, você aumentou o tamanho do VDI);

2 – A partir deste ponto, o VBD irá ter um espaço adicional (não alocado) dentro dele, referente a esse aumento do VDI. Com qualquer “fdisk -l” ou “parted” você poderá ver esse espaço adicional;

3 – Agora, você terá que fazer a expansão em nível de SO (sistema de arquivo) na VM, para fazer com que a partição que você quer aumentar (ou adicionar) tenha um novo tamanho, utilizando para isso do espaço que foi inserido.

4 – Após os comandos de expansão, que podem variar se o disco tiver uma estrutura LVM (mais simples) ou sem LVM (um pouco mais de trabalho), você deve realizar um comando, em nível de SO, que vai redimensionar a partição para utilizar a nova quantidade de blocos. Geralmente em GNU/Linux o comando final é o “resize2fs /dev/particao”;

OBS1:Caso a estrutura de partições esteja organizada na forma de LVM, você poderá expandir um disco também criando um novo disco para a VM (com o espaço que quer utilizar). Quando a VM reconhecer esse novo VBD, você o formata e o transforma em PV (Volume físico – estrutura LVM) e junta o mesmo ao PV existente na VM. O LVM trás a grande vantagem (além de simular um RAID 0) de tornar mais fácil e dar novas possibilidades à manipulação dos LVs (Volumes lógicos – pontos de montagem do SO – /home, /usr, etc..) e o redimensionamento do tamanho deles.

Bem, partindo destes passos listo abaixo uma série de tutoriais que poderão ser seguidos por você para redimensionar vDisks de Vms.

Aumentando o espaço de um vDisk com uma partição nativa Linux (sem LVM):

https://www.rootusers.com/use-gparted-to-increase-disk-size-of-a-linux-native-partition/

Aumentando o espaço de um vDisk com uma estrutura LVM através da expansão do VDI:

https://www.rootusers.com/how-to-increase-the-size-of-a-linux-lvm-by-expanding-the-virtual-machine-disk/

Aumentando o espaço de um vDisk com uma estrutura LVM através da adição de um outro VDI (como exemplificado no OBS1):

https://www.rootusers.com/how-to-increase-the-size-of-a-linux-lvm-by-adding-a-new-disk/

Para expandir o tamanho de vDisks com SO MS Windows:

http://support.citrix.com/article/CTX117630

Outros tutoriais e formas de expansão de vDisk:

https://maanasroyy.wordpress.com/2012/06/03/resize-a-linux-vm-lvm-disk-in-xenserver/

https://codesilence.wordpress.com/2013/03/14/live-resizing-of-an-ext4-filesytem-on-linux/

OBS2 : Ainda não é possível diminuir (shrink) o tamanho de um VDI dentro do Xenserver. O motivo eu creio que deva ser porque na redução de um VDI, a probabilidade de afetar uma área com dados do sistema do usuário seria bem alta. Mesmo com LVM, um algoritmo que analisasse as áreas não alocadas para serem liberadas do disco, além de muito minucioso, poderia vir a corromper o sistema em uma exclusão errada, além do que o usuário teria que desalocar aquela região que seria liberada.

Considero um problema tanto trabalhoso para resolver, mas não impossível.

Há um meio de realizar esse processo (não muito “ortodoxo” – pra não dizer gambiarra).

Os passos são listados abaixo:

– Anexar um novo VDI na VM em questão e criar uma partição em toda sua extensão (o tamanho do VDI deve ser de pelo menos do tamanho dos dados do disco);

– Utilizar algum programa de clone de disco e dar o boot via ISO (exceto o clonezilla, pois ele tem uma limitação que jájá explicarei);

ex: HD clone, fsarchiver, FOG project, etc.

– Clonar o disco da VM jogando a imagem no VDI anexado na mesma;

– Criar uma nova VM no Xenserver com um disco menor do tamanho que você quer diminuir;

– Iniciar o programa de clonagem e anexar na VM o VDI que contém a imagem exportada e restaurar a imagem do disco antigo para o novo disco;

OBS3: O clonezilla têm a limitação que na restauração de um disco, o tamanho do disco de origem têm de ser maior ou igual ao do disco de destino, o que é é inviável na hora de um shrink.

OBS4: Alguns usuários na internet disseram que conseguiram shrink de discos como Clonezilla (mas somente quando o disco de destino era um pouco menor de tamanho que a origem). Você pode conferir os relatos aqui.

Perceba que vários tutorias utilizam o hypervisor Vmware, mas, não se preocupe. O entendimento que você tem que ter é de como funcionam as relações de PBDs, VDIs e VBDs com Vms.

O processo de criação de disco ou aumento do tamanho usando Xenserver (Xencenter) ou Vmware (vCenter) é só interface. Os passos genéricos padrão (citados acima) são os mesmos para qualquer hypervisor.

Espero que tenha gostado!

Grande abraço.

 

Referências:

https://www.schirmacher.de/display/INFO/How+to+increase+XenServer+virtual+machine+root+or+swap+
partition

https://thewiringcloset.wordpress.com/2013/01/09/extending-a-root-filesystem-in-linux-without-lvm/

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1007907

http://discussions.citrix.com/topic/237812-extend-vm-disk-size-debian-guest/

https://www.rootusers.com/use-gparted-to-increase-disk-size-of-a-linux-native-partition/

https://www.rootusers.com/how-to-increase-the-size-of-a-linux-lvm-by-expanding-the-virtual-machine-disk/

https://www.rootusers.com/how-to-increase-the-size-of-a-linux-lvm-by-adding-a-new-disk/

https://www.rootusers.com/lvm-resize-how-to-decrease-an-lvm-partition/

http://support.citrix.com/article/CTX117630

https://maanasroyy.wordpress.com/2012/06/03/resize-a-linux-vm-lvm-disk-in-xenserver/

https://codesilence.wordpress.com/2013/03/14/live-resizing-of-an-ext4-filesytem-on-linux/

http://cleriston.com.br/post/110578666928/identificando-vdi-no-xenserver-via-command-line

https://discussions.citrix.com/topic/361767-convert-vm-from-hyper-v-2012-to-xenserver-62/

https://www.miray.de/products/sat.hdclone.html

http://www.fsarchiver.org/Fsarchiver_vs_partimage

https://fogproject.org/

http://clonezilla.org/

https://community.spiceworks.com/topic/225979-clonezilla-restore-to-smaller-hard-drive

http://clonezilla.org/clonezilla-live/doc/02_Restore_disk_image/advanced/09-advanced-param.php

http://docs.vmd.citrix.com/XenServer/5.5.0/1.0/en_gb/images/sr-diagram.png

http://www.amazon.com/Implementing-Citrix-XenServer-Quickstarter-Gohar/dp/1849689822

http://www.amazon.com.br/Mastering-Citrix-Xenserver-Martez-Reed/dp/178328739X

 

Licença Creative Commons
Este trabalho de Marllus, está licenciado com uma Licença Creative Commons – Atribuição-CompartilhaIgual 4.0 Internacional.