NOTA: Esse artigo é uma tradução livre (com notas do tradutor) da documentação disponível em
http://wiki.xenproject.org/wiki/Xen_Overview.
Um
hypervisor é um software de computador, um firmware ou hardware sobre o qual é possível criar e executar máquinas virtuais. O hypervisor também é conhecido como VMM - Monitor de Máquinas Virtuais (em inglês). A máquina real onde o hypervisor é executado é chamada de máquina hospedeira (host); as máquinas virtualizadas são chamadas de visitantes (guest). De acordo com [1], hypervisores são classificados em:
Tipo-1 - Nativo ou "Bare Metal", são os hypervisores que executam diretamente sobre o hardware, assumindo diretamente seu controle e gerenciando os sistemas operacionais visitantes. Um visitante é executado como um processo do hospedeiro.
Tipo-2 - Hypervisores hospedados (hosted) são hypervisores que executam sobre um sistema operacional e são executados como uma aplicação do espaço usuário. O tipo-2 cria uma abstração sobre o sistema operacional do hospedeiro que permite compartilhar recursos de hardware. São exemplos de hypervisores do tipo-2: Virtualbox e VMWare Workstation.
Atualmente, essas duas tecnologias se confundem em ambientes que não são totalmente claros: como o KVM - Kernel-based Virtual Machine - e o FreeBSD bhyve que são módulos do kernel que efetivamente convertem sistemas do tipo-2 em sistemas do tipo-1.
Virtualização não é uma ciência nova, sua origem remonta ao final dos anos 1960 quando as primeiras implementações foram feitas em computadores de grande porte (mainframes) da IBM. Os maiores avanços ocorreram no final da década de 1970, principalmente com o avanço da memória compartilhada e a virtualização dos processos de memória.
Com a expansão da capacidade do hardware doméstico essa característica chegou aos PCs por volta do ano 2005 com a inclusão de características especiais em hardware (vários núcleos (dual core) e features de virtualização no processador). Avanços em software como o SMP - Multi-Processamento Simétrico também tornaram possível a virtualização em PCs domésticos.
Sistemas de código aberto do tipo Unix tiveram grande influência no desenvolvimento da virtualização, pois para executar um sistema virtualizado são necessárias várias modificações em seu código fonte. Grandes fabricantes como Oracle, IBM, HP e SGI trabalham juntos no desenvolvimento da virtualização e utilizam intensamente esses processos como produtos comerciais, hospedando sistemas na nuvem (cloud computing).
A partir de 2005 fabricantes de processadores Intel e AMD incluíram características (features) em seus processadores que implementam a virtualização em hardware. Na Intel esse recurso é chamado de VT-x (Vanderpool) e na AMD é chamado de AMD-v (Pacífica). Produtos em software como VMWare e VirtualBox ficarm populares no final dos anos 2000. A Microsoft entrou no jogo em 2008 com o Hyper-V (Viridian).
Atualmente, a virtualização avança em direção aos sistemas embarcados, principalmente, sobre a arquitetura ARM que muitos acreditam ser a sucessora da arquitetura X86. Os microprocessadores embarcados passaram a atuar como virtualizadores em micro escala.
O que é o Projeto hypervisor Xen
O projeto Xen é um hypervisor em código aberto do tipo-1 ou bare metal. Xen torna possível executar várias instâncias de sistemas operacionais, em paralelo, sobre o mesmo hardware. Xen é o único hypervisor do tipo-1 sobre código aberto (carece de confirmação).
As principais características de Xen são:
- Mínimo consumo de recursos (em torno de 1 MB por visitante) devido a sua arquitetura de microkernel e limitado acesso/interface ao visistante.
- Robustez e segurança são prioridades da implementação em detrimento de facilidades, especialmente quando comparado com outros hypervisores.
- Agnóstico em relação ao sistema operacional hospedeiro. A maioria das instalações são feitas usando Linux como hospedeiro, entretanto, outros sistemas (OpenSolaris e NetBSD) podem ser utilizados.
- Isolamento dos drivers. Xen permite que os drivers principais executem dentro da máquina virtual. Se um drive quebrar ou fica comprometido, a VM pode ser rebootada sem afetar o sistema hospedeiro.
- Implementa virtualização completa (HVM). Os visitantes são otimizados para serem executados como máquinas virtuais. Isso permite que os visitantes executem mais rápido do que quando estão usando extensões de hardware reais.
- Se o visitante não pode implementar HVM, ainda assim, pode ser executado como um sistema paravirtualizado (PV).
- Arquitetura especialmente definida pela criação do domínio zero (dom0) que embarca todos os drivers necessários para o hardware, bem como uma pilha de ferramentas (toolstacks) para controlar as máquinas virtuais (VMs).
O domínio zero controla os drivers e a pilha que gerencia a criação de máquinas virtuais, sua destruição e configuração.
Arquitetura do Xen
O diagrama a seguir representa a arquitetura do Xen. O Xen hypervisor é executado diretamente sobre o hardware e possui a responsabilidade pela manipulação da CPU, memória RAM e interrupções (de hardware?). Xen é o primeiro programa executado após a fase do bootloader (GRUB). Uma instância especial de sistema operacional é executada sobre Xen com o nome de domínio zero (dom0) ou VM-0. As demais máquinas virtuais são chamadas visitantes (guest).
Componentes
O hypervisor Xen é extremamente pequeno (menos de 150 mil linhas de código) e executa diretamente sobre o hardware gerenciando a CPU, a RAM e as interrupções. O hypervisor não tem conhecimento sobre processos de I/O de rede e de disco.
Domínios visitantes ou VMs - são ambientes virtualizados, cada um executando seu próprio sistema operacional e aplicações. O hypervisor suporta dois tipos de virtualização: Paravirtualização (PV) e Virtualização Completa (HVM). Ambos visitantes podem ser utilizados ao mesmo tempo em um hypervisor. Uma categoria especial chamada de PV-on-HVM permite criar um "continuum" entre uma PV e uma HVM. Visitantes são completamente isolados do hardware, em outras palavras, eles não tem qualquer acesso direto ao hardware ou as funcionalidades de I/O. Os visitantes são chamados de "domínios sem privilégios" - em inglês - unprivileged domain ou DomU.
O domínio controlador ou Dom0 - é uma máquina virtual especializada que possui privilégios especiais como a capacidade de acessar diretamente o hardware, manipular todos os acessos de I/O e inteagir com as VMs. O dom0 expõe uma interface de controle que acessa o mundo exterior das VMs. Não é possível usar Xen sem um dom0, pois tecnicamente dom0 é a primeira máquina virtual instalada.
Ferramentas e Console - O dom0 possui uma pilha de controle (toolstack) que permite gerenciar as máquinas virtuais. A pilha expõe uma interface através de um console de comandos. Opcionalmente, é possível usar uma aplicação gráfica para gerenciar as VMs.
Sistema Xen - O dom0 requer um kernel modificado com funções Xen. Visitantes paravirtualizados requerem apenas funções PV. Distribuições Linux que utilizam kernel mais recente são capacitadas a se tornar um dom0. Versões antigas somente podem ser visitantes PV.
Tipos de visitantes
1. Paravirtualização (PV) e Virtualização Assistida de Hardware (HVM) podem ser utilizadas ao mesmo tempo em um hospedeiro Xen. Os tipos de visitantes permitidos são definidos em tempo de compilação de Xen. PV ou Paravirtualização é uma técnica introduzida originalmente por Xen e mais tarde adotada por outras plataformas de virtualização. Hospedeiros PV não requerem extensões de virtualização (VT-x ou AMD-V), entretanto, os visitantes precisam de funções PV ativas para que seu kernel e seus drivers se tornem cientes da existência de um hypervisor, dispensando emulações ou emulações virtuais de hardware. Sistemas como Linux, NetBSD, FreeBSD e OpenSolaris podem ser PV. No Linux, sistemas com kernel a partir de 2.6.24 podem ser PV.
2. HVM ou virtualização completa utiliza extensões do CPU hospedeiro para virtualizar os visitantes. HVM requer VT-x ou AMD-V para funcionar. O Xen utiliza Qemu para emular hardware de PC, incluindo a BIOS, os discos IDE, a controladora de vídeo VGA, as controladoras USB, de rede, etc. Virtualização completa dá total desempenho na emulação. Visitantes em HVM não requerem qualquer tipo de suporte ou modificação no kernel. Isso significa que o Janelas Willy Caolho Edition pode ser utilizado (mas quem faria isso?).
3. PVHVM ou visitante com Performance, completamente virtualizado HVM podem usar drivers paravirtuais especiais (PVHVM ou PV-on-HVM) que são drivers PV otimizados para ambientes HVM; fazendo um bypass da emulação de disco e rede, o que dá ao PV uma performance melhor em sistemas HVM nativos. Melhora o desempenho do Willy Caolho Edition. Visitantes com suporte PV automaticamente usam drivers PV otimizados.
4. PVH ou DomU's foi introduzido no Xen 4.5 como um dom0 com PVH (Linux e BSD) que essencialmente torna um visitante PV com drivers de boot e I/O, capaz de usar HW virtualização por extensões, sem necessidade de emulação. PVH é um recurso experimental em Xen 4.4 e 4.5 e não pode ser utilizado em produção. PVH fornece melhor desempenho em sistemas 64 bits atuais. Ativando pvh=1 no arquivo de configuração ativa PVH. O dom0 somente pode usar PVH em Xen 4.5.
Xen possui suporte nativo em muitas distribuições Linux, principalmente Debian, Fedora e Ubuntu que podem ser utilizados como dom0. Em outros sistemas a quantidade de ajustes para fazer Xen funcionar é enorme. Isso limita o uso somente por profissionais.
Referências:
[1] -
https://en.wikipedia.org/wiki/Hypervisor
[2] -
http://wiki.xenproject.org/wiki/Xen_Overview