O virsh é um utilitário criado para gerenciar máquinas virtuais de tecnologias como KVM, Xen, VMware ESX, QEMU entre outras. Esse suporte se deve ao fato do virsh ser construído utilizando a libvirt como base.
De uma forma simples, a libvirt é uma API/daemon criada pela Red Hat para gerenciar máquinas virtuais. Assim como o virsh, outras ferramentas são baseadas na libvirt para gerenciar VMs, como virt-manager, OpenStack e oVirt. Apesar de ser escrita em C, existem bindings para outras linguagens, como Python, Perl, Ruby, Java e PHP.
Para instalar os pacotes necessários para este tutorial em uma distro Red Hat-like (Fedora, CentOS), execute o seguinte comando:
sudo yum install qemu-img libvirt-client virt-viewer virt-install
Para iniciar, vamos criar um HD para nossa VM. Na verdade, o HD é um arquivo dentro do sistemas de arquivos da sua distro, onde a VM irá utilizar como se fosse um HD propriamente dito.
qemu-img create -f qcow2 guest.qcow2 8192M
O qemu-img é um utilitário de imagens de disco do QEMU. Com ele é possível aumentar e diminuir o tamanho das imagens de disco, converter entre formatos, e muito mais. No comando acima, estamos criando uma nova imagem de disco, com o formato qcow2 (que é o padrão do QEMU, mas podem ser utilizados outros formatos como VMDK, VHDX, RAW, VDI e outros), com 8G de espaço e com o nome de guest.qcow2.
O comando a seguir cria uma nova máquina virtual utilizando o o disco previamente criado com uma imagem live do Fedora:
virt-install -r 1024 -f guest.qcow2 -n Fedora_Guest --cdrom /isos/Fedora-Live-LXDE-x86_64.iso --virt-type kvm --network bridge=virbr0 --vnc
-r: memória RAM em megabytes
-f: disco onde será instalado o sistema
-n: nome da máquina virtual
–cdrom: local para uma ISO de uma distro da sua escolha
–network: tipo de rede que você deseja habilitar para a VM (para desabilitar a rede basta informar none)
–vnc: inicia um VNC server para esta VM (utilizado posteriormente)
O parâmetro virt-type merece um destaque, pois ele informa o tipo de virtualização que será utilizado na máquina. Na minha máquina em questão, meu processador tem suporte a KVM (Kernel Virtual Machine), que possibilita uma maior desempenho quando executando uma VM. Para verificar se o seu processador tem essa tecnologia, execute:
virsh capabilities
Se no output deste comando houver uma tag como abaixo, o seu processador tem esta tecnologia. Caso não tenha, utilize qemu como parâmetro do virt-type (--virt-type qemu
).
|
|
Após executar este comando, vemos algo do tipo:
|
|
Se você executar estes comandos no console de uma máquina com GUI, o virt-viewer irá aparecer mostrando a execução da VM, como o Virtual Box ou virt-manager por exemplo, mas caso você esteja acessando uma máquina via ssh, nenhuma janela será mostrada e o shell ficará preso até você configurar o SO que foi iniciado.
Para poder visualizar a VM via VNC na rede, basta executar o comando abaixo:
virt-viewer -c qemu+ssh://usuario@ip/system Fedora_Guest
Para utilizar o VNC na mesma máquina, basta colocar -c qemu:///sytem
.
Com este comando, será solicitado o usuário e senha do máquina que você está conectando, e após este será exibido o virt-viewer com a imagem da VM sendo executada:
Após instalar a VM, o processo é todo feito como um gerenciador de VMs qualquer, com a vantagem de poder acessar as VMs por VNC.
Com o virsh é possível gerenciar essas VMs, com os seguintes comandos:
virsh list
: Lista todos as VMs criadas e seu estado de funcionamentovirsh shutdown
: Envia comando de desligamento para a VMvirsh destroy
: Faz um force shutdown na VMvirsh start
: Liga a VM
Com o virsh é possível ainda manipular discos nas VMs, adicionando e removendo discos conforme a necessidade, alterar parâmetros de rede, criando e removendo interfaces e vários outros.
O virsh é uma ótima ferramenta para gerenciar suas máquinas virtuais. Se você deseja uma ferramenta com interface gráfica não esquece de ver nosso artigo sobre o virt-manager, que é basicamente um front-end para o virsh .
Espero que tenham gostado desta pequena explicação sobre o virsh . Até a próxima!
Referências