Académique Documents
Professionnel Documents
Culture Documents
! # ! % &
&
%
%'
( # )# *%
) +
*%
)
&
'
*%
,
'
&.& &
' &
) )
/
&
0)
,' )
!
! &
1
2/ &
! )'
'&)
3
(
(
5
6)
(#
*&&
%7
)
!'&
!'&)
&
8 ,&
1 2/ &
&
!
"#"
%'
)*
+,)-./ 0 1 23
* 4567
!7
)*
+
323
8
!
!
19!
1
%'
1
%'2
40
4.1. Introduo
A virtualizao e o uso de mquinas virtuais se tornaram um assunto destaque no
mundo da tecnologia da informao (TI), apesar de no ser exatamente uma novidade. A
introduo da linguagem de programao Java nos anos 90 trouxe consigo a noo de
mquina virtual, mas sua origem mais antiga. O termo mquina virtual foi
introduzido na dcada de 60 como um conceito de sistemas operacionais para indicar
uma abstrao em software de um sistema computacional em hardware. J nos anos 70
era comum que cada computador (mainframe), mesmo de um nico fabricante, tivesse
seu prprio sistema operacional causando problemas de portabilidade e de sistemas
legados. Na poca, a soluo encontrada foi explorar a risca o conceito de mquina
virtual, ou seja, uma camada de software que oferece um ambiente completo similar ao
de uma mquina fsica que executa sobre um sistema computacional nativo. Uma
mquina virtual contm seu prprio sistema operacional, bibliotecas e aplicativos e
totalmente independente e isolada das demais. Essa abordagem foi usada com sucesso
pela IBM que, na linha de mainframes 370 e seus sucessores, oferecia uma mquina
virtual portada para cada uma das plataformas de hardware sobre a qual as aplicaes
executavam. Dessa forma era possvel executar, ou migrar, uma aplicao, de uma
plataforma a outra, desde que houvesse uma verso de mquina virtual para a
plataforma alvo.
Na dcada de 80, a medida que os computadores comearam a se tornar mais
comuns e terem seu hardware uniformizado, a quantidade de sistemas operacionais
convergiu para algumas poucas famlias (Unix, Macintosh e Microsoft), cada uma com
um pblico-alvo e um conjunto de aplicativos. Nesse contexto, o emprego de mquinas
virtuais perdeu importncia. Entretanto, o aumento do poder computacional dos atuais
processadores, a disseminao de sistemas distribudos e a onipresena das redes de
computadores causaram, por vrias razes, o ressurgimento da virtualizao.
At agora, a virtualizao foi apresentada como uma tcnica que permite a
execuo de mltiplos sistemas operacionais e de suas aplicaes em mquinas virtuais
sobre uma nica mquina fsica. Entretanto, o conceito de virtualizao mais amplo.
Segundo a EMA (Enterprise Management Association), virtualizao a tcnica que
mascara as caractersticas fsicas de um recurso computacional dos sistemas,
aplicaes ou usurios que os utilizam. Nesse contexto, encontramos a virtualizao na
implementao de desktops remotos, de discos virtuais, na computao em cluster e
mesmo em dados como, por exemplo, atravs do uso de XML, SQL, JMS, entre outros.
Ainda, a partir do momento que se define mquinas virtuais, surge, quase que
imediatamente, a necessidade de conect-las em rede. Todas as mquinas virtuais
existentes provm interfaces de redes virtuais idnticas as suas similares reais, isso ,
com endereos MAC e podem ser interligadas a equipamentos de interconexo de rede
reais, ou virtuais, como switches e roteadores. Outro ponto interessante de uma mquina
virtual que, por ela ser um ambiente isolado, o comprometimento de sua segurana
no afeta as demais. Inclusive, possvel ter polticas de segurana diferentes para cada
uma delas.
Com base no que foi mencionado at o momento, possvel imaginar que a
virtualizao oferece um potencial muito grande para criar e manter infra-estruturas de
rede. O objetivo deste trabalho fornecer os principais conceitos da virtualizao e de
suas formas de implementao. Atualmente existem vrias ferramentas que oferecem
suporte a virtualizao, tanto solues proprietrias, quanto em software livre. As mais
41
42
43
44
precisam executar instrues do modo privilegiado. Para permitir isso, sem violar o
princpio dos dois modos de operao, o sistema operacional disponibiliza aos
programas de usurio um conjunto de chamadas de sistema (system calls). As chamadas
de sistema possibilitam que os programas de usurios acessem de forma indireta e
controlada, atravs do sistema operacional, os recursos de hardware. Ao fazer isso, cabe
ao sistema operacional realizar todos os procedimentos necessrios para garantir que o
processo de usurio no comprometa o correto funcionamento do sistema. As chamadas
de sistema constituem, portanto, uma interface entre o processo de usurio e o sistema
operacional.
Como mencionado anteriormente, um dos objetivos de um sistema operacional
tornar mais conveniente o uso de um sistema computacional. Dentro desse contexto
surgem as bibliotecas de funes, as quais disponibilizam uma srie de funcionalidades
para simplificar a construo de programas. Por exemplo, a biblioteca de sockets prov
os mecanismos para o desenvolvimento de aplicaes em rede ou, ainda, a biblioteca
gtk que facilita a construo de interfaces grficas. Cada funo de biblioteca realiza um
determinado procedimento e identificada por um nome, parmetros e valor de retorno.
O conjunto de funes de uma biblioteca constitui o que denominado de interface
aplicativa ou apenas API, do ingls, Application Programming Interface. Algumas APIs
de bibliotecas apenas encapsulam chamadas de sistemas para apresent-las de uma
forma mais amigvel ao programador, enquanto outras podem ser mais complexas e
envolver vrias chamadas de sistema para realizar uma determinada funcionalidade.
Uma API definida para ser usada em conjunto com uma linguagem de
programao de alto nvel. Assim, por exemplo, um programador C utiliza em seu
cdigo fonte chamadas de funes de uma biblioteca com sintaxe e semntica do C. A
prpria biblioteca um programa escrito em uma linguagem de alto nvel que,
posteriormente, compilada e gera um cdigo objeto com a implementao de cada
funo que disponibiliza. O cdigo objeto de uma biblioteca, junto com o cdigo objeto
resultante da compilao de um programa fonte, forma o cdigo executvel.
Para que os programas de usurio e as bibliotecas possam executar sobre um
dado sistema operacional e processador (plataforma) preciso respeitar as chamadas de
sistema disponibilizadas e ter um cdigo binrio compatvel com o do processador. Isso
obtido atravs da compilao do programa e das bibliotecas para essa plataforma. O
produto final um cdigo executvel que contm os equivalentes binrios das
instrues de usurio (user ISA) e das chamadas de sistema (system calls). A juno
das verses binrias dessas duas interfaces denominada de interface binria da
aplicao, ou ABI (Application Binary Interface). Na prtica, o que um programa em
execuo enxerga de uma plataforma apenas a sua ABI (figura 4.3) e isso que ser
a base para a construo de mquinas virtuais. Vale ressaltar que todas as funes de
uma biblioteca so mapeadas ou para chamadas de sistema ou para instrues no
privilegiadas.
45
46
sobre um powerpc. Note que tanto o ncleo do sistema operacional como o programa
aplicativo contm instrues binrias especficas a um processador.
4.2.4 Virtualizao
Em sua essncia, a virtualizao consiste em estender ou substituir um recurso, ou uma
interface, existente por um outro de modo a imitar um comportamento. Isso feito
atravs de uma camada de software responsvel por transformar aes de um sistema A
em aes equivalentes em um sistema B (isomorfismo). Dependendo de como e onde
essa transformao feita, possvel classificar os softwares de virtualizao em trs
grandes categorias [Rosemblum, 2004]:
47
48
49
50
51
52
que o sistema operacional hspede no precisa ser modificado para executar sobre o
monitor de mquina virtual (VMM) ou hipervisor.
Uma outra vantagem da paravirtualizao que ela prov aos sistemas hspedes
acessos aos recursos de hardware a partir dos drivers instalados no prprio hipervisor.
Dessa forma, os sistemas hspedes podem usar os recursos reais da mquina e no
apenas dispositivos genricos como era o caso na virtualizao total. Ainda, a mquina
virtual apenas gerencia o compartilhamento do hardware e monitora as reas de
memria e de disco alocadas para cada um dos sistemas hspedes. Em decorrncia dessa
gerncia, a mquina virtual pode informar ao sistema operacional hspede qual a rea de
memria fsica que est alocada para ele. Assim, a gerncia de memria do hspede
capaz de traduzir diretamente as pginas virtuais em quadros fsicos, sem necessitar de
uma etapa adicional de converso.
53
54
4.5.1 Xen
O Xen (www.xensource.com) um monitor de mquina virtual (hipervisor) em software
livre, licenciado nos termos da GNU General Public Licence (GPL), para arquiteturas
x86, que permite vrios sistemas operacionais hspedes serem executados em um
mesmo sistema hospedeiro. A primeira verso do Xen de outubro de 2003 e,
originalmente empregava a estratgia de paravirtualizao, ou seja, era necessrio
modificar o sistema operacional hspede para torn-lo consciente da existncia do
hipervisor. Essa deciso se justificava por questes de desempenho, mas limitou o
emprego do Xen aos sistemas Unix, principalmente aqueles com filosofia de cdigo
aberto. A partir da verso 3, o Xen passou a oferecer virtualizao total, ou seja, permite
o uso de sistemas operacionais no modificados, como os da famlia Microsoft
Windows. Entretanto, isso s possvel se o processador oferecer suporte em hardware
(Intel VT ou AMD-V) para virtualizao.
A arquitetura do Xen um pouco diferente daquela apresentada na seo 4.4. Os
dois principais conceitos do Xen so domnios e hipervisor. Os domnios so as
mquinas virtuais do Xen e so de dois tipos: privilegiada (domnio 0) ou noprivilegiada (domnio U). O hipervisor tem por funo controlar os recursos de
comunicao, de memria e de processamento das mquinas virtuais, e no possui
drivers de dispositivos. O hipervisor Xen, considerando suas caractersticas, no capaz
de suportar nenhum tipo de interao com sistemas hspedes. Por isso, necessrio que
exista um sistema inicial para ser invocado pelo hipervisor. Esse sistema inicial o
domnio 0. As outras mquinas virtuais s podem ser executadas depois que ele for
iniciado. As mquinas virtuais de domnio U so criadas, iniciadas e terminadas atravs
do domnio 0. O domnio 0 uma mquina virtual nica que executa um ncleo Linux
modificado e que possui privilgios especiais para acessar os recursos fsicos de entrada
e sada e interagir com as demais mquinas virtuais (domnios U). O domnio 0, por ser
um sistema operacional modificado, possui os drivers de dispositivos da mquina fsica
e dois drivers especiais para tratar as requisies de acesso rede e ao disco efetuados
pelas mquinas virtuais dos domnios U.
Para oferecer suporte tanto para a paravirtualizao como para a virtualizao
total, o Xen distingue os domnios U entre paravirtualizados (domnios U-PV) e
virtualizados (domnios U-HVM, de Hosted Virtual Machines). Os domnios U-PV tm
conscincia de que no tem acesso direto ao hardware e reconhecem a existncia de
outras mquinas virtuais. Os domnios U-HVM no tm essa conscincia, nem
reconhecem a existncia de outras mquinas virtuais. Na prtica, isso se traduz no fato
de que os domnios U-PV possuem drivers especficos para acesso rede e ao disco
para interagirem com as suas contra-partidas no domnio 0. J as mquinas dos
domnios U-HVM no possuem esses drivers (no foram modificados) e iniciam como
55
56
4.5.4 VirtualBox
O VirtualBox (www.virtualbox.org) um monitor de mquina virtual que adota a
abordagem de virtualizao total. O VirtualBox parte integrante de sua soluo de
virtualizao da Sun Microsystems, o Sun xVM.
Existem duas verses do VirtualBox: uma verso em software livre, sob os
termos da GPL (GNU General Public Licence) denominada de VirtualBox OSE (Open
Source Edition) e outra comercial (verso full). A diferena bsica entre elas o suporte
que a verso comercial oferece para RDP (Remot Desktop Protocol), para USB e para iSCSI (mecanismo de acesso a discos SCSI remotos). O VirtualBox executa sobre
sistemas operacionais Microsoft Windows, Linux, Macintosh e OpenSolaris permitindo
vrios sistemas hspedes, entre eles, os mais comuns, Microsoft Windows (NT, 2000,
XP, Vista e Server 2003), GNU/Linux e OpenBSD, entre outros.
A virtualizao feita pelo VirtualBox executa todas as instrues de usurio
(user ISA) nativamente no processador. Isso, claro, se houver compatibilidade binria
entre o sistema hspede e o hospedeiro. As instrues de sistema (system ISA) so
interceptadas e emuladas no hospedeiro. Essa emulao feita com o auxlio da tcnica
de traduo binria dinmica.
Ainda, o VirtualBox emula um disco virtual com um arquivo em um formato
especfico, o Virtual Disk Image, mas possui a capacidade de ler e escrever imagens de
discos virtuais VMware (Virtual Machine Disk Format VMDK). Isso possibilita que o
VirtualBox possa ser inicializado a partir de uma imagem definida e criada por
ferramentas da VMware. Outra caracterstica interessante no VirtualBox o fato da
permitir a montagem de imagens ISO. Assim, possvel, por exemplo, usar uma
imagem de uma distribuio linux sem ter que queimar um CD/DVD
57
58
59
60
61
62
63
64
Uma vez que h condies para migrar mquinas virtuais de forma eficaz
possvel usar a migrao como um mecanismo de base para executar balanceamento de
carga. Assim, um sistema pode ficar monitorando a carga das diversas mquinas e ao
detectar a ociosidade de uma em relao outra possvel deslocar carga de
processamento de uma mquina a outra. Entretanto, necessrio que o custo de
migrao (checkpointing, transferncia e restart) sejam menos onerosos que o que se
espera ganhar com a migrao. Tambm vale a pena ressaltar que a granularidade da
migrao de uma mquina virtual completa, portanto, migrar uma mquina virtual de
uma mquina fsica para outra s se justifica se a mquina sobrecarregada estiver
executando mais de uma mquina virtual ou se a mquina ociosa tiver uma capacidade
de processamento muito superior. Em [Righi et al., 2008] proposto um modelo de
custo para dimensionar a viabilidade de uma migrao. Ainda, em [Veiga et al, 2007]
apresentado o custo de migrao de mquinas virtuais em um trabalho baseado no Xen.
Fevereiro de 2009.
a liberao para primeira verso de benchmark estava prevista para o primeiro semestre
de 2009.
Enquanto no h um benchmark especfico para avaliar a virtualizao, os
estudos feitos at agora costumam empregar benchmarks existentes que simulam cargas
de processamento, de entrada e sada, e de trfego na rede. A partir de uma avaliao
feita pela VMware [VMware 2008a] e posteriormente questionado e reconduzido pela
Xen Source [XenSource2008a], se popularizaram os benchmarks SPECcpu2000, focado
em aplicaes computaes intensivas; o Passmark, que gera uma carga de trabalho
para testar os principais subsistemas que compem um sistema operacional; o NetPerf,
para avaliar o desempenho no envio e recepo de dados via rede; o SPECjbb2005 que
representa um servidor e sua carga; e a compilao do pacote SPECcpu2000 INT. Os
resultados obtidos pela VMware e XenSource apontaram para uma queda de
desempenho, em geral, entre 2% e 10%, com algumas situaes impondo perdas
maiores. Cabe ressaltar que esses resultados foram obtidos usando benchmarks
genricos destinados a outras finalidades. Em [Charo, 2008] apresentado um outro
estudo sobre o desempenho do Xen.
8 Concluses
Virtualizao o conceito que fornece a abstrao de um recurso computacional
qualquer mascarando suas caractersticas fsicas dos usurios e aplicaes que os
utilizam. No entanto, a forma mais conhecida de virtualizao so as mquinas virtuais.
Cada mquina virtual, por si s, um ambiente de execuo isolado e independente das
demais. Com isso, cada mquina virtual pode ter seu prprio sistema operacional,
aplicativos e servios de rede (Internet). O sistema operacional do hspede pode ser
diferente daquele utilizado pelo hospedeiro. A virtualizao no um conceito recente,
remonta a dcada de 60, e existem vrias tcnicas para implement-la, onde se destacam
as mquinas virtuais de processo e o monitor de mquina virtual.
Uma mquina virtual implementada considerando dois pontos de vistas
diferentes: a de um processo e a do ncleo do sistema operacional. Uma mquina virtual
de processo fornece um ambiente de execuo para uma nica aplicao atravs de uma
interface virtual (ABI) a qual mapeada para uma interface real composta pelas
chamadas de sistema e pelo conjunto de instrues no-privilegiadas (user ISA). Na
prtica, isso pode ser visto como um processo (a aplicao) executando dentro de outro
processo (a mquina virtual). Uma mquina virtual de processo s existe enquanto a
aplicao estiver em execuo. Uma mquina virtual de sistema, tambm denominada
de VMM (Virtual Monitor Machine) ou hipervisor, aquela que oferece um ambiente
de execuo completo onde coexiste um sistema operacional e vrias aplicaes. Ao
contrrio das mquinas virtuais de processo, as mquinas virtuais de sistema esto ativas
at serem explicitamente paradas. H dois tipos de hipervisores: nativos (tipo I) e
hspedes (tipo II). Os hipervisores nativos so uma camada de software posta entre o
hardware fsico da mquina e as mquinas virtuais executam sobre eles. J os
hipervisores hspedes (tipo II) executam sobre o sistema operacional como se fossem
um processo deste. H ainda, duas tcnicas usadas nos hipervisores: virtualizao total e
paravirtualizao. A diferena essencial se o sistema operacional hspede precisa ser
modificado (paravirtualizao) ou no (virtualizao total) para executar sobre o
hipervisor.
Assim como j aconteceu no passado com a multiprogramao, o projeto dos
processadores mais recentes tem considerado mecanismos em hardware para dar suporte
a virtualizao. o caso dos fabricantes AMD e Intel que desenvolveram extenses para
a arquitetura x86 suportar virtualizao, respectivamente, AMD-Virtualization (AMDV, codinome Pacfica) e Intel Virtualization Technology (IVT, condinome Vanderpool).
65
66
4.9. Referncias
Adamic, A. L. Zipf, Power-laws and Pareto a ranking tutorial. Information Dynamics Lab, HP Labs. (http://www.hpl.hp.com/research/idl/papers/ranking), acesso
fevereiro 2008.
Adams, K.; Agesen, O. A comparaison of software and hardware techniques for x86
virtualization, ASPLOS06, San Jose, California, USA. 2006.
Baratz, A.; Virtual Machines shootout: VMWare vs. Virtual PC, Ars Technica.
August, 2004 (http://arstechnica.com/reviews/apps/vm.ars) Acesso novembro 2007.
Barham, P.; Dragovic, B.; Fraser, K.; Hand, S.; Harris, T.; Ho, A.; Neugebauer, R.;
Pratt, I.; Warfield, A. Xen and the Art of Visualization. In. Proc. 19th ACM Symp.
On Operating System Principles (SOSP03), 2003.
Breslau, L.; Cao, P.; Fan, L. ; Philips, G. And Shenker, S. Web Caching and Zipf-like
Distributions: Evidence and Implications. INFOCOM, 1999, pp. 126-134.
Calheiros, R.; Storch, M.; Alexandre, E; De Rose, C; e Breda, M. Applying Virtualization and System Management in a Cluster to Implement an Automated Emulation
Testbed for Grid Applications. 20th International Symposium on Computer Architecture and High Performance Computing. SBAC-PAD 2008, 29 de outubro a 1 de
novembro 2008, Campo Grande, Brasil.
Charo, A; Santos, R. Anlise Comparativa de Desempenho do Hipervisor Xen:
paravirtualizao versus virtualizao total. WSCAD 2008, 29 de outubro a 1 de
novembro 2008, Campo Grande, Brasil.
EMA, Entreprise Management Solutions. (http://www.emscorporation.com). Acesso
maro de 2008.
Emeneker, W.; Jackson, D.; Butikofer, J.; Stanzione, D.; Dynamic virtual clustering
with Xen and Moab. Lecture Notes in Computer Sciences: International Symposium
on Parallel and Distributed Processing and Application (ISPA). Workshops. Italy. pp.
440-451. 2006.
Globus. Globus Toolkit. Disponvel em (http://www.globus.org). Acesso em out. 2008.
Goldberg, R.P. Architecture of Virtual Machines. In Proceedings of Workshop on
Virtual Computer. Systems.Cambridge, MA, USA. pp 74-112, 1973.
Goldberg, R.P. Survey of virtual machine research. IEEE Computer, pp. 34-35, june
1974.
Henessy, J.L.; Patterson, D.A. Computer Architecture: A quantitative approach. 4th
edition. Morgan Kauffman Publishers, 2007.
IBM Corporation. IBM Systems Virtualization Version 2 release 1 (2005). Disponvel
em
http://public.boulder,ibm.com/infocenter/eserver/v1r2/topic/eicay/eicay.pdf,
acesso outubro 2008.
Jain, R. Art of Computer Systems Performance Analysis. John Willey. 1991.
Keahey, K.; Foster, I.; Freeman, T.; Zhang, X.; Virtual Workspaces: Achieving quality
of service and quality of life on the grid. Scientific Programming, 13 (4):256-276,
2005.
67
68
Kozuck, H.; Satyanarayanan, M.; Internet Suspend/Resume. Proc. 4th IEEE Workshop on Mobile Systems and Applications. Junho. 2002.
LinuxServer (http://linux-vserver.org). Acesso em maro de 2008.
Microsoft. Microsoft Virtual PC (http://www.microsoft.com/Windows/virtualpc),
acesso novembro 2007.
Microsoft. Microsoft Virtual Server
Neiger, G.; Santoni, A. et alli Intel Virtualization Technology: Hardware Support for
Efficient Processor Virtualization, Intel Technology Journal, v. 10, pp. 166-179,
2006.
Oliveira, R..; Carissimi, A.; Toscani, A.; Sistemas Operacionais. Editora Sagra-Luzzato,
3a edio, 2004.
OSCAR. Open Source Cluster Application Resources. Disponvel
(http://svn.oscar.openclustergroup.org/trac/oscar/wiki), acesso outubro 2008.
em
Popek, G.; Goldberg, R. Formal requirements for virtualizable 3rd generation architectures. Communications of the ACM, v.17, n.7, pp. 412-421, 1974.
Righi, R.R.; Pilla, L.; Carissimi, A.; Navaux, P.O.A. Controlling Process Reassignment in BSP Applications. 20th International Symposium on Computer Architecture
and High Performance Computing. SBAC-PAD 2008, 29 de outubro a 1 de
novembro 2008, Campo Grande, Brasil.
Robin, J.S.; Irvine, C.E. Analysis of the Intel Pentiums Ability to Support a Secure
Virtual Machine Monitor. Proc. 9th USENIX Security Simposium, 2000.
Rose, R. Survey of Virtualization Techniques. (http://www.robertwrose.com). Acesso
em fevereiro 2008.
Rosemblum, M. The reincarnation of virtual machines. Queue Focus ACM Press,
pp 34-40, 2004.
Sapuntzakis, C.P.; Chandra, R.; Pfaff, B.; Chow, J.; Lam, M.S; Rosemblum, M.; Optimizing the Migration of Virtual Computers. Proc. 5th Symp. On Operating Systems
Design and Implementation. Dezembro, 2002.
Silberchatz, A.; Galvin, P; Sistemas Operacionais. (1a edio). Campus, Rio de Janeiro,
2001.
Singh, A.An introduction to virtualization(http://www.kernelthread.com/publications)
Acesso fevereiro 2008.
Smith, J.E, Nair, R. The architecture of virtual machines. IEEE Computer, v.38, n.5,
pp. 32-38, 2005.
Uhgli, R.; Neiger, G. et alli Intel Virtualization Technology. Computer Journal, v.38,
pp. 48-56. 2005.
Ung, D.; Cifuentes, C. Machine-adaptable dynamic binary translation. ACM SIGPLAN
Notices, ACM Press New York, NY, USA, vol. 35, 7, july 2000, pp 41-51.
Valle, G.; Naughton, T.; Scott, S.L.; System management software for virtual environments. Proceedings of ACM International Conference on Computing Frontiers,
Ischia, Italy, 2007.
Veiga, M.;Righi, R.R.; Maillard, N.; Navaux, P.O.A: Impacto da Migrao de Mquinas
Virtuais de Xen na Execuo de Programas MPI. In VIII Workshop emSistemas
Computacionais de Alto Desempenho. pp. 45-52. 2007
69