Tags:

Convertendo uma instância baseada em Red Hat de PV para HVM

Introdução as instâncias linux virtualizadas baseadas em PV e HVM

As AMIS Linux presentes no ambiente AWS são divididas em dois tipos: HVM (hardware-assisted virtualization) e PV. A própria amazon recomenda utilizarmos instâncias HVM, pois tem performance igual ou superior a PV por um custo menor.

A tecnologia HVM, conhecida também como Full-Virtualization, a estação é virtualizada por completo, todos os dispositivos de hardware são virtualizados, o Sistema Operacional não reconhece que está sendo executado em uma estação virtualizada, e são utilizados drivers genéricos para todas os dispositivos virtualizados.

O PV, conhecido também como paravirtual, é uma tecnologia de virtualização, que consiste em virtualizar uma estação de forma “paralela”. Através dessa tecnologia o sistema operacional da estação sabe que está sendo virtualizado e utiliza recursos da máquina física hospedeira, melhorando assim a performance dos acessos aos recursos fisicos, como a rede.

Falando de AWS caso tenha alguma máquina em PV, recomenda-se trocar para HVM assim que possível, além dos benefícios já citados, pode ser que em um futuro próximo a instância do tipo PV seja descontinuada. Veja em passos simples como podemos converter.

Procedimento

1) Instale o grub na instância que deseja realizar a conversão.

2) Pare a instância e crie um snapshot do volume root.

3) Crie uma máquina com o mesmo SO dá máquina anterior baseada em PV e logue na nova instância.

4) Crie um novo volume “fonte” (na mesma zona) a partir do snapshot descrito no passo 1. Atache esse novo volume na máquina descrita no passo 2 como /dev/xvdf.

5) Crie um outro volume em branco “destino” (também na mesma zona) e atache na mesma máquina que o volume descrito no passo 3 como /dev/xvdg

6) Formate a partição “destino”:
mkfs.ext4 /dev/xvdg

7) Particione o volume “destino”:
parted /dev/xvdg –script ‘mklabel msdos mkpart primary 1M -1s print quit’
partprobe /dev/xvdg
udevadm settle

8) Verifique o disco “fonte”:
e2fsck -f /dev/xvdf

9) Diminua o tamanho do disco “fonte” para acelerar o processo de cópia e verifique o tamanho do bloco para o próximo passo:
resize2fs -M /dev/xvdf
# Resizing the file system on /dev/xvdg to 346784 (4k) blocks.
# The file system on /dev/xvdg is now 346784 blocks long.

10) Copie os dados da partição “fonte” para a partição “destino”:
sudo dd if=/dev/xvdf of=/dev/xvdg1 bs=4K count=346784
if=fonte dos arquivos.
of= destino dos arquivos.
bs = tamanho dos blocos (verificar no passo anterior).
count = contagem dos blocos (verificar no passo anterior).

11) Acerte o tamanho da partição “destino”:
resize2fs /dev/xvdg1

12) Prepare o volume “destino” para a instalação do grub:
mount /dev/xvdg1 /mnt
cp -a /dev/xvdg /dev/xvdg1 /mnt/dev/
rm -f /mnt/boot/grub/*stage*
cp /mnt/usr/*/grub/*/*stage* /mnt/boot/grub/
rm -f /mnt/boot/grub/device.map

13) Instale o grub na partição “destino”. Esse passo fará uma instalação offline do grub, o que é requerido por instâncias HVM:
cat <<EOF | chroot /mnt grub –batch
device (hd0) /dev/xvdo
root (hd0,0)
setup (hd0)
EOF

14) Remova o dispositivo temporário do volume “destino”, o que é requerido para instalar o grub (como acima):
rm -f /mnt/dev/xvdg /mnt/dev/xvdg1

15) Faça update das configurações do Grub:
vi /mnt/boot/grub/grub.conf
– Troque root (hd0) to root (hd0,0)
– Adicione (ou modifique console=*) console=ttyS0 na linha do kernel
– Modifique root=* para root=LABEL=/ na linha do kernel
– Adicione xen_pv_hvm=enable para a linha do kernel

16) Atualize o fstab:
vi /mnt/etc/fstab
LABEL=/ / ext4 defaults,noatime 1 1
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0

17) Crie a label em /dev/xvdg1 e desmonte o dispositivo:
e2label /dev/xvdg1 /
sync
umount /mnt

18) Retorne a console da AWS e crie um snapshot a partir do volume /dev/xvdg.

19) Crie uma nova AMI HVM a partir do snapshot do passo anterior. Tenha certeza de selecionar “virtualization type = HVM”.

20) Suba uma nova instância a partir da AMI do passo anterior.

Considerações Finais
Seguindo todos esses passos não tão fáceis é possível gerar uma instância HVM a partir de uma antiga PV, assim poderá criar máquinas de tipos diferentes como m4.X trazendo mais vantagens para o seu ambiente em cloud como redução de custos e melhorias no desempenho.

Referências:

[1] https://www.opswat.com/blog/aws-2015-why-you-need-switch-pv-hvm
[2] http://blog.rivendel.com.br/2015/02/13/tecnologias-de-virtualizacao-pvm-e-hvm/
[3] https://en.wikipedia.org/wiki/Hardware-assisted_virtualization
[4] https://en.wikipedia.org/wiki/Paravirtualization
[5] http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/virtualization_types.html

Por ANDERSON LIMA

Postado em: 28 de setembro de 2015

Confira outros artigos do nosso blog

Estimando Custos na AWS

08 de março de 2016

Anderson Lima

Usando Amazon SQS como sistema de mensagens (2/2)

02 de março de 2016

Luis Sergio F. Carneiro

Cine Dojo: a mistura da MATERA de Coding Dojo, Cinema, Pipoca e TI!

04 de fevereiro de 2016

Valmir Massafera Jr

Documentação da sua Nuvem com Linha do Comando

15 de dezembro de 2015

Matias Schweizer

Deixe seu comentário