Virtualização – VMWare e Xen

A virtualização consiste na emulação de ambientes isolados, capazes de rodar diferentes sistemas operacionais dentro de uma mesma máquina, aproveitando ao máximo a capacidade do hardware, que muitas vezes fica ociosa em determinados períodos do dia, da semana ou do mês.  Esse aproveitamento é maior devido à possibilidade de fornecer ambientes de execução independentes a diferentes usuários em um mesmo equipamento físico, concomitantemente.

Além disso, esse procedimento diminui o poder dos sistemas operacionais, que, muitas vezes, restringem o uso do hardware, quanto à utilização de software. Isso acontece porque softwares normalmente só rodam sobre o sistema operacional para o qual foram projetados para rodar. Diferentes sistemas operando em uma mesma máquina aumentam a gama de softwares que podem ser utilizados sobre o mesmo hardware.

Essa técnica, muito empregada em servidores, ainda tem como vantagem oferecer uma camada de abstração dos verdadeiros recursos de uma máquina, provendo um hardware virtual para cada sistema, tornando-se também uma excelente alternativa para migração de sistemas.

Classificações da Virtualização

1. Quanto à Arquitetura

Nesse tipo de arquitetura, o Monitor de Máquina Virtual (MMV ou VMM) é implementado diretamente sobre o hardware hospedeiro, como indicado no esquema abaixo.

Tipo I

Dessa forma, o monitor controla todas as operações de acesso requisitadas pelos sistemas convidados, simulando máquinas físicas com propriedades distintas, trabalhando de forma isolada. Com isso, diferentes computadores virtuais operam sobre o mesmo hardware.

Exemplos de Monitores desse tipo: VMM’s XEN e VMWARE ESX SERVER

1.1 Tipo II

A arquitetura Tipo 2 se caracteriza pela implementação o Monitor de Máquina Virtual sobre o sistema operacional instalado no hardware anfitrião e opera como um processo desse sistema operacional. O esquema que ilustra essa arquitetura segue abaixo:

Tipo II

Vale observar que as operações que seriam controladas pelo sistema operacional do hospedeiro são simuladas pelo monitor para as máquinas virtuais.

Exemplos de Monitores desse tipo: VMWARE SERVER e VIRTUALBOX

1.2 Arquitetura Híbrida

Existe ainda a arquitetura híbrida, que reúne qualidades das duas arquiteturas anteriores. Nessa arquitetura, podem ser agregadas características da arquitetura tipo I à arquitetura tipo II ou o contrário. Tais mudanças são feitas habitualmente, pois a aplicação pura de apenas uma das arquiteturas citadas nos itens anteriores pode comprometer o desempenho da máquina virtual. Portanto, a hibridização tem por objetivo a otimização dos sistemas acima.

Tipo Híbrido

Exemplos de Monitores desse tipo: VIRTUAL PC e VIRTUAL SERVER

Otimização para MMV de Tipo I:

O sistema convidado acessa diretamente o hardware, através de modificações no sistema convidado e no monitor. Essa otimização é utilizada para algumas funcionalidades do Xen.

Otimização para MMV de Tipo II:

O sistema convidado acessa diretamente o SO real da máquina, sobre o qual funciona o monitor. Dessa forma, alguns sistemas virtuais não precisam ser inteiramente providos pelo monitor. No VMware, o sistema de arquivos do SO real é utilizado pelo sistema convidado, poupando o monitor de gerar um sistema similar na aplicação virtual.

2. Quanto à Técnica

2.1 Virtualização Completa

Como o nome sugere, o hardware hospedeiro é completamente abstraído e todas as características de um equipamento virtual são emulados, ou seja, todas as instruções solicitadas pelo sistema convidado são interpretados no Monitor de Máquina Virtual. O sistema hospedado ignora a existência da máquina virtual e opera como se funcionasse diretamente sobre o sistema operacional para o qual foi projetado para funcionar.

2.2 Paravirtualização

Nessa técnica, a máquina virtual não é idêntica ao equipamento físico original, para que o sistema hospedado possa enviar as instruções mais simples diretamente para o hardware, restando apenas as instruções de nível mais alto para serem interpretadas pelo MMV. Entretanto, esse procedimento requer que o sistema operacional convidado seja modificado para interagir com o MMV e selecionar quais instruções devem ser interpretadas nele ou diretamente no hardware hospedeiro.

