• Nenhum resultado encontrado

A libvirt oferece uma API agnóstica de hipervisores para gerenciar, de forma segura, sistemas operacionais convidados que estejam sendo executados em um host. A biblioteca libvirtnão é uma ferramenta em si, mas uma API para construir ferramentas a fim de gerenciar sistemas operacionais convidados. É construída sobre a ideia de abstração. A biblioteca oferece uma API comum para a funcionalidade comum implementada pelos hipervisores suportados. Ela foi originalmente criada como uma API de gerenciamento para Xen mas, desde então, foi ampliada para suportar diversos hipervisores (JONES, 2010).

2.5.1 Arquitetura básica

A libvirt existe como um conjunto de APIs projetadas para serem usadas como um aplicativo de gerenciamento. Na figura 2.10, à esquerda é apresentado um modelo tradicional de virtualização onde se tem uma máquina física, Node, um sistema operacional host, Linux host, e através de um hipervisor é possível virtualizar um sistema operacional convidado. E à direita é apresentado onde a libvirt se encaixa dentro do modelo de virtualização, se estabelecendo entre o sistema operacional host e o hipervisor. E o acesso a libvirt se dá por um aplicação de gerenciamento. Por meio de um mecanismo específico de hipervisores, a libvirt comunica-se com um hipervisor disponível para executar as solicitações da API.

A libvirt usa uma terminologia um pouco diferente. Esta terminologia é importante, pois esses termos são usados na nomenclatura da API. As duas diferenças fundamentais são que a libvirtchama o host físico de nó, enquanto que no sistema operacional convidado é chamado de domínio. A libvirt (e seu aplicativo) é executada no domínio do sistema operacional convidado Linux (domínio 0).

Inicialmente se tinha suporte apenas ao hipervisor Xen, mas com a atualização constante da biblioteca e o desenvolvimento da comunidade de aplicações este número aumentou. O suporte atual para hipervisores pela biblioteca libvirt são: KVM/QEMU; Xen; LXC Linux container system; OpenVZ; VirtualBox; VMware ESX e GSX; VMware Workstation e Player; Microsoft Hyper-V; IBM PowerVM; Parallels e Bhyve.

2.5.2 Meios de controle

Com a libvirt, existem dois meios de controle distintos. O primeiro é demonstrado na figura 2.10, em que o aplicativo de gerenciamento e os domínios existem no mesmo nó. Nesse caso, o aplicativo de gerenciamento trabalha por meio da biblioteca libvirt para controlar os domínios locais. O segundo meio de controle existe quando o aplicativo de gerenciamento e os domínios estão em nós separados. Aqui é necessária a comunicação remota. Este modo usa um daemon especial chamado libvirtd que é executado em nós remotos. Este daemon é inici- ado automaticamente quando a libvirt é instalada em um novo nó e pode determinar, de forma automática, os hipervisores locais e configurar drivers para eles (isso será tratado em breve). O aplicativo de gerenciamento se comunica por meio da libvirt local com o libvirtd remoto atra- vés de um protocolo customizado. Para o QEMU, o protocolo termina no monitor QEMU. O QEMU inclui um console do monitor que permite inspecionar um sistema operacional convi- dado em execução, bem como controlar vários aspectos da máquina virtual (VM).

Para realizar o transporte dos dados e efetivar a comunicação com o host remoto a libvirt suporta uma variedade de protocolos de comunicação, sendo eles: TLS; Unix (Soquete do domínio Unix); SSH; EXT (Qualquer programa externo que pode fazer uma conexão com a máquina remota por meio externo ao âmbito da libvirt.); TCP; libssh2 (Transporte sobre o protocolo SSH usando libssh2 em vez do binário OpenSSH). O transporte padrão, se nenhuma outra for especificado, é o TLS (LIBVIRT, 2014).

2.5.3 Suporte a Hipervisor

Para suportar a extensibilidade para uma ampla gama de hipervisores, a libvirt imple- menta uma arquitetura baseada em driver, que permite que uma API comum atenda vários hipervisores subjacentes de maneira comum. Isso significa que determinadas funcionalidades especializadas de alguns hipervisores não são visíveis por meio da API. Além disso, alguns hi- pervisores podem não implementar todas as funções da API, que então são definidas como não suportadas no driver específico. Também o libvirtd oferece meios de acessar domínios locais a partir de aplicativos remotos.

Driverssão o alicerce fundamental para a funcionalidade libvirt para apoiar a capacidade de lidar com as chamadas de controladores de hipervisores específicos. Drivers são descobertos e registrados durante o processamento de conexão como parte da API “virInitialize”. Cada driver tem uma API de registro que carrega as referências das funções específicas do driver para as APIs libvirt chamar. O que se segue é uma visão simplista do mecanismo de drivers para hipervisor. Considere a lista de drivers empilhados como uma série de módulos que podem ser conectados na arquitetura, dependendo de como a libvirt é configurada.

2.5.4 Aplicações que Utilizam a Libvirt

Existe uma grande variedade de aplicações que utilizam a API de gerenciamento Libvirt. Estas aplicações vão desde Cliente/Servidor, ferramentas de linha de comando, gerenciamento de configurações, infraestrutura como serviço, bibliotecas, aplicativos de desktop, até aplicações de WEB.

Para exemplificar, abaixo estão os principais programas que se utilizam desta biblioteca (LIBVIRT, 2014):

• virt-install: Fornece uma maneira de criar novas máquinas virtuais a partir de uma dis- tribuição OS. Ele suporta provisionamento de imagens de CD locais e à rede através de NFS, HTTP e FTP.

• virt-top: Verifica CPU, memória, rede e utilização do disco de todas as máquinas virtuais rodando em um host.

• virt-df : Examina a utilização de cada sistema de arquivos em uma máquina virtual a partir do conforto da máquina host. Esta ferramenta espreita para os discos de hóspedes e

determina a quantidade de espaço usado. Ele pode lidar com sistemas de arquivos comuns do Linux e volumes LVM.

• virt-manager: Uma ferramenta de gerenciamento de desktop de uso geral, capaz de ge- renciar máquinas virtuais em ambos os hipervisores localmente e acessados remotamente. Destina-se ao uso doméstico à gestão de 10 a 20 hosts e sua VMs.

• virt-viewer: Uma ferramenta leve para acessar o console gráfico associado a uma máquina virtual. Ele pode se conectar de forma segura para consoles remotos que suportam o protocolo VNC.

• oVirt: fornece a capacidade de gerenciar um grande número de máquinas virtuais em todo o data center de hosts. Ele se integra com FreeIPA para autenticação Kerberos, e no futuro, o gerenciamento de certificados.

• virsh: Um shell interativo e ferramenta programável de scripts em lote para as tarefas de gestão de desempenho para todos os domínios Libvirt gerenciados, redes e armazena- mento. Virsh faz parte da distribuição do núcleo Libvirt.

Documentos relacionados