CENTRO UNIVERSITÁRIO DE VOLTA REDONDA – UniFOA
Curso Tecnológico de Redes de Computadores – 5º período
Disciplina: Tecnologia WEB
Professor: José Maurício S. Pinheiro
V. 2009-2
Aula 3 – Virtualização de Sistemas
1. Conceito
Virtualização pode ser definida como uma “técnica que combina ou
divide recursos computacionais para prover um ou mais ambientes
operacionais de execução”. Os ambientes criados através dessa técnica são
chamados máquinas virtuais.
Virtualização é um recurso de software que permite a execução de forma
virtual de um ou mais sistemas operacionais em apenas uma máquina física,
que por sua vez já possui um sistema operacional nativo instalado. Ou seja, é
instalado um software no sistema operacional e a partir desse software, outros
sistemas operacionais podem ser instalados de forma virtual. O software de
virtualização de sistemas operacionais também funciona de forma nativa, ou
seja, o próprio software é o sistema operacional e com este em execução, os
demais sistemas operacionais são instalados de forma virtual.
2. Máquina Real, Emuladores e Máquinas Virtuais
Uma máquina real é um conjunto de componentes físicos que fornecem
operações para os níveis de abstração acima. Seu núcleo é o processador e o
chip-set da placa-mãe, e inclui todos os recursos como o áudio, o vídeo, a
memória, as portas, etc.
Um emulador é um programa que funciona para enganar uma aplicação.
Seja uma aplicação que funciona em certa máquina real. Caso ela tenha que
funcionar em outra máquina que não oferece os mesmos recursos, um
emulador pode ser usado. Ele será capaz de traduzir instruções definidas para
a máquina de origem em instruções para a máquina emulada, de forma a obter
os mesmos resultados que obteria se executasse na original.
Uma máquina virtual é a imitação, por software, de uma máquina real. O
software de virtualização define quais recursos de hardware serão utilizados e
como serão utilizados. O software é gerenciável e pode realocar os recursos de
memória, processamento, espaço em disco e outros recursos de acordo com a
demanda do sistema operacional virtual. Sendo assim, sistemas operacionais
podem rodar em máquinas virtuais, e terão a ilusão de rodarem em uma
máquina real. Essas imitações podem ser criadas no nível de aplicação ou no
nível de sistema operacional.
Uma das vantagens da aplicação desse recurso é que os recursos dos
microcomputadores ou servidores podem ser aproveitados ao máximo, uma
vez que quando softwares e sistemas operacionais são utilizados de forma
nativa, ou seja, sem virtualização, diversos recursos do equipamento ficam
ociosos, como memória, espaço em disco e processamento.
CENTRO UNIVERSITÁRIO DE VOLTA REDONDA – UniFOA
O esquema da Figura 1 ilustra a emulação de um sistema operacional,
técnica que permite rodar uma aplicação projetada para um sistema
operacional em outro incompatível.
Figura 1 - Emulação de Sistema Operacional virtualizado
Quando criadas no nível de aplicação, uma máquina virtual é executada
em cima de um sistema operacional, chamado anfitrião. Como o nível acima
vai acreditar que abaixo dele há uma máquina real, pode-se executar outro
sistema operacional possivelmente diferente do que está abaixo da imitação.
Isso é extremamente útil quando se deseja rodar uma aplicação projetada para
um sistema operacional em outro incompatível.
Quando criadas no nível de sistema operacional, um Monitor de Máquina
Virtual ou “Virtual Machine Monitor” – VMM é implementado. Ele controla o
hardware e cria várias máquinas virtuais, ou seja, várias imitações do mesmo.
Em cada “imitação” pode-se rodar um sistema operacional, que acreditará estar
usando uma máquina real e não uma imitação. O resultado vantajoso é poder
rodar diversos sistemas operacionais, cada um com suas aplicações
específicas, em uma mesma máquina.
Todos os componentes físicos são emulados na maquina virtual. Mas
para o sistema operacional, seja ele hospedeiro ou convidado, interpreta como
hardware físico. É função do monitor de máquinas virtuais o gerenciamento do
uso dos dispositivos, multiplexando no tempo as tentativas dos diversos
programas em usar a máquina real. Outros recursos tais como uso de memória
e de dispositivos de entrada e saída também devem ser administrados uma vez
que a virtualização não resolve o problema de um hardware não poder ser
duplicado fisicamente. Dessa forma, a virtualização faz com que todos os
recursos da máquina sejam compartilhados entre os usuários sem que eles
saibam disso. Continuarão acreditando estar rodando direto em uma máquina
real.
A Figura 2 ilustra os dois tipos de máquina virtual e a comparação com
um sistema não virtualizado.
CENTRO UNIVERSITÁRIO DE VOLTA REDONDA – UniFOA
Figura 2 - Máquina Virtual e Sistema não virtualizado
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, largamente 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.
3. Classificações da Virtualização
3.1. Quanto à Arquitetura
3.1.1. Arquitetura Tipo I
Nesta arquitetura, o Monitor de Máquina Virtual é implementado
diretamente sobre o hardware hospedeiro, como indicado no esquema da
Figura 3.
CENTRO UNIVERSITÁRIO DE VOLTA REDONDA – UniFOA
Figura 3 - Arquitetura 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
3.1.2. Arquitetura Tipo II
Esta arquitetura se caracteriza pela implementação do Monitor de
Máquina Virtual sobre o sistema operacional instalado no hardware anfitrião e
opera como um processo desse sistema operacional. O esquema da Figura 4
ilustra essa arquitetura:
Figura 4 - Arquitetura 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: VMWARE SERVER e VIRTUALBOX
3.1.3. Arquitetura Híbrida
Esta arquitetura 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. São exemplos de Monitores desse tipo: VIRTUAL PC e VIRTUAL
SERVER
CENTRO UNIVERSITÁRIO DE VOLTA REDONDA – UniFOA
3.2. Quanto à Técnica
3.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.
3.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.
3.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.
3.3. 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 paravirtualização é menos flexível, pois carece de modificações no
sistema operacional convidado, para que este possa trabalhar perfeitamente
nas condições descritas anteriormente. Porém, o fato de o sistema operacional
convidado saber que opera sobre uma máquina virtual e transmitir instruções
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
CENTRO UNIVERSITÁRIO DE VOLTA REDONDA – UniFOA
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.4. Outras Classificações
Os tipos de virtualização podem ainda ser divididos segundo os
seguintes critérios:
3.4.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.4.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.4.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.
4. 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
CENTRO UNIVERSITÁRIO DE VOLTA REDONDA – UniFOA
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.
A Figura 5 mostra um exemplo de cada forma de virtualização:
Figura 5 - Exemplos de formas de virtualização
A virtualização de sistemas operacionais abrange uma série de
vantagens no que diz respeito à segurança e custo. Ela permite o teste de
sistemas operacionais sem risco de danificar o sistema nativo instalado no
computador e também executar programas que necessitam de uma versão de
Sistema Operacional anterior ou superior para o seu funcionamento. A
virtualização, no entanto, não é implementada sempre. Algumas funções
específicas levam à escolha dessa solução:
1. 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. Os softwares, da
mesma forma, podem ser testados em sistemas virtuais. A possibilidade de
rodar mais de um sistema operacional na mesma máquina permite também
CENTRO UNIVERSITÁRIO DE VOLTA REDONDA – UniFOA
que um processo possa comparar sua execução em diferentes sistemas
operacionais.
2. Executar aplicações diversas na mesma máquina - A virtualização faz
vários sistemas diferentes usarem a mesma máquina (Figura 6), e assim
várias tarefas projetadas para sistemas incompatíveis podem ser
executadas.
3. 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.
4. Suportar software legados - As máquinas virtuais permitem que
programas antigos, com funções muito específicas e de difícil adaptação,
sejam executados sobre elas.
5. Consolidar servidores - A virtualização atua para usar o máximo da
capacidade da máquina, o que significa, na prática, diminuir custos com
hardware.
6. 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.
7. 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
propositalmente. Essas máquinas são chamadas honeypots e servem para
monitorar os possíveis ataques e criar meios de prevenção contra eles.
5. 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.
A tabela 1 apresenta as tecnologias de virtualização mais atuais, suas
características mais relevantes, bem como estabelecem comparações entre
estas tecnologias.
Tabela 1 – Tipos de ferramentas de virtualização
Tabela 1 – Tipos de ferramentas de virtualização
Download

Tecnologia WEB - Aula 3