2.3 Recompilação Dinâmica

Na recompilação dinâmica, as instruções são traduzidas durante a execução do programa da seguinte forma: as instruções do programa são identificadas em forma de sequência de bits. Em seguida, as sequências são agrupadas em instruções mais próximas do sistema operacional hospedeiro. Por último, essas instruções são reagrupadas em um código de mais alto nível, que, por sua vez, é compilado na linguagem nativa do sistema hospedeiro.

2.4 Vantagens e Desvantagens de cada técnica

A virtualização completa é mais flexível em termos de SO convidados, uma vez que este não precisa ser modificado para implementação dessa técnica. Todas as instruções são interpretadas pelo monitor de máquina virtual. Em compensação, essa interpretação de cada instrução provoca perda de desempenho de processamento, uma vez que o monitor de máquina virtual se utiliza de dispositivos de virtualização que atendem a uma gama de aplicativos e, por isso, possuem uma baixa especialização. Assim, não é possível ter o máximo desempenho desse aplicativo.

A paravirtualzação é menos flexível, pois carece de modificações no sistema operacional convidado, para que este possa trabalhar perfeitamente nas condições descritas em 3.2.2. Porém, o fato de o sistema operacional convidado saber que opera sobre uma máquina virtual e, com isso, mandar as instruções mais simples diretamente para o hardware diminui a sobrecarga no MMV e permite uma maior especialização dos dispositivos de virtualização. Dessa forma os aplicativos operam mais próximos de sua capacidade máxima, melhorando seu desempenho em comparação à virtualização completa. Além disso, na paravirtualização, a complexidade das máquinas virtuais a serem desenvolvidas diminui consideravelmente.

A recompilação dinâmica tem como principal vantagem a melhor adequação do código gerado ao ambiente de virtualização, que, com a compilação durante a execução, pode refletir melhor o ambiente original do aplicativo. Isso acontece porque durante a execução, há novas informações disponíveis, às quais um compilador estático não teria acesso. Dessa forma o código gerado se torna mais eficiente. Em contrapartida, essa técnica exige maior capacidade de processamento, visto que a recompilação acontece em tempo real de execução do programa.

3. Outras Classificações

Os tipos de virtualização podem ainda ser divididos segundo os seguintes critérios:

3.1 Abstração do ISA (Instruction Set Arquiteture)

Algumas máquinas virtuais utilizam-se dessa tecnologia, que consiste da total abstração do ISA, isto é, todas as instruções dos aplicativos que funcionam sobre a máquina virtual são traduzidas para instruções do sistema nativo. Essa técnica tem implementação simples e apresenta boa flexibilidade. Em contrapartida, há uma grande perda de desempenho. São exemplos dessa tecnologia Bochs e Crusoe.

3.2 Hardware Abstraction Layer

O monitor de máquina virtual simula todo o sistema de hardware para o aplicativo da máquina virtual. O aplicativo acredita estar funcionando diretamente sobre o hardware virtual. Tanto VMWare quanto Xen funcionam dessa maneira.

3.3 OS Level

Nessa tecnologia utiliza-se uma chamada de sistema específica para a virtualização. Dessa maneira é possível isolar processos. Cada máquina é virtualizada com IP e recursos de hardware próprios. A virtualização ocorre a partir de um diretório criado exclusivamente para isso. Jail e Ensim são exemplos dessa forma de virtualização.

Estágio Atual

1. Empregos da Virtualização

Softwares podem ser usados para gerar abstrações de recursos (reais ou virtuais) de forma que eles pareçam ser diferentes do que realmente são. Essa possibilidade é no que consiste a virtualização. Esse conceito é estendido para ser executado em três frentes: virtualização de hardware, virtualização de sistema operacional e virtualização de linguagem de programação.

Virtualização de hardware é a técnica que imita a máquina real. A máquina virtual executa em cima de um sistema operacional e outros sistemas operacionais podem ser executados em cima dela. O sistema abaixo da máquina pode ser um Monitor de Máquina Virtual ou um sistema operacional real. Exemplos de sua utilização são VMware e Xen na plataforma x86.

