Você está na página 1de 14

MINISTÉRIO DA EDUCAÇÃO

SECRETARIA DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA


CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DO ESPÍRITO SANTO

VIRTUALIZAÇÃO

SERRA
2008
WANCLEBER VIANA VIEIRA

VIRTUALIZAÇÃO

Trabalho apresentado durante a Mostra


Tecnológica no CEFET-ES, unidade Serra, no ano
de 2008.
Orientador: Prof. Gilberto Sudré

SERRA
2008

2
Sumário

Resumo ......................................................................................... pag. 4

1. Introdução ................................................................................. pag. 5

2. Virtualização ............................................................................. pag. 5

2.1. Conceitos Básicos .......................................................... pag. 6

2.2. Tipos de Virtualização .............................................................. pag. 7

2.2.1. Máquina Virtual de Processos ..................................... pag. 8

2.2.2. Monitor de Máquinas Virtuais .................................... pag. 8

2.2.2.1. Virtualização Total ......................................... pag. 8

2.2.2.2. Para-virtualização .......................................... pag. 9

2.3. Suporte de Hardware para Virtualização ................................. pag. 9

2.4. Tabela Demonstrativa de Softwares para Virtualização ........... pag. 10

3. Exemplos de Utilização .............................................................. pag. 10

4. Conclusão .................................................................................. pag. 11

5. Referências Bibliográficas .......................................................... pag. 13

3
Resumo

Virtualização é uma técnica que permite compartilhar e utilizar recursos de um único


sistema computacional em vários outros denominados de máquinas virtuais. Cada máquina
virtual oferece um sistema computacional completo muito similar a uma máquina física.
Com isso, cada máquina virtual pode ter seu próprio sistema operacional, aplicativos e
oferecer serviços de rede. É possível ainda interconectar (virtualmente) cada uma dessas
máquinas através de interfaces de rede, switches, roteadores e firewalls virtuais.

4
1. Introdução

Ao contrário de que muitos pensam, virtualização não é um tema novo. Os primeiros casos
de sua utilização datam de aproximadamente 4 décadas. As primeiras utilizações incluem o
IBM 7044 com o Sistema de Tempo Compartilhado desenvolvido pelo MIT (Massachusetts
Institute of Technology) no IBM 704, utilizando um Monitor de Máquinas Virtuais (Virtual
Machine Monitor - VMM), também conhecido como hypervisor, termo criado na década de
70.

O Monitor de Máquinas Virtuais (VMM) roda diretamente sobre o hardware, permitindo a


execução de múltiplas maquinas virtuais. Cada máquina virtual poderia rodar uma instância
de seu próprio sistema operacional.

Um dos grandes responsáveis pelo ressurgimento da virtualização, sem dúvida, foram o


aumento do poder computacional e uma maior disseminação dos sistemas distribuídos.

A virtualização pode ajudar em ambientes com necessidade de uma enorme diversidade de


plataformas de software, sem a necessidade de se aumentar a plataforma de hardware.
Desta forma, as aplicações podem ser utilizadas em máquinas virtuais próprias, otimizando-
se o uso e aproveitando-se dos recursos computacionais disponíveis. Ainda, nesse sentido é
possível manter sistemas legados, sistemas desenvolvidos para uma plataforma de hardware
específica e que não houve evolução no desenvolvimento do software, sendo necessário
manter o hardware antigo para que a aplicação continue funcionando, em que o hardware
possa ser simulado sem a necessidade de se manter o hardware antigo.

Devido à importância deste assunto, nos últimos anos houve investimentos maciços por
parte de fabricantes de software e processadores, recursos foram implantados diretamente
nos processadores para proverem mecanismos e soluções de melhora de desempenho e
suporte a virtualização.

É objetivo deste workshop fornecer os conceitos necessários para compreender o que é


virtualização, suas formas de implementação, compromissos e vantagens para uma infra-
estrutura de TI, apresentando conceitos e aspectos de sua utilização e suas implementações.

2. Virtualização

De acordo Amith Singh, autor do site Kernelthread.com, em uma livre tradução, define
virtualização como uma biblioteca ou metodologia de dividir os recursos de um computador
através de múltiplos ambientes de execuções, por aplicação de um ou mais conceitos ou
tecnologias como particionamento de hardware e software, compartilhamento de tempo,
simulação parcial ou completa da máquina, emulação, qualidade de serviço e muitas outras
coisas.

