Virtualizacao

8,032 views
7,855 views

Published on

Este trabalho visa elucidar o que é virtualização, suas vertentes e suas aplicações.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
8,032
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
407
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Virtualizacao

  1. 1. MINISTÉRIO DA EDUCAÇÃO SECRETARIA DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DO ESPÍRITO SANTO VIRTUALIZAÇÃO SERRA 2008
  2. 2. WANCLEBER VIANA VIEIRA VIRTUALIZAÇÃO Trabalho apresentado durante a Mostra Tecnológica no CEFET-ES, unidade Serra, no ano de 2008. Orientador: Prof. Gilberto Sudré SERRA 2008 2
  3. 3. Sumário Resumo ......................................................................................... pag. 4 1. Introdução ................................................................................. pag. 5 2. Virtualização ............................................................................. pag. 5 2.1. Conceitos Básicos .......................................................... pag. 6 2.2. Tipos de Virtualização .............................................................. pag. 7 2.2.1. Máquina Virtual de Processos ..................................... pag. 8 2.2.2. Monitor de Máquinas Virtuais .................................... pag. 8 2.2.2.1. Virtualização Total ......................................... pag. 8 2.2.2.2. Para-virtualização .......................................... pag. 9 2.3. Suporte de Hardware para Virtualização ................................. pag. 9 2.4. Tabela Demonstrativa de Softwares para Virtualização ........... pag. 10 3. Exemplos de Utilização .............................................................. pag. 10 4. Conclusão .................................................................................. pag. 11 5. Referências Bibliográficas .......................................................... pag. 13 3
  4. 4. Resumo Virtualização é uma técnica que permite compartilhar e utilizar recursos de um único sistema computacional em vários outros denominados de máquinas virtuais. Cada máquina virtual oferece um sistema computacional completo muito similar a uma máquina física. Com isso, cada máquina virtual pode ter seu próprio sistema operacional, aplicativos e oferecer serviços de rede. É possível ainda interconectar (virtualmente) cada uma dessas máquinas através de interfaces de rede, switches, roteadores e firewalls virtuais. 4
  5. 5. 1. Introdução Ao contrário de que muitos pensam, virtualização não é um tema novo. Os primeiros casos de sua utilização datam de aproximadamente 4 décadas. As primeiras utilizações incluem o IBM 7044 com o Sistema de Tempo Compartilhado desenvolvido pelo MIT (Massachusetts Institute of Technology) no IBM 704, utilizando um Monitor de Máquinas Virtuais (Virtual Machine Monitor - VMM), também conhecido como hypervisor, termo criado na década de 70. O Monitor de Máquinas Virtuais (VMM) roda diretamente sobre o hardware, permitindo a execução de múltiplas maquinas virtuais. Cada máquina virtual poderia rodar uma instância de seu próprio sistema operacional. Um dos grandes responsáveis pelo ressurgimento da virtualização, sem dúvida, foram o aumento do poder computacional e uma maior disseminação dos sistemas distribuídos. A virtualização pode ajudar em ambientes com necessidade de uma enorme diversidade de plataformas de software, sem a necessidade de se aumentar a plataforma de hardware. Desta forma, as aplicações podem ser utilizadas em máquinas virtuais próprias, otimizando- se o uso e aproveitando-se dos recursos computacionais disponíveis. Ainda, nesse sentido é possível manter sistemas legados, sistemas desenvolvidos para uma plataforma de hardware específica e que não houve evolução no desenvolvimento do software, sendo necessário manter o hardware antigo para que a aplicação continue funcionando, em que o hardware possa ser simulado sem a necessidade de se manter o hardware antigo. Devido à importância deste assunto, nos últimos anos houve investimentos maciços por parte de fabricantes de software e processadores, recursos foram implantados diretamente nos processadores para proverem mecanismos e soluções de melhora de desempenho e suporte a virtualização. É objetivo deste workshop fornecer os conceitos necessários para compreender o que é virtualização, suas formas de implementação, compromissos e vantagens para uma infra- estrutura de TI, apresentando conceitos e aspectos de sua utilização e suas implementações. 2. Virtualização De acordo Amith Singh, autor do site Kernelthread.com, em uma livre tradução, define virtualização como uma biblioteca ou metodologia de dividir os recursos de um computador através de múltiplos ambientes de execuções, por aplicação de um ou mais conceitos ou tecnologias como particionamento de hardware e software, compartilhamento de tempo, simulação parcial ou completa da máquina, emulação, qualidade de serviço e muitas outras coisas. Este termo pode significar muitas coisas para muitas pessoas, mas atualmente seu grande foco é a virtualização de servidores visando uma utilização mais eficiente em busca de um maior retorno no investimento feito no hardware, cujo termo referido a essas ações é: 5
  6. 6. Consolidação de Servidores. Através de uma melhor distribuição dos recursos computacionais é possível atingir um nível maior de trabalho efetuado pelo mesmo hardware. Figura 1: Exemplo de Consolidação de Servidores Fonte: Sun Microsystems 2.1. Conceitos básicos O elemento principal para a virtualização é o sistema operacional, que basicamente pode ser definido como uma camada de software entre o hardware e as aplicações de usuários, que tem como objetivo funcionar como interface entre usuário e computador, tornando sua utilização mais simples, rápida e segura. Para garantir e controlar a execução dos programas, o sistema operacional associa o programa a um processo que fará uso dos recursos computacionais disponíveis, que em resumo, poderíamos dizer que processo é um programa em execução. Os processos disputam o tempo do processador e essa alternância de processos dentro do processador é chamada de chaveamento de contexto ou mudança de contexto. A execução dos processos é acompanhada por dois registradores lógicos (virtuais): PC (Program Counter) e SP (Stack Pointer) indicam a próxima instrução a ser executada e onde devem ser armazenados os endereços de retornos de chamada de função, parâmetros e variáveis locais, respectivamente. Através do escalonador e do dispatcher o sistema operacional mapeia os registradores virtuais com os registradores físicos do processador. A alternância entre registradores lógicos e físicos fornece a impressão de que todos os processos estão sendo executados simultaneamente. Portanto, um processo nada mais é que um tipo de máquina virtual que executa um único programa [Carissimi, 2008]. 6
  7. 7. Figura 2: Troca de Contexto Fonte: Livro Arquitetura de Sistemas Operacionais 2.2. Tipos de Virtualização Existem várias formas de implementar uma solução de virtualização. Na verdade, existem várias maneiras que permitem atingir o mesmo resultado através de diferentes níveis de abstração. A implementação de máquinas virtuais podem ser feitas de dois modos: Máquina Virtual de Processo ou Monitor de Máquina Virtual, também conhecido como hypervisor. Máquina Virtual de Processo cria um ambiente de execução para outras aplicações, e pode gerar um conjunto de instruções que são interpretadas para criação de instruções não- privilegiadas, chamadas de sistemas e APIs de bibliotecas que correspondem à ação abstrata desejada. Monitor de Máquinas Virtuais, ou hypervisor, é uma camada de software entre o hardware e o sistema operacional, que oferece uma cópia virtual do hardware, incluindo modos de acesso, interrupções, dispositivos de E/S, entre outros. Uma das diferenças entre os modos de implementação está na forma em que são executados. O hypervisor estará sempre presente enquanto o computador estiver ligado, enquanto, a Máquina Virtual de Processo só existirá enquanto o processo correspondente a ela estiver em execução. 7
  8. 8. 2.2.1. Máquina Virtual de Processo Podemos defini-la como uma aplicação de um Sistema Operacional executando em modo usuário, ou seja, as instruções são executadas no modo não-privilegiado a partir de instruções abstratas que representam a ação desejada. É o caso da ferramenta VMware Player, que é denominada máquina virtual de processo. Figura 3: Máquina virtual de processo Fonte: IBM 2.2.2. Monitor de Máquinas Virtuais O Hypervisor, como também é chamado o Monitor de Máquinas Virtuais, pode ser implementado através de dois métodos: Virtualização Total e Para-virtualização. 1 2 n VM VM VM Ap1 Ap2 Apn SO1 SO2 SOn HV1 HV2 HVn Gerência de Máquinas Virtuais Hardware Figura 4: Monitor de Máquinas Virtuais Fonte: Livro Arquitetura de Sistemas Operacionais 2.2.2.1. Virtualização Total Este modelo provê uma cópia (virtual) do hardware do host, de forma que o sistema operacional convidado trabalhe como se estivesse executando diretamente sobre o hardware do host, e utiliza o VMM como mediador entre o sistema operacional convidado e 8
  9. 9. o hardware do host, porque determinadas instruções devem ser tratadas e protegidas, pois o hardware do host não é de propriedade do sistema operacional da máquina virtual. Uma característica que também é uma vantagem é de que o sistema operacional hóspede não precisa ser modificado. Uma das desvantagens dessa solução é que ela provê suporte a um conjunto de dispositivos genéricos, o que pode causar subutilização dos recursos disponíveis. Outro problema é que como o sistema operacional hóspede não necessita ser modificado, logo cada instrução gerada por ele deve ser testado pelo VMM, o que gera overhead. Figura 5: Virtualização Total Fonte: IBM 2.2.2.2. Para-virtualização Este método propõe que o sistema operacional hóspede saiba que ele está sendo executado sobre um VMM e que possa interagir com ele. Dessa forma, são necessárias mudanças no sistema operacional hóspede para que ele possa chamar o VMM sempre que executar uma instrução considerada sensível, o que garante uma cooperação entre eles levando ao aumento do desempenho do método, visto que os recursos disponíveis são utilizados de maneira mais apropriada. Figura 6: Para-Virtualização Fonte: IBM 2.3. Suporte de Hardware para Virtualização Devido a proteções existentes nos modos de operação dos processadores da arquitetura x86, fabricantes, AMD e Intel, começaram a desenvolver chips com extensões que dão suporte a virtualização e trata instruções consideradas como sensíveis de forma apropriada. 9
  10. 10. As soluções criadas por esses fabricantes são incompatíveis, porém servem ao mesmo propósito. Pacifica é o codinome para as extensões dos processadores AMD, sua tecnologia é denominada de AMD-V, aplica-se às arquiteturas x86 e de 64 bits presentes nos processadores mais recentes de sua linha. A Intel por sua vez apresenta suas extensões para processadores das arquiteturas x86 e 64 bits, sobre o codinome Vanderpool, e tecnologia conhecida como IVT (Intel Virtualization Technology). É importante atentar para a ocasião de se utilizar uma ferramenta de virtualização desenvolvido para uma dessas tecnologias, pois AMD-V e IVT não são compatíveis, podendo gerar problemas de compatibilidade ou instabilidade, quando executados em processadores para o qual o software não foi escrito. 2.4. Tabela demonstrativa de softwares para virtualização Comparação entre ferramentas e a forma de suas implementações. Projeto Tipo Licença Bochs Emulação LGPL QUEMU Emulação LCPL/GPL VMware Virtualização total Proprietária z/VM Virtualização total Proprietária Xen Para-virtualização GPL UML Para-virtualização GPL Linux- Virtualização no nível de sistema GPL VServer operacional Virtualização no nível de sistema OpenVZ GPL operacional Módulos do kernel GPL. RDP VirtualBox Virtualização total e suporte a USB são proprietário 3. Exemplos de Utilização Fica evidente que o objetivo principal da virtualização é a consolidação de servidores, mas é possível aplicar seu uso de várias formas e em diversas áreas, principalmente em alguns cenários práticos, alguns deles são: Ensino – ambientes virtuais podem ser criados e testados sem comprometer a estrutura computacional existente. Honeypots – são máquinas colocadas intencionalmente na internet sem nenhum tipo de proteção, como antivírus e firewall, para que elas possam ser atacadas por crackers. Com o objetivo de monitorar o ataque e suas formas. Quando um honeypot é comprometido, pode ser substituído facilmente por outro, em alguns casos apenas restaurando a VM a um 10
  11. 11. momento anterior. A grande vantagem de sua utilização é a de não comprometer a rede real. Consolidação de servidores – consiste em centralizar e/ou diminuir o número de equipamentos e de aplicações instaladas em cada um dos servidores da organização, com o objetivo de aumentar a produtividade da infra-estrutura, melhorar o gerenciamento do ambiente, aumentar a segurança, diminuir a manutenção e economizar em recursos humanos, físicos e financeiros [Oliveira, Gisele 2004]. Consolidação de aplicações – possibilidade de virtualizar o hardware para o qual essas aplicações foram projetadas, podendo reunir em um único computador todas as aplicações legadas. Sandboxing – provimento de ambiente seguro e isolado para execução de aplicações não confiáveis. Disponibilidade – é possível ter ambientes com múltiplas execuções simultâneas aumentando a disponibilidade dos recursos oferecidos pela rede, como sistemas operacionais e outros serviços. Migração de software – facilita o processo de testes antes de colocar o software em produção, dessa forma, reduz-se o impacto sobre as migrações de software. Testes e medições – é possível criar cenários virtuais que, são difíceis de reproduzir em maquinas reais, facilitam testes sobre determinadas soluções. Conclusão Neste trabalho, foi apresentado os principais conceitos sobre virtualização, seus modos de operação e formas de implementação. Foi mostrado que virtualização é uma técnica que permite que um sistema computacional seja compartilhado e que execute vários outros que são denominados de máquinas virtuais. Cada máquina virtual trabalha isoladamente e com características próprias, incluindo sistema operacional e periféricos, que podem ser diferentes do sistema hospedeiro. Virtualização não é um conceito novo, mas é um tema atual. Várias técnicas estão disponíveis para sua implementação, em que se destacam as máquinas virtuais de processo e o monitor de máquinas virtuais. A máquina virtual de processo é caracterizada por ser uma aplicação que é executada sobre um sistema operacional. Este método é possui duas desvantagens relacionadas ao desempenho, como por exemplo: Custo com a tradução de instruções de um sistema para outro, além de todas as instruções serem executadas em modo usuário. Outro fator limitador de desempenho é que há desperdício de capacidades físicas do hardware, pois as máquinas virtuais de processo oferecem as suas VMs dispositivos de E/S genéricos. 11
  12. 12. O monitor de máquinas virtuais, conhecido como hypervisor, é uma implementação de software que fica entre o hardware e o sistema operacional. Dessa forma o sistema operacional consegue explorar de forma eficiente todos os recursos disponíveis. Detêm algumas vantagens sobre as máquinas virtuais de processo, como por exemplo: não opera em modo usuário, o que evita mudança de contexto. O monitor de máquinas virtuais pode ser implementado de duas maneiras: a primeira, o sistema operacional hóspede não precisa ser modificado (virtualização total), já na segunda o sistema operacional precisa ser modificado (para-virtualização) para trabalhar sobre o hypervisor. Vimos neste trabalho que a virtualização possibilita extrair e aproveitar o máximo dos recursos computacionais disponíveis em uma máquina. Dessa forma é possível reduzir custos com pessoal, menor complexidade no gerenciamento e custos operacionais. Enfim, a virtualização possibilitará o desenvolvimento de novas tecnologias e a forma como os processos de TI serão concebidos e levados a diante. 12
  13. 13. Referências Bibliográficas Andrade, M. Tadeu, Um estudo comparativo sobre as principais ferramentas de virtualização, In: Universidade Federal de Pernambuco. p. 9-21. Carissimi, A. Virtualização: da teoria a soluções. In: SIMPÓSIO BRASILEIRO DE REDES DE COMPUTADORES E SISTEMAS DISTRIBUÍDOS, 2008, Rio de Janeiro. Livro texto dos minicursos. Rio de Janeiro: SBC, 2008. p. 174-199. Gartner, Topics about virtualization em http://www.gartner.com/it/products/research/virtualization/virtualization.j sp?prm=4_28_08LR . Acesso outubro 2008. Hypervisor em http://www.virtualizacion.com/?page_id=8 . Acesso outubro 2008. InfoWorld, Virtualization em http://www.infoworld.com/topic- center/virtualization/ . Acesso outubro 2008. Jones, M. Tim. Virtual Linux: An overview of virtualization methods, architectures, and implementations disponível em http://www- 128.ibm.com/developerworks/library/l-linuxvirt/index.html#N1006A. Acesso outubro 2008. Kernelnewbies, Tech Comparison em http://virt.kernelnewbies.org/TechComparison . Acesso outubro 2008. Kernelthread, em http://kernelthread.com/ . Acesso outubro 2008. Machado, Francis B.; Maia, Luiz P. Arquitetura de sistemas operacionais. 4.ed. Rio de Janeiro: LTC, 2007 Oliveira, G., Estudo comparativo de metodologias de consolidação de servidores para elaboração de uma proposta de implementação, In: Sociedade Educacional de Santa Catarina. p. 22-34. Rudolph, B. Viva virtualization: Redefining the desktop disponível em http://www.linux-mag.com/id/5813 . Acesso outubro 2008. 13
  14. 14. Vilela, P. Virtualização de aplicações disponível em http://pt.sun.com/sunnews/events/2006/javapt/pdf/Virtualizacao.pdf . Acesso outubro de 2008. Wikipedia, Hypervisor em http://en.wikipedia.org/wiki/Hypervisor . Acesso outubro 2008. ______, Virtualization em http://en.wikipedia.org/wiki/Virtualization . Acesso outubro 2008. ______, Comparison of virtual machines em http://en.wikipedia.org/wiki/Comparison_of_virtual_machines . Acesso outubro 2008. 14

×