Virtualização de sistema operacional é a técnica que cria a simulação de um sistema operacional, mas é implementada em cima de outro sistema. Serve para resolver, sem muitos outros ganhos significativos, a necessidade de execução de aplicações em sistemas operacionais incompatíveis. O FreeBsd Jail e o User-mode Linux representam essa categoria.

Outra forma de virtualização é a de linguagens de programação. Com ela é possível fingir que o computador se comporte diferente, ou seja, com outras instruções. A máquina virtual é responsável por executar o programa de acordo com esse comportamento fictício, do jeito que o usuário definir. Fica encarregada, portanto, de traduzir essas ações em ações do sistema operacional abaixo. Java e Smalltalk atuam nesse sentido.

O esquema a seguir mostra um exemplo de cada forma de virtualização:

A virtualização, no entanto, não é implementada sempre. Algumas funções específicas levam à escolha desse artifício, a seguir algumas delas serão apresentadas.

Facilitar o desenvolvimento de softwares e sistemas operacionais

Como a máquina real é simulada, um sistema operacional em evolução pode realizar testes sem o risco de danificar o material. Isso implica em uma maior liberdade para a criação desses sistemas. Os softwares, da mesma forma, podem ser testados em sistemas virtuais.

Essa liberdade possibilita que as tecnologias possam ser muito testadas antes de serem comercializadas. A possibilidade de rodar mais de um sistema operacional na mesma máquina permite também que um processo possa comparar sua execução em diferentes sistemas operacionais.

Executar aplicações diversas na mesma máquina

Não é raro que alguém necessite rodar aplicações voltadas para sistemas operacionais diferentes. A virtualização faz vários sistemas diferentes usarem a mesma máquina, e assim várias tarefas projetadas para sistemas incompatíveis podem ser executadas.

Simular cenas fictícias

Como a máquina virtual pode criar a ilusão de recursos reais, algumas situações críticas cujos tratamentos precisam de estudo podem ser simuladas para teste. Uma máquina virtual é criada e nela acontecem situações diferentes do mundo real, que serão usadas com algum objetivo específico.

Suportar software legados

As máquinas virtuais permitem que programas muito antigos, com funções muito específicas e de difícil adaptação, sejam executados sobre elas.

Consolidar servidores

Recentemente, a rápida evolução do poder computacional não foi acompanhada pela demanda por capacidade. Isso deixou muitos recursos ociosos, como servidores utilizando uma parte muito pequena de todo o seu poder. A virtualização atua para usar o máximo da capacidade da máquina, o que significa, na prática, diminuir custos com hardware.

Prover serviços seguros e confiáveis

A utilização de máquina virtual permite o fornecimento de serviços dedicados a clientes específicos. A inviolabilidade das máquinas virtuais se traduz em processos mais seguros, enquanto a dedicação de um ambiente de trabalho garante confiabilidade e disponibilidade.

Atuar como honeypots contra hackers na Internet

Como o ataque a uma máquina virtual não compromete o sistema físico, é possível criar instâncias de máquinas virtuais para serem atacadas por hackers, de propósito. Essas máquinas são chamadas honeypots e servem para monitorar os possíveis ataques e criar meios de prevenção contra eles.

2. Ferramentas de Virtualização

A virtualização é empregada através de ferramentas, que apresentam diferenças entre si e possuem suas vantagens e desvantagens. Atualmente há uma gama enorme de softwares livres e empresas que fornecem soluções com esse conceito.

Abaixo, seguem duas tabelas, retiradas da monografia Virtualização de Sistemas Operacionais (ver fonte da imagem), mostrando as tecnologias de virtualização mais relevantes e suas principais características.

Neste trabalho, detalharemos apenas as ferramentas VMWare e o Xen, por serem as mais relevantes no contexto atual, bem como estabeleceremos uma comparação entre estas tecnologias.

2.1. VMWare

O VMWare consiste em toda uma infra-estrutura de virtualização, com diversos produtos que abrangem uma ampla área de setores do mercado. Desktops, por exemplo, têm funções diferentes de Data Centers, logo, mercados diferentes. O VMWare tem produtos que implementam a virtualização nesses e em outros ambientes. Os produtos são divididos em três categorias: virtualização de plataformas, infra-estrutura virtual e gestão e automação.

Virtualização de plataformas