Este termo pode significar muitas coisas para muitas pessoas, mas atualmente seu grande
foco é a virtualização de servidores visando uma utilização mais eficiente em busca de um
maior retorno no investimento feito no hardware, cujo termo referido a essas ações é:

5
Consolidação de Servidores. Através de uma melhor distribuição dos recursos
computacionais é possível atingir um nível maior de trabalho efetuado pelo mesmo
hardware.

Figura 1: Exemplo de Consolidação de Servidores


Fonte: Sun Microsystems

2.1. Conceitos básicos

O elemento principal para a virtualização é o sistema operacional, que basicamente pode ser
definido como uma camada de software entre o hardware e as aplicações de usuários, que
tem como objetivo funcionar como interface entre usuário e computador, tornando sua
utilização mais simples, rápida e segura.

Para garantir e controlar a execução dos programas, o sistema operacional associa o


programa a um processo que fará uso dos recursos computacionais disponíveis, que em
resumo, poderíamos dizer que processo é um programa em execução.

Os processos disputam o tempo do processador e essa alternância de processos dentro do


processador é chamada de chaveamento de contexto ou mudança de contexto. A execução
dos processos é acompanhada por dois registradores lógicos (virtuais): PC (Program Counter)
e SP (Stack Pointer) indicam a próxima instrução a ser executada e onde devem ser
armazenados os endereços de retornos de chamada de função, parâmetros e variáveis
locais, respectivamente. Através do escalonador e do dispatcher o sistema operacional
mapeia os registradores virtuais com os registradores físicos do processador. A alternância
entre registradores lógicos e físicos fornece a impressão de que todos os processos estão
sendo executados simultaneamente. Portanto, um processo nada mais é que um tipo de
máquina virtual que executa um único programa [Carissimi, 2008].

6
Figura 2: Troca de Contexto
Fonte: Livro Arquitetura de Sistemas Operacionais

2.2. Tipos de Virtualização

Existem várias formas de implementar uma solução de virtualização. Na verdade, existem


várias maneiras que permitem atingir o mesmo resultado através de diferentes níveis de
abstração.

A implementação de máquinas virtuais podem ser feitas de dois modos: Máquina Virtual de
Processo ou Monitor de Máquina Virtual, também conhecido como hypervisor.

Máquina Virtual de Processo cria um ambiente de execução para outras aplicações, e pode
gerar um conjunto de instruções que são interpretadas para criação de instruções não-
privilegiadas, chamadas de sistemas e APIs de bibliotecas que correspondem à ação abstrata
desejada.

Monitor de Máquinas Virtuais, ou hypervisor, é uma camada de software entre o hardware e


o sistema operacional, que oferece uma cópia virtual do hardware, incluindo modos de
acesso, interrupções, dispositivos de E/S, entre outros.

Uma das diferenças entre os modos de implementação está na forma em que são
executados. O hypervisor estará sempre presente enquanto o computador estiver ligado,
enquanto, a Máquina Virtual de Processo só existirá enquanto o processo correspondente a
ela estiver em execução.

7
2.2.1. Máquina Virtual de Processo

Podemos defini-la como uma aplicação de um Sistema Operacional executando em modo


usuário, ou seja, as instruções são executadas no modo não-privilegiado a partir de
instruções abstratas que representam a ação desejada. É o caso da ferramenta VMware
Player, que é denominada máquina virtual de processo.

Figura 3: Máquina virtual de processo


Fonte: IBM

2.2.2. Monitor de Máquinas Virtuais

O Hypervisor, como também é chamado o Monitor de Máquinas Virtuais, pode ser


implementado através de dois métodos: Virtualização Total e Para-virtualização.
1

n
VM

VM

VM

Ap1 Ap2 Apn

SO1 SO2 SOn

HV1 HV2 HVn

Gerência de Máquinas Virtuais

Hardware

Figura 4: Monitor de Máquinas Virtuais


Fonte: Livro Arquitetura de Sistemas Operacionais

2.2.2.1. Virtualização Total

Este modelo provê uma cópia (virtual) do hardware do host, de forma que o sistema
operacional convidado trabalhe como se estivesse executando diretamente sobre o
hardware do host, e utiliza o VMM como mediador entre o sistema operacional convidado e

8
o hardware do host, porque determinadas instruções devem ser tratadas e protegidas, pois
o hardware do host não é de propriedade do sistema operacional da máquina virtual. Uma
característica que também é uma vantagem é de que o sistema operacional hóspede não
precisa ser modificado.

