libvirt

Sobre Libvirt

Sobre Libvirt
Libvirt é uma das ferramentas de gerenciamento de virtualização mais populares que existem. É composto de 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 para todas as várias tecnologias de virtualização de KVM para VMWare ESX e até mesmo BHyve. Ele também pode gerenciar contêineres LXC e até mesmo algumas das tecnologias de paravirtualização como Xen.

Só porque ele suporta uma grande variedade de tecnologias, não significa que você precisa estar familiarizado com todas elas. Você pode se concentrar em uma tecnologia como KVM e construir sua experiência libvirt em torno disso. Este artigo tentará fornecer uma crítica abrangente da tecnologia a partir da experiência pessoal do autor com ela.

Fundo

Para entender o que o 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, então você já está usando libvirt mesmo sem saber. As ferramentas acima mencionadas usam libvirt no backend e fornecem uma interface amigável, seja linha de comando ou GUI.

Arquitetura

Libvirt foi projetado para funcionar 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é mesmo seus scripts Python personalizados). As solicitações do usuário são recebidas pela API. Essas solicitações podem ser qualquer coisa como criar um convidado KVM ou me mostrar a memória usada por um determinado contianer LX, etc.

O daemon libvirt então delega a solicitação para o driver hipervisor libvirt apropriado. Este driver entende e implementa todas as especificações de uma determinada tecnologia de virtualização e executa as instruções de acordo.

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

Pools e Volumes

VMs precisam de muito armazenamento. A tecnologia de armazenamento em si é muito variável de hipervisor para hipervisor. VMWare usa seu próprio formato vmdk, QEMU gosta de usar qcow2, também há imagens de disco raw e imagens LXC são uma história diferente também. Além disso, você gostaria de agrupar todas as imagens de disco da VM e fornecer a elas 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 libvirt em uma variedade de casos de uso diferentes, de um único servidor doméstico a uma solução de virtualização escalonável de nível empresarial.

No vernáculo libvirt, 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 piscina. Você pode usar um servidor NFS como um pool ou um conjunto de dados ZFS, conforme mencionado anteriormente. Se você não tem uma solução de armazenamento sofisticada, pode simplesmente usar um diretório.

Por padrão, libvirt tem dois pools diferentes. Primeiro é / var / lib / libvirt / images e / var / lib / libvirt / boot. Os volumes de uma única VM podem ser divididos em vários pools. Por exemplo, eu armazeno todas as imagens de nuvem limpas e ISOs do instalador do sistema operacional no pool / var / lib / libvirt / boot e para VMs individuais, o rootfs é instalado em arquivos de imagem armazenados em / var / lib / libvirt / images.

Você pode até ter um único pool para uma única VM ou pode dividir os pools ainda mais para instantâneos de VM, backups, etc. É tudo muito flexível e permite que você organize seus dados de acordo com sua conveniência.

Configurações

Virsh é uma ferramenta popular para configurar tudo, desde sua VM, rede de máquina virtual e até mesmo armazenamento. Os próprios arquivos de configuração vivem no formato XML. Você se verá emitindo comandos como:

$ virsh dumpxml VM1
$ virsh editar 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ê estiver curioso para saber onde esses arquivos de configuração estão, você pode ir para / etc / libvirt / e encontrar o diretório em questão dos hipervisores.  O próprio diretório pai / etc / libvirt / contém muitas configurações globais como drivers (e.g qemu.conf e lxc.conf) e sua configuração e o comportamento padrão de libvirt.

Para ver a configuração específica de componentes individuais, como VMs, pools e volumes, você deve ir para os diretórios correspondentes. Para convidados qemu, é / etc / libvirt / qemu

root @ deb: / etc / libvirt / qemu # ls -al
total 24
drwxr-xr-x 4 root root 4096 Abr 21 10:39 .
drwxr-xr-x 6 root root 4096 28 de abril 17: 19 ..
drwxr-xr-x 2 root root 4096 21 de abril 10:39 autostart
drwxr-xr-x 3 root root 4096 14 de abril 13:49 redes
-rw ------- 1 root root 3527 20 de abril 19:10 VM1.xml
-rw ------- 1 root root 3527 20 de abril 19:09 VM2.xml

O diretório de inicialização automática conterá links simbólicos para VM1.xml e VM2.xml se você configurou as VMs para inicialização automática quando o sistema host for inicializado ($ virsh autostart VM1).

Da mesma forma, o / etc / libvirt / qemu / network contém configurações para a rede padrão de um convidado qemu. O / etc / libvirt / storage contém XMLs que definem 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 mostro como instalar convidados QEMU-KVM em um host Debian usando libvirt e ferramentas relacionadas.

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

Portas de código aberto para motores de jogos comerciais
Recriações gratuitas, de código aberto e de mecanismo de jogo de plataforma cruzada podem ser usadas para jogar jogos antigos, bem como alguns dos tít...
Melhores jogos de linha de comando para Linux
A linha de comando não é apenas sua maior aliada ao usar o Linux - ela também pode ser uma fonte de entretenimento porque você pode usá-la para jogar ...
Melhores aplicativos de mapeamento de gamepad para Linux
Se você gosta de jogar no Linux com um gamepad em vez de um teclado típico e sistema de entrada de mouse, existem alguns aplicativos úteis para você. ...