Sobre Libvirt

Sobre Libvirt
LibVirt é uma das ferramentas de gerenciamento de virtualização mais populares por aí. É composto por uma API de gerenciamento e um daemon com o qual você pode interagir com sua pilha de virtualização. LibVirt se esforça para unificar o processo de gerenciamento de todas as várias tecnologias de virtualização, desde a KVM até a VMware ESX e até Bhyve. Ele também pode gerenciar contêineres LXC e até algumas das tecnologias de paravirtutualização como Xen.

Só porque suporta uma grande variedade de tecnologias, não significa que você precisa estar familiarizado com todos eles. Você pode se concentrar em uma tecnologia como o KVM e criar sua experiência no LibVirt em torno disso. Este artigo tentará e dará uma crítica abrangente à tecnologia da experiência pessoal do autor com ele.

Fundo

Para pegar um jeito do que a Libvirt é capaz e como você pode usá -lo em seu próprio sistema, você pode seguir os seguintes guias:

  1. Instale KVM e Libvirt no Debian
  2. LibVirt com Python

Se você já está familiarizado com ferramentas como Virsh, Virt-Install, Virt-Manager, Ovirt, etc., você já está usando LibVirt sem nem mesmo saber. As ferramentas acima mencionadas usam libvirt no back-end e fornecem uma interface amigável para uso, seja linha de comando ou GUI.

Arquitetura

O LibVirt foi projetado para trabalhar com qualquer hipervisor e cresceu ao longo dos anos para trabalhar com uma ampla variedade de hipervisores. O daemon Libvirt expõe uma API que pode ser usada por aplicativos como Virt-manager ou Virsh (e até seus scripts Python personalizados). As solicitações do usuário são recebidas pela API. Esses pedidos podem ser qualquer coisa como criar um hóspede da KVM, ou me mostram a memória usada por um determinado LX Contrairer, etc.

O daemon Libvirt delega a solicitação ao driver de hipervisor LibVirt apropriado. Esse motorista entende e implementa todas as especificidades de uma determinada tecnologia de virtualização e executa as instruções de acordo.

Há uma classe diferente de motoristas para lidar com armazenamento e até redes de VMs.

Piscinas e volumes

VMs precisam de muito armazenamento. A tecnologia de armazenamento em si é muito variável do hipervisor ao hipervisor. O VMware usa seu próprio formato VMDK, o Qemu gosta de usar QCOW2, também há imagens de disco bruto e imagens LXC são uma história diferente também. Além disso, você gostaria de agrupar todas as imagens de disco VM e fornecer uma mídia de armazenamento diferente, como um servidor NFS, um conjunto de dados ZFS ou apenas um diretório. Isso permite que você use o LibVirt em uma variedade de casos de uso diferentes de um único servidor doméstico para uma solução de virtualização escalável de grau corporativo.

No Libvirt Vernacular, um único dispositivo de armazenamento virtual associado a qualquer VM, como o arquivo de imagem QCOW2, RAW ou VMDK de uma VM ou ISO montável é conhecido como um volume. A mídia de armazenamento usada no host para armazenar um grupo de volumes associados é conhecida como um piscina. Você pode usar um servidores NFS como um pool ou um conjunto de dados ZFS, como mencionado anteriormente. Se você não tem uma solução de armazenamento sofisticada, pode simplesmente usar um diretório.

Por padrão, Libvirt tem duas piscinas diferentes. Primeiro é/var/lib/libvirt/imagens e/var/libvirt/boot/boot. Os volumes para uma única VM podem ser divididos em vários pools. Por exemplo, eu guardo todas as ISOs de imagens de nuvem limpa e instalador de OS no pool/var/lib/libvirt/inicial.

Você pode até ter uma única piscina para uma única VM, ou pode dividir ainda mais as piscinas para instantâneos de VM, backups, etc. É tudo muito flexível e permite que você organize seus dados conforme sua conveniência.

Configurações

Virsh é uma ferramenta popular para configurar tudo, desde a sua VM, redes de máquinas virtuais e até armazenamento. Os próprios arquivos de configuração vivem no formato XML. Você se encontrará emitindo comandos como:

$ virsh dumpxml vm1
$ virsh edit vm1

E da mesma forma, existem subcomandos como Net-Dumpxml e Pool-Edit para visualizar ou configurar a configuração de pools, redes, etc. Se você está curioso para saber onde esses arquivos de configuração vivem, pode ir para/etc/libvirt/e encontrar seus hipervisores em relação ao diretório em questão. O diretório pai/etc/libvirt/próprio contém muitas configurações globais como drivers (e.G QEMU.conf e lxc.conf) e sua configuração e o comportamento padrão do Libvirt.

Para analisar a configuração específica de componentes individuais, como as VMs, piscinas e volumes, você deve ir para os diretórios correspondentes. Para os hóspedes qemu, este é/etc/libvirt/qemu

root@deb:/etc/libvirt/qemu# ls -al
Total 24
drwxr-xr-x 4 raiz 4096 de abril 10:39 .
drwxr-xr-x 6 raiz raiz 4096 28 de abril 17: 19…
drwxr-xr-x 2 raiz de raiz 4096 21 de abril 10:39 AutoStart
DRWXR-XR-X 3 RAOTE 4096 APR 14 APR 13:49 Redes
-RW ------- 1 raiz da raiz 3527 20 de abril 19:10 VM1.xml
-RW ------- 1 raiz da raiz 3527 20 de abril 19:09 VM2.xml

O diretório AutoStart conterá symblinks para VM1.XML e VM2.XML Se você confiou as VMs para o AutoStart quando o sistema hospedeiro botas ($ virsh AutoStart VM1).

Da mesma forma, o/etc/libvirt/qemu/rede contém configurações para a rede padrão um hóspede qemu. O/etc/libvirt/armazenamento contém xmls definindo os pools de armazenamento.

Conclusão

Se você estiver interessado em configurar seu próprio host de virtualização, um bom lugar para começar será este artigo, onde eu mostro como instalar os hóspedes Qemu-KVM em um host debian usando LibVirt e ferramentas relacionadas.

Depois disso, você pode começar a brincar com a CLI Virsh e ver e gerenciar entidades como o Domínio (Libvirt chama VMs convidados domínio) redes, pools de armazenamento e volumes. Isso o deixará confortável o suficiente com a tecnologia que você pode passar para outros conceitos, como instantâneos e filtro de rede. Espero que este artigo seja um bom ponto de partida para você.