Os produtos dessa categoria têm a função de criar e executar máquinas virtuais simultaneamente em uma única máquina física. O hardware a ser virtualizado indica a ferramenta necessária.

Para servidores: VMWare ESX Server e VMWare Server

O VMWare ESX Server é capaz de abstrair processador, memória, armazenamento e recursos de rede em várias máquinas virtuais. Usado para a consolidação de servidores, proporciona altos níveis de desempenho, escalabilidade e robustez.

Sua instalação é feita diretamente no hardware de servidor, provendo virtualização abaixo do sistema operacional. O servidor físico é particionado em várias máquinas virtuais, que são cópias do sistema completo. Nelas é possível executar sistemas operacionais e aplicações Windows, Linux, Solaris e NetWare sem qualquer modificação.

Já o VMWare Server é um software grátis que cria máquinas virtuais no nível de aplicação de um servidor Windows ou Linux (um sistema operacional host ou hospedeiro).

Com o VMWare Workstation, o usuário pode criar e executar várias máquinas virtuais em um único PC. A versão 6.0 suporta até 19 versões do Windows e 26 versões do Linux, o que torna a ferramenta alvo de desejo de todos os profissionais de TI. Nela também é possível configurar as máquinas virtuais através de uma ferramenta específica que compõe o produto.

O VMWare Player é a versão gratuita desse serviço, que não possui algumas possibilidades de configuração encontradas na versão paga. O VMWare Fusion é equivalente ao VMWare Workstation mas atua sobre o sistema operacional MacOs.

Infra-estrutura virtual

O VMWare Infrastructure é um pacote de software que aplica virtualizações em vários níveis para gerenciar e otimizar data centers. Incluem os seguintes pacotes: VMWare ESX Server, VMWare VMFS, VMWare Virtual SMP e VMWare Virtual Center.

O VMWare ESX Server virtualiza o hardware do servidor, como já citado. O VMWare VMFS é um sistema que permite que várias máquinas virtuais acessem o mesmo meio de compartilhamento de dados. Utiliza para isso o VMWare VirtualCenter e as tecnologias VMotion, HA e DRS da VMWare, que são da categoria Gestão e Automação.

O VMWare Virtual SMP (Virtual Symmetric Multi-Processing) aumenta o desempenho da máquina virtual ao permitir que a mesma acesse mais de um processador ao mesmo tempo. Atualmente é possível usar até quatro processadores físicos.

O VMWare VirtualCenter centraliza o gerenciamento das máquinas virtuais, provendo automação operacional, otimização de recursos e disponibilidade para cada ambiente.

VMWare Consolidated backup permite que sejam feitos backups das máquinas virtuais a partir de um servidor Proxy Windows 2003 centralizado, em vez de usar o ESX Server para isso.

Gestão e Automação

Os produtos dessa categoria servem para realizar tarefas úteis no sentido de gerenciar recursos da máquina ou tornar certos processos automáticos e com melhor desempenho. Como representantes dessa linhagem podem ser citados VMWare ACE, VMWare DRS, VMWare Motion, VMWare HA e VMWare Consolidated Backup, que são disponibilizados com licenças separadas.

O VMWare ACE dá aos administradores de segurança a opção de limitar o acesso de máquinas virtuais aos recursos reais. Isso permite proteger recursos físicos. O VMWare DRS aloca os recursos levando em consideração prioridades de negócios predefinidas. O VMWare VMotion é a tecnologia que permite migrar de uma máquina virtual para outra, sem interromper os outros ambientes virtuais. O VMWare HA disponibiliza aplicativos de forma econômica.

2.2. XEN

O Xen é um monitor de máquina virtual (VMM ou hypervisor), em software livre, para arquiteturas x86. Originário de um projeto de pesquisa da universidade de Cambridge, sua primeira versão foi criada em 2003, 4 anos antes de ser comprada pela Citrix System, em 2007.

O Xen apresenta uma solução para virtualização um pouco diferente das apresentadas até agora. Ele consiste em criar um hypervisor, responsável por controlar os recursos das máquinas virtuais, mas que não possui drivers de dispositivos. Por isso, não é possível rodar um sistema operacional diretamente no hypervisor.

Por isso, é necessário que um sistema seja invocado para fazer a comunicação entre o hypervisor e os sistemas hóspedes. Esse sistema inicial chama-se domínio 0. Ele consiste em uma máquina virtual que executa um núcleo Linux modificado e possui privilégios para acessar dispositivos de entrada e saída e as outras máquinas virtuais.