Uma das desvantagens dessa solução é que ela provê suporte a um conjunto de dispositivos
genéricos, o que pode causar subutilização dos recursos disponíveis. Outro problema é que
como o sistema operacional hóspede não necessita ser modificado, logo cada instrução
gerada por ele deve ser testado pelo VMM, o que gera overhead.

Figura 5: Virtualização Total


Fonte: IBM

2.2.2.2. Para-virtualização

Este método propõe que o sistema operacional hóspede saiba que ele está sendo executado
sobre um VMM e que possa interagir com ele. Dessa forma, são necessárias mudanças no
sistema operacional hóspede para que ele possa chamar o VMM sempre que executar uma
instrução considerada sensível, o que garante uma cooperação entre eles levando ao
aumento do desempenho do método, visto que os recursos disponíveis são utilizados de
maneira mais apropriada.

Figura 6: Para-Virtualização
Fonte: IBM

2.3. Suporte de Hardware para Virtualização

Devido a proteções existentes nos modos de operação dos processadores da arquitetura


x86, fabricantes, AMD e Intel, começaram a desenvolver chips com extensões que dão
suporte a virtualização e trata instruções consideradas como sensíveis de forma apropriada.
9
As soluções criadas por esses fabricantes são incompatíveis, porém servem ao mesmo
propósito. Pacifica é o codinome para as extensões dos processadores AMD, sua tecnologia
é denominada de AMD-V, aplica-se às arquiteturas x86 e de 64 bits presentes nos
processadores mais recentes de sua linha. A Intel por sua vez apresenta suas extensões para
processadores das arquiteturas x86 e 64 bits, sobre o codinome Vanderpool, e tecnologia
conhecida como IVT (Intel Virtualization Technology).

É importante atentar para a ocasião de se utilizar uma ferramenta de virtualização


desenvolvido para uma dessas tecnologias, pois AMD-V e IVT não são compatíveis, podendo
gerar problemas de compatibilidade ou instabilidade, quando executados em processadores
para o qual o software não foi escrito.

2.4. Tabela demonstrativa de softwares para virtualização

Comparação entre ferramentas e a forma de suas implementações.


Projeto Tipo Licença
Bochs Emulação LGPL
QUEMU Emulação LCPL/GPL
VMware Virtualização total Proprietária
z/VM Virtualização total Proprietária
Xen Para-virtualização GPL
UML Para-virtualização GPL
Linux- Virtualização no nível de sistema
GPL
VServer operacional
Virtualização no nível de sistema
OpenVZ GPL
operacional
Módulos do kernel GPL. RDP
VirtualBox Virtualização total e suporte a USB são
proprietário

3. Exemplos de Utilização

Fica evidente que o objetivo principal da virtualização é a consolidação de servidores, mas é


possível aplicar seu uso de várias formas e em diversas áreas, principalmente em alguns
cenários práticos, alguns deles são:

Ensino – ambientes virtuais podem ser criados e testados sem comprometer a estrutura
computacional existente.

Honeypots – são máquinas colocadas intencionalmente na internet sem nenhum tipo de


proteção, como antivírus e firewall, para que elas possam ser atacadas por crackers. Com o
objetivo de monitorar o ataque e suas formas. Quando um honeypot é comprometido, pode
ser substituído facilmente por outro, em alguns casos apenas restaurando a VM a um

10
momento anterior. A grande vantagem de sua utilização é a de não comprometer a rede
real.

Consolidação de servidores – consiste em centralizar e/ou diminuir o número de


equipamentos e de aplicações instaladas em cada um dos servidores da organização, com o
objetivo de aumentar a produtividade da infra-estrutura, melhorar o gerenciamento do
ambiente, aumentar a segurança, diminuir a manutenção e economizar em recursos
humanos, físicos e financeiros [Oliveira, Gisele 2004].

Consolidação de aplicações – possibilidade de virtualizar o hardware para o qual essas


aplicações foram projetadas, podendo reunir em um único computador todas as aplicações
legadas.

Sandboxing – provimento de ambiente seguro e isolado para execução de aplicações não


confiáveis.

Disponibilidade – é possível ter ambientes com múltiplas execuções simultâneas


aumentando a disponibilidade dos recursos oferecidos pela rede, como sistemas
operacionais e outros serviços.

Migração de software – facilita o processo de testes antes de colocar o software em


produção, dessa forma, reduz-se o impacto sobre as migrações de software.

Testes e medições – é possível criar cenários virtuais que, são difíceis de reproduzir em
maquinas reais, facilitam testes sobre determinadas soluções.

Conclusão

