Ferramentas de virtualização, mais conhecidas como Virt Tools, é uma coleção de seis ferramentas de virtualização de código aberto criadas por vários colaboradores para tornar o mundo da virtualização um lugar melhor.
1_virttools.jpg
(Bryant Son, CC BY-SA 4.0)
Algumas das ferramentas, como KVM e QEMU, podem ser familiares aos entusiastas do Linux, mas ferramentas como libvirt e libguestfs são provavelmente menos.
No caso de você preferir aprender assistindo vídeos do que lendo, eu criei uma versão em vídeo deste artigo, que você pode acessar no YouTube.
Antes de andar pelas ferramentas, é uma boa idéia conhecer alguma terminologia essencial de virtualização. Eu derivei muitas dessas definições da Wikipedia, com páginas ligadas na tabela.
Term | Definição |
---|---|
Virtualização | Na computação, virtualização refere-se ao ato de criar uma versão virtual (ao invés de física) de algo, incluindo plataformas de hardware de computador virtual, dispositivos de armazenamento e recursos de rede de computadores. |
Emulador | Um emulador é um hardware ou software que permite a um sistema de computador (chamado de host) comportar-se como outro sistema de computador (chamado de guest). |
Máquina virtual (VM) | Tão conhecido como “máquina guest”, estas são emulações de computadores de hardware reais, físicos. |
Hosts | Na virtualização de hardware, um computador em que um hypervisor executa uma ou mais VMs. |
Hypervisor | Isto é software, firmware ou hardware de computador que cria e executa uma VMs. |
Kernel | Este é um programa de computador no núcleo do sistema operacional de um computador com controle completo sobre tudo no sistema. |
Daemon | Este é um programa de computador que roda como um processo em segundo plano, ao invés de estar sob o controle direto de um usuário interativo. |
Esta tabela resume cada Ferramenta Virt, incluindo informações de licença e links para o website e código fonte de cada ferramenta. Muitas dessas informações vêm do site das Ferramentas Virt e do site de cada ferramenta.
Nome | O que é | Licença | Código fonte |
---|---|---|---|
Kernel-máquina virtual (KVM) | Um módulo de virtualização no kernel Linux que permite ao kernel funcionar como um hipervisor | GNU GPL ou LGPL | Código fonte |
Quick Emulador (QEMU) | Um emulador e virtualizador de máquina genérico e de código aberto | GPLv2 | Código fonte |
Libvirt | Uma biblioteca e um daemon fornecendo um estável, API de código aberto para gerenciar hosts de virtualização | GNU | Código fonte |
Libguestfs | Um conjunto de ferramentas para acesso e modificação de imagens de disco VM | LGPL, GPL | Código da fonte |
Virt-manager | Interface de utilizador desktop para gerir VMs através da libvirt | GPLv2+ | Código fonte |
Libosinfo | Fornece uma base de dados de informações sobre lançamentos de sistemas operacionais para ajudar na configuração ideal do hardware ao implantar VMs | LGPLv2+ | Código fonte |
Kernel-Virtual Manager (KVM)
2_kvm.jpg
(Bryant Son, CC BY-SA 4.0)
>
>
>
>
KVM é uma solução completa de virtualização para Linux em hardware contendo extensões de virtualização. KVM fornece a virtualização de hardware para uma grande variedade de sistemas operacionais convidados, incluindo Linux, Windows, MacOS, ReactOS e Haiku. Usando KVM, você pode executar múltiplas VMs em imagens não modificadas de Linux ou Windows. Cada VM tem hardware virtualizado privado: uma placa de rede, disco, adaptador gráfico, etc.
A maior parte do tempo, você não irá interagir diretamente com o KVM. Em vez disso, você deve usar QEMU, virt-manager, ou outra ferramenta de gerenciamento de virtualização para alavancar KVM.
Você pode encontrar documentação completa no site do KVM, bem como acessar seu código fonte.
Quick Emulator (QEMU)
3_qemu.jpg
>
(Bryant Son, CC BY-SA 4.0)
>
>
>
QEMU é um emulador e virtualizador de máquinas genérico e de código aberto. Quando usado como um emulador, QEMU pode executar sistemas operacionais e programas feitos para uma máquina (por exemplo, uma placa ARM) em uma máquina diferente (por exemplo, seu próprio PC x86_64). Quando usado como um virtualizador, QEMU atinge desempenho quase nativo executando o código de convidado diretamente na CPU do host usando KVM.
QEMU é suportado em vários sistemas operacionais, e seu processo de instalação é tão fácil quanto executar alguns comandos simples; aqui, você pode ver como instalar QEMU em macOS com Homebrew.
3_1_qemuinstall.jpg
(Bryant Son, CC BY-SA 4.0)
Após a instalação, aprenda a utilizá-lo lendo a sua documentação, e poderá também aceder ao seu código fonte.
Libvirt
4_libvirt.jpg
(Bryant Son, CC BY-SA 4.0)
>
>
Libvirt é uma biblioteca e um daemon que fornece uma API de código aberto estável para o gerenciamento de hosts de virtualização. Ela visa múltiplos hypervisors, incluindo QEMU, KVM, LXC, Xen, OpenVZ, VMWare ESX, VirtualBox, e mais.
Outra coisa interessante sobre libvirt é que KubeVirt, um projeto de código aberto para criar e gerenciar VMs dentro da plataforma Kubernetes, utiliza em grande parte Libvirt. (Eu vou cobrir o KubeVirt num artigo futuro.) Libvirt é um projeto interessante para explorar, e você pode encontrar uma infinidade de informações em seu site oficial, bem como baixar seu código fonte.
Libguestfs
5_libguestfs.jpg
>
(Bryant Son, CC BY-SA 4.0)
>
>
Libguestfs é um conjunto de ferramentas para acesso e modificação de imagens de disco VM. Você pode usá-lo para visualizar e editar arquivos dentro de convidados; criar scripts para alterações em VMs; monitorar estatísticas de disco usado/liberto; criar convidados, máquinas físicas para virtuais (P2V), ou virtuais para virtuais (V2V); realizar backups; clonar VMs; construir VMs; formatar discos; redimensionar discos; e muito mais. Tenho usado recentemente enquanto trabalhava em um projeto baseado em KubeVirt- chamado OpenShift Virtualization, que você pode aprender mais sobre ele no meu tutorial em vídeo.
Libguestfs’ site oficial contém extensa documentação sobre como usar cada comando, e você também pode baixar seu código fonte no GitHub.
Virt-manager
6_virtualmanager.jpg
(Bryant Son, CC BY-SA 4.0)
Virt-manager é uma interface de usuário desktop para gerenciar VMs através da libvirt. Ele visa principalmente as VMs KVM, mas também gerencia Xen e LXC. Ele também inclui a ferramenta de provisionamento de linha de comando virt-install. Pense no virt-manager como uma ferramenta de gestão fácil de usar para as suas VMs. Por exemplo, você pode usar virt-manager para rodar um ambiente Microsoft Windows em uma estação de trabalho Linux ou vice versa.
O código fonte do virt-manager está disponível no GitHub e a documentação está em seu site. Neste momento, virt-manager está disponível apenas para plataformas Linux.
Libosinfo
7_libosinfo.jpg
(Bryant Son, CC BY-SA 4.0)
Libosinfo fornece um banco de dados de informações sobre lançamentos de sistemas operacionais para auxiliar na configuração de hardware ao implantar VMs. Inclui uma biblioteca C para consulta de informações no banco de dados, que também é acessível a partir de qualquer idioma suportado pela introspecção do GObject. Como você pode adivinhar, libosinfo é mais um bloco de construção para habilitar a funcionalidade de um sistema operacional – mas muito importante.
O código fonte do Libosinfo está disponível no GitLab, e sua documentação pode ser encontrada em seu website.