Se existe um aspecto que é bastante complexo no Linux e que ao mesmo tempo me deixa fascinado, é a sua arquitetura de software voltada para a virtualização de hardware. Diferente do Windows, que conta com uma única peça de software e que geralmente é desenvolvido por uma única empresa ou instituição, o Linux conta com diferentes projetos para executar funções específicas. Uma delas é a biblioteca libvirt, a qual provê uma API para interagir com o hypervisor e assim, possibilitar o gerenciamento das VMs disponíveis no sistema…
“QEMU 7.0 is out today as the newest version of this important piece of the open-source Linux virtualization stack. Since QEMU 6.2 at the end of last year, developers at Red Hat and other organizations have been busy working on QEMU 7.0 as this open-source emulator widely used as part of the free software Linux virtualization stack. QEMU 7.0 brings support for Intel AMX, a lot of ongoing RISC-V work, and more. Some of the QEMU 7.0 highlights…”
— by Phoronix.
A seguir, temos uma série de plataformas de virtualização, das quais destacam-se o KVM (Kernel Virtualization Machine). Este é um hypervisor tipo 1 (bare metal), que por sua vez traduz as chamadas de sistema da VM (responsáveis pelo acesso privilegiado ao hardware) diretamente para o sistema hospedeiro (que controla efetivamente o hardware) e assim, consegue extrair o máximo de desempenho (para-virtualizado)! No entanto, as complexidades inerentes desta plataforma e a necessidade dos sistemas estarem adaptado para este método de virtualização, tornam o seu gerenciamento mais complicado, além de trazer alguns entraves para a migração das VMs para outros hardwares. Como alternativa, poderemos realizar uma virtualização total, utilizando para isto um hypervisor tipo 2 e um hardware “simulado”.
O problema é que esta última abordagem reduz consideravelmente o desempenho do sistema hospedado e é justamente neste aspecto em que o QEMU brilha! Ele se destaca por dispor de tecnologias que possibilitam acelerar a sua performance, reduzindo os impactos causados pela virtualização total (hypervisor tipo 2). Além disso, ele traz diferentes modos de emulação, nos quais pode executar sistemas compilados até mesmo para plataformas que utilizam set de instruções diferentes (ARM, RISC-V, MIPS, etc) e trabalhar em conjunto com outras ferramentas, como o próprio KVM e o Xen (ambos ficariam responsáveis pela tradução das chamadas do sistema, enquanto que o QEMU faria apenas a emulação do hardware), além da emulação completa do sistema e seus periféricos. Como havia dito, muito sofisticado!!!
Durante esta semana, foi lançada a versão 7.0 do QEMU e com ela, algumas interessantes novidades: o suporte oficial para o Intel AMX (extensões que aceleram o desempenho no processamento de instruções voltadas para a inteligência artificial e aprendizado de máquina), várias melhorias para as CPUs com base nos sets de instruções ARM e RISC-V, suporte para a interface SR-IOV do PCI-Express (Single Root I/O virtualization), uma nova opção “-display dbus” para exportar a exibição do QEMU para processos externos (a qual será bastante útil para ferramentas como o GNOME Boxes) e por fim, a utilização de até 4 núcleos de CPUs baseadas no set de instruções OpenRISC (antes, limitada apenas para apenas duas). No entanto, algumas remoções também foram feitas, como o suporte para as antigas CPUs PowerPC das séres 400 e 600, bem como os antigos set de instruções ARMv4 e ARMv5 do TCG (Tiny Code Generator).
No Linux, atualmente utilizo a solução GNOME Boxes, que por sua vez é uma simples interface gráfica e faz o uso da biblioteca VIRT-Manager, além de utilizar os recursos de virtualização providos pelas plataformas QEMU (o meu sistema é baseado em um kernel “padrão” e não “para-virtualizado” através do KVM). Embora ele não entregue recursos e funções mais sofisticadas como o VirtualBox (que de uns tempos para cá, resolveu me trazer dores de cabeça e não vir mais nos repositórios oficiais da distribuição), ele atende bem e se destaca mesmo por oferecer uma boa performance. E olha que estou utilizando uma CPU quad-core com +7 anos (Intel Celeron J1900), ainda baseado na arquitetura x86 Bay Trail, “popularizadas” pelas CPUs Intel Atom!
Melhor que VMware? Definitivamente, não! Já em relação ao Hyper-V… &;-D