ministerio da defesa´ curso de mestrado em sistemas e...
TRANSCRIPT
-
MINISTÉRIO DA DEFESAEXÉRCITO BRASILEIRO
DEPARTAMENTO DE CIÊNCIA E TECNOLOGIAINSTITUTO MILITAR DE ENGENHARIA
CURSO DE MESTRADO EM SISTEMAS E COMPUTAÇÃO
THAIS CABRAL DE MELLO
AMBIENTE PARA CRIAÇÃO DE CLUSTERS VIRTUAIS EM GRIDSCOMPUTACIONAIS
Rio de Janeiro2010
-
Livros Grátis
http://www.livrosgratis.com.br
Milhares de livros grátis para download.
-
INSTITUTO MILITAR DE ENGENHARIA
THAIS CABRAL DE MELLO
AMBIENTE PARA CRIAÇÃO DE CLUSTERS VIRTUAIS EM GRIDSCOMPUTACIONAIS
Dissertação de Mestrado apresentada ao Curso deMestrado em Sistemas e Computação do Instituto Mili-tar de Engenharia, como requisito parcial para obtençãodo t́ıtulo de Mestre em Sistemas e Computação.
Orientadores:Prof. Bruno Richard Schulze - D.Sc.Profa Raquel Coelho Gomes Pinto - D.Sc.
Rio de Janeiro
2010
-
c2010
INSTITUTO MILITAR DE ENGENHARIAPraça General Tibúrcio, 80-Praia VermelhaRio de Janeiro-RJ CEP 22290-270
Este exemplar é de propriedade do Instituto Militar de Engenharia, que poderá inclúı-lo em base de dados, armazenar em computador, microfilmar ou adotar qualquer formade arquivamento.
É permitida a menção, reprodução parcial ou integral e a transmissão entre bibliotecasdeste trabalho, sem modificação de seu texto, em qualquer meio que esteja ou venha aser fixado, para pesquisa acadêmica, comentários e citações, desde que sem finalidadecomercial e que seja feita a referência bibliográfica completa.
Os conceitos expressos neste trabalho são de responsabilidade do autor e do orientador.
M527 Mello, Thais CabralAmbiente para Criação de Clusters Virtuais em
Grids Computacionais/ Thais Cabral de Mello.– Rio de Janeiro: Instituto Militar de Engenharia, 2010.
97 p.: il., tab.
Dissertação (mestrado) – Instituto Militar de Enge-nharia – Rio de Janeiro, 2010.
1. Transmissão da Informação - Tecnologias. 2. Sis-temas de Computação. 3. Tratamento da Informação I.T́ıtulo. II. Instituto Militar de Engenharia.
CDD 005
2
-
INSTITUTO MILITAR DE ENGENHARIA
THAIS CABRAL DE MELLO
AMBIENTE PARA CRIAÇÃO DE CLUSTERS VIRTUAIS EM GRIDSCOMPUTACIONAIS
Dissertação de Mestrado apresentada ao Curso de Mestrado em Sistemas e Com-putação do Instituto Militar de Engenharia, como requisito parcial para obtenção dot́ıtulo de Mestre em Sistemas e Computação.
Orientadores: Prof. Bruno Richard Schulze - D.Sc.Profa Raquel Coelho Gomes Pinto - D.Sc.
Aprovada em 05 de agosto de 2010 pela seguinte Banca Examinadora:
Profa Raquel Coelho Gomes Pinto - D.Sc. do IME - Presidente
Prof. Bruno Richard Schulze - D.Sc. do LNCC
Cap. Anderson Fernandes Pereira dos Santos - D.Sc. do IME
Prof. Antonio Roberto Mury - D.Sc. do LNCC
Prof. Fábio André Machado Porto - D.Sc. do LNCC
Rio de Janeiro2010
3
-
Dedico essa dissertação ao meu marido por todo o seu amor, apoioe paciência.
4
-
AGRADECIMENTOS
Primeiramente agradeço a Deus pela minha vida e por guiar todos os passos da minha
caminhada.
A minha famı́lia, em especial ao meu marido, por todo o seu amor, compreensão,
apoio e constante incentivo.
Agradeço aos Srs. professores do Instituto Militar de Engenharia pelos ensinamentos
a mim passados, em especial a professora Raquel Coelho que, juntamente com o professor
Bruno R. Schulze, orientaram-me para que este projeto pudesse ser realizado e conclúıdo.
Ao Professor Ronaldo Salles também sou imensamente grata, não somente pelos ensina-
mentos, mas também pelos incentivos recebidos ao longo do curso.
Gostaria de agradecer a todos os envolvidos no laboratório de Computação Cient́ıfica
Distribúıda - ComCiDis - LNCC, especialmente aos amigos Fabio Licht, Matheus Bandini
e Victor Oliveira. Gostaria de reforçar a importância que os amigos Douglas Ericson e
Henrique Kloh tiveram nesta caminhada.
Agradeço em especial ao professor Antonio R. Mury por sua amizade, seus conselhos,
seus ensinamentos e por sua dedicação na elaboração deste trabalho. Aos amigos Laion,
Felipe e Guilherme agradeço o empenho e trabalho fundamentais para a realização desta
dissertação.
Thais Cabral de Mello
5
-
SUMÁRIO
LISTA DE ILUSTRAÇÕES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
LISTA DE ABREVIATURAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2 Organização da Dissertação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2 SISTEMAS DE COMPUTAÇÃO DISTRIBUÍDA . . . . . . . . . . . . . . . . 18
2.1 Caracteŕısticas de Sistemas de Computação Distribúıda . . . . . . . . . . . . . . . . . . 18
2.2 Clusters Computacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3 Grades Computacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4 Cloud Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3 VIRTUALIZAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1 Técnicas de Virtualização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2 Softwares de Virtualização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2.1 VMware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2.1.1Xen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2.1.2KVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2.1.3OpenVZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2.1.4Microsoft Hyper-V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2.1.5VirtualBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3 Virtualização dos Sistemas Distribúıdos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4 REVISÃO DA LITERATURA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.1 A contribuição da Virtualização para Grades e Clouds . . . . . . . . . . . . . . . . . . . 38
4.2 O Uso de Recursos Virtualizados em Apoio a Computação de Alto Desempenho 40
4.3 Possibilidade e Uso de Clusters Virtualizados . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5 DESCRIÇÃO DA SOLUÇÃO PROPOSTA . . . . . . . . . . . . . . . . . . . . . . . 50
5.1 Ferramentas Utilizadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.1.1 PelicanHPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6
-
5.1.2 Grails . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.1.2.1MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.1.3 VirtualBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.2 Criação do Cluster Virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.3 Interface Web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6 RESULTADOS OBTIDOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
6.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
6.2 Descrição dos Experimentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.3 Experimentos Realizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.4 Análise dos Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
7 CONSIDERAÇÕES FINAIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.1 Contribuições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
7.2 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
8 APÊNDICE A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
8.1 Requisitos do Sistema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
8.2 Interface Web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
9 REFERÊNCIAS BIBLIOGRÁFICAS . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
7
-
LISTA DE ILUSTRAÇÕES
FIG.2.1 Hierarquia de um cluster. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
FIG.3.1 Exemplo de Virtualização de Plataformas . . . . . . . . . . . . . . . . . . . . . . . . . . 26
FIG.3.2 Exemplo de Para-Virtualização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
FIG.3.3 Exemplo de Virtualização Total . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
FIG.3.4 Quadro Comparativo dos Softwares de Virtualização . . . . . . . . . . . . . . . . . 34
FIG.4.1 Comparação dos Trabalhos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
FIG.5.1 Camadas do Ambiente de Cluster Virtual . . . . . . . . . . . . . . . . . . . . . . . . . . 57
FIG.6.1 Desempenho da capacidade de processamento entre o cluster real e
o cluster virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
FIG.6.2 Desempenho carga de comunicação do cluster real com o cluster
virtual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
FIG.6.3 Desempenho de distribuições Linux - capacidade de processamento . . . . . 65
FIG.6.4 Desempenho de diferentes distribuições Linux - processamento . . . . . . . . 66
FIG.6.5 Desempenho de diferentes distribuições Linux - carga de comu-
nicação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
FIG.6.6 Desempenho com concorrência de clusters . . . . . . . . . . . . . . . . . . . . . . . . . . 67
FIG.6.7 Desempenho entre 1MV com 4 núcleos e 4MV com 1 núcleo cada . . . . . . 68
FIG.6.8 Desempenho entre 4MV na mesma servidora e 4MV em servidoras
diferentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
FIG.6.9 Gerência da VMM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
FIG.6.10 Gerência da VMM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
FIG.6.11 Gerência da VMM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
FIG.8.1 Tela de Login - Registro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
FIG.8.2 Formulário de Cadastro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
FIG.8.3 Opções de Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
FIG.8.4 Menu Configurações de Clusters - modelos de clusters . . . . . . . . . . . . . . . . 82
FIG.8.5 Menu Configurações de Clusters - clusters . . . . . . . . . . . . . . . . . . . . . . . . . . 82
FIG.8.6 Novo Template de Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
FIG.8.7 Criação do Template de Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
8
-
FIG.8.8 Menu Gerador de Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
FIG.8.9 Lista de Clusters do Usuário . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
FIG.8.10 Geração do Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
FIG.8.11 Cluster sendo Gerado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
FIG.8.12 Usuário inicializando o Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
FIG.8.13 Opções de Controle do Cluster - watch, pause e desligar . . . . . . . . . . . . . . 87
FIG.8.14 Visualização das Máquinas Virtuais Criadas . . . . . . . . . . . . . . . . . . . . . . . . 87
FIG.8.15 Informações de IP e Porta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
FIG.8.16 Usuário Acessando Via RDesktop o Nó Mestre . . . . . . . . . . . . . . . . . . . . . . 89
FIG.8.17 Listando os Nós do Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
FIG.8.18 Comando Ping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
FIG.8.19 Usuário Desligando o Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
FIG.8.20 Cluster com Diferentes Quantidades de Nós . . . . . . . . . . . . . . . . . . . . . . . . . 92
9
-
LISTA DE ABREVIATURAS
ABREVIATURAS
CPU - Central Processing Unit
DHCP - Dynamic Host Configuration Protocol
DMA - Direct memory access
EC2 - Amazon Elastic Compute Cloud
GPL - General Public License
GRAM - Globus Resource Allocation Manager
GT - Globus Toolkit
HPC - High Performance Computing
HTC - High Troughtput Computing
HW - Hardware
IP - Internet Protocol
JVM - Java Virtual Machine
MPI - Message Passing Interface
MAC - Media Access Control
MH - Máquina Hospedeira
MV - Máquina Virtual
NAT - Network Address Translation
NFS - Network File System
OGSA - Open Grid Services Architecture
OV - Organização Virtual
OVF - Open Virtualization Format
PAD - Processamento de Alto Desempenho
PUEL - Personal Use and Evoluation License
PXE - Preboot Execution Environment
QOS - Quality of Service
RDP - Remote Desktop Protocol
SLA - Service Level Agreement
SO - Sistema Operacional
SW - Software
10
-
USB - Universal Serial Bus
VCG - Virtual Community Grid
VDI - Virtual Disk Image
VLAN - Virtual Local Area Network
VMM - Virtual Machine Monitor
VW - Virtual Workspace
VO - Virtual Organization
XML - Extensible Markup Language
11
-
RESUMO
O desenvolvimento cient́ıfico e tecnológico observa uma crescente necessidade e de-pendência de recursos computacionais de alto desempenho e capacidade de armazena-mento. Buscando suprir essa demanda, surgiram novas tecnologias tanto em termos decapacidade de processamento, quanto em capacidade de redes de comunicação, o quepossibilitou um avanço no uso mais efetivo e compartilhado dos recursos computacionais,principalmente pelo desenvolvimento de processadores dedicados à virtualização. Porconseguinte, esse avanço da tecnologia de virtualização possibilitou que seus usuários cri-assem ambientes personalizados, beneficiando, sobremaneira, os usuários da computaçãode alto desempenho ao permitir a criação de clusters compostos por máquinas virtuaisconfiguradas para atender suas necessidade espećıficas de software e de hardware. Combase nesse conceito, a presente dissertação disponibiliza uma infra-estrutura que facilitaa criação de ambientes de cluster virtual, permitindo, assim, que seus usuários sejamcapazes de criar e utilizar um ambiente personalizado, recuperável, escalável e de fáciluso e configuração, seja para fins educativos, de treinamento, seja para testes ou desen-volvimento. Além disso, é realizada uma avaliação de desempenho de clusters virtuaiscriados através desta infraestrutura com o objetivo de avaliar a viabilidade de seu uso poraplicações HPC (High Performance Computing), ressaltando-se os fatores consideradosdeterminantes para adoção desse tipo de solução.
12
-
ABSTRACT
The scientific and technological development sees a growing need and dependenceon high-performance computing resources and storage capacity. Seeking to meet thisdemand, new technologies both in terms of processing capacity and the capacity of com-munication networks appeared and enabled a breakthrough in more effective use andsharing of computational resources, especially the development of dedicated processorsfor virtualization. Consequently, this advancement of virtualization technology has ena-bled its users to create custom environments, benefiting greatly users of high performancecomputing by enabling the creation of clusters consisting of virtual machines configuredto meet their specific needs in terms of software and hardware. Based on this concept,this paper provides an infrastructure that facilitates the creation of virtual cluster envi-ronments, thus allowing the users to be able to create and use an environment which ispersonalized, recoverable, scalable and easy use and configure, whether it is directed toeducation, training, testing or development. Furthermore, a performance assessment ofvirtual clusters created through this infrastructure is made in order to assess the feasi-bility of its use by HPC (High Performance Computing) applications, emphasizing thefactors which are considered crucial to adoption of this kind of solution.
13
-
1 INTRODUÇÃO
O desenvolvimento tecnológico das últimas décadas desencadeou um aumento con-
siderável na capacidade dos computadores. Esse processo permitiu aos desenvolvedores e
pesquisadores criarem novas formas de explorar ao máximo toda a capacidade computa-
cional dispońıvel (BANDINI, 2009).
Entretanto, torna-se um grande desafio prover um ambiente de hardware e software
que ofereça a seus usuários uma abstração sobre os recursos computacionais necessários
para execução de simulações. Da mesma forma, prover uma infraestrutura de gerência
dos elementos computacionais utilizados e produzidos durante essas simulações também
se mostra um processo complexo. Além disso, o avanço cient́ıfico exige um investimento
crescente em equipamentos e infraestrutura para estar em sintonia com as necessidades
computacionais.
Uma alternativa tecnológica adotada pelos centros de e-Science foi o uso de Com-
putação em Grade, que permite a utilização de diversos recursos computacionais hetero-
gêneos e dispersos por várias instituições. Essa caracteŕıstica possibilita que seus usuários
compartilhem recursos de forma confiável, consistente e transparente. Contudo, a ex-
periência obtida em diversos projetos concebidos a partir da infraestrutura de Grade
mostrou alguns problemas, tais como instalação, configuração e usabilidade complexas,
além da necessidade de controles administrativos intensivos, o que dificultou sobremaneira
o aumento dessa infraestrutura em termos de uso e espaço.
Outra questão desafiadora que as comunidades de Grade enfrentam é o fato de que
enquanto uma Grade pode fornecer acesso a vários recursos heterogêneos, os recursos
aos quais o acesso é provido muitas vezes não correspondem às necessidades de uma
aplicação espećıfica ou serviço, o que pode levar tanto à subutilização dos recursos quanto a
frustração dos usuários. Esses problemas podem ser superados ao permitir que usuários de
Grade possam criar clusters compostos por máquinas virtuais configuradas para atender
as suas necessidades espećıficas de software e de hardware (FOSTER et al., 2006).
A possibilidade da virtualização de plataformas em sistemas distribúıdos apresenta-se
como um recurso útil, sobretudo por permitir o encapsulamento tanto do sistema ope-
racional (SO), quanto dos middlewares e serviços. Propicia, ainda, o aproveitamento
14
-
da capacidade de processamento atualmente ociosa em diversos equipamentos, inclusive
naqueles que normalmente não poderiam vir a ser utilizados em função de incompatibili-
dade do sistema operacional da máquina hospedeira.
A virtualização abre também a possibilidade do seu uso para treinamento, tanto de ad-
ministradores, quanto de usuários de Grade. Isso se concretiza pela facilidade de instalação
que se obtém, permitindo que o treinamento possa ser realizado através da simulação de
um ambiente distribúıdo mesmo antes deste ser realmente implementado.
A tecnologia de virtualização propiciou o aparecimento do conceito de Virtual Work-
space, que tem como uma de suas principais caracteŕısticas a possibilidade de oferecer ao
usuário um ambiente personalizado que atenda às suas necessidades espećıficas. O Virtual
Workspace, então, pode ser compreendido como um ambiente de execução configurável e
gerenciável de forma a atender aos requisitos dos clientes, definindo os requisitos de hard-
ware, configuração de software e isolamento de propriedades, dentre outras caracteŕısticas
(KEAHEY et al., 2005b).
Além do conceito de Virtual Workspace, a evolução da tecnologia de virtualização
também propiciou o surgimento de um novo paradigma da computação, chamado de Cloud
Computing. Tal tecnologia se propõe a ser um sistema de computação distribúıda em
larga escala, oferecendo um conjunto de recursos virtualizados, dinamicamente escaláveis,
gerenciáveis em termos de capacidade de processamento, armazenamento, número de
plataformas e serviços (FOSTER et al., 2008). Tem como prinćıpio a oferta de serviços
adequados às necessidades do usuário, de maneira a reforçar o conceito de elasticidade
sob o ponto de vista da demanda de recursos, cuja alocação e desalocação ocorre em
função da necessidade, tornando desnecessária a imobilização de um grande capital para
sua aquisição.
Utilizando esses dois conceitos, a presente proposta visa desenvolver uma infra-estrutura
que facilite a criação de ambientes de cluster virtual. Pretende-se, assim, possibilitar que
os usuários sejam capazes de criar e utilizar um ambiente personalizado, recuperável, es-
calável e de fácil uso e configuração, seja para fins educativos, de treinamento, seja para
teste ou desenvolvimento. Para tanto, o usuário apenas precisará configurar as caracte-
ŕısticas de máquina, como número de nós, quantidade de memória f́ısica, quantidade de
núcleo e espaço em disco. Além disso, é realizada uma avaliação de desempenho de clus-
ters virtuais criados através desta infraestrutura com o objetivo de avaliar a viabilidade
do seu uso por aplicações HPC (High Performance Computing).
15
-
1.1 OBJETIVOS
O objetivo deste trabalho é criar a infra-estrutura necessária para a implementação de
um novo tipo de serviço voltado para área de desenvolvimento e pesquisa, possibilitando,
assim, que o usuário crie um ambiente de cluster virtual, seja para fins de treinamento,
ensino ou simulação, de forma que ele possa configurar o tipo de plataforma, as carac-
teŕısticas de hardware da máquina e o grupo de clusters virtualizados.
Para tanto, propõe-se a criação de uma infra-estrutura em que o usuário seja capaz
de criar e configurar de forma simples e eficiente seu ambiente de desenvolvimento, sem
que haja a necessidade de interferência por parte do administrador dos recursos disponi-
bilizados para o serviço ou de conhecimentos espećıficos por parte de quem os utiliza.
Abordando-se o conceito de Virtual Workspace, procura-se ampliar a capacidade de
uma Grade computacional elevando-se a disponibilidade de seus recursos ao ńıvel de
plataforma, ampliando assim a possibilidade de uso por parte de seus usuários.
No aspecto do desenvolvimento, pretende-se atender às necessidades espećıficas de
cada usuário, disponibilizando um ambiente customizado no qual ele poderá desenvolver
suas aplicações e testar sua viabilidade, analisando e corrigindo posśıveis problemas. Além
disso, o usuário poderá testar sua aplicação em diversos ambientes sem a preocupação de
instalação e configuração de hardware e software, reduzindo, sobremaneira, o tempo gasto
nos referidos procedimentos de instalação e configuração (setting up).
Em um ambiente de teste, a ferramenta poderá ser aplicada sem a necessidade de se
ter equipamentos dedicados ao processamento de alto desempenho e sem a necessidade da
aquisição de novos equipamentos para tal finalidade, otimizando a utilização de recursos
e reduzindo o custo da aquisição de hardware e software.
Além de contribuir para as áreas acima citadas, esse ambiente apresenta também
caracteŕısticas como: a flexibilidade, ao possibilitar que o usuário configure e seja capaz
de utilizar várias estruturas de clusters em um mesmo conjunto de recursos homogêneos
ou não; a escalabilidade, na medida em que é posśıvel aumentar ou reduzir o número
de nós em função de suas necessidades ou restrições do ambiente; e a portabilidade, ao
permitir que o ambiente criado seja armazenado tanto para uso futuro quanto para ser
utilizado em outra estrutura dispońıvel, dissociado do espaço f́ısico em que se encontra.
Paralelamente, esse trabalho também procurou avaliar o efeito do uso de recursos
virtualizados para a criação de clusters, ou seja, qual o impacto do uso da virtualização em
16
-
um ambiente de computação de alto desempenho - HPC. Com isso, foi realizada ao longo
do desenvolvimento deste trabalho uma série de experimentos a fim de determinar quais
fatores podem contribuir tanto positivamente como negativamente para o desempenho de
um cluster virtual.
1.2 ORGANIZAÇÃO DA DISSERTAÇÃO
A organização do presente trabalho encontra-se da seguinte forma: o caṕıtulo 2 apre-
senta as principais caracteŕısticas dos Sistemas Distribúıdos, bem como os paradigmas
baseados em arquiteturas distribúıdas; o caṕıtulo 3 apresenta os conceitos da Máquinas
Virtuais, além de citar os principais tipos de tecnologia de virtualização existentes e as
caracteŕısticas dos diversos softwares de virtualização; o caṕıtulo 4 apresenta trabalhos
encontrados na literatura que propõem métodos e arquiteturas para criação de Cluster Vir-
tual; o caṕıtulo 5 descreve a implementação do sistema proposto; o caṕıtulo 6 apresenta,
ainda, os experimentos realizados e os resultados obtidos, bem como os comentários sobre
os mesmos; por fim, o caṕıtulo 7 apresenta as considerações finais acerca deste trabalho.
17
-
2 SISTEMAS DE COMPUTAÇÃO DISTRIBUÍDA
A partir da metade da década de 1980, com o desenvolvimento do microcomputador,
essa nova tecnologia passou a ser uma ferramenta com poder de processamento cada vez
maior. Ainda nessa mesma década, tivemos um outro avanço da tecnologia - a popu-
larização das redes - que culminaria no surgimento da Internet. Do resultado da união
desses dois avanços surgiram os sistemas distribúıdos.
2.1 CARACTERÍSTICAS DE SISTEMAS DE COMPUTAÇÃO DISTRIBUÍDA
Um sistema distribúıdo, segundo a definição de George Coulouris (COULOURIS et al.,
2007), é uma:
“Coleção de computadores autônomos interligados através de uma rede de
computadores e equipados com software que permita o compartilhamento dos
recursos do sistema: hardware, software e dados”
Assim, a união desses computadores através da rede permite que o poder de proces-
samento seja combinado de forma a colaborar com a execução de uma aplicação. Essa
é sub-dividida e processada em diversos núcleos de processamento em diferentes locali-
dades. Porém, apesar de a aplicação ser processada em diferentes plataformas e SO, todo
o processamento ocorre de forma transparente para o usuário, que tem a impressão de que
um único sistema gerencia toda a aplicação, ou seja, tem-se a ilusão de que a aplicação
está sendo executada em uma única máquina.
A capacidade de interconectar processadores permite que um sistema distribúıdo
tenha um melhor desempenho e um crescimento incremental, bastando, para isso, incluir
novos equipamentos na rede. Com isso, tem-se um aumento no poder computacional, na
otimização e na economia de recursos, visto que é menos custosa a utilização de vários pro-
cessadores interligados do que a aquisição de um supercomputador. Outra vantagem dos
sistemas distribúıdos é a tolerância a falhas, já que um problema em um computador não
interfere no processamento da aplicação, embora haja uma diminuição no desempenho.
Com a evolução da arquitetura de sistemas distribúıdos e o aumento significativo da
capacidade de rede surgiram os conceitos de Cluster Computacional e Grade Computa-
18
-
cional e, recentemente, Cloud Computing.
2.2 CLUSTERS COMPUTACIONAIS
Ao longo dos últimos anos temos presenciado que as comunidades cient́ıficas e acadêmicas,
bem como as empresas de tecnologia, vêm desenvolvendo aplicações cada vez mais com-
plexas e que exigem maior poder computacional. Devido à complexidade dessas aplicações
e a necessidade de precisão e rapidez dos resultados, torna-se inviável o seu processamento
em um único computador.
Como sáıda, é posśıvel o processamento dessas aplicações usando supercomputadores
dedicados. Porém, nem sempre as instituições são capazes de adquiri-los devido ao seu
alto custo, e com isso, o acesso aos supercomputadores fica limitado a um pequeno grupo
que tenha poder aquisitivo suficiente.
A alternativa encontrada pela comunidade foi a união de um conjunto de computa-
dores comerciais ligados a uma rede de alta velocidade, no qual a sua ação conjunta
permite o aumento no desempenho das aplicações. Já que essas são divididas em partes e
executadas de forma distribúıda/paralela entre os computadores, atinge-se, desta forma,
um desempenho equivalente ao de um supercomputador. Surgiu, assim, o conceito de
Cluster, que pode ser descrito da seguinte maneira:
“Um cluster, ou aglomerado, é uma coleção de computadores que trabalham
juntos para criar um sistema mais poderoso, ou um conjunto de máquinas in-
dependentes, que cooperam umas com as outras para atingir um determinado
objetivo comum”. (FILHO, 2004)
De um forma mais ampla, um cluster é formado por computadores que são inter-
conectados através da rede para que possam, então, processar eficientemente um grande
número de aplicações de uma maneira distribúıda.
A união dessas caracteŕısticas torna o cluster o mais adequado para processamento
de aplicações paralelas e de alto desempenho, uma vez que o paralelismo é considerado a
melhor forma de se superar o problema relacionado à velocidade de processamento (ZEM
e BRITO, 2006), aumentando assim, o desempenho das aplicações.
Em relação à estrutura do cluster, ela consiste basicamente em um computador -
chamado de nó mestre, - e de vários outros computadores - chamados de nós escravos. O
nó mestre é responsável por controlar e distribuir o processamento da aplicação entre os
19
-
nós escravos, além de reunir e disponibilizar os resultados. Além disso, os nós possuem o
mesmo sistema operacional, facilitando a troca de mensagens. Devido a esta caracteŕıstica,
os cluster são considerados sistemas homogêneos.
Ainda em relação à estrutura do cluster, durante o seu processo de construção, faz-se
necessário o uso de ferramentas que automatizem sua instalação, configuração e moni-
toramento das aplicações, pois tal processo, se feito de forma manual, torna o trabalho
um pouco mais árduo. Entretanto, atualmente é posśıvel conseguir boas ferramentas que
facilitam o trabalho do administrador, como, por exemplo, a ferramenta para instalação
como Kickstart (O’KANE, 2000) e o OSCAR (OSCAR), ferramentas de monitoramento
como Ganglia (MASSIE et al., 2004), ferramenta de escalonamento como Maui e ainda
ferramentas que incluem essas diversas funcionalidades em um único componente como é
o caso do ROCKS (ROCKS) e PelicanHPC (CREEL, 2010)
A utilização dos clusters permite que alguns objetivos sejam alcançados, tais como
(BECHER, 2007): alto desempenho, escalabilidade, tolerância a falhas, baixo custo e
independência de fornecedor. Dessa forma, o custo de montagem do ambiente torna-se
baixo, pois é usado hardware comum, que pode ser de qualquer fabricante e, utilizando
software livre, não existe a necessidade de pagamento de licença de uso de aplicativo.
A figura 2.1 representa o modelo hierárquico mestre-escravo para a execução e coor-
denação do processamento.
FIG. 2.1: Hierarquia de um cluster.
2.3 GRADES COMPUTACIONAIS
Buscando alcançar um ńıvel maior de conhecimento, surgiu a idéia de interconectar super-
computadores geograficamente dispersos, localizados em diferentes instituições, usando a
tecnologia de comunicação com alta largura de banda. Estes sistemas de computação
20
-
de alto desempenho, distribúıdos em redes de escala mundial, tornaram-se uma maneira
inovadora de compartilhar recursos computacionais entre várias instituições de forma a
maximizar o uso dos recursos e permitir a construção de uma coleção de máquinas ainda
mais poderosa. Assim, a comunidade cient́ıfica de Computação de Alto Desempenho uniu
esforços com a comunidade de Sistemas Distribúıdos, criando uma linha de pesquisa que
passou a ser chamada de Computação em Grade (Grid Computing) (GOLDMAN e KON,
2008).
As grades computacionais podem ser definidas, de uma forma mais detalhada, como
sendo: um conjunto de hardware e de software que possibilita a integração de recursos
dispońıveis nos ambientes de diferentes instituições de forma dinâmica. Essa integração
pode ser utilizada para prover o compartilhamento de ciclos de processadores, memória
RAM, espaço em disco, acesso a banco de dados, softwares, além de garantir a segurança
e a qualidade do serviço oferecido, tudo de forma transparente ao usuário.
Os sistemas de Grade possuem algumas caracteŕısticas que os diferenciam de outras
tecnologias de processamento distribúıdo, no qual podemos destacar (DASILVA, 2004):
• Heterogeneidade: uma grade deve ser capaz de congregar equipamentos diferentes
entre si, de forma a fazê-los trabalhar em conjunto na execução de uma aplicação;
• Alta Dispersão Geográfica: esta caracteŕıstica se refere ao potencial de utilizar
equipamentos que não estão fisicamente próximos. Com isso, uma grade pode ser
composta por equipamentos de várias partes do mundo, aumentando a colaboração
entre as instituições e a distribuição global dos dados;
• Compartilhamento: uma Grade deve ser capaz de compartilhar recursos e dados;
• Múltiplos domı́nios administrativos: podem ser compostas por equipamentos de
várias instituições, com administração totalmente independente;
• Controle Distribúıdo: não existe uma entidade única que tenha o controle sobre
toda a Grade;
• Disponibilização de serviços não triviais: As Grades devem ser capazes de coordenar
a utilização de recursos de forma estruturada, para assim, atender às necessidades
de execução das aplicações;
21
-
• Redução de Custos: com o uso da Grade, houve uma senśıvel redução no custo de
aquisição de equipamentos por se utilizar de recursos ociosos e dispersos.
2.4 CLOUD COMPUTING
Achar uma definição correta para o significado do termo Cloud Computing - computação
em nuvens - ainda é dif́ıcil, pois opiniões ainda estão sendo formadas, porém algumas
já são bastante plauśıveis. Pode-se utilizar o conceito de Cloud pela definição de Foster
(FOSTER et al., 2008):
“Cloud Computing é um paradigma de computação em larga escala, em que
um conjunto abstrato, virtualizado, dinamicamente escalável de poder de pro-
cessamento, armazenamento, plataformas e serviços são disponibilizados sob
demanda para clientes externos através da Internet, e que tem como foco
proporcionar economia de escala.”
Outra definição segundo Vaquero (VAQUERO et al., 2009) e (STANOEVSKA-SLABEVA
e RISTOL, 2010):
“As nuvens são um grande número de recursos agrupados, virtualizados, facil-
mente utilizáveis e acesśıveis (como hardware, plataformas de desenvolvimento
e/ou serviços). Esses recursos podem ser reconfigurados dinamicamente para
ajustar a uma carga variável (escala), além de permitir uma melhor utilização
dos recursos. Esse conjunto de recursos é normalmente explorado por meio de
um sistema de pagamento em função do uso no qual as garantias são oferecidas
pelo Provedor de Infra-estrutura por meio de SLAs personalizados.”
O termo “nuvem” está associado a estrutura/elasticidade das nuvens, ou seja, as nu-
vens não tem forma definida: elas possuem tamanho, volume e cores diferentes. Em
analogia, as empresas ganham flexibilidade como este ambiente ao permitir que elas au-
mentem ou diminuam de acordo com as suas necessidades.
Em outras palavras, com o cloud computing, tudo o que o usuário precisa ter é: acesso
à internet, preferencialmente banda larga, e um terminal para exibir suas requisições.
Todo o resto, ou seja, tudo referente ao poder computacional, processamento e armazena-
mento de dados, ficam nas “nuvens” e não mais no computador pessoal do usuário, e são
acessados (obtidos) através da internet.
22
-
Dessa forma, o usuário não precisa mais se preocupar com a instalação de softwares
e aplicativos, com especificações técnicas, questões operacionais, licença de uso, adquirir
novos equipamentos, contratar e treinar pessoas. Todas essas caracteŕısticas serão disponi-
bilizadas na “nuvem” pela empresa contratada para prestar esses serviços. A partir desse
momento, a empresa prestadora de serviço passa a ser a responsável por disponibilizar
e oferecer toda a infraestrutura computacional, como o fornecimento de equipamentos,
aplicativos, assim como atualizações, manutenções e segurança.
Como descrito anteriormente, para se ter acesso a todos esses recursos, as empresas de
cloud computing usam um modelo baseado em assinatura, pay-per-use, para a prestação do
serviço. O usuário, por sua vez, paga para usar a tecnologia quando necessária, enquanto
for necessária e nem um minuto a mais.
A seguir serão apresentadas as principais caracteŕısticas do cloud (MENKEN, 2008):
• Flexibilidade: dá-se por permitir que os usuários sejam capazes de montar e al-
terar a sua infraestrutura de TI em função do modelo de negócios vigente, sem
necessariamente estar atrelado à infraestrutura anterior
• Escalabilidade: Essa catacteŕıstica permite que as empresas aluguem os servidores
à medida que for necessário, conforme a demanda de trabalho. É sabido que as
empresas processam maiores quantidades de dados em determinado peŕıodo do ano
ou em determinado momento e depois voltam a rotina normal de trabalho. Por
isso, é mais vantajoso para empresa “alugar” os servidores pelo peŕıodo que for
necessário/conveniente do que adquirir equipamentos que, no restante do tempo,
ficarão ociosos.
• Portabilidade: Pelo fato dos dados da empresa estarem nas “nuvens”, o funcionário
poderá acessá-lo/gerenciá-lo de qualquer lugar, bastando apenas ter acesso à inter-
net.
• Confiabilidade / Segurança: Essas duas caracteŕısticas preocupam os usuários do
cloud computing, uma vez que ainda existem receios sobre a integridade e a segurança
dos dados neste tipo de ambiente. Embora improvável, é posśıvel que os dados sejam
perdidos. Além disso, é posśıvel que usuários maliciosos possam ter acessos ao dados
de terceiros.
23
-
Grandes empresas como a Amazon, IBM, Microsoft e Google adaptaram-se a essa nova
tecnologia e já oferecem para os clientes seus serviços de Cloud Computing.
24
-
3 VIRTUALIZAÇÃO
O termo hoje conhecido como virtualização teve seu ińıcio nos anos de 1960, sendo
a empresa IBM a primeira a desenvolver um modelo de máquina virtual. Seu objetivo
era avaliar o compartilhamento de sistemas na busca por um melhor aproveitamento de
hardware.
Entretanto, o mercado não se mostrou interessado na técnica de virtualização, que
logo caiu em desuso, somente voltando a ter a atenção das empresas a partir de 2000,
com a evolução dos sistemas de hardware - aumento da capacidade de processamento,
memória, disco - aliada à necessidade crescente de executar simultaneamente as tarefas
computacionais com um custo cada vez menor.
Atualmente o termo virtualização é bem conhecido no mundo acadêmico e empresarial.
Porém, para um melhor entendimento do conceito de máquinas virtuais, apresentamos a
definição de (POPEK e GOLDBERG, 1974):
“Uma máquina virtual é uma duplicata eficiente e isolada de uma máquina
real”
A definição dos autores tem como base a existência de um Gerenciador de Máquinas
Virtuais (Virtual Machine Monitor -VMM), que deve possuir três caracteŕısticas funda-
mentais. A partir destas caracteŕısticas, temos uma definição do que pode ser considerado
como os requisitos para o seu gerenciador (virtualizador):
a) Deve haver um gerenciador capaz de criar um ambiente similar ao ambiente real em
que possam ser executadas as aplicações;
b) Ao serem executadas as aplicações nesse ambiente virtual, a perda de desempenho
deve ser mińıma;
c) Esse gerenciador deve possuir total controle do ambiente virtualizado.
Do acima exposto, a virtualização consiste na abstração das caracteŕısticas reais dos
recursos computacionais em um ambiente capaz de atender as necessidades espećıficas de
uma aplicação, possibilitando a sua execução e o seu uso independente do meio em que
se encontra.
25
-
Uma outra definição da técnica de virtualização segundo (CARISSIMI, 2008):
“Virtualização é a técnica que permite particionar um único sistema computa-
cional em vários outros denominados de máquinas virtuais. Cada máquina
virtual oferece um ambiente completo muito similar a uma máquina f́ısica.
Com isso, cada máquina virtual pode ter seu próprio sistema operacional,
aplicativos e serviços de rede (Internet).”
Sendo assim, a técnica de virtualização permite que a partir de uma única plataforma
f́ısica sejam executados vários SO, ou seja, um sistema operacional hospedeiro suporta a
execução de vários SO convidados ao mesmo tempo e de forma isolada, conforme a figura
3.1. Com isso, é posśıvel ter em um mesmo computador f́ısico vários ambientes virtuais
diferentes, cada um executando seus respectivos sistemas operacionais e aplicações.
FIG. 3.1: Exemplo de Virtualização de Plataformas
Assim, o usuário pode criar ambientes personalizados, configurando, para isso, os
requisitos de HW e SW da máquina para atender da melhor forma a sua necessidade. Isso
permite a criação de um ambiente dinâmico e flex́ıvel - aproveitando o máximo dos recursos
computacionais ociosos por meio do seu compartilhamento - diminuindo a necessidade de
adquirir novos equipamentos, facilitando o suporte e a manutenção e alcançando, dessa
forma, um número maior de plataformas de software sem ter um aumento no número de
plataformas de hardware.
Além disso, os ambientes criados pelos usuários são executados de forma isolada e
independente. Esse isolamento permite um ńıvel maior de segurança, pois uma máquina
26
-
virtual não consegue acessar os dados de outra máquina virtual e nem interferir em sua
execução.
Existem alguns termos técnicos comuns na virtualização que devem ser esclarecidos,
quais sejam:
• Monitor de Máquinas Virtuais (Virtual Machine Monitor - VMM) ou
hypervisor : é o responsável por criar as máquinas virtuais e por geren-
ciar a distribuição dos recursos de hardware, tais como, processadores,
memória, dispositivos de entrada e sáıda para cada MV, criando um am-
biente virtual isolado para cada um.
• Máquina Virtual (MV): é o ambiente criado pelo VMM para cada SO con-
vidado. Cada MV criada usa uma porção dos recursos reais da máquina
f́ısica e são executadas de forma isolada e independentes, permitindo as-
sim que o mesmo computador f́ısico seja compartilhado criando a ilusão
da existência de vários computadores.
A virtualização se tornou uma importante ferramenta de otimização de recursos ao
permitir a consolidação de servidores que fazem uso eficiente do poder de processamento,
ou seja, ao invés de se ter vários computadores cada um com seus respectivos SO e
executando aplicações espećıficas, tem-se um único computador hospedando várias MV,
cada uma com suas respectivas aplicações e SO. Segundo (MASINA, 2008), a média
de utilização dos servidores em um ambiente corporativo é de 5% a 40%, deixando, no
mı́nimo, 60% da capacidade dos equipamentos ociosa.
Além de aproveitar ao máximo o desempenho do processador ao permitir que vários SO
executem simultaneamente no mesmo HW, é posśıvel reduzir os custos com a manutenção,
espaço f́ısico e utilização de energia.
Outra caracteŕıstica interessante que o uso da virtualização traz é a compatibilidade
aliada à flexibilidade e à portabilidade. A compatibilidade se traduz no sentido de poder
executar qualquer software em qualquer ambiente computacional. Um bom exemplo disso
são as aplicações que, desenvolvidas para rodar em uma determinada plataforma, muitas
vezes não funcionarão em outra plataforma, obrigando o usuário a ter um equipamento
espećıfico para tanto. Com a virtualização, podemos ter a convivência e a execução de
diversos ambientes e aplicações. Em relação a flexibilidade, é posśıvel criar ambientes
para desenvolvimento e teste de softwares, no qual esses testes poderão ser aplicados em
27
-
vários sistemas operacionais sem, entretanto, dispor de uma plataforma f́ısica dedicada
para esses fins, e sem comprometimento do sistema operacional original da máquina ou
de sua integridade f́ısica.
A seguir são apresentadas as principais caracteŕıstica e vantagens da virtualização
(LAUREANO, 2006):
• Facilitar o aperfeiçoamento e testes de novos sistemas operacionais e aplicações;
• Facilitar o gerenciamento, migração e replicação de computadores, aplicações ou
sistemas operacionais;
• Prover um serviço dedicado para um cliente espećıfico com segurança e confiabili-
dade;
• Reduzir a aquisição de hardware e o custo de manutenção, suporte técnico e treina-
mento.
• Aproveitar a ociosidade das máquinas.
• Padronizar o ambiente e melhorar a segurança.
• Diminuir o tempo de recuperação em caso de desastres.
• Permitir melhor disponibilidade com menos redundância.
• Melhorar a segurança e a confiabilidade em todo o sistema ao isolar múltiplas ca-
madas de software em uma MV. A segurança pode ser garantida porque invasões
ficam confinadas na MV em que ocorreu, enquanto a confiabilidade aumenta, pois
as falhas de software em uma MV não afetam as outras MVs.
• Simular a existência de várias placas de rede.
• Simular a quantidade de processadores.
• Utilizar vários sistemas operacionais simultaneamente.
• Simular configurações e situações de hardware
A tecnologia de virtualização evoluiu consideravelmente nos últimos anos. Dada a
sua importância e a sua aplicabilidade em diversas áreas, foram realizados grandes inves-
timentos tanto no desenvolvimento de processadores dedicados à virtualização como no
28
-
desenvolvimento de software. Porém, há ainda alguns desafios a serem superados como
o compartilhamento eficiente de memória entre as MV e a diminuição de sobrecarga de
controle.
Pesquisas recentes mostram que é posśıvel melhorar o consumo de memória através do
compartilhamento de páginas entre MVs que executam sistemas operacionais e aplicativos
similares (SEO, 2009). Em (GUPTA et al., 2008) são apresentadas duas outras técnicas
que podem ser utilizadas para se obter melhor uso da memória entre MV: Patching de
Páginas, no qual as páginas quase idênticas podem ter sua parte idêntica compartilhada e
patches são aplicados para reconstruir a página desejada; a outra técnica é a Compressão
de Páginas, na qual as páginas que têm probabilidade de não serem usadas num futuro
próximo são comprimidas.
3.1 TÉCNICAS DE VIRTUALIZAÇÃO
Com a evolução da tecnologia surgiram diversas formas de virtualização, tornando posśıvel,
por exemplo, a virtualização de plataformas, aplicações, redes, dispositivos de armazena-
mento, etc.
A virtualização de plataformas pode ser definida como uma partição lógica de um
sistema computacional hospedeiro, incluindo todas as camadas, desde a aplicação, sistema
operacional e seus componente f́ısicos virtualizados, conforme pode ser observado nas
figuras 3.2 e 3.3.
Dentro da virtualização de plataformas existem técnicas de virtualização das quais
duas se destacam:
a) Paravirtualizacão : O sistema operacional hospedeiro interage diretamente com o
sistema virtualizado, ou seja, a interação entre o hypervisor e o sistema operacional
virtualizado ocorre de uma forma eficiente, proporcionando, desta forma, um ganho
de desempenho considerável. Contudo, o sistema operacional a ser virtualizado pre-
cisa ser modificado para permitir que sejam inseridas instruções para comunicação
direta com a camada de virtualização. A figura 3.2 apresenta a técnica de paravir-
tualização.
A partir dessa modificação, os dispositivos de hardware são acessados por drivers
da própria máquina virtual, o que dispensa o uso de drivers genéricos. O sistema
virtualizado acessa os recursos do hardware diretamente, sem intervenção da camada
29
-
de virtualização entre o sistema operacional virtual e a máquina hospedeira. O VMM
é o responsável por monitorar o acesso e por fornecer ao sistema virtualizado todos
os limites do sistema, tais como endereços de memória que podem ser utilizados e
endereçamento em disco (LAUREANO, 2006).
A paravirtualização, embora seja mais complexa, devido a necessidade de modi-
ficação no SO convidado, obtém um melhor desempenho. Existem, porém, dois
pontos considerados como restritivos: a necessidade de modificações no sistema o-
peracional convidado e a perda de portabilidade ocasionada pela modificação.
FIG. 3.2: Exemplo de Para-Virtualização
b) Virtualização Total : A virtualização total fornece uma abstração total do sistema
hospedeiro, criando um sistema virtual completo para que o SO virtualizado possa
ser executado, ou seja, o hypervisor fornece para as MVs um hardware virtual. Toda
a infra-estrutura do hardware hospedeiro é virtualizada e disponibilizada como cópia
para o sistema operacional convidado. Todo o processo ocorre sem a necessidade
de modificação do sistema operacional convidado. Na figura 3.3 é apresentada a
técnica de virtualização total.
Embora a virtualização total não exija modificações no SO hospedeiro, alguns incon-
venientes ocorrem. O primeiro é o uso de dispositivos genéricos cujo funcionamento
atende bem à maioria das plataformas virtualizadas. Entretanto, não é garan-
tido o uso total de sua capacidade, podendo ocorrer a subutilização dos recursos
dispońıveis. Além disso, há perda de desempenho, pois o monitor de máquina vir-
tual precisa interpretar cada instrução (MATTOS, 2008).
30
-
Esta técnica de virtualização é considerada simples e a grande vantagem de usá-
la é a sua compatibilidade com qualquer sistema operacional que tenha suporte à
plataforma de virtualização, sem que haja a necessidade de alterá-lo.
FIG. 3.3: Exemplo de Virtualização Total
3.2 SOFTWARES DE VIRTUALIZAÇÃO
Os softwares de virtualização são responsáveis por criar uma camada entre o Hardware e
o Sistema Operacional virtualizado (MATTOS, 2008). Essa camada, também conhecida
como Hypervisor, possibilita a criação das diversas máquinas virtuais. Eles também são
responsáveis por estabelecer os recursos de hardware que serão disponibilizados a cada
máquina virtual, além de realocá-los de acordo com a demanda de cada aplicação.
A correta escolha do software de virtualização se dará em função da necessidade de
cada usuário, podendo-se optar pelo uso de um software OpenSource ou, em casos restritos,
de um software comercial.
Com a evolução da tecnologia de virtualização inúmeras ferramentas surgiram para
auxiliar na criação e na gerência das máquinas virtuais. Entre as mais usadas atualmente
podemos citar: VMware, Xen, Microsoft Hyper-V, KVM, VirtualBox e OpenVZ.
A seguir será apresentada uma breve descrição dos principais softwares de virtualização
e suas respectivas caracteŕısticas.
31
-
3.2.1 VMWARE
A empresa VMware Inc é a criadora do VMware, que atualmente é um dos softwares de
virtualização mais conhecido para a arquitetura x86. É capaz de realizar a virtualização
total e, por isso, é bastante utilizado na virtualização do Windows (VMWARE).
3.2.1.1 XEN
Inicialmente foi desenvolvido pela Universidade de Cambridge como um projeto chamado
XenSource, tornando-se público em 2003. Nos anos seguintes foi lançada uma versão
comercial chamada XenEnterprise, baseada em hypervisor de código aberto. Em agosto
de 2007, a Citrix comprou o projeto Xen e lançou a versão 4 com a nova marca (XEN).
O Xen é uma ferramenta de software Open Source voltado para servidores, o que exige
um pouco mais de conhecimento e habilidade por parte de seus usuários, diferentemente
do que ocorre com o VMware, que se caracteriza por ser uma ferramenta de fácil utilização.
Além disso, o Xen difere do VMware por utilizar o conceito de paravirtualização o que
diminui a sua portabilidade.
O seu sistema operacional base é o Linux e o seu código fonte está liberado sob a
licença GNU. Atualmente o Xen suporta os sistemas Windows, Linux e FreeBSD.
3.2.1.2 KVM
A Red Hat é a atual responsável pelo desenvolvimento do KVM (Kernel Virtual Machine).
O KVM é um QEMU (emulador OpenSource de máquina) modificado, pois, ao contrário
deste, ele usa extensões de virtualização do processador (Intel-VT e AMD-V). O KVM
suporta um grande número de processadores baseados na arquitetura x86 e x86 64 e
permite a virtualização de sistemas operacionais convidados tais como: Windows, Linux
e FreeBSD. Ele usa o kernel do Linux como um hypervisor e funciona como um módulo
de kernel carregável (HESS e NEWMAN).
3.2.1.3 OPENVZ
O OpenVZ é uma solução de virtualização em ńıvel de sistema operacional e oferecida
através da licença GNU GPL. O ambiente virtual é criado de forma segura e isolada, pois
o OpenVZ utiliza a virtualização em containers. Esses ambientes virtuais seguros são
conhecidos como VPS (virtual private server) e são criados no mesmo servidor f́ısico, o
32
-
que possibilita uma melhor utilização do servidor e assegura que as aplicações não entrem
em conflito (OPENVZ).
OpenVZ utiliza um único kernel para as máquinas virtuais que é o do Linux e, por-
tanto, só pode executar distribuições Linux. No entanto, por ele não ter a sobrecarga
de um hypervisor de verdade, ele é mais rápido e eficiente. A desvantagem é o kernel
único em que todas as máquinas virtuais terão o mesmo Kernel que roda na máquina
hospedeira.
3.2.1.4 MICROSOFT HYPER-V
Hyper-V é a entrada da Microsoft no espaço de virtualização de servidores. O Hyper-
V, como o nome indica, é na verdade baseado em Windows hypervisor, incluindo assim,
suporte nativo para a virtualização do Windows. É uma aplicação fácil de usar e intu-
itiva, ao mesmo tempo robusta e escalável. Por ser baseado em hypervisor, o Hyper-V é
apenas uma pequena camada entre o hardware e as máquinas virtuais que gerencia todo
o acesso aos recursos f́ısicos, sem perdas significativas de desempenho, ou seja, não há
mais um software instalado no sistema operacional responsável por todo o trabalho de
particionamento e gerenciamento das máquinas virtuais (HYPER-V) e (BERTOLINO).
O Hyper-V necessita de uma plataforma de 64 bits e processador multicore. Outra
exigência é a necessidade de processadores com a tecnologia Intel VT ou AMD-V, além
de licença proprietária.
3.2.1.5 VIRTUALBOX
O VirtualBox, criado pela empresa Innotek e adquirido recentemente pela Oracle, pode
ser usado tanto para desktops como para servidores. Atualmente ele é oferecido em duas
versões: a primeira é uma versão parcialmente fechada, gratuita para uso pessoal. A
segunda é uma versão inteiramente open-source, que pode ser usada para qualquer fim e
redistribúıda livremente (MORIMOTO, 2008).
O VirtualBox é um software de virtualização bastante prático e poderoso. Pos-
sui um projeto com interfaces de programação interna bem definidas e uma interface
cliente/servidor que permite controlar várias interfaces de uma só vez, através da linha
de comando ou remotamente através do RDP (Remote Desktop Protocol). Permite a
fácil migração das MVs, pois as especificações de configuração são armazenadas em XML.
Além disso, o VirtualBox permite a troca de dados entre os hospedeiros e convidados, por
33
-
meio de pastas compartilhadas, que podem ser acessadas de dentro de máquinas virtuais
(VIRTUALBOX).
O VirtualBox usa o modelo de virtualização completa, que consiste na total abstração
do sistema operacional da máquina cliente do hardware da máquina hospedeira, deixando
que uma camada intermediária faça este tipo de compatibilização, aumentando a portabi-
lidade e simplificando a migração. Neste caso, o sistema operacional cliente não percebe
que está sendo executado em um ambiente virtual.
A tabela abaixo apresenta um comparativo entre os principais softwares de virtuali-
zação e suas principais caracteŕısticas.
FIG. 3.4: Quadro Comparativo dos Softwares de Virtualização
Analisando as caracteŕısticas anteriormente citadas e outras consideradas importantes
para a escolha de um Software de Virtualização, consideramos que as seguintes são fun-
damentais:
• Técnica de Virtualização utilizada pelo Software: Virtualização Total ou Paravirtu-
alização. A virtualização total deve ser escolhida principalmente quando a portabili-
dade for prioridade. Já a paravirtualização deve ser escolhida quando for priorizado
o desempenho. Entretanto, atentamos para o desenvolvimento em curso de bibli-
otecas para a virtualização total que melhoram o desempenho dos dispositivos de
34
-
I/O. Enfatizamos, também, que ambas as técnicas acimas citadas passaram a uti-
lizar recursos de instruções dedicadas à virtualização existentes nos processadores
(Hardware Assisted). Essas instruções têm como objetivo melhorar o desempenho
das MVs.
• Forma de Utilização da Memória: deve possuir técnicas de compartilhamento de
memória (uso de uma determinada área da memória por mais de uma MV) con-
tribúındo, dessa forma, para a otimização dos recursos.
• Capacidade de Migração das MVs: deve permitir a migração das MVs entre os
servidores possibilitando, assim, o balanceamento de carga e a recuperação de falhas.
• Código Aberto: permitindo tanto a customização quanto a auditabilidade. O
primeiro na forma de integrar o gerenciador de máquinas virtuais à aplicações dedi-
cadas. O segundo pela possibilidade de efetivamente obter o controle do gerenciador
e a verificação das ações executadas.
Após uma análise comparativa entre os softwares de virtualização, optou-se por utilizar
como plataforma de virtualização para o desenvolvimento deste projeto o VirtualBox. A
justificativa da escolha é apresentada a seguir:
a) Suporta um maior número de plataformas Hospedeira (Windows, Linux e Solaris
tanto para i386, quanto para AMD64 e OS X, para Intel);
b) O software é facilmente instalado e não necessita de alteração no ambiente original
da máquina Hospedeira;
c) OpenSource (GNU General Public License, Version 2);
d) Possui a capacidade de utilizar os recursos de virtualização dos novos processadores
AMD e INTEL nas tecnologias AMD-V e Intel VT-x. A sua última versão dá
suporte total aos processadores de 64 bits, tanto para o Hospedeiro quanto para a
máquina Cliente.
3.3 VIRTUALIZAÇÃO DOS SISTEMAS DISTRIBUÍDOS
A virtualização também ganhou destaque na área de sistemas distribúıdos, permitindo
que os ambientes de Grades e Cluster fossem virtualizados. A seguir será apresentado
35
-
um resumo dos benef́ıcios da virtualização em cada área de sistemas distribúıdos, a saber:
Grade, Cluster e Cloud.
”Não virtualizar o poder computacional passa a ser tão estranho quanto pensar
que cada residência seja responsável por administrar sua própria planta de
energia elétrica, reservatório de água e fontes de informação - como televisão,
jornal, revista e Internet. Então, por que seria diferente para a computação?
(NASSIF, 2006).“
A possibilidade de virtualização de plataformas em uma grade computacional traz uma
série de vantagens, principalmente em relação à otimização de recursos. Com a virtua-
lização, é posśıvel encapsular tanto o sistema operacional (SO), quanto os middlewares
e serviços que servem para estruturar uma Grade em uma Máquina Virtual, aprovei-
tando melhor a capacidade de processamento atualmente ociosa em diversos equipamen-
tos. Além disso, é posśıvel disponibilizar recursos, antes indispońıveis, ao possibilitar
que diferentes plataformas computacionais como Windows, Solaris e distribuições LINUX
possam ser usadas em ambientes de grade sem que seja necessário alterá-los, permitindo
assim, que uma grande quantidade de capacidade computacional e de armazenamento
seja disponibilizada e incorporada.
Outro benef́ıcio da virtualização de grade diz respeito à criação das Organizações
Virtuais (VOs). As VOs são grupos de pesquisadores que atuam em conjunto em um
determinado assunto e que por tal razão necessitam de recursos espećıficos. A virtuali-
zação permite atender às necessidades espećıficas desse grupo de usuários ao possibilitar
que estes possam criar máquinas virtuais personalizadas, configurando suas caracteŕısticas
de hardware e software como: número de núcleos, quantidade de memória f́ısica, espaço
em disco disponibilizado. Desta forma, o gerenciamento do ambiente bem como a con-
figuração, instalação e manutenção tornam-se um processo mais fácil, além de atender às
necessidades de cada usuário e preservar o ambiente f́ısico.
Além das vantagens acima citadas existem outras como escalabilidade - possibilitando
o uso de diferentes plataformas e o uso de recursos ociosos; segurança - possibilita o
isolamento entre a MV e a Máquina real; tolerância a falhas - em caso de falha da máquina
real, é posśıvel migrar a MV para outro recurso. Com isso, uma máquina virtual associada
à grade pode estar hoje sendo executada em um recurso e amanhã, por necessidades
diversas, ser executada em outro recurso, com o mı́nimo de esforço e de tempo.
36
-
De maneira análoga, um ambiente de cluster computacional também se beneficia com
as técnicas de virtualização. Podemos citar como vantagens a possibilidade de se criar um
cluster virtual para testes e simulações de uma determinada aplicação sem interferir no
ambiente real do cluster, o que facilita, assim como no ambiente de grade, o gerenciamento,
a configuração e manutenção dos recursos.
Além disso, a virtualização se torna uma solução para o gerenciamento de recursos
compartilhados entre os diversos usuários, permitindo o compartilhamento dos nós f́ısicos.
E ainda, através da consolidação de diversos serviços em um mesmo servidor, possibilita
reduzir os gastos de energia do cluster. O compartilhamento de clusters, associado à
crescente disponibilidade de poder computacional e à habilidade das máquinas virtuais
de garantir o isolamento entre as diversas instâncias, provocou o surgimento de ambientes
computacionais como o EC2 (DEAMORIM et al., 2009).
No que tange à recente tecnologia de cloud computing, a virtualização não só pro-
porciona vantagens como é considerada um dos componentes-chave. Uma das principais
caracteŕısticas de cloud é a elasticidade que oferece serviços e aplicações à medida que
são necessários, como no caso dos Data Centers, que provêem uma rede de serviços que
são utilizados à medida que são requeridos. Logo, a distribuição desses serviços entre os
usuários pode ser rapidamente alterada, o que exige um suporte para tal dinamismo. A
virtualização é o componente responsável pela caracteŕıstica dinâmica dos data centers,
ou seja, ela permite que os ambientes virtuais de cada usuário possam ser ampliados ou
reduzidos dinamicamente de maneira a atender aos recursos solicitados. É importante
verificar que, com a virtualização, as aplicações e os serviços podem ser desenvolvidos
e implantados sem que haja a preocupação em relação à camada f́ısica dos servidores
(CHIRIGATI, 2009).
37
-
4 REVISÃO DA LITERATURA
Para a realização da proposta, foram estudados alguns trabalhos existentes na lite-
ratura que abordam, de alguma forma, o conceito de Virtual Cluster e que analisam o
impacto do uso da virtualização em ambientes de HPC.
Serão apresentados, a seguir, trabalhos relacionados a esse tema, descrevendo suas
principais caracteŕısticas. Esses trabalhos foram organizados nos seguintes tópicos: a
contribuição da virtualização para Grades e Clouds ; o uso de recursos virtualizados em
apoio a computação de alto desempenho; e possibilidade e uso de Clusters virtualizados.
4.1 A CONTRIBUIÇÃO DA VIRTUALIZAÇÃO PARA GRADES E CLOUDS
O uso de computação intensiva em apoio à pesquisa e ao processamento de grande quan-
tidade de dados cient́ıficos exige utilização colaborativa dos recursos. A infraestrutura
para o tratamento desse tipo de informação e as ferramentas para auxiliarem nessa tarefa
devem possibilitar que seus usuários (e-scientists) as utilizem de forma transparente. A
otimização do uso dos recursos em grandes centros de HPC e sua integração com a in-
fraestrutura de e-Science apresentam desafios, destacando-se a necessidade de algoritmos
mais efetivos para o processamento da informação e o uso racional dos recursos, caracte-
rizados pela necessidade de ferramentas e códigos mais eficientes e escaláveis, capazes de
melhor aproveitar o crescente aumento do número de núcleos em um único processador
(RIEDEL et al., 2007).
A experiência obtida com o uso da Grade serviu de base para um modelo de com-
putação distribúıda mais flex́ıvel e adequado às necessidades espećıficas dos usuários.
Além disso, permitiu um avanço em termos de computação utilitária e, ao incorporar a
arquitetura aberta de serviços de Grid (OGSA), motivou o aparecimento de uma nova
estratégia baseada no encapsulamento e na oferta de serviços. Essa abordagem reforça
o conceito de elasticidade na demanda de recursos computacionais, em que a variação
dessa necessidade é acompanhada pela correspondente variação na alocação. Apesar de a
tecnologia de Grade poder ser utilizada em uma ampla variedade de aplicações comerciais
e de seu sucesso na área acadêmica, sua evolução não alcançou plenamente os benef́ıcios
inicialmente pretendidos, como a escalabilidade, a facilidade de uso, a configuração e o
38
-
gerenciamento (STANOEVSKA-SLABEVA et al., 2009).
Surge assim, como resposta a essas necessidades, o modelo de Cloud. Este se ca-
racteriza por ser um modelo econômico e de negócios que apresenta grande flexibilidade
de recursos, permitindo que até mesmo as pequenas corporações possam ser capazes de
se manterem atualizadas e competir em condição de igualdade com corporações maiores
(STANOEVSKA-SLABEVA et al., 2009).
Segundo (FOSTER et al., 2008) tanto Grid quanto Cloud procuram reduzir o custo da
computação, aumentando a confiabilidade, a flexibilidade e transformando o conceito de
computação de “algo” que se compra e que nós operamos em “algo” operado por terceiros.
Ambas as infraestruturas têm as mesmas necessidades, tanto em termos de gerenciamento
de recursos, quanto pelo fato de permitirem que seus usuários possam utilizá-los em toda a
sua capacidade. Contudo, a evolução que o Cloud representa está na mudança do foco de
uma infraestrutura que fornece recursos computacionais para uma baseada em economia
de escala, fornecendo recursos/serviços de forma mais abstrata a seus usuários.
Com base no exposto anteriormente, é de grande importância atentar para o con-
ceito de Virtual Workspace apresentado por (KEAHEY et al., 2005a), que consiste em
disponibilizar de forma automática recursos e prover o ambiente de execução que atenda
às necessidades do usuário. Percebe-se que uma das principais ferramentas dos cenários
acima descritos é a virtualização de recursos que, apesar de ser um conceito utilizado
há bastante tempo, teve suas funcionalidades ampliadas e seu uso difundido nos últimos
anos. Tal fato se deve ao desenvolvimento tecnológico alcançado sobretudo pelos avanços
na arquitetura de processadores e pelo aumento da capacidade de rede. No caso dos
processadores, houve não só o aumento da capacidade de processamento, mas também a
implementação de instruções dedicadas à virtualização de recursos.
Em sintonia com a evolução tecnológica, vários aspectos motivaram e aceleraram o uso
da virtualização nos últimos anos, tais como: a capacidade de consolidação de servidores,
inclusive auxiliando a continuidade na utilização de sistemas legados; a confiabilidade,
padronização e a velocidade na disponibilização de novos recursos/plataformas; a atua-
lização, tanto de hardware, quanto de aplicações sem a necessidade de interrupções em
serviços e servidores; e a segurança, por permitir a configuração de ambientes de testes,
desenvolvimento e treinamento sem o comprometimento direto dos recursos em produção
(DITTNER e RULE, 2007). Há, no entanto, algumas limitações que ainda persistem,
podendo ser citadas a necessidade de um gerenciamento cuidadoso do ńıvel de compro-
39
-
metimento/carga das máquinas hospedeiras, a correta avaliação e controle do que pode
ser executado/transposto para uma máquina virtual e a mudança de paradigma na ad-
ministração e organização dos recursos virtualizados.
4.2 O USO DE RECURSOS VIRTUALIZADOS EM APOIO A COMPUTAÇÃO DE
ALTO DESEMPENHO
Em (MERGEN et al., 2006), argumenta-se que o uso da virtualização em HPC possibilita
tanto a configuração dedicada dos sistemas quanto a manutenção de compatibilidade com
sistemas legados, ou seja, a coexistência nos mesmos recursos. A extensão do número de
máquinas virtuais permite, por exemplo, que o Monitor de Máquinas Virtuais (VMM)
apresente, para um cluster virtual, a ideia da existência de inúmeros nós virtuais em
poucos nós reais, permitindo que um teste em escala real de aplicações, tipo MPI, possa
ser feito mesmo na presença de poucos recursos, ainda que estes estejam sendo utilizados
por outras aplicações.
Os autores defendem, ainda, que o custo da virtualização em si e o benef́ıcio sob o
ponto de vista do desempenho que ela realmente oferece são fatores que devem ser leva-
dos em consideração. Levantam o questionamento quanto aos requisitos necessários ao
desenvolvimento de um VMM espećıfico para o uso em HPC (tamanho das páginas de
memória, escalonamento dos recursos virtualizados, mecanismos de DMA e alto desem-
penho em termos de I/O, balanceamento de carga, preempção e migração).
Em (EVANGELINOS e HILL, 2008) temos a análise de um Provedor/Sistema de
Cloud (Amazon EC2), utilizado para a configuração de um cluster virtual. Os autores
avaliaram que é viável esse tipo de solução, principalmente quanto à facilidade de uso e
à disponibilização de sistemas que meçam seu impacto nos paradigmas de HPC. Assim
sendo, constataram que a solução de recursos “sob-demanda”, associados à customização
com foco na solução de um problema/cenário espećıfico e gerenciados no momento dese-
jado, é vantajosa mesmo que com perda de desempenho.
(RANADIVE et al., 2008) argumentam que a virtualização tem se mostrado uma
ferramenta eficaz para o tratamento de falhas em equipamento, aumentando a porta-
bilidade das aplicações e auxiliando na descoberta e correção de falhas em algoritmos
complexos. Todavia, pesquisadores mostram-se relutantes em utilizá-la em aplicações de
HPC. Apontam, nesse sentido, dois fatores: o primeiro se deve em parte ao desejo de
quererem explorar todas as capacidades dos recursos e plataformas; o segundo, conside-
40
-
rado o mais importante, é a resistência quanto ao compartilhamento de recursos e seu
efeito na degradação do ńıvel de desempenho.
Fatores também apontados por (GAVRILOVSKA et al., 2007) incluem: a deter-
minação efetiva do ńıvel de perda aceitável introduzida pela virtualização; a solução de
problemas de inconsistência em relação ao hardware ou aplicações e o impacto do uso das
plataformas com multiplos núcleos. (RANADIVE et al., 2008) conclui que, dependendo
do tipo de interação entre as aplicações e o ńıvel de comunicação (I/O) efetuado na solução
de aplicações utilizando MPI, mostra-se mais vantajoso associar cada máquina virtual a
um núcleo, como componentes separados dentro de uma mesma plataforma.
(BRANDT et al., 2009) alerta que, apesar das promessas propagadas pelo uso de
Cloud, para um ambiente de HPC é necessária a existência de uma gerência que auxilie
o usuário tanto na escolha dos recursos a serem alocados quanto na análise a posteriori.
Essa análise tem por fim otimizar este ambiente virtual em utilizações futuras, devendo
ser capaz de responder a parâmetros adicionais e ajustá-los dinamicamente, mesmo em
tempo de execução. De forma análoga, ela deve expor os parâmetros de avaliação e
essa devem ser realizadas nos recursos virtuais e reais, possibilitando aos provedores de
recursos/serviços oferecer um melhor ńıvel de qualidade de serviços a seus usuários.
4.3 POSSIBILIDADE E USO DE CLUSTERS VIRTUALIZADOS
Os autores em (ZHANG et al., 2005) salientam que atualmente a maioria das implantações
significativas de Grade, como Grid3 ou Open Science Grid, dependem de clusters para
fornecer uma plataforma de computação poderosa para suas comunidades de usuários.
Entretanto, surgem problemas quando VO possuem requisitos de ambiente de execução e
configuração que não são compat́ıveis com as bibliotecas instaladas e quando conjuntos de
ferramentas são potencialmente incompat́ıveis entre as VO. Embora essa incompatibili-
dade possa ser resolvida através do particionamento de um cluster e instalação automática
de um certo conjunto de bibliotecas e ferramentas, outros problemas de compartilhamento
como o isolamento e o compartilhamento de controle e aplicações dedicadas ainda persis-
tem.
No trabalho supracitado, os autores mostram como as máquinas virtuais oferecem uma
plataforma promissora para Grades Computacionais. Devido a sua própria natureza, a
virtualização de hardware permite a instanciação de um novo ambiente convidado inde-
pendente do ambiente do recurso que lhe serve de hospedeiro. Além disso, oferece os
41
-
benef́ıcios de isolamento e execução de aplicações em um ambiente particularizado que,
associada a capacidade de serialização na criação de novos ambientes virtuais e o de mi-
gração destes ambientes entre hospedeiros, vem a oferecer uma maior flexibilidade para
as Grades.
Para tirar proveito dessa nova tecnologia de computação voltada ao uso em Grade, os
autores reforçam o conceito de Virtual Workspace e o uso de clusters virtuais, os quais
podem ser configurados, gerenciados e implantados em um ambiente de Grade de forma
a atender a uma necessidade espećıfica do usuário.
Ainda na mesma obra, outro conceito relevante é a proposta de um padrão de metada-
dos em que sejam especificadas as necessidades em termos de recursos para as máquinas
virtuais. Percebemos, então, que este conceito quando visto à luz do padrão OpenVM
(Open Virtual Machine Tools), permite pensar na unificação desses dois em aux́ılio a um
gestor de recursos para cluster ou mesmo interpretando o cluster como um appliance. As
informações contidas nesses dois padrões permitiriam que o gestor buscasse por recursos
e por conjunto de máquinas virtuais já instanciadas pasśıveis de se tornarem novos nós
de trabalho em função da demanda.
De maneira análoga, propõem que a arquitetura possua dois ńıveis, um que gerencie
os espaços de trabalho virtuais e outro que gerencie a alocação de recursos nesses espaços.
No conjunto de testes realizados, os autores se dedicaram a analisar o tempo de inici-
alização das máquinas virtuais e o gerenciamento de imagem (alocar a imagem ao recurso
correspondente). Seus resultados nos mostram que a maior restrição a este tipo de ar-
quitetura reside no tempo necessário para a alocação da imagem no recurso f́ısico. Para
reduzir este tempo, sugerem o uso de imagens pré-configuradas nos recursos e sua respec-
tiva clonagem na medida que sejam necessárias. Entretanto, tal solução só é plauśıvel
para as imagens não inicializadas.
Apresentaram, também, o custo em termos de tempo para a inicialização de clusters
com número de nós variados, ou seja, o custo aumenta proporcionalmente ao número de
nós.
Quanto ao uso de dois clusters utilizando os mesmos recursos, observaram a im-
portância de que cada máquina virtual seja alocada, no caso de máquinas com múltiplos
núcleos, uma para cada núcleo, sob pena de uma perda de desempenho de cerca de 150%.
Na presente dissertação, faz-se uma análise detalhada quanto ao uso de três clusters
simultaneamente em um mesmo recurso, deixando a cargo do SO da máquina hospedeira
42
-
gerenciar a carga entre os núcleos e, como será visto mais adiante, esta perda foi signi-
ficativamente menor (caṕıtulo 6) .
Ainda na proposta aqui apresentada, o problema da alocação das imagens foi solu-
cionado pelo uso de RAMDisK e pelo carregamento dos sistemas e aplicações dos nós de
trabalho pela rede, tornando, assim, desnecessária tanto a cópia quanto a alocação prévia
da imagem. No caso do custo de comunicação, obtivemos um resultado semelhante ao
obtido por (ZHANG et al., 2005) e encontra-se detalhado no (caṕıtulo 6) com um custo
que variou de 0% a 50%, motivado pelo tamanho da mensagem utilizada nos testes de
desempenho e pela latência da interface de rede virtual.
Em (SELVI et al., 2008), propõe-se a criação de um cluster virtual de forma dinâmica
(VCDE), proporcionando um ambiente de execução de Grade que usa máquinas virtuais.
Para tanto, é instalado e preparado, em tempo de execução, o middleware Globus no
cluster virtual e o ambiente de software desse cluster, criando, assim, dinamicamente, um
ambiente de execução sem intervenção humana.
O processo de instalação e configuração do Globus Toolkit e seus pré-requisitos é feito
automaticamente invocando um script. O VCDE também automatizou o processo de
criação do ambiente da Grade para que este pudesse executar qualquer aplicação MPI
ou seqüencial. Para isso, o usuário acessa o portal de submissão e envia os seus Jobs
juntamente com as exigências de hardware e software necessárias para sua execução.
Todavia, a proposta dos autores para a criação de um cluster virtual ficou restrita
ao fato de tal cluster formar-se dentro de um único recurso da Grade, ou seja, todos
os nós virtuais do cluster são inicializados dentro de um mesmo servidor f́ısico. Além
disso, o ambiente é totalmente dependente da instalação e suporte do GT4, sendo este
responsável pelos processos de autenticação e autorização dos hosts e usuários e também
pela submissão das tarefas.
Na obra (BUTLER et al., 2005) os autores reforçam a necessidade de desenvolver um
sistema para criação de clusters virtuais no qual o usuário pode facilmente configurar o seu
cluster virtual, sem ter amplo conhecimento ou experiência com esse tipo de ambiente. O
objetivo é facilitar a criação de cluster para experimentos a curto prazo com configurações
de hardware personalizadas.
Para agi