Neste trabalho, foi apresentado os principais conceitos sobre virtualização, seus modos de
operação e formas de implementação. Foi mostrado que virtualização é uma técnica que
permite que um sistema computacional seja compartilhado e que execute vários outros que
são denominados de máquinas virtuais. Cada máquina virtual trabalha isoladamente e com
características próprias, incluindo sistema operacional e periféricos, que podem ser
diferentes do sistema hospedeiro.

Virtualização não é um conceito novo, mas é um tema atual. Várias técnicas estão
disponíveis para sua implementação, em que se destacam as máquinas virtuais de processo
e o monitor de máquinas virtuais.

A máquina virtual de processo é caracterizada por ser uma aplicação que é executada sobre
um sistema operacional. Este método é possui duas desvantagens relacionadas ao
desempenho, como por exemplo: Custo com a tradução de instruções de um sistema para
outro, além de todas as instruções serem executadas em modo usuário. Outro fator
limitador de desempenho é que há desperdício de capacidades físicas do hardware, pois as
máquinas virtuais de processo oferecem as suas VMs dispositivos de E/S genéricos.

11
O monitor de máquinas virtuais, conhecido como hypervisor, é uma implementação de
software que fica entre o hardware e o sistema operacional. Dessa forma o sistema
operacional consegue explorar de forma eficiente todos os recursos disponíveis. Detêm
algumas vantagens sobre as máquinas virtuais de processo, como por exemplo: não opera
em modo usuário, o que evita mudança de contexto. O monitor de máquinas virtuais pode
ser implementado de duas maneiras: a primeira, o sistema operacional hóspede não precisa
ser modificado (virtualização total), já na segunda o sistema operacional precisa ser
modificado (para-virtualização) para trabalhar sobre o hypervisor.

Vimos neste trabalho que a virtualização possibilita extrair e aproveitar o máximo dos
recursos computacionais disponíveis em uma máquina. Dessa forma é possível reduzir
custos com pessoal, menor complexidade no gerenciamento e custos operacionais.

Enfim, a virtualização possibilitará o desenvolvimento de novas tecnologias e a forma como


os processos de TI serão concebidos e levados a diante.

12
Referências Bibliográficas

Andrade, M. Tadeu, Um estudo comparativo sobre as principais ferramentas de


virtualização, In: Universidade Federal de Pernambuco. p. 9-21.

Carissimi, A. Virtualização: da teoria a soluções. In: SIMPÓSIO BRASILEIRO DE


REDES DE COMPUTADORES E SISTEMAS DISTRIBUÍDOS, 2008, Rio de
Janeiro. Livro texto dos minicursos. Rio de Janeiro: SBC, 2008. p. 174-199.

Gartner, Topics about virtualization em


http://www.gartner.com/it/products/research/virtualization/virtualization.j
sp?prm=4_28_08LR . Acesso outubro 2008.

Hypervisor em http://www.virtualizacion.com/?page_id=8 . Acesso outubro


2008.

InfoWorld, Virtualization em http://www.infoworld.com/topic-


center/virtualization/ . Acesso outubro 2008.

Jones, M. Tim. Virtual Linux: An overview of virtualization methods,


architectures, and implementations disponível em http://www-
128.ibm.com/developerworks/library/l-linuxvirt/index.html#N1006A.
Acesso outubro 2008.

Kernelnewbies, Tech Comparison em


http://virt.kernelnewbies.org/TechComparison . Acesso outubro 2008.

Kernelthread, em http://kernelthread.com/ . Acesso outubro 2008.

Machado, Francis B.; Maia, Luiz P. Arquitetura de sistemas operacionais. 4.ed.


Rio de Janeiro: LTC, 2007

Oliveira, G., Estudo comparativo de metodologias de consolidação de


servidores para elaboração de uma proposta de implementação, In:
Sociedade Educacional de Santa Catarina. p. 22-34.

Rudolph, B. Viva virtualization: Redefining the desktop disponível em


http://www.linux-mag.com/id/5813 . Acesso outubro 2008.

13
Vilela, P. Virtualização de aplicações disponível em
http://pt.sun.com/sunnews/events/2006/javapt/pdf/Virtualizacao.pdf .
Acesso outubro de 2008.

Wikipedia, Hypervisor em http://en.wikipedia.org/wiki/Hypervisor . Acesso


outubro 2008.

______, Virtualization em http://en.wikipedia.org/wiki/Virtualization . Acesso


outubro 2008.

______, Comparison of virtual machines em


http://en.wikipedia.org/wiki/Comparison_of_virtual_machines . Acesso
outubro 2008.

14