Virtualização

Em computação, a virtualização se refere à criação de uma versão virtual de algo real, incluindo plataformas de hardware, sistemas operacionais e dispositivos de armazenamento, entre outros.

Essa estratégia começou na década de 1960, como um método de dividir logicamente os recursos de mainframes entre diferentes aplicações [1]. Desde então o significado do termo tem sido expandido.

Uma possibilidade de virtualização é a execução de várias instâncias de um sistema operacional, ou de diferentes sistemas operacionais, paralelamente em uma mesma máquina. Essa é a função de um hypervisor ou Virtual Machine Monitor (VMM).

O computador sobre o qual o hypervisor é executado é denominado host machine e cada máquina virtual executada sobre o hypervisor é uma guest machine. O hypervisor oferece aos sistemas operacionais guests uma plataforma virtual de operação e gerencia a execução desses sistemas operacionais convidados.

Múltiplas instâncias de diferentes sistemas operacionais podem compartilhar os recursos de hardware virtualizados. Por exemplo, Linux, Windows e OS X podem rodar simultaneamente em uma única máquina física x86 [2].

Além disso, o uso da virtualização tem sido buscado com o intuito de: aumentar a segurança, aumentar a confiabilidade, aumentar a disponibilidade, reduzir os custos, facilitar a adaptabilidade e o balanceamento de carga e suportar aplicações legadas [5].

O Xen é um dos sistemas que permitem realizar essa tarefa.

Sobre o xen

O Xen Project é um hypervisor free e open-source, iniciado na Universidade de Cambridge, e que suporta alguns dos maiores sistemas em nuvem da atualidade [3].

O Xen hypervisor é executado diretamente sobre o hardware, sendo o responsável por lidar com CPU, memória e interrupções. Para tanto ele é o primeiro programa a ser executado após o bootloader. Desse modo o hypervisor roda diferentes máquinas virtuais, sendo que cada instância de uma máquina virtual é denominada domínio ou guest.

Entre os domínios executados sobre o Xen existe um especial chamado domínio de controle ou domínio 0 (zero). Tal domínio contém drivers para todos os dispositivos do sistema e é privilegiado pois tem a capacidade de acessar diretamente o hardware, lidar com as funções de E/S e interagir com as demais máquinas virtuais. Esse domínio 0 é a primeira máquina virtual iniciada pelo sistema e controla a criação, a configuração e a destruição das demais máquinas virtuais. Assim, é através desse domínio que o administrador pode operar sobre o sistema como um todo. O Xen não pode ser utilizado sem tal domínio.

O domínio 0 ainda possui uma pilha de controle (Toolstack) que expõe uma interface por linha de comando ou graficamente. Esse domínio requer um kernel habilitado para o Xen Project, como as distribuições Linux mais recentes. O domínio 0 executa, então, esse núcleo Linux modificado.

Cada um dos guests é um ambiente virtualizado, executando seu próprio sistema operacional e suas aplicações, totalmente isolado do hardware, nem mesmo a E/S. Assim, cada um dos domínios, exeção feita ao domínio 0, é chamado de domínio não privilegiado.

Paravirtualização e virtualização completa

Inicialmente o Xen trabalhava somente com paravirtualização, o que significa que era necessário modificar os sistemas operacionais hóspedes para funcionar com o hypervisor. Porém isso restringia seu uso basicamente aos sistemas Unix. Então, posteriormente, as versões do Xen passaram a oferecer virtualização completa, possibilitando que sistemas operacionais não modificados pudessem ser utilizados como guests não-privilegiados. Contudo isso é possível somente com processadores que forneçam suporte de hardware (Intel VT ou AMD-V) [4].

No Xen os domínios paravirtualizados (domínio U-P) e completamente virtualizados (domínio U-HVM) podem coexistir. Os domínios U-P são conscientes de que não têm acesso direto ao hardware e que existem outras máquinas virtuais. Os domínios U-HVM não são conscientes disso. Isso significa que os domínios U-PV contém drivers específicos para interagirem com o domínio 0. Por outro lado, os domínios U-HVM inicializam como um sistema comum, o que exige que o Xen simule a existência da BIOS e executando os procedimentos de boot de um computador. Nesse caso um daemon QEMU é associado a cada domínio U-HVM para disponibilizar para cada guest um hardware virtualizado para, por exemplo, o atendimento a requisições de rede [4].

Referências

[1] WIKIPEDIA. Virtualization. Disponível em: https://en.wikipedia.org/wiki/Virtualization. Acesso em: 02 ago 2016.

[2] WIKIPEDIA. Hypervisor. Disponível em:https://en.wikipedia.org/wiki/Hypervisor. Acesso em: 02 ago 2016.

[3] XEN PROJECT. Xen Project Overview. em:https://wiki.xenproject.org/wiki/Xen_Project_Software_Overview. Acesso em: 28 jul 2016.

[4] CARISSIMI, Alexandre. Virtualização: da teoria a soluções. 26º Simpósio Brasileiro de Redes de Computadores e Sistemas Distribuídos. Livro Texto dos Minicursos. 2008.

[5] MATTOS, Diogo.Virtualização: VMWare e Xen. Disponível em: www.gta.ufrj.br/grad/08_1/virtual. Acesso em: 28 jul 2016.

Vídeo