CENTRO ESTADUAL DE EDUCAÇÃO TECNOLÓGICA PAULA SOUZA FACULDADE DE TECNOLOGIA DE LINS PROF. ANTÔNIO SEABRA CURSO SUPERIOR DE TECNOLOGIA EM REDES DE COMPUTADORES MAURICIO GIMENEZ VIRTUALIZAÇÃO: DESCRIÇÃO DA TECNOLOGIA E DEMONSTRAÇÃO DAS SOLUÇÕES VMWARE E CITRIX LINS/SP 1º SEMESTRE/2012 CENTRO ESTADUAL DE EDUCAÇÃO TECNOLÓGICA PAULA SOUZA FACULDADE DE TECNOLOGIA DE LINS PROF. ANTÔNIO SEABRA CURSO SUPERIOR DE TECNOLOGIA EM REDES DE COMPUTADORES MAURICIO GIMENEZ VIRTUALIZAÇÃO: DESCRIÇÃO DA TECNOLOGIA E DEMONSTRAÇÃO DAS SOLUÇÕES VMWARE E CITRIX Trabalho de Conclusão de Curso apresentado à Faculdade de Tecnologia de Lins para obtenção do Título de Tecnólogo em Redes de Computadores. Orientador: Prof. Me. Alexandre Ponce de Oliveira LINS/SP 1º SEMESTRE/2012 MAURICIO GIMENEZ VIRTUALIZAÇÃO DESCRIÇÃO DA TECNOLOGIA E DEMONSTRAÇÃO DAS SOLUÇÕES VMWARE E CITRIX Trabalho de conclusão de Curso apresentado à Faculdade de Tecnologia de Lins, como parte dos requisitos necessários para obtenção do título de Tecnólogo em Redes sob orientação do Prof. Me. Alexandre Ponce. Data de aprovação: ____/____/____ ________________________________ Alexandre Ponce ________________________________ Examinador 1 ________________________________ Examinador 2 Aos meus pais, Joaquim e Maria Ignês. Aos meus irmãos Márcia, Marcos, Milton e Marcelo e à minha esposa Michelly, pelo apoio incondicional nesta etapa de minha vida. AGRADECIMENTOS Nesta oportunidade que me é dada ao alcançar importante meta em minha vida pessoal e profissional, agradeço primeiramente a DEUS por me fazer estar aqui e por ter colocado pessoas em minha vida que me ajudaram a ser quem sou hoje. Aos meus amigos de trabalho os quais sem seu apoio e incentivo, eu não teria ingressado na faculdade. Aos meus companheiros de curso pela ajuda com as matérias iniciais, das quais eu não me recordava mais após 15 anos fora das salas de aula. Aos professores por apostarem nesta faculdade e oferecerem seu máximo para que esta venha a ficar entre as melhores. E pelos seus exemplos que nos são passados, que contribuem em muito ao nosso crescimento pessoal e profissional. Ao meu orientador Alexandre Ponce, pela ajuda com os materiais e pelo direcionamento que me foi dado. À professora Luciane Noronha pela ajuda com as correções e principalmente por nos fazer acreditar em nosso potencial. RESUMO Este trabalho apresentou o conceito da virtualização, cada vez mais utilizado em empresas que visam diminuição de custos e alta disponibilidade de serviços, contribuindo para uma maior competitividade no seu mercado de atuação. Apresentou um histórico da informática como um todo, desde as máquinas de calcular manualmente como o Ábaco e os primeiros conceitos do que pode ser considerado um computador, passando pelos computadores a válvula e os computadores de grande porte nos quais se começou a utilização da virtualização, até chegar aos PCs, tão populares atualmente, juntamente com a evolução dos principais sistemas operacionais que deixaram sua marca na história da informática cujo desenvolvimento viabilizou a tecnologia conhecida atualmente. Para auxiliar no entendimento da virtualização, foi abordado o funcionamento de um computador e suas rotinas internas, como o gerenciamento de memória, controle e prioridade de processos e comunicação com dispositivos de hardware internos e externos. Este trabalho mostrou as empresas pioneiras na viabilização da virtualização em computadores de mesa e servidores de pequeno porte, e as soluções profissionais mais conhecidas atualmente. Para uma visão real de aplicação do conceito de virtualização, foi demonstrado a instalação das soluções VMware e Citrix, os passos para a criação de máquinas virtuais, e também o processo de mapeamento de Storage, item essencial para virtualização profissional, bem como a conversão de uma máquina real para virtual e a movimentação de uma VM em funcionamento entre os servidores que compõem o ambiente criado, através de ferramentas oferecidas pelas próprias soluções. Palavras-chaves: Virtualização, VMware, Citrix. ABSTRACT This paper presented the concept of virtualization, increasingly used in companies seeking to lower costs and high availability of services, contributing to increased competitiveness in your market. It presented a history of computing as a whole, from calculating machines manually as the abacus and the first concepts that can be considered a computer, through the valve computers and mainframe computers in which they began the use of virtualization, until the PCs, so popular today, along with the evolution of the main operating systems that have left their mark in the history of computer science whose development has enabled the technology known today. To assist in the understanding of virtualization, it was mentioned operation of a computer and its internal routines, such as memory management, control and priority of processes and communication with hardware devices internal and external. This study demonstrated the feasibility of the pioneering companies in the virtualization on desktops and small servers, and more professional solutions currently known. For a real view of application of the concept of virtualization, it was demonstrated the installation of VMware and Citrix solutions, the steps for creating virtual machines, and also the process of mapping Storage, Virtualization essential item for professional as well as the conversion of a real virtual machine and the movement of a running VM between servers that make up the environment created by the tools offered by their own solutions. Keywords: Virtualization, VMware, Citrix. LISTAS DE ILUSTRAÇÕES Figura 1.1 - O Ábaco e a Régua de Cálculo. ............................................................. 19 Figura 1.2 - Máquina de Pascal................................................................................. 19 Figura 1.3 - Máquina de Diferenças. ......................................................................... 20 Figura 1.4 - A máquina de Hollerith. .......................................................................... 21 Figura 1.5 - O ENIAC. ............................................................................................... 23 Figura 1.6 - IBM 7030. ............................................................................................... 24 Figura 1.7 - IBM 360/91. ............................................................................................ 25 Figura 1.8 - Altair 8800. ............................................................................................. 26 Figura 1.9 - Apple I. ................................................................................................... 26 Figura 1.10 - IBM PC. ................................................................................................ 27 Figura 1.11 - Steve Jobs e o novo iMac. ................................................................... 27 Figura 1.12 - Modelo de chassis Blade. .................................................................... 28 Figura 1.13 - o novo iMac. ......................................................................................... 28 Figura 1.14 - IBM 7090 executando o CTSS. ............................................................ 29 Figura 1.15 - Comando em modo texto no BSD........................................................ 30 Figura 1.16 - Sistema operacional MS-DOS. ............................................................ 30 Figura 1.17 - Sistema X Windows System. ............................................................... 31 Figura 1.18 - Macintosh OS 1.0................................................................................. 31 Figura 1.19 - MS-Windows 1.0. ................................................................................. 32 Figura 1.20 - OS/2 Warp. .......................................................................................... 32 Figura 1.21 - Windows 95.......................................................................................... 33 Figura 1.22 - Windows XP. ........................................................................................ 34 Figura 1.23 - MAC OS X............................................................................................ 35 Figura 1.24 - Windows Server 2008. ......................................................................... 35 Figura 1.25 - Windows 7............................................................................................ 36 Figura 1.26 - Ubuntu 11.10. ....................................................................................... 36 Figura 1.27 - Mac OS X Lion. .................................................................................... 37 Figura 2.1 - Arquitetura de um computador típico. .................................................... 39 Figura 2.2 - Estrutura de um sistema operacional. .................................................... 41 Figura 2.3 - Funcionamento de uma interrupção....................................................... 43 Figura 2.4 - Separação entre núcleo e aplicação. ..................................................... 45 Figura 3.1 - Uma máquina virtual. ............................................................................. 50 Figura 3.2 - Virtualização do Tipo I. ........................................................................... 51 Figura 3.3 - Virtualização do Tipo II. .......................................................................... 52 Figura 3.4 - Exemplo de virtualização de hardware. ................................................. 52 Figura 3.5 - Virtualização de sistema operacional. .................................................... 53 Figura 3.6 - Virtualização de linguagem de programação. ........................................ 53 Figura 3.7 - Arquitetura do VMware ESX. ................................................................. 63 Figura 3.8 - Arquitetura do VMware ESXi. ................................................................. 63 Figura 3.9 - Live Migration com vMotion. .................................................................. 64 Figura 3.10 - Relacionamento entre os componentes do Xen................................... 67 Figura 4.1 - Esquema do ambiente utilizado. ............................................................ 71 Figura 4.2 - Informações necessárias para conexão. ................................................ 72 Figura 4.3 - Visualização do sumário de informações do servidor. ........................... 73 Figura 4.4 - Opções para administração e gerenciamento. ....................................... 73 Figura 4.5 - Início da adição do Storage. .................................................................. 74 Figura 4.6 - Escolha do tipo de armazenamento que será utilizado. ......................... 74 Figura 4.7 - Informações para o mapeamento. ......................................................... 75 Figura 4.8 - Resumo das opções escolhidas............................................................. 75 Figura 4.9 - Mapeamento do Storage concluído. ...................................................... 75 Figura 4.10 - Opção para navegação no Storage. .................................................... 76 Figura 4.11 - Navegação dentro do Storage.............................................................. 76 Figura 4.12 - Início da criação de uma VM. ............................................................... 77 Figura 4.13 - Escolha de configurações típicas para a VM. ...................................... 77 Figura 4.14 - Escolha do nome da VM. ..................................................................... 77 Figura 4.15 - Escolha do local de armazenamento da VM. ....................................... 78 Figura 4.16 - Escolha do sistema operacional e versão. ........................................... 78 Figura 4.17 - Quantidade de placas de rede utilizadas pela VM. .............................. 78 Figura 4.18 - Escolha do tamanho do disco que a VM terá. ...................................... 79 Figura 4.19 - Resumo das configurações escolhidas. ............................................... 79 Figura 4.20 - VM criada e pronta para inicialização. ................................................. 79 Figura 4.21 - Início da criação do novo Datacenter. .................................................. 80 Figura 4.22 - Datacenter criado. ................................................................................ 80 Figura 4.23 - Adição de um host................................................................................ 81 Figura 4.24 - Entrada das informações do servidor. .................................................. 81 Figura 4.25 - Alerta sobre o certificado de segurança. .............................................. 81 Figura 4.26 - Sumário do host. .................................................................................. 82 Figura 4.27 - Associação à licença de uso. ............................................................... 82 Figura 4.28 - Opção de bloqueio de logon no host físico. ......................................... 82 Figura 4.29 - Seleção do Datacenter que abrigará o host. ........................................ 83 Figura 4.30 - Apresentação do resumo pronto para finalização. ............................... 83 Figura 4.31 - Host adicionado com sucesso.............................................................. 83 Figura 4.32 - Início da conversão. ............................................................................. 84 Figura 4.33 - Características da máquina a ser convertida. ...................................... 84 Figura 4.34 - Informações do vCenter ....................................................................... 85 Figura 4.35 - Escolha do Grupo de servidores para alocar a VM. ............................. 85 Figura 4.36 - Seleção do servidor físico para execução inicial. ................................. 85 Figura 4.37 - Edição da máquina antes da conversão. ............................................. 86 Figura 4.38 - Resumo da importação. ....................................................................... 86 Figura 4.39 - Alteração de hardware detectada......................................................... 87 Figura 4.40 - Acessando as propriedades de rede do host. ...................................... 88 Figura 4.41 - Habilitando o vMotion........................................................................... 88 Figura 4.42 - Selecionando a VM para migração. ..................................................... 88 Figura 4.43 - Escolha do tipo de movimentação. ...................................................... 89 Figura 4.44 - Escolha de novo servidor destino para a VM. ...................................... 89 Figura 4.45 - Definição de prioridade par a tarefa. .................................................... 89 Figura 4.46 - VM após movimentação. ...................................................................... 90 Figura 4.47 - Teste de conexão com o comando ping. .............................................. 90 Figura 4.48 - Tela inicial do XenCenter...................................................................... 91 Figura 4.49 - Adicionando um host físico ao Xencenter. ........................................... 92 Figura 4.50 - Autenticação para conexão ao host. .................................................... 92 Figura 4.51 - XenCenter com servidor alocado. ........................................................ 93 Figura 4.52 - Monitoramento de performance do servidor. ........................................ 93 Figura 4.53 - Criação do Pool de servidores. ............................................................ 94 Figura 4.54 - Seleção dos servidores do Pool. .......................................................... 94 Figura 4.55 - Pool de servidores criado. .................................................................... 95 Figura 4.56 - Inicio da apresentação do Storage NFS. ............................................. 95 Figura 4.57 - Escolha do tipo de mapeamento a ser feito. ........................................ 96 Figura 4.58 - Definição do nome do mapeamento. ................................................... 96 Figura 4.59 - Scan do disco para associar ao Pool. .................................................. 96 Figura 4.60 - Storage apresentado e pronto para uso............................................... 97 Figura 4.61 - Criação do mapeamento CIFS. ............................................................ 97 Figura 4.62 - Escolha do tipo de compartilhamento. ................................................. 98 Figura 4.63 - Definição do nome do mapeamento .................................................... 98 Figura 4.64 - Caminho na rede do compartilhamento. .............................................. 98 Figura 4.65 - Mapeamento completo e seu conteúdo. .............................................. 99 Figura 4.66 - Início da criação da nova VM. .............................................................. 99 Figura 4.67 - Escolha do sistema operacional para a nova VM. ............................. 100 Figura 4.68 - Definição do nome da VM e descrição. .............................................. 100 Figura 4.69 - Escolha da imagem ISO para instalação. .......................................... 100 Figura 4.70 - Escolha do servidor que iniciará a VM. .............................................. 101 Figura 4.71 - Configuração do processador e memória. ......................................... 101 Figura 4.72 - Escolha do local de armazenamento da VM. ..................................... 101 Figura 4.73 - Opção de alteração das propriedades do disco. ................................ 102 Figura 4.74 - Seleção da interface de rede da VM. ................................................. 102 Figura 4.75 – Resumo com as opções escolhidas. ................................................. 102 Figura 4.76 - Host 1 visualizando VMs alocados no Host 2. ................................... 103 Figura 4.77 - Host 2 e o consumo de CPU local. .................................................... 103 Figura 4.78 - Configurações iniciais de origem e destino. ....................................... 104 Figura 4.79 - Configurações de discos a serem convertidos. .................................. 104 Figura 4.80 - Autenticação para o servidor de destino. ........................................... 105 Figura 4.81 - Definição de nome e local de armazenamento. ................................. 105 Figura 4.82 - Sistema pronto para ser convertido. .................................................. 105 Figura 4.83 - Máquina convertida solicitando nova ativação do Windows. ............. 106 Figura 4.84 - Escolha do servidor para onde será migrada a VM. .......................... 107 Figura 4.85 - VM após processo de movimentação. ............................................... 107 Figura A.1- Tela inicial de boot do CD. .................................................................... 112 Figura A.2 - Telas de boas vindas. .......................................................................... 113 Figura A.3 - Apresentação da licença de uso. ......................................................... 113 Figura A.4 - Seleção do disco para instalação. ....................................................... 113 Figura A.5 - Seleção do layout do teclado. .............................................................. 114 Figura A.6 - Escolha da senha de root. ................................................................... 114 Figura A.7 - Confirmação para o início da instalação. ............................................. 114 Figura A.8 - Instalação em andamento. ................................................................... 115 Figura A.9 - Término da instalação. ......................................................................... 115 Figura A.10 - Servidor inicializado com sucesso. .................................................... 115 Figura B.1 - Tela inicial de boot do CD. ................................................................... 116 Figura B.2 - Configuração do teclado. ..................................................................... 117 Figura B.3 - Confirmação para iniciar a instalação. ................................................. 117 Figura B.4 - Apresentação da licença de uso. ......................................................... 117 Figura B.5 - Escolha dos discos para instalação. .................................................... 118 Figura B.6 - Origem dos arquivos de instalação...................................................... 118 Figura B.7 - Instalação de pacotes adicionais. ........................................................ 118 Figura B.8 - Opção de verificação da mídia de instalação. ..................................... 119 Figura B.9 - Escolha da senha do administrador (root). .......................................... 119 Figura B.10 - Definição do nome e servidores DNS. ............................................... 119 Figura B.11 - Seleção da localização geográfica. .................................................... 120 Figura B.12 - Seleção do fuso horário. .................................................................... 120 Figura B.13 - Escolha da forma de sincronismo de horário. .................................... 120 Figura B.14 - Configuração do servidor NTP. .......................................................... 121 Figura B.15 - Início da instalação dos arquivos. ...................................................... 121 Figura B.16 - Conclusão da Instalação. .................................................................. 121 Figura B.17 - Console após a conclusão da instalação. .......................................... 122 LISTAS DE TABELAS Tabela 2.1 - Endereços de acesso a dispositivos. ..................................................... 40 Tabela 4.1 - Configuração das máquinas físicas utilizadas ....................................... 71 LISTAS DE SIGLAS API - Application Programming Interface BIOS - Basic Input Output System BSD - Berkeley Software Distribution CIFS - Common Internet File System CMS - Conversational Monitor System CTSS - Compatible Time-Sharing System DHCP - Dynamic Host Configuration Protocol DNS - Domain Name System E/S - Entrada/Saída EMA - Enterprise Management Association ENIAC - Electrical Numerical Integrator and Calculator GNU - Gnu is Not Unix GPL - General Public License IBM - International Business Machine ISA - Instruction Set Architecture MIT - Massachusetts Institute of Technology MMU - Memory Management Unit NFS - Network File System NTP – Network Time Protocol P2V - Physical to Virtual PARC - Palo Alto Research Center SAAS - Software as a Service SO - Sistema Operacional ULA - Unidade Lógica e Aritmética V2V - Virtual to Virtual VMM - Virtual Machine Monitor VPN - Virtual Private Network SUMÁRIO SUMÁRIO............................................................................................. 14 INTRODUÇÃO ..................................................................................... 16 1 A HISTÓRIA DA INFORMÁTICA ....................................................... 18 1.1 MÁQUINAS PARA CALCULAR ........................................................................ 18 1.2 A EVOLUÇÃO ................................................................................................... 19 1.2.1 A Programação Funcional ............................................................................ 20 1.2.2 Boole e sua Teoria ........................................................................................ 20 1.2.3 1890 e a Máquina de Hollerith ...................................................................... 21 1.2.4 Computadores Pré-modernos e a 2ª Guerra ............................................... 22 1.3 COMPUTAÇÃO MODERNA ............................................................................. 22 1.3.1 Primeira Geração.......................................................................................... 22 1.3.2 Segunda Geração......................................................................................... 23 1.3.3 Terceira Geração .......................................................................................... 24 1.3.4 Quarta Geração ............................................................................................ 25 1.4 HISTÓRICO DOS SISTEMAS OPERACIONAIS .............................................. 28 2 FUNCIONAMENTO DOS COMPUTADORES ................................... 38 2.1 A ESTRUTURA BÁSICA ................................................................................... 38 2.1.1 O Hardware .................................................................................................. 38 2.1.2 O Sistema Operacional................................................................................. 40 2.1.3 Abstração e Gerência de Recursos .............................................................. 41 2.1.4 Interrupções .................................................................................................. 43 2.1.5 Proteção do Núcleo ...................................................................................... 44 2.1.6 Chamadas de Sistema ................................................................................. 45 3 VIRTUALIZAÇÃO ............................................................................. 47 3.1 HISTÓRICO ...................................................................................................... 47 3.2 DETALHES DA VIRTUALIZAÇÃO .................................................................... 49 3.2.1 Diferença entre Emulação e Virtualização .................................................... 49 3.2.2 A Virtualização Propriamente Dita ................................................................ 50 3.2.3 Tipos de Virtualização................................................................................... 51 3.2.4 Formas de Virtualização ............................................................................... 52 3.2.5 Técnicas para Virtualização .......................................................................... 54 3.2.6 Virtualização e Rede..................................................................................... 56 3.2.7 Virtualização de Serviços de Internet ........................................................... 56 3.2.8 Virtualização da Infraestrutura de Rede ....................................................... 57 3.3 AS CARACTERÍSTICAS DO HYPERVISOR .................................................... 58 3.4 FERRAMENTAS DE VIRTUALIZAÇÃO ............................................................ 60 3.4.1 VMware ........................................................................................................ 61 3.4.2 Xen ............................................................................................................... 65 4 UTILIZAÇÃO DAS FERRAMENTAS ................................................. 70 4.1 AMBIENTE DE TRABALHO ............................................................................. 70 4.2 SOLUÇÃO DA VMWARE .................................................................................. 72 4.2.1 Apresentação do Storage ............................................................................. 74 4.2.2 Criação da VM para o vCenter ..................................................................... 76 4.2.3 Criação do Datacenter .................................................................................. 80 4.2.4 vCenter Converter ........................................................................................ 84 4.2.5 vMotion ......................................................................................................... 87 4.2.6 Considerações sobre o vMotion ................................................................... 90 4.3 SOLUÇÃO DA CITRIX ...................................................................................... 91 4.3.1 Pool de Servidores ....................................................................................... 93 4.3.2 Configuração do Storage Principal ............................................................... 95 4.3.3 Storage para as Imagens ISO ...................................................................... 97 4.3.4 Criação de uma VM ...................................................................................... 99 4.3.5 XenConvert ................................................................................................. 103 4.3.6 XenMotion .................................................................................................. 106 4.3.7 Considerações sobre o XenMotion ............................................................. 107 CONCLUSÃO ..................................................................................... 109 ANEXO A – Instalação do Hypervisor da VMware ............................... 112 ANEXO B - Instalação do Hypervisor da Citrix .................................... 116 REFERÊNCIAS BIBLIOGRÁFICAS ................................................... 123 16 INTRODUÇÃO Atualmente um assunto muito discutido é Computação nas Nuvens, que é um modelo de negócio onde empresas especializadas fornecem diversos serviços, como por exemplo, hospedagem de sites, e-mail e discos virtuais para que seus clientes possam armazenar seus arquivos com segurança. Um modelo utilizado dentro da Computação nas Nuvens é o software como serviço, ou do inglês Software as a Service (SaaS), onde uma empresa disponibiliza acesso a programas específicos que ficam hospedados em seu Data Center e são acessados através da Internet, sem necessidade de nenhum tipo de instalação ou configuração pelo lado do cliente. (MARTINEZ, 2010) Neste modelo, as empresas clientes que utilizam estes serviços, não têm o alto custo de montagem e manutenção de uma infraestrutura física de servidores. Os serviços de alta disponibilidade são obtidos através da locação de uma infraestrutura conforme a demanda de utilização. Como exemplo de SaaS pode-se citar o Google Docs, SkyDrive e serviços de e-mail como Gmail, Hotmail, entre outros. (MARTINEZ, 2010) As empresas prestadoras destes serviços normalmente possuem grande infraestrutura física com diversos servidores para atender a demanda personalizada para cada um de seus clientes, entretanto, nova abordagem vem sendo utilizada com o objetivo de diminuir esta estrutura física para algo mais compacto, conhecido por virtualização de servidores. Neste conceito, diminui-se o número de servidores físicos e mantém-se o mesmo desempenho e flexibilidade de escalabilidade no serviço prestado. (BRENDEL, 2008) O conceito de virtualização não é novo, teve seu início na década de 1960 e a ideia inicial era aproveitar o alto poder de processamento que os Mainframes ofereciam, para a execução de vários aplicativos ao mesmo tempo. (BRENDEL, 2008) Com a virtualização e as suas ferramentas agregadas é possível garantir alta disponibilidade de serviços, desta forma, quando se comenta sobre Computação nas Nuvens fala-se de um conceito que utiliza o serviço de virtualização de servidores. (VMWARE, 2011a) 17 Este trabalho tem como objetivo apresentar o conceito da virtualização, cada vez mais utilizada principalmente em empresas onde a alta disponibilidade de serviços, bem como a diminuição de custos são itens indispensáveis, utilizando-se as soluções profissionais mais conhecidas e pioneiras em fornecer soluções de virtualização. No primeiro capítulo deste trabalho, é demonstrado um pouco da história da computação, para que se tenha uma visão de como foi o início da criação dos primeiros computadores, tanto no quesito hardware quanto no de sistemas operacionais, sendo possível identificar o salto de tecnologia que foi dado desde os períodos mais remotos aos atuais, culminando na convergência para a virtualização dos servidores. O segundo demonstra como é o funcionamento de um computador comum, de forma a se entender o conceito de componentes, interrupções de sistemas, processos, comunicação com os periféricos, entre outros, com a intenção de auxiliar no entendimento sobre como é possível ocorrer a virtualização, que faz grande utilização de processos e interrupções de hardware e software. No terceiro, sobre a virtualização, é feita a apresentação de seu conceito, suas formas e tipos, e seu funcionamento. São apresentadas as soluções profissionais mais conhecidas de virtualização e suas características, bem como ao tipo a que pertencem e as suas ferramentas para gerenciamento e manutenção do ambiente virtual. No quarto capítulo, é demonstrada através de um ambiente com servidores físicos reais, a instalação das soluções citadas no capítulo três, e demonstradas algumas de suas principais características e funcionalidades, como a importação e conversão de um servidor para o ambiente virtual e a movimentação de uma máquina virtual entre os servidores físicos, sem que seja necessário seu desligamento durante o processo. Por fim, como conclusão deste trabalho, são apresentadas as observações feitas durante os testes, de forma que seja possível que o leitor/usuário possa reproduzir os procedimentos realizados. 18 1 A HISTÓRIA DA INFORMÁTICA Com o acesso cada vez mais facilitado a equipamentos de informática como computadores e notebooks, proporcionados pelo custo de equipamentos mais baratos, através de incentivos fiscais e maior oferta de marcas e modelos, as pessoas em geral não conhecem a história de como sugiram estes equipamentos, nem imaginam a enorme diferença de tamanho e capacidade de processamento entre os primeiros computadores e os atuais, cada dia mais portáteis. Este capítulo tem como objetivo mostrar um pouco da história e evolução do conceito de computação e dos computadores em geral, da antiguidade aos dias de hoje. 1.1 MÁQUINAS PARA CALCULAR Consideradas por Gugik (2009a), como as primeiras espécies de “máquinas” de cálculo, estão respectivamente o Ábaco, que tem seu registro de uso datado no ano 5500 a.C e a Régua de Cálculo, criada mais atualmente em 1638 d.C. O Ábaco, conhecido na Roma antiga como Calculus, do qual se originou a palavra Cálculo, era utilizado no dia-a-dia, principalmente no comercio e construções civis e utilizava um sistema simples, mas eficiente na resolução de problemas matemáticos. Era muito utilizado em operações de soma e subtração, mas não era recomendado para multiplicação e divisão. A Régua de Cálculo foi criada pelo padre inglês William Oughtred, como forma mais eficiente de calcular. Tratava-se de uma régua que já possuía certa quantidade de valores pré-calculados, organizados de forma que os resultados fossem acessados automaticamente, através de um ponteiro que indicava o resultado do valor desejado. Para a criação da Régua de Cálculo, William tomou como base as pesquisas sobre logaritmos realizadas pelo escocês John Napier que havia descoberto várias propriedades matemáticas as quais deu o nome de logaritmos. (GUGIK, 2009a) Ambas as “máquinas” são mostrados através da Figura 1.1. 19 Figura 1.1 - O Ábaco e a Régua de Cálculo. Fonte: Gugik, 2009a. Considerado por Gugik (2009a) como a primeira calculadora mecânica da história, o engenho mostrado na Figura 1.2, criado pelo matemático francês Bleise Pascal em 1642, passou a ser conhecido com a Máquina de Pascal. Seu funcionamento era baseado no uso de engrenagens, que giravam na realização dos cálculos. Ao contrário da ideia original de se criar uma máquina que realizasse as quatro operações matemáticas básicas de somar, subtrair, multiplicar e dividir, só era capaz de somar e subtrair. Figura 1.2 - Máquina de Pascal. Figura: Gugik, 2009a. 1.2 A EVOLUÇÃO A Régua de cálculo e a Máquina de Pascal eram pré-programadas, com funções fixas que não permitiam adicionar novas funcionalidades. A seguir é apresentado o início da evolução dos computadores sua utilização e sua evolução. 20 1.2.1 A Programação Funcional Segundo Gugik (2009a), em 1801, Joseph Marie Jacquard desenvolveu uma máquina com o objetivo de cortar tecidos de forma automática, que recebeu nome de Tear Programável, devido ao fato de aceitar cartões perfuráveis com o desenho desejado como entrada do sistema para serem reproduzidos no tecido. O Tear Programável influenciou outros inventos como a Máquina de Diferenças criada em 1822 e o Engenho Analítico criado em 1837, ambas por Charles Babbage. (GUGIK, 2009a) A Máquina de Diferenças, mostrada pela Figura 1.3, foi criada com a promessa de revolucionar os cálculos, executando funções de diversas naturezas como trigonometria e logaritmos, de forma simples. (GUGIK, 2009a) Figura 1.3 - Máquina de Diferenças. Fonte: Gugick, 2009a. No Engenho Analítico, instruções e comandos poderiam ser informados através de cartões, fazendo uso de registradores primitivos. Sua precisão chegava a 50 casas decimais. (GUGIK, 2009a) 1.2.2 Boole e sua Teoria No que diz respeito a hardware, Charles Babbage é considerado o avô do computador. Por outro lado, em questão a software, o matemático George Boole é considerado o pai da lógica moderna por ter desenvolvido em 1847, a teoria de um sistema lógico que reduzia a representação de valores através de dois algarismos: 0 21 ou 1. (GUGIK, 2009a) Nessa teoria, o “1” significava: ativo, ligado, existente, verdadeiro. Já o “0” representava: não ativo, desligado, não existente, falso. Para representar valores intermediários como “mais ou menos” ativo, era possível utilizar dois ou mais algarismos (bits) para sua representação como: 00 – desligado, 01 – carga baixa, 10 – carga moderada, 11 – carga alta. (GUGIK, 2009a) 1.2.3 1890 e a Máquina de Hollerith Em 1890 para o censo nos EUA, Hermann Hollerith utilizou o conceito de cartões perfurados do Tear Programável para desenvolver uma máquina, mostrada pela Figura 1.4, que acelerava o processo de computação dos dados coletados. As respostas de sim ou não às questões do senso, eram perfuradas no cartão em vez de serem marcadas com um “X”, o que tornou possível processar todas as informações em 1/3 do tempo normal. Figura 1.4 - A máquina de Hollerith. Fonte: Gugik, 2009ª. Devido ao sucesso obtido com a utilização desta máquina, Hollerith fundou sua própria empresa, chamada Tabulation Machine Company em 1896, permanecendo no comando até seu falecimento. Seu substituto, que assumiu em 1916, alterou o nome da empresa para Internacional Business Machine (IBM). (GUGIK, 2009a) 22 1.2.4 Computadores Pré-modernos e a 2ª Guerra De acordo com Gugik (2009a), em 1931, Vannevar Bush programou um computador com uma arquitetura binária propriamente dita, usando os bits 0 e 1. A base decimal exigia que a eletricidade assumisse 10 voltagens diferentes, o que era muito difícil de ser controlado. Por isso, Vannevar utilizou a lógica de Boole, em que somente dois níveis de voltagem eram suficientes. O grande incentivador para o desenvolvimento de computadores foi a Segunda Guerra Mundial. Pois as máquinas cada vez mais se tornavam úteis em tarefas de desencriptação de mensagens inimigas e criação de armas mais inteligentes. Os projetos deste período que mais se destacaram foi o Mark I, em 1944, criado pela Universidade de Harvard e o Colossus, em 1946, criado por Allan Turing. (GUGIK, 2009a) 1.3 COMPUTAÇÃO MODERNA A computação moderna pode ser definida pelo uso de computadores digitais, sem componentes analógicos em seu funcionamento, podendo ser dividida em grupos chamados de Gerações. Segundo Gugik (2009a), a primeira geração abrange o período de 1946/1959, a segunda de 1959/1964, a terceira de 1964/1970 e a quarta de 1970 aos dias atuais. Alguns especialistas, porém, citam ainda uma quinta geração que seria do final de 1980 até os dias atuais. 1.3.1 Primeira Geração Essa geração tinha como característica o uso de válvulas eletrônicas e grandes dimensões. Eram utilizados quilômetros de fios e atingiam temperaturas muito elevadas causando problemas de funcionamento. Os programas normalmente 23 eram escritos em linguagem de máquina. (GUGIK, 2009a) Para Gugik (2009a), a mais famosa máquina da primeira geração foi o Electrical Numerical Integrator and Calculator ou ENIAC, mostrado na Figura 1.5, desenvolvido em 1946, pelos cientistas norte-americanos John Eckert e John Mauchly, sendo 1000 vezes mais rápido que qualquer outra máquina da época. Figura 1.5 - O ENIAC. Fonte: Gugik, 2009a. Sua principal inovação era a computação digital, superiores aos projetos mecânicos-analógicos desenvolvidos até então. A maior parte de suas operações era realizada sem a necessidade de se movimentar peças manualmente, ocorrendo somente pela entrada de dados no painel de controle. Cada operação podia ser acessada através de configurações padrões de chaves e switches. Com grandes dimensões, seu peso total era de 30 toneladas. (GUGIK, 2009a) 1.3.2 Segunda Geração Na segunda geração houve a substituição das válvulas eletrônicas por transistores, o que diminuiu o tamanho do hardware, e a criação da tecnologia de circuitos impressos, que evitava que fios e cabos ficassem espalhados. (GUGIK, 2009a) O IBM 7030 (Strech), mostrado na Figura 1.6, foi o primeiro supercomputador da segunda geração. Ele possuía tamanho reduzido se comparado ao ENIAC, 24 sendo utilizado por grandes companhias e custando milhões de dólares. Executava cálculos em microssegundos, permitindo até um milhão de operações por segundo, atingindo assim um novo patamar de velocidade e confiabilidade. (GUGIK, 2009a) Figura 1.6 - IBM 7030. Fonte: Gugik, 2009a. Ainda na segunda geração, existiu o PDP-8, considerado um dos minicomputadores mais conhecidos, sendo basicamente uma versão mais simples de supercomputador, porém, ainda ocupando grande espaço físico. (GUGIK, 2009a) 1.3.3 Terceira Geração A terceira geração é marcada pela utilização de circuitos integrados, que permitiam que uma mesma placa armazenasse vários circuitos que se comunicavam com hardwares distintos ao mesmo tempo, tornando as máquinas mais velozes, com um número maior de funcionalidades. Seu preço também diminuiu consideravelmente. (GUGIK, 2009a) Lançado em 1967, o IBM 360/91, Figura 1.7, é um dos principais exemplos desta geração, trabalhando com dispositivos de entrada e saída modernos para a época, como discos e fitas de armazenamento, além de permitir a impressão dos resultados em papel, sendo um grande sucesso em vendas na época. Este modelo 25 da IBM foi um dos primeiros a permitir programação da CPU por micro código, na qual as operações usadas por um processador qualquer poderiam ser gravadas através de softwares, sem a necessidade de projetar todo o circuito de forma manual (GUGIK, 2009a). Figura 1.7 - IBM 360/91. Fonte: Gugik, 2009a. 1.3.4 Quarta Geração A redução de tamanho e dos preços das máquinas é a principal característica da quarta geração. As CPUs atingiram patamar de bilhões de operações por segundo, permitindo que muitas tarefas pudessem ser executadas. Os circuitos se tornaram ainda mais integrados e menores, o que permitiu o desenvolvimento dos microprocessadores e dos computadores pessoais. Na quarta geração, os softwares e sistemas se tornaram tão importantes quanto o hardware. (GUGIK, 2009a) Lançado em 1975, o Altair 8800, revolucionou o que era conhecido como computador àquela época. Com um formato retangular e um tamanho que o fazia caber em uma mesa, era muito mais rápido que os computadores anteriores. Seu projeto utilizava o processador 8080 da Intel, fato que propiciou esse desempenho. Nessa época de seu lançamento, o jovem programador Bill Gates se interessou pelo Altair 8800 e criou para ele a linguagem de programação Altair Basic. O Altair funcionava através de cartões de entradas e saída, sem uma interface 26 gráfica propriamente dita. (GUGIK, 2009a) Figura 1.8 - Altair 8800. Fonte: Gugik, 2009a. Segundo Gugik, (2009a), apesar do sucesso do Altair, outro jovem chamado Steve Jobs, que viria a ser o futuro fundador da Apple, sentiu que mesmo com suas funcionalidades, o computador não era fácil de ser utilizado por pessoas comuns. Acreditando que um computador deveria representar de maneira gráfica o seu funcionamento, foi lançado em 1976, o Apple I e em seguida no ano de 1979 o Apple II. GUGICK (2009a) O Apple I era vendido já montado. Sua placa era vendida sem nada, acomodada dentro de uma caixa de papelão, sem nenhum tipo de gabinete, por isso era comum que os computadores fossem instalados dentro de caixas de madeira feitas artesanalmente, conforme figura 1.9. (MORIMOTO, 2005a) Figura 1.9 - Apple I. Fonte: Kopplin, 2002. Em 12 de agosto de 1981, depois de quase um ano de desenvolvimento, o primeiro PC foi lançado pela IBM, utilizando apenas componentes-padrões, que 27 pudessem ser encontrados facilmente no mercado. O processador escolhido foi o Intel 8088, uma versão econômica do processador 8086, que havia sido lançado pela Intel em 1978. (MORIMOTO, 2005b) Figura 1.10 - IBM PC. Fonte: IBM, 2011. Em 1998 foi lançado o iMac, Figura 1.11, que revolucionou o mundo dos computadores com o conceito de “tudo-em-um” e se tornou um pilar na linha da Apple. Foi o primeiro computador da empresa a oferecer entradas USB e a remover o SCSI e sua a porta serial proprietária. (FAAS, 2009) Seu lançamento marcou a volta de Steve Jobs, onde sua preocupação com o design permitiu a criação de uma máquina enxuta e moderna. (TECNOLOGIA, 2011) Figura 1.11 - Steve Jobs e o novo iMac. Fonte: Tecnologia, 2011. Em 2003 foi lançada para o mercado de servidores a tecnologia Blade, mostrado na Figura 1.12, que trazia características como, tamanho reduzido e 28 menor consome de energia e de refrigeração, porém apresentando processamento de um servidor tradicional. Em 2006, foi apontado como uma das novas tendências no mercado de servidores, conquistando espaço na área de TI. (OLIVEIRA, 2006) Essa previsão tem se confirmado, devido à sua ampla utilização em virtualização atualmente. Figura 1.12 - Modelo de chassis Blade. Fonte: IBM, 2011. No mercado de desktops, as inovações continuam vindas da Apple, cujo design é um dos seus pontos fortes, a exemplo do iMac, na Figura 1.13. Figura 1.13 - o novo iMac. Fonte: Apple Store, 2011. 1.4 HISTÓRICO DOS SISTEMAS OPERACIONAIS De acordo com Maziero (2011), no final dos anos 40 e início dos anos 50, os 29 computadores não possuíam sistema operacional como os que existem atualmente. Nos anos 40 um programa era executado sozinho e tinha total controle do computador. Todos os processos envolvidos para a sua execução deveriam ser programados detalhadamente pelo desenvolvedor da aplicação. Nos anos 50, o fornecimento das bibliotecas de sistema (system libraries) que encapsulavam o acesso aos periféricos, veio para facilitar a programação de aplicações. Na mesma década se passou a utilizar o system monitor no auxílio da carga e descarga das aplicações entre a memória e periféricos. (MAZIERO, 2011) Segundo Gugik (2009b), na década de 1960 os sistemas operacionais eram desenvolvidos conforme a tecnologia da época, e cada máquina possuía seu próprio sistema, gerando incompatibilidade entre os diferentes Mainframes existentes. Em 1961, o pesquisador Fernando Corbató e seu grupo do Massachusetts Institute of Technology (MIT), anunciaram o desenvolvimento do Compatible TimeSharing System (CTSS), o primeiro sistema operacional com compartilhamento de tempo. (MAZIERO, 2011) Figura 1.14 - IBM 7090 executando o CTSS. Fonte: Gugik, 2009b. Em 1969 foi criada a primeira versão do UNIX, por Ken Thompson e Dennis Ritchie, pesquisadores dos Bell Labs. (MAZIERO, 2011) Durante a década de 70, o Unix, que tinha uma interface em modo texto, foi distribuído gratuitamente para universidades e órgãos governamentais norteamericanos. E 1977, baseado no Unix, foi lançado o Berkeley Software Distribution (BSD), Figura 1.15, focado principalmente para a execução em máquinas específicas de alto desempenho e grande porte. (GUGIK, 2009b) 30 Figura 1.15 - Comando em modo texto no BSD. Fonte: Gugik, 2009b. No ano anterior, em 1976, a Apple havia marcado a história com o desenvolvimento para o Apple I, de um SO que pudesse ser operado por pessoas comuns. (GUGIK, 2009b) Em 1981 a Microsoft que havia criado o Altair Basic, lançou o MS-DOS, um sistema operacional que, segundo Maziero (2011), havia sido comprado da empresa Seattle Computer Products em 1980, para atender a um contrato feito junto à IBM. Sua interface era baseada em modo texto, bastante parecida com a utilizada pelo Unix, conforme Figura 1.16. Figura 1.16 - Sistema operacional MS-DOS. Fonte: Gugik, 2009. A década de 80 ficou marcada pela disputa entre Apple e Microsoft. Porém outros fatos importantes ocorreram nesta década. Em 1983 Richard Stallman, criou o projeto Gnu is Not Unix (GNU). Ele defendia a ideia de que os softwares deveriam ser desenvolvidos de maneira livre, sem restrições na leitura ou modificação de seus códigos fontes. Um de seus 31 principais objetivos era desenvolver sua própria versão do Unix, através de um Kernel próprio, chamado de GNU Hurd. Contudo, este núcleo possuía muitas falhas de sistema, comprometendo o seu desenvolvimento. (GUGIK, 2009b) Em 1984, o MIT desenvolveu o X Window System, Figura 1.17, um sistema gráfico de Janelas para o Unix que permaneceu proprietário até 1987, quando uma versão opensource foi lançada e incorporada ao seu desenvolvimento. Figura 1.17 - Sistema X Windows System. Fonte: Gugik, 2009b. De acordo com Maziero (2011), no mesmo ano a Apple lançou o Macintosh OS 1.0, Figura 1.18. Conforme Gugik (2009b), ele utilizava as ideias desenvolvidas pela Xerox Palo Alto Research Center, com ícones e pastas para representar programas e arquivos, as quais Steve Jobs havia conhecido em 1979. Figura 1.18 - Macintosh OS 1.0. Fonte: Morimoto, 2011. Em 1985 Microsoft entrou no ramo de sistemas operacionais com interfaces gráficas, através do MS-Windows 1.0, mostrado na figura 1.19. (MAZIERO, 2011) 32 O sistema muito era parecido com o do Macintosh, o que levou a quebra a parceria entre a Apple e a Microsoft. (GUGIK, 2009b) Figura 1.19 - MS-Windows 1.0. Fonte: Gugik, 2009b. Em 1987, Andrew Tanenbaum, professor de computação holandês, desenvolveu um sistema operacional didático simplificado, porém respeitando a API do UNIX, que recebeu o nome de Minix. Neste mesmo ano, a IBM e a Microsoft apresentaram a primeira versão do OS/2, mostrado na Figura 1.20. Um sistema multitarefa destinado a substituir o MSDOS e o Windows. Mais tarde, as duas empresas romperam a parceria e cada uma continuou com seu sistema de forma independente. (MAZIERO, 2011) Figura 1.20 - OS/2 Warp. Fonte: Meio Bit, 2008. Os anos 90 foram marcados por diversos acontecimentos no mundo dos sistemas operacionais. 33 Um exemplo foi o lançamento do Windows 3.x. Nessa versão, a memória passou a ser gerenciada de forma mais eficiente e foram incluídas melhorias em sua interface gráfica, além de ser criado um painel de controle e um gerenciador de arquivos organizado, facilitando o trabalho do usuário. Um dos principais motivos que também contribuíram para seu sucesso foi o fato do sistema já vir instalado de fábrica em um grande número de máquinas. (GUGIK, 2009b) Em 1991, Linus Torvalds, um estudante de graduação finlandês, iniciou o desenvolvimento do Linux, lançando na rede Usenet o Kernel 0.01, que foi recebido de braços abertos por centenas de programadores ao redor do mundo. (MAZIERO, 2011) Em 1993, a Microsoft lançou o Windows NT, o primeiro sistema 32 bits da empresa. Também houve o lançamento dos UNIX de código aberto FreeBSD e NetBSD destacada por Maziero (2011). Gugik (2009b), também destaca para este ano, a criação das primeiras distribuições Linux, Debian e Slackware. Em 1995, a Microsoft lançou Windows 95, sendo uma versão importante para informática que acabou definindo o padrão com que o desktop é organizado, com um botão Start, Menu Iniciar, barra de tarefas, o gerenciador de arquivos Windows Explorer e o navegador Internet Explorer, ilustrado pela Figura 1.21. Figura 1.21 - Windows 95. Fonte: Gugik, 2009b. Após alguns Services Packs, esta versão passou a suportar a leitura de dispositivos USB. Seu sucessor foi o Windows 98 que, apesar de apresentar 34 melhorias em relação ao 95, era um pouco lento, o que só foi resolvido em 1999, com o lançamento do Windows 98 Second Edition (SE), que incluía funções avançadas para compartilhamento de rede, suporte integrado a drivers de DVDROM, entre outras características. (GUGIK, 2009b) No final dos anos 90 e início de 2000, a Apple passava por uma experiência de fracasso com seu sistema Macintosh que apresentava muitos problemas, obrigando que um novo plano fosse traçado. (MAZIERO, 2011) A Microsoft enfrentava problemas parecidos com o Windows Me, lançado em 2000, como sucessor do Windows 98. (GUGIK, 2009b) Em 2001, a Microsoft lançou Windows XP, Figura 1.22, que se tornou um marco na história dos sistemas operacionais, por trazer recursos novos, entre eles, maior segurança do sistema, através da diferenciação de permissões entre administradores e usuários comuns. (GUGIK, 2009b) Para Gugik (2009b), a sua estabilidade é um de seus pontos fortes, sendo o principal motivo para tal, o uso do Kernel NT como base do sistema, excluindo a necessidade do MS-DOS por baixo da interface gráfica. Esse núcleo vinha sendo usado desde outras versões do Windows lançadas para uso de servidores, mas foi somente no XP que esta arquitetura foi lançada para o usuário comum. Figura 1.22 - Windows XP. Fonte: Gugik, 2009b. No mesmo ano de 2001, a Apple, lançou o Mac OS X, Figura 1.23, reescrito do zero, tendo como base o Unix BSD. (MAZIERO, 2011). 35 Figura 1.23 - MAC OS X. Fonte: Gugik, 2009b. Em 2008, a Microsoft lançou um de seus melhores sistemas para servidores, o Windows Server 2008. Esta nova versão trouxe além de novos recursos, melhorias em outros, como por exemplo, uma nova interface de gerenciamento, que substitui a antiga ferramenta Configure Your Server. Dentre outras novidades, está verificação de dependências feita pelo Server Manager, mostrado na Figura 1.24, que se certifica de que o servidor tem os componentes e a configuração corretos com diversos assistentes. Figura 1.24 - Windows Server 2008. Fonte: OSworld, 2009. Também foi atualizado o IIS para a versão 7 junto a um aplicativo de gerenciamento reformulado e melhorias no Gerenciamento de Autoridade Certificadora e em seu Firewall, entre outras. (NETWORKWORLD, 2008) 36 Outro importante recurso é o Hyper-V, sistema de virtualização integrado ao Windows 2008, que possibilita a execução de máquinas virtuais com diferentes sistemas operacionais como Windows e Linux, ao mesmo tempo. (MICROSOFT, 2007) Após o lançamento desastroso do Windows Vista em 2007, a Microsoft lançou em 2009, o Windows 7, Figura 1.25, que tem como base o Kernel do 2008, garantindo assim grande estabilidade ao sistema. Figura 1.25 - Windows 7. Fonte: Gugik, 2009b. Em 2011 houve o lançamento da versão 3.0 do Kernel Linux, conforme anunciado em Torvalds (2011), e da nova versão do sistema operacional Ubuntu Linux, na versão 11.10, mostrado na Figura 1.26. Figura 1.26 - Ubuntu 11.10. Fonte: Distrowatch, 2011. 37 Também em 2011, a Apple lançou uma nova versão do seu sistema operacional, o Mac OS X Lion. Figura 1.27 - Mac OS X Lion. Fonte: Apple, 2011. Estes foram alguns dos fatos que mais se destacaram ao longo dos anos, no que se refere às historias dos computadores e dos sistemas operacionais. O objetivo foi mostrar a evolução da tecnologia dos computadores e das interfaces gráficas até os dias atuais, em que o conceito de desktop e servidor, vai convergindo para a virtualização. 38 2 FUNCIONAMENTO DOS COMPUTADORES Para entender o funcionamento de uma máquina virtual, é necessário compreender o que compõe e como funciona um sistema convencional de computação. Este capítulo tem como objetivo mostrar os conceitos básicos de alguns dos componentes de hardware e software que compõem um computador. 2.1 A ESTRUTURA BÁSICA Um computador é composto por Hardware e Software. O Hardware e as instruções visíveis aos programadores formam o nível chamado de Instruction Set Archtecture (ISA). A ISA define as propriedades do equipamento, por exemplo, instruções de CPU ou registros do processador e assegura um comportamento esperado pelo programador e suas ferramentas de compilação. (BRENDEL, 2008) 2.1.1 O Hardware Através de um conjunto de códigos, o sistema operacional interage com o hardware, disponibilizando-o para uso. Para que se possa entender de uma melhor forma, é preciso compreender sobre os recursos fornecidos pelo hardware e a forma de acessá-los. Um computador típico é constituído por: Processador: executa as instruções das aplicações. Conforme descreve Maziero (2011), o processador é o núcleo de um sistema de computação, o qual é responsável por ler de forma contínua as instruções e dados da memória ou de periféricos, processá-los e enviar os resultados de volta à memória ou encaminhar para outros periféricos. Um processador convencional é constituído de uma Unidade Lógica e Aritmética (ULA) que realiza os cálculos e operações lógicas, um conjunto de registradores para armazenar dados de trabalho e alguns registradores para funções especiais (contador de programa, ponteiro de pilha, flags de status, etc.). 39 Memória: armazena as aplicações em execução (seus códigos e dados). Geralmente o acesso à memória é realizado através de um controlador específico, às vezes alocado fisicamente no próprio processador, chamada de Memory Management Unit (MMU) ou Unidade de Gerência de Memória. A MMU é responsável por analisar cada endereço solicitado pelo processador, validá-los, efetuar as conversões de endereçamento necessárias e executar a operação solicitada pelo processador como a leitura ou escrita de uma posição da memória. (MAZIERO, 2011) Dispositivos de armazenamento: permitem o armazenamento de dados, podendo ser desde um disco rígido localizado internamente até um dispositivo USB, ou cartão de memória. Periféricos: fazem a comunicação com o mundo exterior (teclado, mouse, monitor, impressora, etc.). O acesso aos periféricos é realizado através de circuitos específicos chamados de controladores. Por exemplo, a placa de vídeo permite o acesso ao monitor, a placa ethernet possibilita a conexão com a rede, o controlador USB permite acesso ao mouse, teclado e outros dispositivos USB externos, conforme ilustrado na Figura 2.1. (MAZIERO, 2011) Figura 2.1 - Arquitetura de um computador típico. Fonte: Maziero, 2011, p. 11. Placa-mãe: recebe todos os itens citados anteriormente e possibilita sua comunicação física. Todos os principais componentes que constituem o computador são interligados através de barramentos, que são utilizados para a transferência de dados, endereçamento e sinais de controle. (MAZIERO, 2011) Os barramentos podem ser classificados de acordo com suas funções como 40 de endereços, controle e dados. O barramento de endereços indica a posição da memória ou dispositivo a ser acessado. O barramento de controle indica a operação a ser realizada, como leitura ou escrita. O barramento de dados transporta a informação entre o processador e a memória ou um controlador de dispositivo. Conforme Maziero (2011), cada dispositivo é representado por seu respectivo controlador perante o processador e pode ser acessado através de portas endereçáveis de E/S, onde para cada controlador é atribuída uma faixa de endereços, conforme mostrado pela Tabela 2.1. Tabela 2.1 - Endereços de acesso a dispositivos. Dispositivo Endereços de Acesso Teclado 0060h-006Fh Barramento IDE Primário 0170h-0177h Barramento IDE Secundário 01F0h-01F7Fh Porta Serial COM1 02F8h-02FFh Porta Serial COM2 03F8h-03FFh Fonte: Maziero, 2011, p. 12. 2.1.2 O Sistema Operacional Para Maziero (2011), um Sistema Operacional é mais que um software executado em um hardware. Em sua constituição estão diversos outros elementos para as mais diversas funcionalidades e, entre estes elementos, destacam-se: Núcleo ou Kernel: gerencia os recursos de hardware e executa as abstrações necessárias, utilizadas pelos aplicativos. É a parte mais importante de um sistema operacional. Drivers: um conjunto de código que possibilita a comunicação entre um dispositivo físico e o sistema operacional. Cada dispositivo como discos rígidos, modems, placa de vídeo ou portas USB, por exemplo, necessita deste conjunto de código ou driver para que seja reconhecido pelo sistema operacional e funcione adequadamente, conforme o usuário espera. 41 Programas Utilitários: são pequenos softwares que complementam o Kernel, fornecendo funções como formatação de discos, manipulação de arquivos (mover, copiar, apagar), interpretador de comandos, terminal, interface gráfica, etc. Conforme Brendel (2008), todas estas partes se relacionam entre si, e a forma dessa interligação pode variar conforme o sistema operacional. Basicamente, pode ser demonstrado conforme a Figura 2.2. Figura 2.2 - Estrutura de um sistema operacional. Fonte: Maziero, 2011, p. 10 2.1.3 Abstração e Gerência de Recursos Para Maziero (2011), acessar os recursos de hardware de um sistema de computação pode ser uma tarefa complexa, devido às características específicas de cada dispositivo físico e a complexidade de suas interfaces. Por este motivo, o sistema operacional deve definir interfaces abstratas para os recursos do hardware, visando atender objetivos, como: Disponibilizar interfaces de acesso aos dispositivos de forma mais simples do que se usado interface de baixo nível, visando simplificar a construção de programas aplicativos. Dessa forma, uma aplicação para ler dados do disco rígido, usa o conceito de arquivo, que implementa uma visão abstrata do disco rígido. Caso contrário, para as operações de leitura ou gravação de arquivos, seria necessário 42 acessar o disco diretamente, através da manipulação de portas de Entrada e Saída (E/S) e registradores com comandos para o controlador de disco. Criar independência entre software e hardware. Com a definição de uma interface abstrata de acesso a um dispositivo de hardware, o sistema operacional possibilita que tanto o software quanto o hardware evoluam de formas independentes. Dessa forma, por exemplo, o código em desenvolvimento de um software para edição de texto não fica dependente da tecnologia de discos rígidos utilizada. Prover homogeneidade para as interfaces de acesso a dispositivos com tecnologias distintas. O sistema operacional através das abstrações permite que softwares utilizem uma mesma interface para dispositivos diversos. Por exemplo, um aplicativo acessando arquivos de uma pasta em um disco, sem a preocupação com a estrutura real de armazenamento dos dados, que podem estar em um disquete, um disco rígido, um dispositivo conectado via USB, um CD-ROM ou até um compartilhamento de arquivos via rede. Além da abstração do acesso aos recursos do hardware, o sistema operacional, deve gerenciar os recursos disponíveis, de forma a evitar conflitos que possam surgir quando houver execução de várias aplicações simultaneamente, através de políticas como distribuição da utilização do processador entre os aplicativos em execução, evitando que haja monopolização de recursos, divisão da memória RAM, de forma que exista uma área exclusiva de memória isolada para cada aplicação, garantindo maior segurança e estabilidade, entre outros, garantindo que cada aplicação tenha os recursos necessários para sua execução de forma satisfatória ao usuário. Um exemplo prático é a utilização da impressora, que pode ser acessada por vários aplicativos simultaneamente, onde o sistema operacional cria uma fila para os trabalhos de impressão, evitando com que os conteúdos impressos sejam misturados no processo. Maziero (2011) ressalta sobre outra importante questão que é a gerência de proteção dos recursos do sistema contra acessos indevidos. Com a utilização cada vez maior de recursos compartilhado tanto em rede, quanto local por mais de um usuário, é necessário que sejam definidos os recursos e limites para cada usuário, como: definição de usuários grupos de acesso, procedimentos de autenticação, criação de regras para controle de acesso e registro da utilização dos recursos pelo usuário para fins de contabilização e auditoria. 43 2.1.4 Interrupções Continuando com Maziero (2011), uma rotina de interrupção é, por exemplo, quando um controlador de dispositivo, necessita passar informações ao processador e ao invés de aguardar por uma consulta, o controlador envia uma requisição de interrupção, através do barramento de controle. Recebendo a requisição de interrupção, o processador suspende seu processamento atual e direciona-se para um endereço pré-determinado encontrando-se com uma rotina de tratamento de interrupção. Essa rotina executa as ações necessárias, atendendo o dispositivo que a gerou e ao final do processo, o processador retoma o processamento que estava executando antes de receber a requisição de interrupção. Figura 2.3 - Funcionamento de uma interrupção. Fonte: Puc-Rio, 2012. A cada clique, acesso a disco, etc., esse processo é repetido, podendo alcançar a casa de milhares de interrupções por segundo. Por este motivo as rotinas de tratamento de interrupções devem ser curtas, para serem executadas o mais rápido possível, sem prejudicar o desempenho geral do sistema. Caso ocorra uma chamada de interrupção enquanto o processador estiver executando outra rotina de tratamento de interrupção, ele pode ignorar a mesma temporariamente, ajustando o bit correspondente à interrupção em um registrador específico do processador. (MAZIERO, 2011) Além das interrupções geradas pelos controladores dos periféricos, o processador também pode gerar seu próprio desvio de execução, chamado de exceção. Uma exceção pode ser causada por instruções ilegais, divisão por zero, ou outros erros, que disparam a rotina de tratamento de exceção, usando o mesmo mecanismo das interrupções. Maziero (2011) salienta que as interrupções são muito importantes para os sistemas de computação, pois dessa forma o processador não perde tempo 44 vasculhando todos os dispositivos atrás de eventos para serem tratados. As interrupções também permitem construir funções de E/S assíncronas, no qual o processador não precisa esperar a conclusão de cada operação solicitada a um dispositivo, pois o dispositivo gera uma interrupção para “avisar” o processador quando a operação for concluída. Em um computador comum, são tratados centenas ou milhares de interrupções por segundo, de acordo com a quantidade de periféricos instalados e a carga do sistema. 2.1.5 Proteção do Núcleo Para assegurar que o sistema operacional gerencie de forma correta os recursos de hardware, fornecendo-os conforme a necessidade das aplicações é preciso que as mesmas sejam impedidas de acessarem diretamente o hardware. A cada necessidade de recurso, um pedido deve ser feito ao sistema operacional que avaliará e intermediará o seu acesso ao hardware. (MAZIERO, 2011) O Núcleo e os drivers têm acessos diferenciados dos demais processos, podendo interagir diretamente com o hardware para gerenciá-lo e configurá-lo. Os aplicativos e demais utilitários devem ter um acesso mais restrito, evitando interferência nas configurações e gerência, o que poderia causar instabilidade do sistema e inutilizar os mecanismos de segurança e controle de acesso aos recursos, como arquivos, diretórios ou áreas da memória. (MAZIERO, 2011) Processadores modernos contam com o chamado nível de privilégio de execução, que permite diferenciar os diferentes privilégios dos diversos tipos de aplicativos. Através de flags especiais, a forma de mudança de um nível de execução para outro, é controlado pelo processador. Um processador Pentium, por exemplo, conta com quatro níveis de privilégio, onde 0 é o nível mais privilegiado. Porém, boa parte dos sistemas operacionais construídos para esse processador só utiliza os níveis extremos (0 para o núcleo e drivers do sistema operacional e 3 para utilitários e aplicações). Para Maziero (2011), de forma simples, esse esquema pode ser demonstrado considerando dois níveis básicos de privilégio: Nível núcleo (kernel space): pode ser chamado de sistema, nível supervisor ou monitor, no qual um código executado nesse nível tem acesso total ao 45 processador e todos os recursos internos do processador como registradores, portas de E/S, assim como as áreas da memória podem ser acessados e todas as instruções do processador podem ser executadas. O processador entra em operação neste nível, ao ser ligado. Nível usuário (userspace): neste nível, estão disponíveis apenas um subconjunto de instruções do processador, registradores e portas de E/S. As instruções para o processador, como HALT e RESET, consideradas perigosas, são proibidas para todo código executando neste nível. O uso da memória também é restringido à áreas previamente definidas. Se um código em execução tentar executar uma operação proibida ou acessar uma área de memória restrita, o hardware gerará uma exceção, desviando a execução para uma rotina de tratamento dentro do núcleo, que poderá abortar o programa em execução. A Figura 2.4 mostra de forma simples a diferença de acesso em nível núcleo e nível usuário: Figura 2.4 - Separação entre núcleo e aplicação. Fonte: Maziero, 2011, p. 16. 2.1.6 Chamadas de Sistema Chamada de sistema (system call ou syscall) é a execução de procedimentos do núcleo, utilizando interrupções de software. Todo o acesso aos recursos de baixo nível como periféricos, alocação de memória, ou abstrações lógicas como finalização de tarefas, comunicação, etc., é definido através de uma chamada de sistema pelo sistema operacional. As aplicações em nível de usuário fazem as chamadas de sistema através de uma biblioteca do sistema ou system library, que 46 faz a preparação dos parâmetros, invocação da interrupção de software e retorno do resultado à aplicação. (MAZIERO, 2011) É ressaltado por Maziero (2011) que, embora o isolamento de processos na memória realizados no nível de usuário forneça segurança, trás uma dúvida quanto a forma de chamar a partir de uma aplicação, as rotinas oferecidas pelo núcleo para acesso ao hardware e suas abstrações, onde não existe privilégio por parte do nível do usuário para acessar as portas de E/S correspondentes nem invocar o código do núcleo que executa esse acesso. O mecanismo de interrupções mostrado anteriormente é a resposta. Essa interrupção especial dos processadores permite acionar de forma intencional o mecanismo de interrupção, sem a necessidade de eventos externos ou internos. Essa instrução faz a passagem do processador para o nível privilegiado e procede ao seu tratamento como as demais interrupções. Esse processo é chamado de interrupção por software. Os processadores modernos já oferecem instruções específicas pra entrar e sair do modo privilegiado, bem como registradores específicos para a operação, o que trás maior rapidez no processo de transferência do controle para o núcleo e um menor custo do que o tratamento de outras interrupções. (MAZIERO, 2011) São encontradas nos sistemas operacionais modernos, centenas de chamadas de sistemas diferentes, para diversas finalidades. Essas chamadas de sistemas formam a Application Programming Interface (API)1 do sistema operacional. (MAZIERO, 2011) Concluindo este capítulo, espera-se que tenha sido possível, de forma básica, um entendimento sobre o funcionamento interno de um computador, o que ajudará na compreensão do funcionamento da virtualização, tratada no próximo capítulo. 1 API é a interface (convenções de chamada) pelo qual um programa aplicativo acessa o sistema operacional e outros serviços. Uma API pode fornecer uma interface entre uma linguagem de alto nível e utilitários de baixo. (FOLDOC, 1995) 47 3 VIRTUALIZAÇÃO Este capítulo tem como objetivo descrever o histórico de evolução do conceito de virtualização, desde os Mainframes até as versões atuais dos softwares de virtualização, bem como os motivos que levaram ao seu desenvolvimento. 3.1 HISTÓRICO Conforme descrito por Brendel (2008), os primeiros passos do conceito de virtualização iniciaram-se na metade da década de 60, com o surgimento do Compatible Time-Sharing System (CTSS), ou Sistema Compatível de Tempo Compartilhado. De acordo com Jones (2006), desenvolvido pelo Massachusetts Institute of Technology (MIT) sobre o IBM 704 e o projeto Atlas da Manchester University (um dos primeiros supercomputadores do mundo), foi pioneiro na paginação por demanda e chamadas ao supervisor. Outro fator para seu surgimento foi devido ao fato de existir uma pausa obrigatória para que os operadores dos computadores da época pudessem fazer a troca de tarefas, o que começou a ser sentido de forma incômoda, desejando-se que a operação e o serviço de cálculo fossem conduzidos paralelamente. (BRENDEL, 2008) Na década de 60, a IBM já reconhecia a importância da virtualização, desenvolvendo o Mainframe System/360. Neste equipamento, todas as interfaces de hardware eram virtualizadas através do Virtual Machine Monitor (VMM). (JONES, 2006) Em 1972, Robert P. Goldberg em sua dissertação sobre Architectural Principies for Virtual Computer Systems, estabeleceu as bases teóricas, e no mesmo ano a IBM lançau no mercado o Mainframe VM/370, que sob a supervisão de um programa de controle VMM, podia executar máquinas virtuais de diferentes sistemas operacionais simultaneamente. (BRENDEL, 2008) Em seu início, o VMM era chamado de Supervisor, porém mais tarde passou 48 a ser conhecido como Hypervisor (um termo criado na década de 1970). O VMM era executado diretamente em um hardware subjacente, permitindo várias virtual machines (VMs). Cada VM podia executar uma instância do seu próprio sistema operacional privado, sendo conhecido como Conversational Monitor System (CMS). O VMM da IBM continuou seu desenvolvimento e pode ser encontrado nos modernos sistemas da série System Z Series, fornecendo compatibilidade com versões anteriores, inclusive com a linha System/360. (JONES, 2006) Em grande parte dos anos 80, os Mainframes dominavam e seu acesso pelo usuário era feito através dos chamados terminais burros, que eram equipamentos sem sistemas operacionais, só servindo como meio de acesso à sua interface. No final da década de 80, o aumento do poder de processamento dos equipamentos baseados na arquitetura x86, que estava ganhando mercado graças ao seu preço mais atrativo, fez com que o uso dos caros Mainframes e da virtualização perdesse força. A nova realidade que se formava previa que os computadores pessoais dominariam as mesas das empresas, colocando alto poder de processamento ao alcance do usuário comum. (BRENDEL, 2008) Conforme citado por Brendel (2008), passados dez anos, as empresas começaram a perceber que ter um grande computador para processar seus dados é mais vantajoso que ter dezenas de equipamentos com as informaçoes mantidas de forma distribuidas. Pois para cada serviço que fosse colocado em operação, um novo servidor deveria ser disponibilizado, gerando custos com equipamentos e infraestrutura. Percebeu-se também que estes equipamentos ficavam a maior parte de seu tempo, com baixo uso de sua capacidade de processamento. Em 1998, a VMware desenvolveu uma solução que possibilitava a execução de máquinas virtuais Linux dentro de Sistemas Operacionais Windows, em servidores x86 e permitia também que mesmo computadores pessoais fossem capazes de executar máquinas virtuais, visto que estes também tinham poder de processamento suficiente. Abriram-se assim, novas perspectivas de uso para os servidores nas empresas e a possibilidade de consolidação de vários serviços em um único equipamento, fazendo com que os custos operacionais e de infraestrutura pudessem ser diminuidos. (BRENDEL, 2008) Em 2003 tem-se o lançamento do XenSource, uma solução VMM, focada no conceito de paravirtualização, em que um sistema Linux ou Windows customizados, poderiam ser virtualizados, tendo acesso direto ao hardware hospedeiro. 49 Atualmente, com a tecnologia atual dos processadores, os sistemas já não precisam mais ser modificados para serem virtualizados. (MAZIERO, 2011) Vários outras soluções de virtualização ficaram conhecidas, a exemplo do VirtualBox, originalmente desenvolvido pela Innotek, empresa surgida em 1992, que foi adquirida pela Sun Microsystems Inc. em 2008, que por sua vez foi adquirida pela Oracle em janeiro de 2010. (VIRTUALBOX, 2011) 3.2 DETALHES DA VIRTUALIZAÇÃO Uma máquina virtual (Virtual Machine) pode ser definida como uma duplicata isolada e eficiente de uma máquina real. (LAUREANO, 2006) Até o momento, foram mostrados de forma básica, a evolução, nas formas de hardware e software dos computadores e os componentes de um sistema convencional de computação. Este capítulo tem como objetivo mostrar alguns dos tipos de virtualizações existentes, e como é possível que vários sistemas coexistam em um mesmo hardware, executando todas as chamadas de sistemas, interrupções e acesso de baixo nível, mostrados até agora. 3.2.1 Diferença entre Emulação e Virtualização Para Laureano (2006), a diferença entre um sistema emulado e outro virtualizado, é que na emulação, todas as instruções realizadas pela máquina real, são executadas em um ambiente abstrato, o que permite, por exemplo, que um aplicativo x86 seja executado em uma plataforma Sparc. Neste exemplo, o emulador simula uma plataforma totalmente diferente através de um software, fazendo a máquina real executar uma aplicação que não foi desenvolvida para ela. Para Carissimi (2008), o simulador em si, é um programa que cria uma camada de software entre uma plataforma hóspede e a plataforma hospedeira a ser imitada. 50 Na virtualização, o nível de abstração e funcionalidade de uma máquina virtual encontra-se em uma posição intermediária entre uma máquina real e um emulador, de forma que os recursos de hardware e de controle são abstraídos e usados pelas aplicações. Uma máquina virtual é um ambiente criado pelo Virtual Machine Monitor (VMM), também chamado de hypervisor. O hypervisor fornece uma interface (por meio da multiplexação do hardware) que é idêntica ao hardware subjacente e controla uma ou mais máquinas virtuais. Cada máquina virtual, que recebe uma cópia (virtual) do computador, fornece facilidades para uma aplicação ou um “sistema convidado” que acredita estar executando sobre um ambiente convencional com acesso direto ao hardware, ou seja, cada máquina virtual trabalha como um PC completo, às vezes possuindo BIOS e capacidade de configuração em seu próprio setup. (LAUREANO, 2006) 3.2.2 A Virtualização Propriamente Dita Para Laureano e Maziero (2008), um ambiente de máquina virtual consiste de três partes básicas ilustradas pela Figura 3.1: Figura 3.1 - Uma máquina virtual. Fonte: Laureano e Maziero, 2008. Sistema real, nativo ou hospedeiro (host system), que contém os recursos reais de hardware e software do sistema. Camada de virtualização, hypervisor, ou monitor (Virtual Machine Monitor VMM) que constrói as interfaces virtuais a partir da interface real. Sistema virtual, também chamado de sistema convidado (guest system), que 51 executa sobre o sistema virtualizado. Em alguns casos, vários sistemas virtuais podem coexistir, executando simultaneamente sobre o mesmo sistema real. 3.2.3 Tipos de Virtualização Para Laureano (2006), existem duas formas de se construir ambientes de máquinas virtuais, utilizando-se dois tipos de virtualização existentes: Tipo I: sistema no qual o hypervisor é executado entre o hardware e o sistema convidado (guest system). O hypervisor tem o controle do hardware e cria um ambiente de máquinas virtuais em que cada VM se comporta como uma máquina física completa que pode executar o seu próprio sistema operacional, semelhante a um sistema operacional tradicional. O resultado da virtualização completa da máquina é um conjunto de computadores virtuais sendo executados sobre o mesmo sistema físico, conforme ilustra a Figura 3.2. Figura 3.2 - Virtualização do Tipo I. Fonte: Laureano, 2006, p. 22. Tipo II: o hypervisor é executado como um processo de um sistema operacional real subjacente, denominado sistema anfitrião (host system). Neste modelo, o hypervisor é executado sobre um sistema anfitrião, como um processo num sistema real. Apesar de seu funcionamento ser análogo ao do Tipo I, sua maior diferença é a existência de um sistema abaixo deste. No tipo II de virtualização, o monitor simula para os sistemas convidados, todas as operações que o sistema anfitrião controlaria junto ao hardware, conforme ilustra a Figura 3.3. 52 Figura 3.3 - Virtualização do Tipo II. Fonte: Laureano, 2006, p. 22. 3.2.4 Formas de Virtualização Ainda segundo Laureano (2006), a virtualização é uma forma de dividir os recursos de um computador em múltiplos ambientes de execução. Existem três formas de virtualização: de hardware, de sistema operacional e de linguagem de programação. Virtualização do hardware: exporta o sistema físico como uma abstração do hardware. Assim, qualquer software escrito para a arquitetura (x86, por exemplo) irá funcionar. Foi o modelo adotado na década de 1960 para o VM/370 nos Mainframes IBM e é a tecnologia de virtualização utilizada pela VMware na plataforma x86. Figura 3.4 - Exemplo de virtualização de hardware. Fonte: Laureano, 2006, p. 25. 53 Virtualização do sistema operacional: exporta um sistema operacional como abstração de um sistema específico. A máquina virtual executa aplicações ou conjunto delas, de um sistema operacional específico. O FreeBSD Jail ou o User Mode Linux são exemplos dessa tecnologia, mostrada pela Figura 3.5. Figura 3.5 - Virtualização de sistema operacional. Fonte: Laureano, 2006, p. 25. Virtualização de linguagens de programação: As máquinas virtuais nessa categoria são desenvolvidas para computadores fictícios projetados para uma finalidade específica. É obtida através da abstração de uma camada de execução, onde uma aplicação utiliza essa camada para executar as instruções do programa. Essa solução garante que uma aplicação possa ser executada em qualquer plataforma de software ou hardware, pois a camada é abstraída de forma idêntica em todas as plataformas. As linguagens de programação Java, Smalltalk, Microsoft .NET CLI e Parrot são exemplos dessa arquitetura. Figura 3.6 - Virtualização de linguagem de programação. Fonte: Laureano, 2006, p. 26. 54 3.2.5 Técnicas para Virtualização Para Laureano (2006), as técnicas mais utilizadas para virtualização são: Recompilação Dinâmica, Virtualização Total e Para-virtualização. Na Recompilação Dinâmica, durante sua execução, o sistema adequa o código gerado, para reproduzir o ambiente original do programa, utilizando informações que normalmente não estão disponíveis para um compilador estático tradicional, gerando assim um código mais eficiente. Em outros casos, um sistema pode utilizar a Recompilação Dinâmica como estratégia de otimização adaptável para executar uma representação portátil do programa como o bytecodes de Java. Sete passos compõem esta técnica: 1- Agrupamento de bits: Na transformação de um programa em executável, em sua compilação, com a linkedição, é armazenada uma série de características comuns que identificam como a memória, os registradores e as funções do sistema operacional são manipulados. Um emulador ou uma máquina virtual pode utilizar esse conhecimento sobre o formato do executável e, usando heurística, recuperar os conjuntos de bits do executável e reordená-los. 2- Desmontagem (disassembling): Os bits são desmontados e transformados em um conjunto de instruções e operadores ordenados em pares. 3- Geração intermediária do código: As instruções são transformadas para uma representação de máquina independente 4- Decompilação: A representação gerada é transformada em uma linguagem de alto nível, como a linguagem C. 5- Compilação: O código gerado é novamente compilado para a nova plataforma. 6- Montagem (assembling): Os códigos gerados pela compilação são novamente montados (linkeditados), preparando a criação de um novo executável. 7- Armazenagem dos bits: Os bits são agrupados de forma a gerar o novo executável. Na Virtualização Total, toda a estrutura de hardware é virtualizada e desta forma o sistema que será virtualizado não necessita de qualquer alteração para que 55 possa ser instalado. Seu principal atrativo reside neste fato, porém, o sistema virtualizado é executado de forma mais lenta e o hypervisor precisa implementar alternativas para que as operações privilegiadas possam ser executadas em processadores que não suportem a virtualização nativamente. (CARISSIMI, 2008) Para Carissimi (2008), alguns dos principais motivos para sua execução de forma mais lenta são: 1- A diversidade de dispositivos existentes que compõem um computador, o que torna difícil implementar uma máquina virtual que imite o comportamento exato de cada tipo de dispositivo, sendo necessário prover no hypervisor, suporte a um conjunto genérico de dispositivos. 2- Por não ser modificado, as instruções executadas pelo sistema hóspede devem ser testadas no hypervisor para identificar se elas são sensíveis ou não, o que representa um custo de processamento. 3- A implementação do hypervisor com virtualização total deve contornar alguns problemas técnicos devido à forma como os sistemas operacionais são implementados. Por exemplo, um sistema operacional convencional (Linux ou Windows) trabalha memória virtual através de paginação. Há uma gerência de alocação, liberação e controle de acesso às páginas que devem respeitadas. É necessário converter o espaço de endereçamento do sistema hóspede para um real, disputando recursos com outro sistema hóspede. Na Para-virtualização, o sistema para poder ser virtualizado (convidado) necessita sofrer modificações para que a interação com o hypervisor seja mais eficiente. Essa modificação diminui a portabilidade do sistema, porém permite que o sistema convidado consiga acessar recursos do hardware diretamente. Todo o acesso é monitorado pelo hypervisor, que fornece ao sistema convidado todos os limites do sistema, tais como endereços de memória e endereçamento em disco, por exemplo. Conforme destaca Laureano (2006), a principal razão para utilizar a paravirtualização é seu desempenho obtido, o que acaba compensando as modificações implementadas nos sistemas convidados. Para Carissimi (2008), a para-virtualização é uma abordagem alternativa que surge como forma de contornar as desvantagens da virtualização total. Nela, o teste por instrução não é mais necessário e os dispositivos de hardware são acessados por drivers da própria VMM. 56 3.2.6 Virtualização e Rede Embora a virtualização esteja na maioria das vezes associada a uma técnica que permite executar múltiplos sistemas operacionais e suas aplicações em máquinas virtuais sobre uma única máquina física, seu conceito é mais amplo. Conforme Carissimi (2008), baseado na citação da Enterprise Management Association (EMA), a virtualização é a técnica que mascara as características físicas de um recurso computacional dos sistemas, aplicações ou usuários que o utilizam. Dessa forma, pode-se apontar o uso da virtualização na implementação de desktops remotos, discos virtuais, computação em cluster, etc. Em ambientes de rede, a virtualização é utilizada na implantação de serviços de Internet e na própria infraestrutura de rede, conforme mostrados a seguir. 3.2.7 Virtualização de Serviços de Internet Carissimi (2008) diz que, geralmente os serviços de Internet são concebidos utilizando a arquitetura de multicamadas, em que determinado serviço, é dividido em várias unidades funcionais, sendo as mesmas distribuídas em várias máquinas com o objetivo de alcançar alguns benefícios como balanceamento de carga, tolerância a falhas, etc. Pode-se citar como exemplo um servidor web que acessa um banco de dados e este banco de dados não precisa estar na mesma máquina que o servidor web. Tendo um servidor de banco de dados único, tanto o servidor web como outro serviço qualquer pode usufruí-lo. Dessa forma, não ocorre a replicação de serviço do banco de dados e se evita que o servidor web também funcione como um servidor de banco de dados. (CARISSIMI, 2008) Porém, com este tipo de infraestrutura de um servidor por serviço, os responsáveis pela TI perceberam um problema e um custo para gerenciar diferentes máquinas físicas, mesmo que do mesmo sistema operacional. Existem também os problemas relacionados com consumo de energia elétrica, refrigeração, espaço físico, segurança física, etc. Neste exemplo, a virtualização surge como uma 57 possibilidade de agregar os benefícios da componentização2 de software com a redução dos custos de manutenção de hardware e software. Assim, é possível manter a ideia de um servidor por serviço sem ter um equipamento específico. (CARISSIMI, 2008) Considerando-se que uma minoria de serviços está ativa enquanto a maioria está bloqueada a espera de requisições, o que representa um desperdício de recursos e que ao consolidar diferentes serviços em um mesmo equipamento físico, pode-se correr o risco de uma falha em um serviço comprometer o funcionamento de outro, a virtualização possibilita, por exemplo, que se mantenham de forma isoladas máquinas virtuais com serviços como DNS, DHCP, e-mail, etc., em um mesmo hardware, em uma técnica chamada de consolidação de servidores. (CARISSIMI, 2008) 3.2.8 Virtualização da Infraestrutura de Rede Para Carissimi (2008), além da rede de serviços de Internet propriamente dita, existe uma infraestrutura física que é composta por equipamentos de interconexão e sua interligação. Eles podem ser visualizados como máquinas com um sistema operacional específico, dedicado a execução de uma tarefa como roteamento, encaminhamento de pacotes (Switches) e Firewalls. Vários fabricantes desses equipamentos utilizam soluções baseadas em Linux embarcado. Dessa forma podese estender a ideia de máquinas virtuais também para estes equipamentos. A virtualização destes equipamentos de redes inicia-se no suporte que as máquinas virtuais oferecem para as interfaces de rede. Essas interfaces de redes virtuais se comportam exatamente como interfaces reais com endereço MAC distinto, suporte a unicast, multicast, broadcast e VLANs, e cada máquina virtual tem seu próprio endereço IP. (CARISSIMI, 2008) O par TUN/TAP, por exemplo, são drivers de dispositivos virtuais disponíveis para os sistemas operacionais como Mac OS, Windows, Linux e Unix, em geral. Geralmente eles são encontrados no contexto de redes privativas virtuais ou Virtual 2 A Componentização, no âmbito da engenharia de software, pode ser conceituada como uma unidade de software que pode ser agrupada a outras unidades de software para formar um sistema maior. (MARTINS, 2009) 58 Private Network (VPN) ou em conjunto com o OpenSSH. Carissimi (2008), explica que o conjunto TUN/TAP emula, respectivamente, o comportamento da camada de rede e de enlace onde o TAP permite a criação de bridges enquanto o TUN executa roteamento. Uma aplicação pode usar o driver TUN/TAP para enviar e receber dados. No envio, os dados são encaminhados para a pilha de protocolos de rede como se eles fossem oriundos de uma fonte externa e sua recepção é similar. Assim, com o uso dos drivers TUN/TAP, qualquer par de aplicações pode enviar e receber dados como se eles estivem tratando com um dispositivo externo. Essa é a base usada para prover uma comunicação em rede virtual. (CARISSIMI, 2008) Segundo Carrissimi (2008), quanto aos equipamentos de interconexão de redes, como switches e roteadores, mesmo que naturalmente não façam parte das máquinas virtuais, podem ser emulados da mesma forma, existindo três possíveis formas de prover essa emulação: A primeira é a disponibilização de um produto completo que ofereça, além da máquina virtual, suporte para equipamentos de interconexão de rede virtuais. Essa é a solução adotada pela VMware, Microsoft e Citrix em seus produtos para clientes coorporativos. A segunda é prover máquinas virtuais dedicadas a essa finalidade, como no caso da Vyatta, por exemplo, que oferece um produto compatível com os hypervisors mais comuns do mercado. Esta solução agrega uma camada de software suplementar que simula equipamentos de interconexão de redes. A terceira é oferecer hardware específico com suporte a virtualização de equipamentos de interconexão, como é o caso de alguns produtos da linha Catalyst da Cisco. Carissimi (2008) conclui, portanto, que é possível construir uma infraestrutura de rede completa totalmente virtualizada. A arquitetura exata e as opções de projeto, como em uma rede real, dependem, caso a caso, em função de requisitos da organização. O importante a salientar é que existe tecnologia para tal. 3.3 AS CARACTERÍSTICAS DO HYPERVISOR Quanto ao seu funcionamento, Laureano e Maziero (2008), citam que para 59 funcionar de forma correta e eficiente, um hypervisor além de ter o controle total sobre os recursos do sistema real (sistema hospedeiro), deve atender a alguns requisitos básicos como, por exemplo, prover um ambiente de execução aos programas, do ponto de vista lógico, idêntico ao da máquina real. Estes programas quando executados em uma máquina virtual devem apresentar, no pior caso, leves degradações de desempenho. Algumas destas características do hypervisor foram apontadas por Laureano (2006), como importantes para a segurança de sistemas e outras aplicações. As seguintes propriedades a serem satisfeitas foram definidas por Goldberg e Popek e mostradas por Laureano e Maziero (2008), conforme segue: Isolamento: garante que um software em execução em uma máquina virtual não acesse nem modifique outro software em execução tanto no monitor ou em outra máquina virtual. Essa propriedade é utilizada para que erros de um software ou ataques de hackers/crackers possam ser contidos dentro da máquina virtual sem afetar as outras partes do sistema. Além de isolar dados, o isolamento também auxilia no gerenciamento de recursos, pois a camada de virtualização possibilita a redução do desempenho de um sistema convidado de modo que os recursos consumidos por uma máquina virtual não prejudiquem necessariamente o desempenho de outras máquinas virtuais. Inspeção: acesso e controle sobre todas as informações do estado da máquina virtual, como estado da CPU, conteúdo de memória, eventos etc. Gerenciabilidade: Como cada máquina virtual é uma entidade independente das demais, a administração das diversas instâncias de VMs é simplificada e centralizada. O hypervisor deve possuir meios para gerenciar os recursos existentes entre os sistemas. Interposição: intercalar ou acrescentar instruções em certas operações de uma máquina virtual. Por exemplo, na execução de instruções privilegiadas por parte da máquina virtual. Eficiência: diz que grande parte das instruções do processador virtual deve ser executada diretamente pelo processador da máquina real, sem intervenção do hypervisor. As instruções da máquina virtual que não puderem ser executadas pelo processador real devem ser interpretadas pelo hypervisor e traduzidas em ações equivalentes no processador real. Instruções simples, que não afetem outras máquinas virtuais ou aplicações, podem ser executadas diretamente no hardware. Compatibilidade do software: A máquina virtual fornece uma abstração 60 compatível, de modo que todo o software escrito para ela funcione. Essa abstração frequentemente pode mascarar diferenças nas camadas do hardware e do software abaixo da máquina virtual. Isso acontece com o Java, no qual uma vez escrito um software em sua linguagem, pode-se executá-lo em qualquer outra máquina virtual Java. Equivalência: o hypervisor deve oferecer um ambiente de execução quase idêntico ao da máquina real original. Todo programa executando em uma máquina virtual deve se comportar da mesma forma que o faria em uma máquina real e as exceções podem resultar somente de diferenças nos recursos disponíveis (memória, disco, etc.), dependências de temporização e a existência dos dispositivos de E/S necessários à aplicação. Encapsulamento: utilização da camada de virtualização para manipular e controlar a execução do software na máquina virtual. Pode também usar uma ação indireta para dar prioridade ao software ou fornecer um ambiente melhor para execução. Outra propriedade é o encapsulamento de estado, que pode ser utilizado para construir checkpoints ou snapshot do estado da máquina virtual, por exemplo, para uma possível restauração após uma atualização do sistema operacional. Desempenho: apesar da adição de uma camada de software a um sistema afetar o desempenho do software que funciona na máquina virtual, os benefícios proporcionados compensam a perda de desempenho. Recursividade: deve ser possível executar um hypervisor dentro de uma máquina virtual, produzindo um novo nível de máquinas virtuais. Neste caso, a máquina real é normalmente denominada máquina de nível 0. Laureano (2006) ressalta que os Mainframes da IBM, que são hardwares virtualizáveis, têm uma propriedade chamada execução direta, que permite que esses sistemas obtenham, com a utilização de máquinas virtuais, desempenho similar ao de um sistema convencional equivalente. 3.4 FERRAMENTAS DE VIRTUALIZAÇÃO A crescente utilização da virtualização, embora conceito antigo é uma grande evolução da informática nos últimos anos, sendo muito importante inclusive como 61 ponto de apoio a outras tecnologias, como por exemplo, a Computação em Nuvem, citada no início deste trabalho. Existem várias ferramentas para a virtualização, que vão desde soluções de código aberto, até integradas ao sistema operacional. Este capítulo tem como finalidade apresentar algumas das ferramentas de virtualização mais conhecidas do mercado corporativo ou de uso particular. 3.4.1 VMware Segundo Brendel (2008), a VMware foi pioneira no que se refere à virtualização, principalmente em equipamentos da arquitetura x86 no final da década de 90. Para Laureano e Maziero (2008), nessa época já se percebia que os servidores que se multiplicavam nas empresas ofereciam alto poder de processamento, porém tinham uma utilização abaixo de sua capacidade. Seu hypervisor emula certas instruções para representar corretamente o processador virtual em cada VM, fazendo uso de mecanismos de tradução dinâmica. (Laureano e Maziero, 2008) Atualmente a VMware provê uma série de serviços de soluções baseadas em Computação em Nuvem e infraestrutura de virtualização completa com produtos que abrangem desde desktops até Data Centers, organizados em diversas categorias, entre elas: Data Center, Infraestrutura em Nuvem, Produtos para Segurança, Gerenciamento de Aplicativos, Produtos Gratuitos e Computação para o Usuário final, Produtos para Mac, Plataforma para Aplicativos e outros. (VMWARE, 2011b) Destacam-se entre estes, como as mais conhecidas, as soluções encontradas nas categorias Data Center e Infraestrutura em Nuvem, Produtos Gratuitos e Produtos para Mac, que contemplam algumas das soluções descritas por Carissimi (2008) e também por Laureano e Maziero (2008), como VMware Workstation, VMware Player, VMware Fusion, VMware Server, VMware ESX e VMware ESXi. A seguir serão resumidas as principais características e informações relevantes, como a mudança de nomes de algumas dessas soluções e em qual tipo de virtualização ela se encaixa. VMware Workstation: segundo Laureano e Maziero (2008), foi primeira versão comercial de virtualização lançada em 1999, para ambientes desktops. 62 Permite a criação e a execução de máquinas virtuais sobre o hypervisor. A configuração das máquinas virtuais para um determinado sistema operacional é feita através de ferramenta específica integrante desse produto. (CARISSIMI, 2008) VMware Player: versão gratuita do VMware Workstation, cuja finalidade é permitir que usuários testem o uso da virtualização, porém não é possível criar um o sistema hóspede ou máquina virtual a partir do zero. Por outro lado, em seu site, a VMware distribui uma série de appliances que são imagens de sistemas hóspedes com diferentes distribuições Linux e Windows com os mais variados tipos e soluções de aplicativos já instalados e prontos para executar. (CARISSIMI, 2008) VMware Fusion: é o equivalente ao VMware Workstation para o sistema operacional MacOS X. (CARISSIMI, 2008) VMware Server: é indicado para instalação em servidores, originalmente era a versão gratuita dos produtos ESX Server. Seu objetivo essencial era permitir que usuários testassem o produto antes de adquiri-lo. Assim como as versões ESX, o VMware Server oferece a virtualização de processador, memória, armazenamento e infraestrutura de rede. (CARISSIMI, 2008). Em 2010, a VMware anunciou o fim do suporte para esta solução para junho de 2011 e recomendou que as máquinas virtuais que estivessem sendo executadas sobre o VMware Server fossem migradas para as soluções atuais e de melhor tecnologia, por exemplo, o VMware vSphere. (VMWARE, 2011b) VMware ESX: é a base para a criação de Data Centers virtuais. O ESX Server é um hypervisor que virtualiza os recursos de hardware do tipo processador, memória, armazenamento e rede. Desta forma, permite que um servidor físico seja particionado em várias máquinas virtuais e que cada uma seja vista como uma máquina física em uma infraestrutura de rede convencional. (CARISSIMI, 2008) Indicado para servidores de grande porte possui um núcleo proprietário chamado vmkernel e utiliza uma distribuição Linux para prover outros serviços, tais como a gerência de usuários além de implementar a para-virtualização. Por questões de desempenho, este hypervisor utiliza uma abordagem híbrida para implementar a interface com as máquinas virtuais, no qual o controle de exceção e o gerenciamento de memória são realizados por acesso direto ao hardware, mas o controle de E/S usa o sistema hospedeiro. Para garantir que não ocorra colisão de memória entre o sistema convidado e o real, é alocada uma parte da memória para uso exclusivo de cada sistema convidado. (LAUREANO E MAZIERO, 2008). 63 Figura 3.7 - Arquitetura do VMware ESX. Fonte: Vmware, 2012a. VMware ESXi: de acordo com Carissimi (2008), esta versão possui as mesmas características e funcionalidades descritas anteriormente para o ESX. A diferença consiste em sua arquitetura interna e na forma como alguns procedimentos de gerenciamento são executados. Conforme Figura 3.8, no ESXi o chamado "Console de Serviço", que é usado para executar tarefas de gerenciamento local, como a execução de scripts ou instalação de agentes de terceiros, foi removido, reduzindo drasticamente o tamanho do código do hypervisor para menos de 150MB contra 2GB no ESX, além de completar a tendência em curso de migrar a funcionalidade de gerenciamento da interface local de linha de comando para ferramentas de gerenciamento remoto. (VMWARE, 2012b). Figura 3.8 - Arquitetura do VMware ESXi. Fonte: Vmware, 2012a. 64 Atualmente a linha de produtos baseadas no ESX e ESXi é chamada de plataforma VMware vSphere na versão paga e VMware vSphere Hypervisor na versão free. A mudança de nome se deu devido ao fato de ter havido interpretações errôneas por parte dos usuários quanto às funcionalidades oferecidas pelas duas versões. (VSPHERE HYPERVISOR, 2012) No kit do vSphere é incluído a virtualização do vSphere e o vCenter Server para gerenciamento centralizado. (VSPHERE, 2012) VMware vCenter Server: é um hub universal para gerenciar o ambiente VMware vSphere, fornece uma gerência unificada de todos os hosts e máquinas virtuais de um Data Center a partir de um único console, permite que os administradores tenham mais controle e reduzam a complexidade de gerenciamento das máquinas virtuais. Uma única instância do vCenter Server gerencia até 300 hosts e 3.000 máquinas virtuais. O vCenter Server monitora continuamente a utilização dos pools de recursos, que migra de modo inteligente as máquinas virtuais entre os hosts a fim de manter a integridade do ambiente e não causar paradas. (VCENTER SERVER, 2009) Esse recurso é chamado vMotion e é feito de forma transparente ao usuário, ilustrado pela Figura 3.9. (VMOTION, 2012) Figura 3.9 - Live Migration com vMotion. Fonte: Vmotion, 2012. VMware vCenter Converter: é a ferramenta free disponibilizada pela VMware para, de forma simplificada, converter máquinas físicas Windows ou Linux para virtuais, assim como conversões entre diferentes formatos de máquinas 65 virtuais. (VCENTER CONVERTER, 2012) Todas estas soluções apresentadas possuem um nicho específico de aplicação. Desta forma a VMware oferece uma maior abrangência de soluções aos seus usuários. Para este trabalho, a ferramenta da VMware utilizada será a versão vSphere Hypervisor (ESXi). 3.4.2 Xen Segundo Carissimi, (2008), o Xen é um hypervisor, licenciado sob os termos da Gnu is Not Unix/ General Public Licence, ou seja, GNU/GPL, originalmente para arquiteturas x86, que teve sua origem a partir de um projeto de pesquisa da universidade de Cambridge, que resultou na criação da empresa XenSource inc. Seu desenvolvimento também contou com o apoio de empresas de tecnologia conhecidas globalmente como IBM, HP, Intel, AMD entre outras. (SLTI, 2006) Sua primeira versão foi em outubro de 2003 e de início utilizava a técnica da para-virtualização, na qual era necessário modificar os sistemas operacionais hóspedes para torná-los conscientes da existência do hypervisor. Embora este recurso fosse justificado por questões de desempenho, limitou o emprego do Xen aos sistemas Unix, principalmente aqueles com filosofia de código aberto. (CARISSIMI, 2008) Essa característica possibilitou com que fosse portado para outros sistemas operacionais como NetBSD, FreeBSD e Solaris. (SLTI, 2006) A partir da terceira versão, o Xen passou a oferecer virtualização completa, permitindo o uso de sistemas operacionais não modificados, como os sistemas operacionais da família Microsoft Windows. Entretanto, isso só é possível caso o processador ofereça suporte de hardware, como por exemplo, Intel VT ou AMD-V. (CARISSIMI, 2008) Em Laureano e Maziero (2008), é cita-se que com a utilização do suporte de virtualização disponível nos processadores atuais, é possível a execução de sistemas convidados sem modificações, porém com desempenho ligeiramente menor em relação aos sistemas para-virtualizados. Quanto ao seu funcionamento, 66 existem diferenças desde as versões iniciais até as atuais e também em relação a outras soluções de virtualização, conforme mostrado por diversos autores. Quanto à questão dos níveis de acesso tratada a seguir, faz-se necessário destacar que são encontrados quatro níveis de privilégios de acesso para operações de sistemas e acesso das aplicações ao hardware na arquitetura x86, conhecidos como Ring 0, 1, 2 e 3. As aplicações de usuários típicas são executadas no Ring 3 e os sistemas operacionais por sua vez utilizam o Ring 0, em que precisam ter acesso direto à memória e ao hardware para executar as instruções em nível privilegiado. (PINHEIRO, 2009) A execução do Xen é feita diretamente sobre o hardware, no Ring 0 além da existência de uma máquina virtual chamada de Dom0. Essa máquina tem acesso privilegiado ao hypervisor, o que permite a ela as operações necessárias que as demais máquinas virtuais não podem executar. A máquina virtual Dom0 é responsável por gerenciar toda a estrutura de virtualização, fazendo uso de aplicações que têm acesso ao hypervisor. É nesta máquina virtual que se parametriza a virtualização do hardware e a porção entregue para cada máquina convidada que não tenha acesso direto ao hardware e ao hypervisor. (SLTI, 2006) Carissimi (2008) detalha que os dois principais conceitos do Xen são domínios e hypervisor. Os domínios são as máquinas virtuais do Xen que são de dois tipos: privilegiada (domínio 0) e não-privilegiada (domínio U). O hypervisor tem como função controlar os recursos de comunicação, memória e processamento das máquinas virtuais, e não possui drivers de dispositivos. De acordo com as características do hypervisor Xen, não há suporte a interação com sistemas hóspedes, por isso, é necessário que exista um sistema inicial a ser invocado pelo hypervisor. Esse sistema inicial é o domínio 0, e as outras máquinas virtuais só podem ser executadas depois que ele for iniciado. As máquinas virtuais de domínio U são criadas, inicializadas e encerradas através do domínio 0. Conforme ilustra a Figura 3.10, o domínio 0 é uma máquina virtual única que executa um Kernel Linux modificado e possuí privilégios especiais para acessar os recursos físicos de entrada e saída e interagir com as demais máquinas virtuais (domínios U). Por ser um sistema operacional modificado, o domínio 0 possui os drivers de dispositivos da máquina física e dois drivers especiais para tratar as requisições de acesso a rede e ao disco efetuados pelas máquinas virtuais dos domínios U. (CARISSIMI, 2008) 67 Figura 3.10 - Relacionamento entre os componentes do Xen. Fonte: Carissimi, 2008, p. 192. Segundo Carissimi (2008), para oferecer suporte tanto para a paravirtualização como para a virtualização completa, o Xen distingue os domínios U entre para-virtualizados (U-PV) e virtualizados (U-HVM, ou Hosted Virtual Machines). Os domínios U-PV têm consciência de que não tem acesso direto ao hardware e reconhecem a existência de outras máquinas virtuais. Os domínios U-HVM não têm essa consciência, e não reconhecem a existência de outras máquinas virtuais. Isso se traduz no fato de que os domínios U-PV possuem drivers específicos para acesso a rede e a disco para interagirem com as suas contrapartidas no domínio 0. Já as máquinas dos domínios U-HVM não possuem esses drivers, pois não foram modificados, e iniciam como um sistema convencional que procura executar o Basic Input Output System (BIOS). O Xen virtual firmware simula a existência do BIOS que executa todos os procedimentos esperados durante um processo de boot normal de um PC compatível. O compartilhamento do disco e as requisições de rede de um domínio U-HVM são feitos através do daemon Qemu, que é um emulador de software de código aberto, vinculado a cada instância U-HMV. Assim, o hardware disponível para as máquinas virtuais do domínio U-HVM são os oferecidos pelo Qemu. (CARISSIMI, 2008) Ainda quanto ao funcionamento, Laureano e Maziero (2008), explicam que as principais modificações impostas pelo ambiente Xen a um sistema operacional 68 convidado são: a) o mecanismo de entrega de interrupções passa a usar um serviço de eventos oferecido pelo hypervisor; b) e as operações de E/S de dispositivos são feitas através de uma interface simplificada, independente de dispositivo. Devido à diferença de funcionamento entre o Xen e o VMware, principalmente nas suas versões iniciais, até agora o que foi mostrado sobre esta solução, foi referente à sua versão de código aberto e apresentado de uma forma mais técnica. Conforme Carissimi (2008), em outubro 2007 a XenSource foi adquirida pela Citrix System, que passou e desenvolver um produto para uso profissional nas empresas. (TAKEMURA; CRAWFORD, 2010) A Citrix procura oferecer junto ao seu produto um processo de certificação, e estabelecer as melhores práticas para que os administradores possam implantar o Xen com um mínimo de trabalho. Sua solução tem como base a versão open source do Xen na qual contribui com alterações, mas também faz um nível adicional de controle de qualidade. (TAKEMURA; CRAWFORD, 2010) Inicialmente o produto da Citrix consistia de dois componentes, o XenServer e XenEssentials, em que o primeiro é o próprio hypervisor e suas ferramentas básicas de gestão, disponível de forma gratuita, que suporta a maioria das características dos produtos pagos Citrix, com a mesma interface, voltada para o desenvolvimento, teste e implementações em ambientes de produção não crítico ou de testes. O segundo é uma suíte de utilitários paga, com vários níveis de licenciamento. Esse pacote contém todas as características do Xen open source, além de todas as características de produto exclusivamente comercial oferecido pela Citrix. (TAKEMURA; CRAWFORD, 2010). Atualmente, dentre os produtos de virtualização, seus recursos e ferramentas disponíveis para seu gerenciamento a Citrix destaca: Citrix XenServer: é o carro chefe como solução de virtualização de servidor, fornece recursos de gerenciamento para integrar e automatizar datacenters virtuais, com um hypervisor de 64 bits e console de gerenciamento, permite a migração em tempo real de recursos e as ferramentas necessárias para converter cargas de trabalho existentes a partir de um ambiente físico para virtual. (CITRIX, 2011) Citrix XenCenter, é um console para gerenciamento em uma única interface que permite gerenciar centenas de VMs de forma centralizada, pode ser instalado a partir de um desktop windows. (CITRIX, 2011) Console Web: ferramenta simples baseada em Web, que oferece aos 69 administradores de TI delegação de direitos e uma forma para gerenciar as operações diárias de uma VM. (CITRIX, 2011) Citrix XenConvert: permite a importação e migração de servidores físicos para virtuais (P2V), assim como virtuais de outras soluções para virtuais (V2V). (CITRIX, 2011) Citrix XenMotion: permite que VMs ativas possam ser movidas para um novo hospedeiro sem interrupções de aplicação ou tempo de inatividade, garantindo a disponibilidade de serviços. vApps: coleção de uma ou mais máquinas virtuais que representa uma aplicação. O vApp combina essas máquinas virtuais em um appliance virtual que pode ser gerenciado como uma unidade no XenCenter, e pode conter informações críticas de configuração da VM, como o seqüenciamento de inicialização. Um vApp pode ser atribuído a uma configuração de alta disponibilidade, e diretamente incluído no planejamento de recuperação de desastres por meio do Integrated Site Recovery. (CITRIX, 2011) VM protection and recovery: oferece proteção contra perda de dados em caso de falha da VM automaticamente, faz snapshots de máquinas virtuais regularmente, arquivando essas imagens em um local especificado para armazenamento. (CITRIX, 2011) Para este trabalho, será utilizado a versão free do XenSever oferecida pela Citrix. Com este capítulo espera-se ter sido possível de forma básica um entendimento do conceito da virtualização, seus tipos, características e aplicações existentes, além dos recursos e funcionalidades oferecidas pelas soluções de virtualização da Vmware e da Citrix. 70 4 UTILIZAÇÃO DAS FERRAMENTAS Neste capítulo são mostradas algumas das funcionalidades das ferramentas de virtualização VmWare e XenServer de forma mais visual, através de telas que mostram os passos de suas instalações e suas respectivas interfaces gráficas para gerenciamento. São instalados sistemas operacionais de rede utilizando-se versões conhecidas como a distribuição Linux Ubuntu Server 10.10, e o Microsoft Windows Server 2003 e Windows Server 2008, como forma de verificar a capacidade das soluções em executar diferentes sistemas operacionais. No caso do Windows Server 2003, será feita a importação através das respectivas ferramentas oferecidas tanto pela VMware com o vCenter Converter, quanto pela Citrix com o XenConvert, de uma máquina que esteja em produção devidamente configurada e em funcionamento. Os passos das instalações dos sistemas operacionais das máquinas virtuais em si não serão apresentados, visto que este não é o foco deste trabalho, mas sim a apresentação de recursos das ferramentas como: Importação de um servidor em produção, convertendo-o para virtual. Movimentação de máquinas virtuais entre os hosts físicos. Sendo estes alguns dos pontos importantes considerados durante a escolha da ferramenta, visando o mínimo de interrupções no ambiente de trabalho. A importação de máquinas físicas para virtual (P2V), ou virtual para virtual (V2V) propicia maior agilidade na implantação do novo ambiente, sem que tudo seja configurado do zero, o que demandaria um maior tempo de trabalho. 4.1 AMBIENTE DE TRABALHO Foram utilizados neste trabalho três servidores físicos, Dell PowerEdge 2950, onde dois servidores foram utilizados como hosts para a execução das máquinas virtuais com a utilização do respectivo sistema hypervisor de cada solução e o outro servidor serviu como Storage, tendo como sistema base o Ubuntu Server 10.10 com 71 discos ligados em RAID 0 e sistema de arquivos Network File System (NFS), conforme ilustrado na tabela 4.1 e também pela figura 4.1. Tabela 4.1 - Configuração das máquinas físicas utilizadas Descrição Modelo Host 1 Host 2 Storage PowerEdge 2950 PowerEdge 2950 PowerEdge 2950 Processador 2 Xeon Dual Core 2 Xeon Dual Core 2 Xeon Quad Core Velocidade 1.6 Ghz 1.6 Ghz 1.6 Ghz Memória 8 GB 8 GB 8 GB Disco 1 2 x 70 GB - RAID 1 2 x 70 GB - RAID 1 2 x 70 GB - RAID 1 Disco 2 2 x 300 GB - RAID 1 2 x 300 GB - RAID 1 2 x 300 GB - RAID 0 Interface SCSI SCSI SCSI Fonte: Elaborada pelo autor, 2012. Figura 4.1 - Esquema do ambiente utilizado. Fonte: Elaborada pelo autor, 2012. 72 4.2 SOLUÇÃO DA VMWARE Os passos necessários para a instalação do hypervisor da VmWare estão descritos no anexo A deste trabalho. Após a instalação do sistema base nos servidores, é necessário fazer a instalação do vSphere Client em um computador que esteja na mesma rede. É o vSphere Client que possibilitará que as configurações iniciais como mapeamento do Storage e a criação e gerenciamento das VMs sejam feitas. Desta forma que o sistema se encontra, já pode ser colocado em funcionamento, porém, para que seja possível a movimentação das VMs entre os hosts físicos, é necessário ainda que o gerenciamento dos servidores seja feito através de outra máquina dedicada com o vCenter. Para efeito deste trabalho, esta será a primeira VM a ser criada, utilizando o vSphere Client. Ao iniciar o vSphere Client para a primeira conexão, devem ser inseridos o IP do servidor a ser acessado, o usuário root e a senha definida na instalação, mostrada pela Figura 4.2. Figura 4.2 - Informações necessárias para conexão. Fonte: Elaborada pelo autor, 2012. Depois do processo do login com o servidor, é mostrado um alerta sobre o certificado de segurança fornecido pelo servidor. Pode-se optar por instalar este certificado ou ignorar sua instalação. 73 Na sequência já é exibida a tela do vSphere Client, na qual é possível acessar diversas informações do servidor atual e demais configurações possíveis, conforme mostrado pela Figura 4.3. Figura 4.3 - Visualização do sumário de informações do servidor. Fonte: Elaborada pelo autor, 2012. Ao clicar no ícone de Home, podem ser acessadas diversas opções, como por exemplo, administração, gerenciamento, entre outras. Estas opções podem ser visualizadas pela Figura 4.4. Figura 4.4 - Opções para administração e gerenciamento. Fonte: Elaborada pelo autor, 2012. 74 4.2.1 Apresentação do Storage Com o cliente instalado e conectado ao primeiro servidor físico, o próximo passo é o mapeamento do Storage que conterá as máquinas virtuais, dentre elas uma que é exclusiva para o gerenciamento do ambiente e que executa o vCenter. Este Storage será visualizado por todos os demais servidores físicos e é muito importante para que se possa utilizar os recursos de movimentação de VMs, entre os hosts físicos. Para isso, deve-se clicar no ícone Hosts and Clusters, dentro da opção Inventory da página inicial, seleciona-se o servidor e em seguida, clique na aba Configuration, seguida da opção Storage encontrada ao lado esquerdo do menu Hardware e, em seguida, Add Storage, para iniciar a apresentação do Storage localizado no servidor Linux citado no início do capítulo. A Figura 4.5 ilustra todo este procedimento. Figura 4.5 - Início da adição do Storage. Fonte: Elaborada pelo autor, 2012. A Figura 4.6 mostra a necessidade de escolha do tipo de Storage que está sendo apresentado, tipo Lun, geralmente encontrado em equipamentos profissionais nos quais todo o ambiente está interligado através de fibra óptica, caso contrário selecione o tipo NFS. Figura 4.6 - Escolha do tipo de armazenamento que será utilizado. Fonte: Elaborada pelo autor, 2012. 75 Em seguida deve-se inserir o IP do servidor NFS, a pasta que está compartilhada e o nome que será dado ao disco mapeado. Figura 4.7 - Informações para o mapeamento. Fonte: Elaborada pelo autor, 2012. Após esses passos, ilustrados pela Figura 4.7, é mostrado na Figura 4.8, um resumo das informações para que sejam conferidas e confirmadas, concluindo o mapeamento do Storage. Figura 4.8 - Resumo das opções escolhidas. Fonte: Elaborada pelo autor, 2012. Após clicar em Finish, o usuário é levado de volta à tela de configuração, na qual é possível visualizar, através da Figura 4.9, o novo Storage já alocado para o servidor. Figura 4.9 - Mapeamento do Storage concluído. Fonte: Elaborada pelo autor, 2012. 76 Ao clicar como botão direito do mouse, é apresentado opção de navegar pelo disco do Storage recém-mapeado, conforme mostram as Figuras 4.10 e 4.11. Figura 4.10 - Opção para navegação no Storage. Fonte: Elaborada pelo autor, 2012. Figura 4.11 - Navegação dentro do Storage. Fonte: Elaborada pelo autor, 2012. 4.2.2 Criação da VM para o vCenter Para que seja possível o gerenciamento centralizado dos servidores físicos que hospedam as VMs, é necessário conforme já citado, que seja instalado o vCenter em uma máquina dedicada, que pode ser uma máquina virtual. Para esta versão foi necessário o uso do Sistema Operacional Windows 2008 R2 de 64 bits para a VM, conforme ilustram as Figuras de 4.12 a 4.20. O procedimento para a criação de VMs dos diferentes sistemas operacionais existentes segue o mesmo conceito, basta selecionar o tipo de sistema operacional que será virtualizado. Na tela do vSphere Client, deve-se clicar com o botão direito do mouse no servidor que queira se conectar e escolher no menu que se abre, a opção New 77 Virtual Machine. Esse processo é mostrado pela Figura 4.12. Figura 4.12 - Início da criação de uma VM. Fonte: Elaborada pelo autor, 2012. A seguir, ilustrado pela Figura 4.13, deve-se escolher a configuração típica ou se o usuário gostaria de personalizar as configurações da nova VM. Neste caso foi optado pela configuração típica, porém várias configurações podem ser alteradas através da edição das propriedades da VM após a sua criação. Figura 4.13 - Escolha de configurações típicas para a VM. Fonte: Elaborada pelo autor, 2012. Em seguida deve-se escolher um nome para a VM que será criada. Neste caso foi utilizado o mesmo nome de sua função, vCenter, como mostra a Figura 4.14. Figura 4.14 - Escolha do nome da VM. Fonte: Elaborada pelo autor, 2012. 78 A Figura 4.15 mostra o próximo passo que é a escolha do local de armazenamento da VM, sendo apresentado além do disco local do servidor, o Storage que foi mapeado anteriormente, e que foi escolhido. Figura 4.15 - Escolha do local de armazenamento da VM. Fonte: Elaborada pelo autor, 2012. Agora é necessário selecionar qual é o Sistema Operacional virtualizado e sua versão. Foi escolhido, de acordo com a Figura 4.16, o sistema Microsoft Windows Server 2008 R2 de 64 bits, exigido para esta versão do vCenter. Figura 4.16 - Escolha do sistema operacional e versão. Fonte: Elaborada pelo autor. A figura 4.17, mostra a possibilidade de escolha da quantidade de placas de rede que a VM terá e se ela será ativada ao inicializar a VM. Figura 4.17 - Quantidade de placas de rede utilizadas pela VM. Fonte: Elaborada pelo autor, 2012. 79 O próximo passo, mostrado pela Figura 4.18, é definir o tamanho do disco virtual que será alocado para a VM e que ficará alocado no Storage mapeado anteriormente. Figura 4.18 - Escolha do tamanho do disco que a VM terá. Fonte: Elaborada pelo autor, 2012. Depois é apresentado pela Figura 4.19, um resumo com todas as opções selecionadas para a confirmação do usuário, e finalmente, criar a VM. Figura 4.19 - Resumo das configurações escolhidas. Fonte: Elaborada pelo autor, 2012. Na Figura 4.20, já é possível visualizar a VM criada no servidor, pronta para ser inicializada. Figura 4.20 - VM criada e pronta para inicialização. Fonte: Elaborada pelo autor, 2012. 80 4.2.3 Criação do Datacenter Até esta etapa, a conexão do vSphere Client, foi feita somente com um dos hosts, para que fosse possível criar a VM que conterá o vCenter que é a ferramenta que permite gerenciar de forma centralizada dos demais hosts. Um requisito para sua instalação conforme citado anteriormente, é que a versão do sistema operacional seja o Windows Server 2008 R2 de 64 bits. Depois de instalado, as conexões do vSphere Client, passam a ser feitas pelo novo servidor. É nele que é criado o Datacenter como é chamado o conjunto de hosts físicos que serão adicionados posteriormente para gerenciamento. Podem ser criadas mais de uma entrada de Datacenter, para diferentes utilizações. Neste trabalho será criado somente uma. Ao fazer a conexão com o novo servidor, Figura 4.21, percebe-se que ao invés de aparecer o IP do servidor, aparece a entrada vCenter. Deve-se clicar com o botão direito do mouse sobre ele e escolher a opção New Datacenter. Figura 4.21 - Início da criação do novo Datacenter. Fonte: Elaborada pelo autor, 2012. Em seguida, escolher um nome para o Datacenter e concluir sua criação, conforme Figura 4.22. Figura 4.22 - Datacenter criado. Fonte: Elaborada pelo autor, 2012. 81 O próximo passo é adicionar os servidores físicos que farão parte do Datacenter recém-criado. Neste processo mostrado pela Figura 4.23, com o botão direito no mouse, deve-se clicar na opção Add Host. Figura 4.23 - Adição de um host. Fonte: elaborada pelo autor, 2012. Em seguida aparece uma tela que solicita o endereço IP, nome de usuário e senha para a conexão com o servidor, conforme Figura 4.24. Figura 4.24 - Entrada das informações do servidor. Fonte: Elaborada pelo autor, 2012. É exibido um alerta para a autenticidade do certificado de segurança, que pode ser verificado pela Fgura 4.25. Selecione a opção “SIM” para prosseguir. Figura 4.25 - Alerta sobre o certificado de segurança. Fonte: Elaborada pelo autor, 2012. 82 Em seguida um resumo com informações sobre o host e suas VMs atuais é exibido pela Figura 4.26. Figura 4.26 - Sumário do host. Fonte: Elaborada pelo autor, 2012. No próximo passo, mostrado pela Figura 4.27, o servidor deve ser associado a uma chave de licença que foi adquirida pelo usuário para utilização dos recursos da ferramenta. Figura 4.27 - Associação à licença de uso. Fonte: Elaborada pelo autor, 2012. É oferecida a opção de bloquear tentativas de logon diretamente no servidor físico, restringindo seu acesso somente através do vCenter, conforme Figura 4.28. Figura 4.28 - Opção de bloqueio de logon no host físico. Figura: Elaborada pelo autor, 2012. 83 Após, é feita a escolha do grupo em que o servidor será alocado. Neste caso só existe um grupo, o Datacenter criado anteriormente, mostrado pela Figura 4.29. Figura 4.29 - Seleção do Datacenter que abrigará o host. Fonte: Elaborada pelo autor, 2012. Um resumo com as opções escolhidas até agora é exibido pela Figura 4.30, para confirmação do usuário. Figura 4.30 - Apresentação do resumo pronto para finalização. Fonte: Elaborada pelo autor, 2012. Ao clicar em Finish, o servidor host e suas VMs em execução, já podem ser vistos dentro do Datacenter, de acordo com a Ffigura 4.31. Figura 4.31 - Host adicionado com sucesso. Fonte: Elaborada pelo autor, 2012. 84 4.2.4 vCenter Converter O vCenter Converter como já citado anteriormente, é uma ferramenta gratuita da VMware para a conversão de máquinas físicas para virtual (P2V) ou máquinas virtuais para virtual (V2V). Serão demonstrados os passos utilizados na conversão de uma máquina virtual com o Microsoft Windows 2003 sendo executada sob o VirtualBox, que é uma solução de virtualização do tipo 2 e que está em execução no computador local utilizado no acesso ao vCenter. Após a instalação do aplicativo na máquina que será importada, deve-se iniciar o aplicativo e clicar na opção Convert Machine para iniciar o assistente de importação, conforme mostrado pela Figura 4.32. Figura 4.32 - Início da conversão. Fonte: Elaborada pelo autor, 2012. No próximo passo, conforme Figura 4.33, deve-se optar pelo tipo de máquina que será convertida. Selecione a opção This local machine e clique em Next.. Figura 4.33 - Características da máquina a ser convertida. Fonte: Elaborada pelo autor, 2012. O próximo passo, ilustrado pela Figura 4.34, é a entrada do endereço IP do servidor que executa o vCenter e de seu usuário com permissões de administrador. 85 Figura 4.34 - Informações do vCenter. Fonte: Elaborada pelo autor, 2012 É exibido um alerta quanto ao certificado de segurança, pois não foi possível verificar a autoridade certificadora do certificado emitido. Basta clicar em Ignore para continuar. Em seguida é necessária a seleção do grupo de servidores em que a VM será alocada. Neste caso só existe um grupo, já com três VMs em execução, conforme ilustrado pela Figura 4.35. Figura 4.35 - Escolha do Grupo de servidores para alocar a VM. Fonte: Elaborada pelo autor, 2012. O próximo passo, conforme a Figura 4.36, é escolher entre os servidores do grupo Datacenter, qual host vai inicializar a VM e em qual Storage ela será armazenada, caso exista mais de um. Figura 4.36 - Seleção do servidor físico para execução inicial. Fonte: Elaborada pelo autor, 2012. 86 A Figura 4.37, mostra as opções que podem ser alteradas, por exemplo, o tamanho de disco da máquina a ser convertida, no qual é possível aumentar ou diminuir o mesmo. Figura 4.37 - Edição da máquina antes da conversão. Fonte: Elaborada pelo autor, 2012. Após a edição, se necessário, é apresentada uma tela, conforme Figura 4.38, com o resumo de todos os dados referentes à importação. Ao clicar em Finish, inicia-se o processo de conversão, que pode demorar de acordo com o tamanho do disco da máquina de origem e a velocidade de tráfego da rede. Figura 4.38 - Resumo da importação. Fonte: Elaborada pelo autor, 2012. 87 Ao término da conversão, a VM já fica disponível no vCenter e pode ser inicializada. Conforme ilustra a Figura 4.39, ao inicializar a nova VM, o sistema operacional da máquina convertida detecta que houve uma alteração no seu hardware e solicita que seja feita nova ativação de sua licença de uso. Figura 4.39 - Alteração de hardware detectada. Fonte: Elaborada pelo autor, 2012. 4.2.5 vMotion Outra funcionalidade de destaque para este tipo de solução de virtualização é a capacidade de movimentar as máquinas virtuais, em execução, entre os hosts físicos sem ocorrer parada durante a movimentação. Esta movimentação pode ser feita de forma automática, controlada pelo vCenter de acordo com o consumo de recursos do host, que neste caso, direciona a execução de uma VM para outro host, ou de forma manual, com intervenção do administrador do sistema. Neste trabalho demonstra-se a movimentação manual de uma VM. Para que o recurso de movimentação esteja disponível, é preciso primeiro habilitá-lo nas propriedades de rede dos servidores físicos. Deve-se acessar a aba Configuration e, em seguida, Networking no lado esquerdo da tela. 88 Ao ser exibido o gráfico das interfaces de rede, deve-se clicar em Proprieties, para acessar a tela de configuração, conforme Figura 4.40. Figura 4.40 - Acessando as propriedades de rede do host. Fonte: Elaborada pelo autor, 2012. Em seguida, na próxima tela, na aba Ports, uma entrada de nome Management Network deve ser selecionada. Após a seleção, clique em Edit para habilitar o vMotion. De acordo com a Figura 4.41, deve-se clicar em Enabled e em seguida em OK. Assim, habilita-se o recurso de movimentação de VMs. Figura 4.41 - Habilitando o vMotion. Fonte: Elaborada pelo autor, 2012. Com o recurso habilitado, deve-se clicar com o botão direito do mouse sobre a VM que deseja movimentar e em seguida selecionar a opção Migrate. A Figura 4.42, ilustra este procedimento. Figura 4.42 - Selecionando a VM para migração. Fonte: Elaborada pelo autor, 2012. 89 Em seguida deve-se escolher entre mudar de host físico, mover os discos virtuais para outro Storage, ou ambos. Conforme Figura 4.43, foi escolhida a opção Change host, que muda de host físico. Figura 4.43 - Escolha do tipo de movimentação. Fonte: Elaborada pelo autor, 2012. Após, ilustrado pela Figura 4.44, seleciona-se para qual host a VM será alocada. Figura 4.44 - Escolha de novo servidor destino para a VM. Fonte: Elaborada pelo autor, 2012. A Figura 4.45, mostra a opção para definir se a movimentação entre os servidores será tratada como de alta prioridade, assim garante-se maior rapidez na movimentação. Figura 4.45 - Definição de prioridade par a tarefa. Fonte: Elaborada pelo autor, 2012. Por fim é exibida uma tela com o resumo das ações a serem executadas. Clique em Finish para iniciar a movimentação e depois de alguns segundos, a VM já 90 aparece alocada em outro servidor, conforme Figura 4.46. Figura 4.46 - VM após movimentação. Fonte: Elaborada pelo autor, 2012. 4.2.6 Considerações sobre o vMotion Para a movimentação de volta foi executado um teste simples de comunicação para averiguação da disponibilidade de serviço com a movimentação da máquina virtual em execução. Figura 4.47 - Teste de conexão com o comando ping. Fonte: Elaborada pelo autor, 2012. Conforme mostrado pela Figura 4.47, uma tela do prompt de comando na máquina virtual e outra na estação de trabalho que está conectada ao vCenter, 91 foram abertas para fazer um teste de comunicação através do comando ping3, entre ambas, durante o procedimento de movimentação. Como pode ser verificado na tela de prompt à esquerda, que representa a estação de trabalho houve perda de somente um pacote durante o procedimento. Já na máquina virtual, não foi registrado perca de pacote, mas sim um tempo maior de resposta do ping. 4.3 SOLUÇÃO DA CITRIX Os passos necessários para a instalação do XenServer, estão descritos no Anexo B deste trabalho. Depois de instalados os servidores, é necessário que seja feita a instalação do aplicativo XenCenter, que é a ferramenta de gerenciamento do XenServer, que pode ser adquirido através do download no site da Citrix. Após sua instalação, ao iniciar o aplicativo, são exibidas conforme a Figura 4.48, algumas opções como adição de servidor, upgrade de versão, visualização de logs e outras. Figura 4.48 - Tela inicial do XenCenter. Fonte: Elaborada pelo autor, 2012. 3 O comando ping é utilizado em testes de conectividade, onde é possível verificar se um IP de destino responde e quanto tempo demora em responder à solicitação. Em caso de falha na comunicação, é exibida uma mensagem de erro. (TECHNET, 2012) 92 A partir desta tela pode-se conectar ao um dos servidores para que seja possível visualizar suas informações e opções de gerenciamento e proceder às configurações iniciais. Pode-se obrservar também um link em que é oferecida uma opção para testar outra solução da Citrix, que é a virtualização de Desktop, mas que não será tratada neste trabalho. Para conectar-se a um dos hosts físicos, deve-se clicar com o botão direito do mouse sobre o item XenCenter do lado esquerdo da janela e no menu que se abre, escolher a opção Add, conforme ilustrado pelas Figuras 4.49 a 4.52. Figura 4.49 - Adicionando um host físico ao Xencenter. Fonte: Elaborada pelo autor, 2012. Em seguida é exibida uma tela solicitando o IP do servidor ao qual será feita a conexão, além do nome de usuário, no caso o root, e a senha, conforme Figura 4.50. Figura 4.50 - Autenticação para conexão ao host. Fonte: Elaborada pelo autor, 2012. Após a conexão, conforme Figura 4.51, o servidor é exibido na janela do XenCenter. Ao lado direito da janela, podem ser acessadas as suas propriedades. 93 Figura 4.51 - XenCenter com servidor alocado. Fonte: Elaborada pelo autor, 2012. Dentre as propriedades fornecidas nesta janela estão o consumo de memória pelo servidor e suas VMs, dados dos Storages mapeados, configurações de rede, logs de eventos, entre outras. Figura 4.52 - Monitoramento de performance do servidor. Fonte: Elaborada pelo autor, 2012. 4.3.1 Pool de Servidores O Pool de servidores, a exemplo do Datacenter do VmWare, é o agrupamento de várias máquinas físicas que executarão as VMs do ambiente. É através dele que será possível a movimentação das máquinas virtuais entre os hosts. Podem ser 94 criados vários Pools, para diferentes finalidades, como por exemplo, um grupo de servidores físicos que executarão as máquinas virtuais de um ambiente de testes separado do grupo de produção. Com o Pool, todas as VMs que estejam sendo executadas em um servidor físico passam a ser visualizadas também no outro que faz parte do mesmo grupo, formando assim uma espécie de cluster, no qual o sistema poderá automaticamente fazer a movimentação das máquinas virtuais de um servidor para outro, de acordo com sua carga de processamento. Para a criação do Pool de servidores deve-se clicar na barra de ferramentas, na opção New Pool, conforme Figura 4.53. Figura 4.53 - Criação do Pool de servidores. Fonte: Elaborada pelo autor, 2012. Em seguida, Figura 4.54, é exibida uma janela para a entrada do nome do novo Pool e seleção dos servidores que farão parte do mesmo. Figura 4.54 - Seleção dos servidores do Pool. Fonte: Elaborada pelo autor, 2012. Após a entrada das informações solicitadas, o Pool é criado e os servidores são alocados dentro dele, conforme destaque na Figura 4.55. 95 Figura 4.55 - Pool de servidores criado. Fonte: Elaborada pelo autor, 2012. 4.3.2 Configuração do Storage Principal O Storage é um dos itens essenciais para as soluções de virtualização profissionais. É ele quem armazenará as máquinas virtuais que serão criadas e executadas pelos hosts físicos. Sem este acesso comum, o processo de movimentação de VMs online não é possível. Conforme citado anteriormente será utilizado um compartilhamento NFS via um servidor com Ubuntu Server, que desempenhará este papel de Storage para efeito deste trabalho. Conforme Figura 4.56, na barra de ferramentas do XenCenter deve-se clicar em New Storage para iniciar o assistente para mapeamento e apresentação do Storage para o Pool criado anteriormente. Figura 4.56 - Inicio da apresentação do Storage NFS. Fonte: Elaborada pelo autor, 2012. Para o tipo de mapeamento que será feito, deve-se selecionar a primeira opção, que é a que corresponde ao mapeamento de unidade NFS, conforme Figura 4.57. Em um ambiente onde existe um Storage profissional, geralmente é utilizada 96 a opção Hardware HBA, para conexão via fibra óptica. Figura 4.57 - Escolha do tipo de mapeamento a ser feito. Fonte: Elaborada pelo autor, 2012. Em seguida, figura 4.58, deve-se definir um nome pelo qual o mapeamento será identificado dentro do XenCenter. Figura 4.58 - Definição do nome do mapeamento. Fonte: Elaborada pelo autor, 2012. Na próxima tela deve ser inserido o caminho de rede e o nome da pasta que está sendo compartilhada. Ao clicar em Scan, será gerado um ID de identificação para o dispositivo que é associado ao Pool de servidores, ilustrado pela Figura 4.59. Figura 4.59 - Scan do disco para associar ao Pool. Fonte: Elaborada pelo autor, 2012. 97 Após clicar em Finish, o Storage já pode ser visualizado na tela do XenCenter, alocado no Pool de servidores, conforme Figura 4.60. Figura 4.60 - Storage apresentado e pronto para uso. Fonte: Elaborada pelo autor, 2012. 4.3.3 Storage para as Imagens ISO Neste trabalho também foi utilizado um compartilhamento de arquivos em um computador com sistema operacional Windows para armazenamento das imagens ISOs de instalação. O mapeamento pelo XenCenter foi feito utilizando o protocolo Common Internet File System (CIFS) de compartilhamento de arquivos em rede. Por se tratar de um mapeamento temporário, somente até que os sistemas operacionais fossem instalados, a disponibilização do compartilhamento foi feita pelo desktop comum, utilizado para acesso remoto, conforme desenho do ambiente físico ilustrado anteriormente. Para iniciar o processo, Figura 4.61, o primeiro passo é clicar sobre o Pool e acessar a opção New Storage, na barra de ferramentas. Figura 4.61 - Criação do mapeamento CIFS. Fonte: Elaborada pelo autor, 2012. 98 Na tela para a escolha do tipo de mapeamento que será realizado, deve-se escolher a opção Windows File Sharing (CIFS), mostrado pela Figura 4.62. Figura 4.62 - Escolha do tipo de compartilhamento. Fonte: Elaborado pelo autor, 2012. Conforme Figura 4.63, deve-se definir um nome para o mapeamento do volume. Foi escolhido um nome que identifique facilmente o seu tipo na tela do XenCenter. Figura 4.63 - Definição do nome do mapeamento Fonte: Elaborado pelo autor, 2012. Na tela seguinte, Figura 4.64, deve-se informar o caminho do compartilhamento na rede. Caso seja um compartilhamento com restrições de segurança, pode-se informar um nome de usuário que tenha permissão de acesso na pasta compartilhada. Figura 4.64 - Caminho na rede do compartilhamento. Fonte: Elaborada pelo autor, 2012. 99 Ao clicar em Finish, o mapeamento e seu conteúdo com as ISOs que serão utilizadas já são visualizados dentro do Pool de servidores, conforme Figura 4.65. Figura 4.65 - Mapeamento completo e seu conteúdo. Fonte: Elaborada pelo autor, 2012. 4.3.4 Criação de uma VM As Figuras 4.66 a 4.75 demonstram os passos necessários para a criação de uma máquina virtual com o sistema operacional Windows Server 2008 de 32 bits. O processo segue o mesmo conceito do utilizado no Vmware. Para a criação dos diferentes sistemas operacionais suportados pelo XenServer, o processo é o mesmo, bastando escolher qual sistema será virtualizado. Para iniciar o processo, conforme Figura 4.66, deve-se selecionar o Pool de servidores na qual a VM será alocada. Em seguida, barra de ferramentas, deve-se clicar no ícone New VM, para iniciar a configuração da nova máquina virtual. Figura 4.66 - Início da criação da nova VM. Fonte: Elaborada pelo autor, 2012. Na tela seguinte, Figura 4.67, deve-se selecionar qual sistema operacional 100 será virtualizado, neste caso o Windows Server 2008. Figura 4.67 - Escolha do sistema operacional para a nova VM. Fonte: Elaborada pelo autor, 2012. Em seguida, Figura 4.68, é exibida uma tela para a definição de um nome para a VM e caso necessário, digitar uma descrição para melhor identificação dentro do Pool. Figura 4.68 - Definição do nome da VM e descrição. Fonte: Elaborada pelo autor, 2012. O próximo passo é definir a fonte de instalação do novo sistema. Deve-se escolher entre o drive de DVD real do host, ou uma das imagens ISOs localizadas no mapeamento CIFS feito anteriormente. Foi escolhida a imagem ISO do Windows Server que se pretende instalar, conforme Figura 4.69. Figura 4.69 - Escolha da imagem ISO para instalação. Fonte: Elaborada pelo autor, 2012. 101 Na tela seguinte, conforme Figura 4.70, deve-se escolher se o próprio sistema se encarregará de selecionar um host e alocar recursos para a execução da VM, ou definir um servidor manualmente. Foi escolhida a segunda opção. Figura 4.70 - Escolha do servidor que iniciará a VM. Fonte: Elaborada pelo autor, 2012. Em seguida, ilustrado pela Figura 4.71, deve-se definir o número de processadores que a máquina virtual terá, assim como a quantidade de memória que ficará disponível para sua execução. Figura 4.71 - Configuração do processador e memória. Fonte: Elaborada pelo autor, 2012. Após, na Figura 4.72, deve-se informar em qual Storage a VM será alocada caso existisse mais de um mapeado. Caso o usuário queira, poderá clicar no botão Properties para acessar as propriedades do novo disco. Figura 4.72 - Escolha do local de armazenamento da VM. Fonte: Elaborado pelo autor, 2012. 102 Para alterar as propriedades do disco virtual, como nome e tamanho, depois de clicar em Properties, são mostradas em uma tela as respectivas opções, conforme Figura 4.73. Figura 4.73 - Opção de alteração das propriedades do disco. Fonte: Elaborada pelo autor, 2012. O próximo passo, conforme Figuras 4.74 e 4.75, é a seleção da interface de rede da VM, onde é possível editar as interfaces previamente configuradas para, em seguida, visualizar o resumo de opções escolhidas e concluir o processo. Figura 4.74 - Seleção da interface de rede da VM. Fonte: Elaborada pelo autor, 2012. Figura 4.75 – Resumo com as opções escolhidas. Fonte: Elaborada pelo autor, 2012. 103 Depois de instaladas as VMs, conforme citado anteriormente, todos os servidores que compõem o Pool passam a visualizar as mesmas máquinas virtuais, conforme mostram as Figuras 4.76 e 4.77. Figura 4.76 - Host 1 visualizando VMs alocados no Host 2. Fonte: Elaborada pelo autor, 2012. Figura 4.77 - Host 2 e o consumo de CPU local. Fonte: Elaborada pelo autor, 2012. 4.3.5 XenConvert O XenConvert é a ferramenta gratuita da Citrix para conversão de máquinas 104 físicas para virtual (P2V) ou de virtuais para virtual (V2V) do XenServer, que será instalado no sistema a ser convertido. Para o teste desta funcionalidade será feita a importação de uma máquina virtual instalada sob o VirtualBox, que é uma solução de virtualização do tipo 2. A máquina a ser importada está executando o sistema Microsoft Windows Server 2003. Após a instalação do Citrix XenConvert e sua inicialização, é exibida a tela inicial para a definição de origem, no caso a própria máquina local, e destino para o qual a VM convertida será alocada, conforme Figura 4.78. Figura 4.78 - Configurações iniciais de origem e destino. Fonte: Elaborada pelo autor, 2012. Em seguida, conforme Figura 4.79, devem ser selecionados quais discos da máquina atual serão convertidos para a nova VM. Caso o servidor tenha mais de um disco, mas não utiliza os dois, um deles pode ser descartado na conversão. Também é possível alterar o tamanho do disco para o destino, em caso de haver muito espaço livre sem utilização. Figura 4.79 - Configurações de discos a serem convertidos. Fonte: Elaborada pelo autor, 2012. Na próxima tela, conforme Figura 4.80, deve-se informar o IP de um dos hosts no qual a nova VM será alocada durante o processo de importação, bem como o 105 nome de super usuário e senha do host. Também deve ser definido um local para os arquivos temporários que serão gerados no processo. Figura 4.80 - Autenticação para o servidor de destino. Fonte: Elaborada pelo autor, 2012. Seguindo, deve-se definir um nome pelo qual a VM será identificada no XenCenter, que neste caso será mantido o original, e em qual Storage ela será alocada, conforme Figura 4.81. Figura 4.81 - Definição de nome e local de armazenamento. Fonte: Elaborado pelo autor, 2012. Após a exibição das opções selecionadas, o assistente está pronto para iniciar a conversão, conforme Figura 4.82. Figura 4.82 - Sistema pronto para ser convertido. Fonte: Elaborada pelo autor, 2012. O processo de conversão pode ser demorado, de acordo com o tamanho do 106 disco da máquina de origem e a velocidade de tráfego da rede. Ao término da conversão, a VM já pode ser visualizada no XenCenter. Conforme a Figura 4.83 ao iniciar a nova VM, o sistema operacional da máquina convertida detecta que houve alteração em seu hardware e solicita que seja feita nova ativação de sua licença de uso. Figura 4.83 - Máquina convertida solicitando nova ativação do Windows. Fonte: Elaborada pelo autor, 2012. 4.3.6 XenMotion O XenMotion faz a movimentação de uma máquina virtual que esteja em execução sob um servidor para outro, de forma online (LiveMigration), sem que seja necessário seu desligamento. O recurso já vem habilitado por padrão no XenCenter, sem que seja necessária qualquer configuração por parte do usuário. A movimentação entre servidores pode ser realizada de forma automática pelo XenCenter de acordo com o consumo de recursos que host esteja tendo no momento, ou de forma manual. Neste trabalho será demostrada a movimentação manual de uma VM entre os hosts físicos que integram o ambiente. 107 Para iniciar a movimentação, conforme mostra a Figura 4.84, deve-se selecionar a máquina virtual que se deseja movimentar e, clicando com o botão direito do mouse sobre a mesma, escolher no menu que se abre a opção Migrate to Server para em seguida selecionar para qual host ela será movida. Figura 4.84 - Escolha do servidor para onde será migrada a VM. Fonte: Elaborada pelo autor, 2012. O processo é rápido e após alguns segundos, a VM já pode ser visualizada alocada em outro host, conforme mostra a Figura 4.85. Figura 4.85 - VM após processo de movimentação. Fonte: Elaborada pelo autor, 2012. 4.3.7 Considerações sobre o XenMotion 108 Conforme ilustra a Figura 4.85, a exemplo do teste com a solução da VMware, uma tela do prompt de comando na máquina virtual e outra na estação de trabalho que está conectada ao XenCenter, representado pela tela da direita, foram abertas para a realização de teste de comunicação através do comando ping 4 durante o processo de movimentação. Como pode ser verificado nas duas telas do prompt de comando, durante a movimentação da VM de um servidor físico para outro percebeu-se a perda de somente um ping por parte de ambas as máquinas. 4 O comando ping é utilizado em testes de conectividade, onde é possível verificar se um IP de destino responde e quanto tempo demora em responder à solicitação. Em caso de falha na comunicação, é exibida uma mensagem de erro. (TECHNET, 2012) 109 CONCLUSÃO As funcionalidades de importação de uma máquina para dentro do ambiente virtual criado e de movimentação de VM de um Host para outro, mostradas neste trabalho são muito parecidas nas duas soluções e os testes destas foram satisfatórios. A quantidade de sistemas operacionais pré-definidos para instalação encontradas no VMware é superior em relação ao encontrado no XenServer, principalmente no que se refere à criação de VMs Linux, que oferece um maior número de distribuições suportadas. Já no XenServer além de poucas distribuições encontradas na lista de opções, o sistema operacional Ubuntu Server 11.10 estava com o suporte em fase de testes, porém esta mesma distribuição pode ser instalada normalmente utilizando o modo genérico, sem maiores problemas. Para a movimentação das máquinas virtuais entre os hosts, o VMware exige mais procedimentos para habilitar o recurso e iniciar o processo, porém oferece opção de migração de Storage também. Enquanto que no XenServer o recurso de movimentação da VM entre os Hosts vem habilitado como padrão, mas não foi mostrada opção de migração de Storage. A movimentação da VM em si, foi executada de forma muito rápida nas duas ferramentas. A importação de uma máquina virtual para o ambiente criado para as duas soluções (V2V) funcionou sem problemas em ambas. A solução da VMware apresentou algumas funcionalidades, como o desenho do mapa de rede do ambiente do Datacenter criado e uma ferramenta para exploração dos discos do servidor físico. No XenServer, não existe um mapa e para a exploração dos discos, foi necessário utilizar a ferramenta de FTP chamada WinSCP. Por outro lado o XenCenter oferece a possibilidade de se acessar diretamente o console do servidor, como se estivesse feito o logon localmente no mesmo. Para o gerenciamento do ambiente, no VMware foi necessário uma máquina com Windows Server 2008 de 64 bits para a instalação do vCenter, No XenServer, foi possível instalar o XenCenter em uma máquina com Windows XP. Para este trabalho, o objetivo inicial era a criação de ambientes para a 110 realização de testes de desempenho das soluções descritas, entretanto, não foi possível devido à falta de uma infraestrutura de hardware para suportar todos os ambientes e as aplicações para avaliar o desempenho das soluções. Foi pensado em implementar as soluções em ambientes virtualizados, porém este cenário ficaria aquém de um cenário real, e isso, distorceria a avaliação de desempenho. Devido a isso, optou-se pela implementação dos recursos de criação de VMs, importação de uma máquina em funcionamento e a movimentação de uma VM enquanto a mesma estivesse em produção, sem a necessidade de parada. Dentre as dificuldades encontradas durante o desenvolvimento da monografia pode-se citar o suposto conhecimento prévio do assunto, no qual se percebeu que a virtualização abrangia vários outros aspectos e aplicações, o que gerou certa dúvida no início do levantamento bibliográfico, sobre a forma de abordar o assunto e ao mesmo tempo ter um foco específico para o trabalho. Também a falta de equipamento para atingir todos os objetivos delimitados no início da pesquisa. Pois conforme foi sendo aumentado o conhecimento sobre o assunto, percebeu-se que o ambiente de hardware planejado inicialmente para testes não atenderia o desejado e foi necessário mudar sua instalação para equipamentos emprestados, mas que, porém apresentavam problemas técnicos devido ao seu tempo de uso já avançado. Além da mudança de foco do trabalho devido às limitações de infraestrutura encontradas durante seu desenvolvimento, em que a ideia original de simular um ambiente real com diferentes serviços para testes de desempenho, foi mudada para a apresentação de algumas das funcionalidades das ferramentas, o que levou a busca de maior conhecimento sobre cada uma. O funcionamento adequado das funcionalidades oferecidas pelas soluções da VMware e da Citrix comprova a preocupação atual das empresas com a alta disponibilidade de serviços, o que se torna um diferencial na hora da escolha da solução. Com o auxílio da virtualização, a convergência de novas tecnologias como a Computação em Nuvem, torna-se viável, onde é possível oferecer vários serviços, com menos equipamentos físicos com alta disponibilidade, conforme demonstrado neste trabalho. Conclui-se que em um mercado cada vez mais competitivo, em que se faz necessária a redução de custos, com a diminuição da estrutura física de um Data Center, sem perder a disponibilidade de serviços oferecidos, a virtualização vem de 111 encontro a estes anseios. Como trabalhos futuros pode-se citar uma análise comparativa de desempenho entre as duas soluções. Esta análise poderia ser feita através da geração de uma grande massa de solicitações para algum serviço em funcionamento, por exemplo, servidor de páginas ou servidor de banco de dados, para depois avaliar se os serviços conseguiram atender as requisições com um nível aceitável no tempo de resposta. Poderia ser feito também em uma empresa real, a consolidação de servidores físicos para virtual, baseado na análise de desempenho para a escolha da ferramenta que melhor atende tecnicamente e financeiramente. Primeiramente pode-se testar a virtualização no hardware que a empresa já possui, para validar seu funcionamento e em seguida testar em uma nova infraestrutura, pois é grande a variável a oferta atual de equipamentos com alta capacidade de processamento, indo de servidores típicos até Blades, e isso, influencia no valor total do investimento deste tipo de solução. 112 ANEXO A – Instalação do Hypervisor da VMware Este anexo descreve os passos necessários para a instalação do Hypervisor da VMware. O tempo total gasto em sua instalação desde o boot do cdrom até a tela de conclusão da instalação foi de aproximadamente 11 minutos, contando o tempo gasto na entrada da senha do usuário root que foi a única tela em que se fez necessário a inserção de informação. Os demais dados como IP, Máscara de rede e Gateway, foram realizados depois do sistema instalado. Para a captura das telas, a instalação foi feita em uma máquina virtual, portanto os modelos e tamanhos de discos diferem da configuração mostrada na tabela 4.1. A versão do hypervisor utilizada neste trabalho é do tipo I de virtualização, que, conforme citado, é instalado sozinho como o sistema base dos equipamentos que executarão as máquinas virtuais. A figura A.1 mostra a tela para início da instalação no servidor, onde há a opção de iniciar uma nova instalação, ou efetuar o boot a partir de uma instalação já existente. Esta segunda opção pode ser utilizada se, por algum motivo, o sistema não inicializar sozinho. Foi escolhida a primeira opção. Figura A.1- Tela inicial de boot do CD. Fonte: Elaborada pelo autor, 2012. 113 A próxima tela é de boas-vindas e informativa sobre o guia de compatibilidade do hypervisor, disponível no site da VMware. Figura A.2 - Telas de boas vindas. Fonte: Elaborada pelo autor, 2012. Para dar sequência na instalação, é necessário que seja aceito o termo de licença de uso da aplicação, conforme figura A.3. Figura A.3 - Apresentação da licença de uso. Fonte: Elaborada pelo autor, 2012. Em seguida deve-se selecionar o disco onde o sistema operacional do hypervisor será instalado, conforme figura A.4. Figura A.4 - Seleção do disco para instalação. Fonte: Elaborada pelo autor, 2012. 114 O próximo passo, ilustrado pela figura A.5, é a seleção do layout do teclado. Foi escolhida a opção padrão pré-selecionada, US Default. Figura A.5 - Seleção do layout do teclado. Fonte: Elaborada pelo autor, 2012. A figura A.6 mostra a tela para definição da senha de super usuário. Sugerese uma senha que contenha caracteres maiúsculos e minúsculos misturados com números. Figura A.6 - Escolha da senha de root. Fonte: Elaborada pelo autor, 2012. A figura A.7 exibe a tela com as opções de disco selecionadas para confirmação, para o início do processo de a instalação. Figura A.7 - Confirmação para o início da instalação. Fonte: Elaborada pelo autor, 2012. O andamento da instalação é mostrado pela figura A.8. Este processo 115 conforme citado anteriormente demorou aproximadamente 11 minutos. Figura A.8 - Instalação em andamento. Fonte: Elaborada pelo autor, 2012. A figura A.9 apresenta o término da instalação do hypervisor da VmWare. Figura A.9 - Término da instalação. Fonte: Elaborada pelo autor, 2012. Após o reinício do computador, é apresentado na figura A.10 o servidor pronto para ser utilizado. Figura A.10 - Servidor inicializado com sucesso. Fonte: Elaborada pelo autor, 2012. 116 ANEXO B - Instalação do Hypervisor da Citrix Este anexo descreve os passos necessários para a instalação do Hypervisor da Citrix, o XenServer. A exemplo do ANEXO A, para a captura das telas, a instalação foi feita em uma máquina virtual, portanto os modelos e tamanhos de discos diferem da configuração mostrada na tabela 4.1. O tempo total gasto em sua instalação desde o boot do cdrom até a tela de conclusão da instalação foi de aproximadamente 11 minutos para cada servidor, contando o tempo gasto na entrada das informações como endereço IP, Máscara de Rede, Gateway, Servidores DNS e NTP, além da senha do usuário root. A versão do XenServer utilizada neste trabalho é do tipo I de virtualização, que, conforme citado, é instalado sozinho como o sistema base dos equipamentos que executarão as máquinas virtuais. A figura B.1 mostra a tela para início da instalação do XenServer em que deve-se escolher entre a opção padrão de instalação, ou utilizando a tecla F2, acessar opções avançadas de instalação. Para este trabalho, será utilizada a opção padrão através da tecla F1 ou simplesmente dando Enter no teclado. Figura B.1 - Tela inicial de boot do CD. Fonte: Elaborada pelo Autor, 2012. Na tela seguinte, figura B.2, deve-se escolher o layout do teclado que se vai utilizar. Foi escolhido layout padrão oferecido. 117 Figura B.2 - Configuração do teclado. Fonte: Elaborada pelo Autor, 2012. Em seguida, é mostrada uma tela para a confirmada ou não do início do processo de instalação. Figura B.3 - Confirmação para iniciar a instalação. Fonte: Elaborada pelo Autor, 2012. Uma tela com os termos da licença de uso a mostrada em seguida. Conforme figura B.4, basta pressionar ENTER. Figura B.4 - Apresentação da licença de uso. Fonte: Elaborada pelo Autor, 2012. Na tela seguinte, figura B.5, deve-se selecionar qual disco será utilizado para 118 a instalação do sistema. Figura B.5 - Escolha dos discos para instalação. Fonte: elaborada pelo autor, 2012. Em seguida, figura B.6, deve ser informada a origem dos arquivos para a instalação. Figura B.6 - Origem dos arquivos de instalação. Fonte: Elaborada pelo autor, 2012. Na tela seguinte, figura B.7, é questionado se será utilizado algum pacote suplementar para a instalação. Foi escolhida a opção NO. Figura B.7 - Instalação de pacotes adicionais. Fonte: Elaborada pelo autor, 2012. A próxima tela, figura B.8, é a opção de se realizar uma verificação da integridade da mídia de instalação, caso a mesma apresente problemas. 119 Figura B.8 - Opção de verificação da mídia de instalação. Fonte: Elaborada pelo autor, 2012. O próximo passo é definir a senha do usuário root, conforme figura B.9. Figura B.9 - Escolha da senha do administrador (root). Fonte: Elaborada pelo autor, 2012. Na próxima tela devem ser definidos o nome do servidor, e os servidores DNS, conforme figura B.10. Figura B.10 - Definição do nome e servidores DNS. Fonte: Elaborada pelo autor, 2012. Em seguida, figura B.11, deve ser selecionada a localização geográfica para a instalação do sistema. 120 Figura B.11 - Seleção da localização geográfica. Fonte: Elaborada pelo autor, 2012. Em seguida, deve ser informada a cidade ou região que será utilizada como padrão para o fuso horário, conforme figura B.12. Figura B.12 - Seleção do fuso horário. Fonte: Elaborada pelo autor, 2012. Caso exista na rede, poderá ser utilizado um servidor NTP para a atualização do horário, conforme figura B.13. Figura B.13 - Escolha da forma de sincronismo de horário. Fonte: Elaborada pelo autor, 2012. Se for optado por utilizar um servidor NTP, ele deverá ser configurado na tela seguinte conforme figura B.14. Foi escolhida a opção fornecida por DHCP. 121 Figura B.14 - Configuração do servidor NTP. Fonte: Elaborada pelo autor, 2012. Após todas as informações necessárias terem sido inseridas, é apresentado a tela para o início da instalação do hypervisor, conforme figura B.15. Figura B.15 - Início da instalação dos arquivos. Fonte: Elaborada pelo autor, 2012. Após o término da instalação, uma tela solicitando o reboot do servidor é exibida conforme figura B.16. Figura B.16 - Conclusão da instalação. Fonte: Elaborada pelo autor, 2012. Após a reinicialização do servidor, já é possível acessar o console do XenServer localmente, e visualizar suas informações de configuração e se 122 necessário, alterá-las Figura B.17 - Console após a conclusão da instalação. Fonte: Elaborada pelo autor, 2012. 123 REFERÊNCIAS BIBLIOGRÁFICAS APPLE STORE. O novo iMAC. 2011. Disponível em: <http://store.apple.com/br/browse/home/shop_mac/family/imac>. Acesso em: 27 nov. 2011. APPLE. OS X Lion. 2011. Disponível em: <http://www.apple.com/br/macosx/>. Acesso em: 27 nov. 2011. BRENDEL, J.C. Virtualização. Tradução Livea Marchiori. 1. ed. São Paulo: Linux New Media do Brasil Ltda, 2008. CARISSIMI, A. Virtualização: da teoria a soluções. In: Simpósio brasileiro de redes de computadores e sistemas distribuídos, 2008, Rio de Janeiro. CITRIX. Citrix XenServer – Product Overview. 2011. Disponível em: <http://www.citrix.com/%2Fsite%2Fresources%2Fdynamic%2Fsalesdocs%2FCitrix_ XenServer_ProductOverview.pdf>. Acesso em: 03 mar. 2012. DISTROWATCH. Ubuntu. 2011.Disponível em: <http://distrowatch.com/table.php?distribution=ubuntu>. Acesso em: 27 nov. 2011. FAAS, R. Linha do tempo: marcos na história do Mac. 2009. Disponível em: <http://macworldbrasil.uol.com.br/noticias/2009/01/23/linha-do-tempo-marcos-nahistoria-do-mac/>. Acesso em: 27 nov. 2011. FOLDOC. API. 1995. Disponível em: <http://foldoc.org/API>. Acesso em 01 jul. 2012. GUGIK, G. A história dos computadores e da computação. 2009a. Disponível em: <Fonte: www.tecmundo.com.br/1697-A-Historia-dos-computadores-e-da- computacao.htm>. Acesso em: 20 nov. 2011. ______. A história dos sistemas operacionais. 2009b. Disponível <http://www.tecmundo.com.br/2031-a-historia-dos-sistemas-operacionais.htm>. em: 124 Acesso em: 26 nov. 2011. IBM. Archives, Personal Computer. 2011. Disponível em: <http://www- 03.ibm.com/ibm/history/exhibits/pc/pc_1.html>. Acesso em: 26 nov. 2011. INFO. O Mainframe Morreu. Viva o Mainframe!. 1997. Disponível em: <http://info.abril.com.br/edicoes/133/arquivos/4023_1.shl>. Acesso em: 15 out. 2011. JONES, M. T. architectures, Virtual and Linux, An overview implementations. of virtualization 2006. methods, Disponível em: <http://www.ibm.com/developerworks/linux/library/l-linuxvirt/?ca=dgr-lnxw01VirtualLinux>. Acesso em: 30 out. 2011. KOPPLIN, J. An Illustrated History of Computers Part 3. 2002. Disponível em: <http://www.computersciencelab.com/ComputerHistory/HistoryPt3.htm>. Acesso em: 27 mai. 2012. LAUREANO, M. A. P.; MAZIERO, C. A. Virtualização: Conceitos e Aplicações em Segurança, In: Simpósio Brasileiro em Segurança da Informação e de Sistemas Computacionais, 2008. LAUREANO, M. A. P. Máquinas Virtuais e Emuladores – Conceitos, Técnicas e Aplicações. São Paulo: Novatec, 2006. MARTINEZ, E. Você sabe o que é SaaS, PaaS e IaaS?. 2010. Disponível em: <http://webholic.com.br/2010/06/07/voce-sabe-o-que-e-saas-paas-e-iaas/> Acesso em: 11 set. 2011. MARTINS, V. Componentização. 2009. Disponível http://falandodesoftware.blogspot.com.br/2009/03/componentizacao.html>. em: < Acesso em: 02 jun. 2012. MAZIERO, C. A. Fundamentos de Sistemas Operacionais, I - Conceitos Básicos, 2011. Disponível em: <http://dainf.ct.utfpr.edu.br/~maziero/lib/exe/fetch.php/so:so- 125 cap01.pdf> MEIO BIT. Estão tentando ressuscitar o OS/2. 2008. Disponível em: <http://meiobit.com/13734/estao-tentando-ressuscitar-o-os2/>. Acesso em 27 nov. 2011. MICROSOFT. Visão Geral do Produto Windows Server 2008. 2007. Disponível em: <http://www.microsoft.com/brasil/servidores/windowsserver2008/evaluation/overview. mspx>. Acesso em: 27 nov. 2011. MICROSOFT. Roadmap do Produto. 2008. Disponível em: <http://www.microsoft.com/windowsserver2008/pt/br/roadmap.aspx>. Acesso em: 06 nov. 2011. MICROSOFT. Windows 7 estréia no Brasil. 2009. Disponível em: <http://www.microsoft.com/latam/presspass/brasil/2009/julho/release.mspx>. Acesso em: 06 nov. 2011. MORIMOTO, C. E. Apple I, 2005a. Disponível em: <http://www.hardware.com.br/termos/apple-i>. Acesso em: 27 mai. 2012. ______IBM PC, 2005b. Disponível em: <http://www.hardware.com.br/termos/ibmpc>. Acesso em: 26 nov. 2011. MORIMOTO, C. E. Apple x Microsoft: as primeiras versões do Windows e do MacOS. 2011. Disponível em: < http://www.hardware.com.br/dicas/primeiras-versoes.html>. Acesso em: 02 jun. 2012. NETWORKWORLD. Cinco coisas que amamos no Windows 2008 Server Edition. 2008. Disponível em: <http://computerworld.uol.com.br/negocios/2008/03/04/cinco-coisas-que-amamosno-windows-2008-server-edition/>. Acesso em: 27 nov. 2011. 126 OLIVEIRA, A. P. Servidores blade conquistam espaço nas áreas de TI. 2006. Disponível em: <http://computerworld.uol.com.br/negocios/2006/02/22/idgnoticia.2006-0329.8967275246/>. Acesso em: 26 nov. 2011. PINHEIRO, J. M. S. Tecnologias WEB - Virtualização de Sistemas. 2009. Disponível em: <http://www.projetoderedes.com.br/aulas/unifoa_tecnologias_web/apoio03_tecnologi as_web.pdf> Acesso em: 07 jun. 2012. PUC-RIO. Interrupções. 2012. Disponível em: <http://www.inf.puc- rio.br/~inf1018/corrente/aula12/interrupcoes.html>. Acesso em: 01 jul. 2012. RIBEIRO, W. C. F. História da Apple e seus Sistemas Operacionais. 2011. Disponível em: <http://www.icefusion.com.br/tag/macintosh/>. Acesso em: 27 nov. 2011. SLTI , Secretaria de Logística e Tecnologia da Informação. Guia de Estruturação e Administração do Ambiente de Cluster e Grid. Brasília, 2006. TAKEMURA, C.; CRAWFORD, L. S. The Book of Xen. San Francisco: No Starch Press, 2010. TECHNET. Usando o comando ping. 2012. Disponível em: <http://technet.microsoft.com/pt-br/library/cc737478%28v=ws.10%29.aspx>. Acesso em: 16 mai. 2012. TECNOLOGIA. A trajetória de Steve Jobs. 2011. Disponível em: <http://tecnologia.br.msn.com/fotos/a-trajet%C3%B3ria-de-steve-jobs-9?cpdocumentid=30276570&page=7>. Acesso em 27 nov. 2011. TORVALDS, L. Linux 3.0 release. 2011. <https://lkml.org/lkml/2011/7/21/455>. Acesso em: 06 nov. 2011. Disponível em: 127 VCENTER CONVERTER. Convert Physical Machines to Virtual Machines – Free!. 2012. Disponível em: <http://www.vmware.com/br/products/datacenter- virtualization/converter/overview.html>. Acesso em 26 fev. 2012. VCENTER SERVER. Datasheet do Produto. 2009. Disponível em: <http://www.infiniit.com.br/pdf/vCenterServer_ptbr.pdf>. Acesso em: 26 fev. 2012. VIRTUALBOX. innotek GmbH. 2011. Disponível em: <https://www.virtualbox.org/wiki/innotek>. Acesso em 11 set. 2011. VMOTION. Migrate Virtual Machines with Zero Downtime. 2012. Disponível em: <http://www.vmware.com/products/vmotion/overview.html>. Acesso em: 26 fev. 2012. VMWARE. Virtualização e Nuvem, 2011a. Disponível em: <http://www.vmware.com/br/cloud-computing/> Acesso em: 11 set. 2011. ______Produtos da VMware, 2011b. Disponível em: <http://www.vmware.com/br/products/>. Acesso em: 17 nov. 2011. VMWARE. ESXi and ESX Architectures Compared, 2012a. Disponível em: <http://www.vmware.com/br/virtualization/>. Acesso em 24 fev. 2012. ______ VMware ESXi and ESX Info Center, 2012b. Disponível em: <http://www.vmware.com/br/products/datacenter-virtualization/vsphere/esxi-andesx/overview.html>. Acesso em: 26 fev. 2012. VSPHERE HYPERVISOR. Introducing VMware vSphere Hypervisor 4.1 - the free edition of VMware vSphere 4.1. 2010. Disponível em: <http://blogs.vmware.com/vsphere/2010/07/introducing-vmware-sphere-hypervisor41-the-free-edition-of-vmware-vsphere-41.html>. Acesso em: 26 fev. 2012. VSPHERE. VMware vSphere. 2011. Disponível <http://www.vmware.com/br/products/datacenter-virtualization/vsphere/smallbusiness/overview.html>. Acesso em: 26 fev. 2012. em: 128 XEROX. Innovation, 1970s. 2011. Disponível em: <http://www.xerox.com/aboutxerox/history-timeline/ptbr.html>. Acesso em: 26 nov. 2011. OSWORLD. Windows Server 2008. 2009. Disponível em: <http://www.osworld.xpg.com.br/scrennshots_windows.html>. Acesso em 02 jul. 2012.