ministerio da defesa´ curso de mestrado em sistemas e...

101
MINIST ´ ERIO DA DEFESA EX ´ ERCITO BRASILEIRO DEPARTAMENTO DE CI ˆ ENCIA E TECNOLOGIA INSTITUTO MILITAR DE ENGENHARIA CURSO DE MESTRADO EM SISTEMAS E COMPUTAC ¸ ˜ AO THAIS CABRAL DE MELLO AMBIENTE PARA CRIAC ¸ ˜ AO DE CLUSTERS VIRTUAIS EM GRIDS COMPUTACIONAIS Rio de Janeiro 2010

Upload: others

Post on 27-Jan-2021

2 views

Category:

Documents


0 download

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