As outras máquinas virtuais, onde podem rodar outros sistemas operacionais, são chamadas domínio U. Elas são criadas, inicializadas e desligadas através do domínio 0. Possuem um driver virtual para acesso aos recursos de hardware.

O domínio 0 possui os drivers dos dipositivos da máquina física além de dois drivers especiais que tratam as requisições de acesso à rede e ao disco enviadas pelas máquinas virtuais. Assim, toda requisição de uso da máquina real feita por uma máquina do domínio U deve ser tratada pelo domínio 0 antes de ser enviada ao hypervisor.

Originalmente o Xen foi desenvolvido com o objetivo de implementar a técnica de para-virtualização, e, para isso, era necessário modificar os sistemas hóspedes para dar-lhes a consciência de rodarem sobre um hypervisor. Essa estratégia foi tomada visando ganhos em desempenho, mas limitou a difusão do Xen aos sistemas Unix, de código aberto.

A partir da versão 3, o Xen passou a implementar virtualização completa, podendo assim executar sistemas operacionais não modificados como Windows e Linux. Isso só foi possível após a Intel e a AMD lançarem suas arquiteturas com suporte para virtualização (Intel VT e AMD-V, respectivamente).

A fim de continuar servindo suporte a para-virtualização mas agora oferecer também virtualização completa, o Xen dividiu os domínios U entre para-virtualizados (domínios U-PV) e virtualizados (domínios U-HVM). Os domínios U-PV sabem que não tem acesso direto ao hardware e por isso precisam de drivers específicos para acesso à rede e ao disco.

Os domínios U-HVM, por não serem modificados, iniciam tentando executar a BIOS. O Xen virtual firmware é um componente que simula uma BIOS com todos os procedimentos normais de um boot. Depois, um daemon Qemu associado a uma U-HVM emula o hardware para que a máquina virtual possa usar o disco e a rede.

2.3. Comparação entre XEN e VMware

Em um momento em que não existiam arquiteturas com o hardware suportando a virtualização, a para-virtualização era uma solução que apresentava melhor desempenho. Surgiram então as arquiteturas Pacifica e Vanderpool, com suporte para virtualização total. A partir daí, a introdução de um monitor de máquina virtual passou a representar um custo significativo de desempenho e a virtualização total alcançou melhores resultados.

As empresas VMWare e XenSource realizaram estudos que compararam os desempenhos das duas ferramentas. Dado que não existem hoje testes de desempenho para máquinas virtuais, foram feitos testes comuns que medem simplesmente a capacidade computacional de um sistema.

O SPECcou2000 Integer estuda computação a nível de usuário, com foco em aplicações com cálculos intensivos; o Passmark testa os principais subsistemas de um sistema operacional através da criação de cargas de trabalho; NetPerf mensura o desempenho na rede; SPECjbb2005 simula um servidor em trabalho; o SPECcpu2000 INT analisa a capacidade de compilação de um determinado pacote.

1 – Qual a diferença entre máquina virtual e emulador?
Emuladores implementam todas as instruções realizadas pela máquina real em uma camada de software, localizada sobre um hardware, que pode ser completamente diferente do que está sendo emulado. Em outras palavras, um emulador simula uma máquina de características distintas do computador sobre qual o emulador opera, através de software, traduzindo todas as instruções para instruções do sistema hospedeiro.

Máquinas virtuais também se baseiam em software que implementam instruções, porém, ao contrário do emulador, não são abstraídas todas as propriedades do hardwares hospedeiro. O MMV, camada que cria o ambiente de máquina virtual, gerencia as instruções provenientes dos sistemas convidados e passa algumas para o processador real. Não ocorre a abstração de todo o hardware, como no emulador. Pois máquinas virtuais ainda usufruem de dispositivos de hardware do computador real.

