Introdução

A virtualização é uma técnica que permite que em uma única máquina possam ser executadas dois ou mais ambientes de execução separados e isolados. Esta técnica tem ganhado destaque no mundo TI nos últimos anos, apesar de não ser exatamente uma novidade, pois sua origem remonta ao início da década de 70. Antes usada apenas em servidores ou mainframes, onde estes deviam ser compartilhados por vários usuários em ambientes de aplicação completamente heterogêneos, hoje em dia esta tecnologia pode ser usada normalmente em computadores pessoais graças à crescente onda de interesse em técnicas de virtualização.

Fig 1 Pricípio básico de máquinas virtuais [5]

Na virtualização, cada ambiente de execução, chamamos de Máquina Virtual (VM), é independente dos demais, podendo ter seu próprio sistema operacional, aplicativos e serviços. Sendo assim, cada VM pode ter seu próprio sistema operacional hospedado, podendo ser diferente daquele utilizado na plataforma hospedeira. Com o avanço das técnicas de virtualização na implementação destas interfaces pelos anos, podemos destacar duas delas, as máquinas virtuais de processo e o monitor de máquina virtual.

Fig 2 Tipos de máquinas virtuais e sua relação com sistemas hóspede e hospedeiro [5]

Na primeira técnica, uma aplicação é executada sobre um programa que implementa uma máquina virtual de processo, onde neste caso a máquina virtual faz uso das funcionalidades providas pelo sistema operacional e pelo próprio processador através de instruções não privilegiadas. Ou seja, a aplicação faz uso apenas da interface provida pelo ambiente virtual. Enquanto que da segunda, a aplicação é executada usando as chamadas de sistemas e funções de bibliotecas providas pelo sistema operacional, assim como as instruções não privilegiadas oferecidas desta vez por um monitor de máquina virtual (VMM). Ou seja, há a introdução de mais uma camada de software, que tem por objetivo arbitrar o acesso ao hardware subjacente a ela, fazendo com que estes recursos possam ser compartilhados pelos sistemas operacionais que estão sobre essa camada. A camada de software que controla o acesso ao hardware é chamada VMM (Virtual Machine Monitor, ou Monitor de Máquina Virtual). Os sistemas operacionais que estão sendo executados sobre essa camada são chamados de “hóspedes”. A cada sistema operacional visitante, o VMM apresenta um conjunto de interfaces, que constituem a máquina virtual.

Objetivo

O interesse na virtualização não só tem caminhado para um aperfeiçoamento do suporte ao hardware na virtualização do processador, ou na simplificação do monitor da máquina virtual (VMM), mas têm evoluído sim com suas principais preocupações na segurança, confiabilidade, disponibilidade, adaptabilidade e custo.

Neste trabalho, vamos focar a atenção para a técnica que faz uso do monitor de máquina virtual (VMM), que desde meados de 2005 tem ganhado muita atenção devido ao uso de novas técnicas de virtualização aplicadas pela Intel para sua família de processadores.

Neste trabalho, vamos focar a atenção para a técnica que faz uso do monitor de máquina virtual (VMM), que desde meados de 2005 tem ganhado muita atenção devido ao uso de novas técnicas de virtualização aplicadas pela Intel para sua família de processadores.

Sendo assim, neste trabalho, visamos estudar os modelos e métodos de virtualização aplicados para os microprocessadores da família Intel, focando nos desafios de implementação desta tecnologia na arquitetura 32 bits (IA-32), e as soluções propostas pelo próprio fabricante. Ao final deste, esperamos chegar a uma conclusão a respeito do desempenho, confiança e adaptabilidade desta tecnologia cada vez mais presente na área de TI.

Monitor de Máquina Virtual

voltar

Podemos citar muitos efeitos positivos oferecidos pelo uso da virtualização de sistemas, como a melhora na sua utilização, no seu gerenciamento e na confiabilidade. Com o uso da virtualização, diversos usuários com sistemas operacionais com diferentes requisitos podem fazer uso do mesmo servidor virtualizado; atualizações em sistemas podem ser encenadas através de máquinas virtuais, diminuindo o tempo gasto; e falhas em máquinas hóspedes podem ser isoladas do sistema hospedeiro quando ocorrerem, evitando a propagação do erro para outras aplicações.

Enquanto estes benefícios têm sido considerados amplamente valiosos, em diversos aspectos, justificando o uso da virtualização. Veremos três funcionalidades que foram revolucionadas para a virtualização a partir da introdução do VMM.

Isolamento do Sistema

voltar

A virtualização pode oferecer de diversas formas, toda a segurança e confiabilidade ao isolar múltiplas pilhas de aplicativos em suas máquinas virtuais. A segurança pode ser oferecida, pois em qualquer caso de ataque ao sistema emulado, os danos podem ser confinados dentro da maquina virtual, enquanto podemos obter a garantia que nenhuma outra maquina virtual será afetada.

Fig 3 Isolamento do Sistema [3]

Múltiplos Sistemas em apenas uma máquina

voltar

Com a virtualização é possível a coexistência de diversos sistemas heterogêneos em apenas uma máquina física. O que faz com que acabe o desperdício de recursos, como no caso de servidores web ou de arquivos, onde em uma única máquina rodava apenas uma aplicação acarretando um sub-uso de recursos e um desperdício de capital.

Fig 4 Múltiplos Sistemas [3]

Migração de Sistemas

voltar

Fazendo o encapsulamento dos clientes em máquinas virtuais separadas, com o uso da virtualização se faz capaz a migração entre plataformas diferentes de forma transparente para o usuário cliente. E além de facilitar a manutenção das plataformas de hardware, este procedimento ainda pode ser disparado automaticamente em casos de alguma detecção de falha na plataforma atual do cliente. Esta capacidade pode revolucionar o nível da qualidade de serviço oferecida em máquinas dedicadas para servidores web, onde o cliente nem notaria a falha do sistema, enquanto ele seria migrado para outra plataforma diferente da que se encontra, para que esta entre em manutenção.

Fig 5 Migração de Sistemas [3]

Intel Virtualization Technology

voltar

A tecnologia

voltar

Com o aumento do uso da virtualização para novas ferramentas e aplicações que encontraram vantagens no uso desta tecnologia, tanto em servidores quanto em máquinas clientes, foi iniciado um grande investimento por conta dos fabricantes de processadores para gerir esta integração. Infelizmente, neste processo, em especial na família de processadores da Intel, foram descobertos diversos desafios por conta das arquiteturas IA-32 e Itanium.

Também chamada de Intel VT-x, esta tecnologia visa diminuir a complexidade dos VMM (Monitores de Máquina Virtual), aumentando o desempenho de sistemas virtualizados baseados em software, permitindo que sistemas operacionais não modificados sejam executados, em máquinas virtuais, com desempenho igual ou superior ao alcançado pela paravirtulização. Onde os sistemas operacionais são modificados ou sofrem translações binárias para serem executados sobre um VMM.

Arquitetura e funcionamento

voltar

A VT-x adiciona ao IA-32 duas novas formas de operação da CPU: VMX (Virtual Machine Extensible) root e VMX non-root-operation. Enquanto o VMM é executado no VMX root-operation, seus sistemas visitantes são executados no VMX non-root-operation. Ambos os suportes de operação possuem suporte para os quatro níveis de privilégio (0 a 3), permitindo que um sistema visitante seja executado com o privilegio que desejar, e fornecendo ao VMM a flexibilidade de usar todos os níveis de operação.

No modo de operação VMX root, o funcionamento da máquina virtual é similar à arquitetura 32 bits sem o VT-x. Onde as aplicações que são executadas no modo VMX non-root são desprivilegiados em alguns aspectos, independente do nível de privilégio. Assim, o VT-x define duas novas transições, onde a primeira é a transição do modo VMX root para o modo VMX non-root, ou seja, do VMM para o sistema visitante, que é chamada de “VM entry”, e a transição do modo VMX non-root para o VMX root, ou seja, do sistema visitante para o VMM, chamada de “VM exit”.

Nesta nova solução, a Intel VT-x coloca um conjunto de novas instruções no processador, chamado de Virtual Machine Extensions, VMX. Esse novo conjunto é formado por 10 instruções específicas de virtualização: VMPTRLD, VMPTRST, VMCLEAR, VMREAD, VMWRITE, VMCALL, VMLAUCH, VMRESUME, VMXOFF e VMXON.

Para entrar no modo de virtualização, a instrução VMXON deve ser chamada pelo software e, só então, chamar o VMM. Após entrar no modo de virtualização, o VMM pode entrar em cada máquina virtual usando a instrução VMLAUNCH e sair delas usando a instrução VMRESUME. Para parar todas as máquinas virtuais e sair do modo de virtualização, o VMM deve executar a instrução VMXOFF. [2]

Na figura abaixo, temos ilustrado o processo de chamada de instruções para executar uma máquina virtual.

Fig 6 Métodos de VIrtualização [2]

Métodos de Virtualização

voltar

Os microprocessadores da Intel oferecem uma proteção para a execução de aplicações baseada em 2-bits de níveis de privilégios (também chamados de ring), fazendo uso do ‘00’ (zero) para o nível mais alto e ‘11’ (três) para o mais baixo. O nível de privilegio determina qual instrução privilegiada, que controla as funcionalidades básicas da CPU. Ou seja, que podem operar sem obter falha, garantindo a acessibilidade ao espaço de endereçamento. Porém, mesmo com 4 níveis de privilégios, a maioria das aplicações desenvolvidas pra IA-32, usam somente os níveis 0 e 3.

Analisando a imagem acima, podemos observar que a virtualização assistida por hardware, caso da Intel VT-x que estende a IA-32, muda a forma de acesso ao sistema operacional. Sistemas operacionais para a plataforma IA-32 são projetados para terem acesso direto aos recursos do sistema para executarem, ou seja, com nível de privilégio 0. Mas como o VMM não pode conceder este privilégio para o sistema hóspede, contornando este problema, é usada a técnica chamada ring deprivileging. Nesta técnica, a aplicação é executada em um nível de proteção menor que ela foi projetada para ser executada. Para esta técnica são usados dois modelos: o modelo 0/1/3, no qual o sistema operacional visitante é executado no nível 1 de privilégio e suas aplicações no nível 3, e o modelo 0/3/3, no qual tanto as aplicações do sistema operacional visitante como ele mesmo são executados no nível de privilégio 3. Em ambos os modelos o VMM é executado no nível 0. Porém esta técnica causa inúmeros desafios para virtualização.

Desafios e Soluções

voltar

A seguir, vamos analisar alguns desafios que a virtualização da família de processadores IA-32 apresenta, e para cada item, a sua solução oferecida pela Intel VT-x.

Compressão do espaço de endereçamento

A VMM reserva para si uma parte do espaço de endereçamento virtual do visitante. Poderia rodar inteiramente no espaço do visitante, mas poderia utilizar uma quantidade relevante de espaço de endereçamento virtual do visitante. Como alternativa a isso, a VMM roda em seu próprio espaço, ainda usando obrigatoriamente um pouco do espaço do usuário para estruturas de controle que gerenciam transições entre a VMM e o software do sistema hóspede. Nesta situação, a VMM precisa proteger a parte do espaço de endereçamento virtual utilizada no visitante, de forma que ele não descubra que é executado em um ambiente virtual, comprometendo assim o isolamento da máquina.

Logo, para resolver este problema, o VT-x muda o espaço de endereçamento-linear para cada transição entre o VMM e o SO visitante. Permitindo ao sistema hóspede, total uso do seu espaço de endereçamento. Sendo assim, as transições do VMX são gerenciadas pelo VMCS, que reside no espaço de endereçamento físico, e não no linear.

Ring Aliasing e Ring Compression

Problemas de ring aliasing surgem quando um programa é executado a um nível de privilégio diferente do nível para que este foi escrito. Por exemplo, ao executar a instrução PUSH com o registrador CS, é possível determinar que um SO visitante não estivesse rodando com privilégio nível 0.

Os problemas de ring compression aparecem quando se tenta proteger o VMM das aplicações visitantes, executando ring deprivileging, ou seja, quando os SO visitantes são executados em ring 3, como no modelo 0/3/3. Como neste modelo, tanto o sistema visitante quanto o as aplicações que rodam nele são executados com o mesmo nível de privilégio, isso faz com o que o sistema visitante fique vulnerável em relação as suas próprias aplicações.

Para eliminar ambos os problemas, a VT-x permite que o VMM execute os aplicativos do sistema visitante com o privilégio que quiser. Instruções como PUSH, não revelam mais que o software esta sendo executado em uma máquina virtual.

Acesso ao estado privilegiado sem gerar falha

Proteção baseada em privilégios costuma prevenir programas, sem o privilegio adequado, de acessar certos componentes de estado privilegiado da CPU, resultando em falha para essas tentativas de acesso e permitindo que a VMM (Virtual Machine Monitor) emule a instrução desejada. No entanto, as arquiteturas IA-32 e Itanium possuem instruções que acessam estados privilegiados e não falham, mesmo em caso de privilégios insuficientes. Para o IA-32, por exemplo, um visitante pode executar as instruções LGDT, LIDT, LLDT e LTR com nível 0 de privilégio. Isso pode ser evitado se a VMM mantiver valores inesperados para os registradores mencionados.

Conclusão

voltar

Podemos dizer, sem dúvida alguma que a virtualização tem sido um dos assuntos mais comentados e estudados na área de TI nos últimos 7 anos. E assim como já aconteceu no passado com a multiprogramação, os projetos dos processadores vem vindo investindo cada vez mais em mecanismos para auxiliar na virtualização. Este seria o caso da Intel e de sua concorrente AMD, que vêm desde 2005 desenvolvendo soluções para que as arquiteturas passadas possam suportar a virtualização. No caso da Intel, como citado neste trabalho, a implementação do Intel Virtualization Technology para a família IA-32.

Além do uso típico da virtualização, na consolidação de servidores, permitindo que vários servidores sejam executados em um único hardware físico (cada um em uma máquina virtual), podemos encontrar outras situações para as quais a técnica foi empregada com sucesso. Entre elas, para ambientes de desenvolvimento e testes de produtos, laboratórios de cursos de redes e de sistemas operacionais, criação de cluster ou grades computacionais virtuais e servir de base para implantação de mecanismos de segurança. [5]

Devido ao fato da virtualização ser implementada basicamente com a introdução de uma camada de software a mais no sistema computacional, a primeira questão que pode vir em mente é quanto à queda da eficiência do sistema em si. Estudos realizados por desenvolvedores de softwares para VMM mostram que a queda é de 2% a 10% [5]. Mas sem sombra de dúvidas, não faltam investimentos nesta área para diminuir estes números. O que de fato, por outro lado, se deixarmos a visão empresarial, mesmo com uma queda do rendimento, ainda teremos um melhor aproveitamento do material investido no hardware. Uma vez que com a consolidação de servidores, reduzimos os custos na aquisição de equipamentos, e com infraestrutura física como espaço, energia, cabeamento, refrigeração e outros custos. Ou seja, pensando agora no desafio ecológico, podemos chamar esta queda de eco-eficiência.

Este trabalho foi totalmente produzido pelos autores que declaram não terem violado os direitos autorais de terceiros, sejam eles pessoas físicas ou jurídicas. Havendo textos, tabelas e figuras transcritos de obras de terceiros com direitos autorais protegidos ou de domínio público tal como idéias e conceitos de terceiros, mesmo que sejam encontrados na Internet, os mesmos estão com os devidos créditos aos autores originais e estão incluídas apenas com o intuito de deixar o trabalho autocontido. O(s) autor(es) tem(êm) ciência dos Artigos 297 a 299 do Código Penal Brasileiro e também que o uso do artifício de copiar/colar texto de outras fontes e outras formas de plágio é um ato ilícito, condenável e passível de punição severa. No contexto da Universidade a punição não precisa se restringir à reprovação na disciplina e pode gerar um processo disciplinar que pode levar o(s) aluno(s) à suspensão;