2 – Por que se pode dizer que na paravirtualização, se prioriza o desempenho em detrimento da flexibilidade?
Na paravirtualização, o sistema convidado se comporta de maneira inteligente com relação ao monitor de máquina virtual. Apenas as instruções mais complexas são enviadas para o MMV, enquanto as de nível mais baixo são enviadas diretamente para o processador da máquina real. Esse procedimento alivia o trabalho do MMV, que passa a operar com menos instruções e de formas semelhantes. Isso permite uma maior especialização dos procedimentos do MMV e conseqüente melhor no desempenho. Em contrapartida, a máquina virtual não pode operar com qualquer sistema operacional, pois este carece de modificações especiais para operar da forma inteligente descrita acima.

3 – Quais as possíveis aplicações da prática da virtualização?
Através da virtualização, é possível conciliar em uma mesma máquina aplicativos que funcionam sobre sistemas operacionais diferentes, o que proporciona economia com relação a máquinas. Além disso, também é possível dividir os recursos de uma mesma máquina entre diferentes usuários, que podem possuir características totalmente distintas.

Máquinas virtuais podem ainda servir como ambientes de testes para novos softwares, oferecendo maior segurança ao sistema que estará protegido contra erros que podem danificá-lo. Além disso, ainda é possível criar máquinas virtuais que suportem softwares já ultrapassados, evitando problemas de compatibilidade.

4 – O que é computação em nuvem?
Trata-se de uma aplicação da virtualização ao contexto de redes, na qual dados, mídia e aplicativos são armazenados em servidores remotos e programas rodam usando essas informações. O nome nuvem remete à fácil difusão na rede proporcionada por esse procedimento, uma vez que esses dados estão sempre disponíveis nesses servidores. Com isso, economizam-se recursos de hardware, que precisam apenas acessar as informações armazenadas na rede. Além disso, como servidores são mais confiáveis, diminui-se o risco de perda de dados.

5 – Cite o grande problema de virtualização da arquitetura x86 e quais tecnologias estão sendo desenvolvidas para contorná-lo.
A grande questão com os processadores de arquitetura x86 é que neles não foi implantado o modo hipervisor, logo o Monitor de Máquina Virtual é obrigado a executar em modo supervisor, forçando o Sistema Operacional convidado, na maioria das vezes, a executar no modo usuário.

A principal tecnologia que está sendo desenvolvida é o uso de um assistente de hardware. As tecnologias mais relevantes nessa área são o Intel VT e o AMD-V.

Fonte: http://www.gta.ufrj.br/grad/09_1/versao-final/virtualizacao/index.html

Sou bacharel em Sistemas de Informação pela Estácio de Sá (Alagoas), especialista em Gestão Estratégica da Tecnologia da Informação pela Univ. Gama Filho (UGF) e pós-graduando em Gestão da Segurança da Informação pela Univ. do Sul de Santa Catarina (UNISUL). Certificações que possuo: EC-Council CEH, CompTIA (Security+, CySA+ e Pentest+), EXIN (EHF e ISO 27001), MCSO, MCRM, ITIL v3. Tenho interesse por todas as áreas da informática, mas em especial em Gestão e Governança de TI, Segurança da Informação e Ethical Hacking.

2 Responses to “Virtualização – VMWare e Xen”

  1. Gustavo disse:

    Diego, primeiramente parabéns pela sua pagina, agora fiquei confuso em relação ao conceito informado nessa linha:

    2 – Por que se pode dizer que na paravirtualização, se prioriza o desempenho em detrimento da flexibilidade?
    Na paravirtualização, o sistema convidado se comporta de maneira inteligente com relação ao monitor de máquina virtual. Apenas as instruções mais complexas são enviadas para o MMV, enquanto as de nível mais baixo são enviadas diretamente para o processador da máquina real. Esse procedimento alivia o trabalho do MMV, que passa a operar com menos instruções e de formas semelhantes. Isso permite uma maior especialização dos procedimentos do MMV e conseqüente melhor no desempenho. Em contrapartida, a máquina virtual não pode operar com qualquer sistema operacional, pois este carece de modificações especiais para operar da forma inteligente descrita acima.

    Esse mesmo conceito é usado no site:
    https://technet.microsoft.com/pt-br/library/hh802393.aspx
    mas para a virtualização total e não para a paravirtualização , veja :

    Virtualização total
    Com a virtualização total, as instruções não críticas são executadas diretamente no hardware, enquanto as instruções críticas são descobertas e substituídas por interceptações no VMM para emulação pelo software. Ambas as abordagens, de hipervisor e VMM, são consideradas virtualização total.

    Abraços

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *