Maquina Virtual

download Maquina Virtual

of 18

Transcript of Maquina Virtual

Maquina Virtual Uma mquina virtual (Virtual Machine VM) pode ser definida como uma duplicata eficiente e isolada de uma mquina real. A IBM define uma mquina virtual como uma cpia isolada de um sistema fsico, e essa cpia est totalmente protegida. O termo mquina virtual foi descrito na dcada de 1960 a partir de um termo de sistema operacional: uma abstrao de software que enxerga um sistema fsico (mquina real). Com o passar dos anos, o termo englobou um grande nmero de abstraes por exemplo, Java Virtual Machine (JVM), que no virtualiza um sistema real. Uma mquina real formada por vrios componentes fsicos que fornecem operaes para o sistema operacional e suas aplicaes. Iniciando pelo ncleo do sistema real, o processador central (CPU) e o chipset da placa-me fornecem um conjunto de instrues e outros elementos fundamentais para o processamento de dados, alocao de memria e processamento de E/S. Olhando mais detalhadamente um sistema fsico, temos ainda os dispositivos e os recursos, tais como a memria, o vdeo, o udio, os discos rgidos, os CDROMs e as portas (USB, paralela, serial). Em uma mquina real, a BIOS ou devices drivers especficos fornecem as operaes de baixo nvel para que um sistema operacional possa acessar os vrios recursos da placa-me, memria ou servios de E/S.

Emuladores Um emulador o oposto da mquina real. O emulador implementa todas as instrues realizadas pela mquina real em um ambiente abstrato de software, possibilitando executar um aplicativo de uma plataforma em outra, por exemplo, um aplicativo do Windows sendo executado no Linux ou um aplicativo i386 sendo executado em uma plataforma Sparc. Um emulador um software que simula um computador real, ou seja, um emulador um software criado essencialmente para transcrever instrues de um processador alvo para o processador no qual ele est rodando. Um emulador engana, fazendo com que todas as operaes da mquina real sejam implementadas em um software. Em outras palavras, ocorre a interpretao (em alguns casos, por meio de recompilao) de um cdigo desenvolvido para outra plataforma. Infelizmente, ele perde muito em eficincia ao traduzir cada instruo da mquina real. Alm disso, emuladores so bastante complexos, pois geralmente necessitam simular quase todas as instrues do processador e demais caractersticas do hardware que os circundam. A funcionalidade e o nvel de abstrao de uma mquina virtual encontram-se em uma posio intermediria entre uma mquina real e um emulador, de forma que os recursos de hardware e de controle so abstrados e usados pelas aplicaes. Uma mquina virtual um ambiente criado por um monitor de mquina virtual (Virtual Machine Monitor VMM), tambm denominado sistema operacional para sistemas operacionais. O monitor de mquinas virtuais tambm conhecido como hypervisor. O monitor pode criar uma ou mais mquinas virtuais sobre uma nica mquina real. Enquanto um emulador fornece uma camada de abstrao completa entre o sistema em execuo e o hardware, um monitor fornece uma interface (por meio da multiplexao do hardware) que idntica ao hardware subjacente e controla uma ou mais mquinas virtuais. Cada mquina virtual, que recebe uma cpia (virtual) do computador, fornece facilidades para uma aplicao ou um sistema convidado que acredita estar executando sobre um ambiente convencional com acesso direto ao hardware, ou seja, cada mquina virtual trabalha como um PC completo (normalmente possuindo BIOS e sendo passvel de configurao utilizando-se o Setup). Dispositivos como o CD-ROM e unidades de disquetes podem ser compartilhados entre as mquinas virtuais e o sistema host, em alguns casos at mesmo simultaneamente (uma unidade de CD pode ser acessada por todos os sistemas). Um emulador fornece uma abstrao idntica do hardware que est em uso, mas tambm pode simular outros diferentes do atual. Tipos de mquinas virtuais Existem basicamente duas abordagens para a construo de sistemas de mquinas virtuais: Tipo I: sistema em que o monitor implementado entre o hardware e os sistemas convidados (guest system). Tipo II: nele o monitor implementado como um processo de um sistema operacional real subjacente, denominado sistema anfitrio (host system). Para maximizar o desempenho, o monitor, sempre que possvel, permite que a mquina virtual execute diretamente sobre o hardware, em modo usurio. O

monitor retoma o controle sempre que a mquina virtual tenta executar uma operao que possa afetar o correto funcionamento do sistema, o conjunto de operaes de outras mquinas virtuais ou do prprio hardware. O monitor simula com segurana a operao antes de retornar o controle mquina virtual.

Maquinas virtuais de tipo I e de tipo II, respectivamente. Mquinas virtuais de tipo I O monitor tem o controle do hardware e cria um ambiente de mquinas virtuais; cada mquina virtual se comporta como uma mquina fsica completa que pode executar o seu prprio sistema operacional, semelhante a um sistema Operacional tradicional que est no controle da mquina. O resultado da completa virtualizao da mquina um conjunto de computadores virtuais executando sobre o mesmo sistema fsico. Mquinas virtuais de tipo II O monitor executa sobre um sistema anfitrio, como um processo num sistema real. O monitor de tipo II funciona de forma anloga ao de tipo I, sendo a sua maior diferena a existncia de um sistema abaixo deste. Neste modelo, o monitor simula todas as operaes que o sistema anfitrio controlaria. Abordagens hbridas Os monitores de tipo I e II raramente so usados em sua forma conceitual em implementaes reais. Na prtica, vrias otimizaes so inseridas nas arquiteturas apresentadas, com o objetivo principal de melhorar o desempenho das aplicaes nos sistemas convidados. Como os pontos cruciais do desempenho dos sistemas de mquinas virtuais so as operaes de E/S, as principais otimizaes utilizadas em sistemas de produo dizem respeito a essas operaes.

Quatro otimizaes so usuais:

Para tipo I 1 - O sistema convidado (guest system) acessa diretamente o hardware. Essa forma de acesso se d pela implementao de modificaes no ncleo do sistema convidado e no monitor. Essa otimizao ocorre, por exemplo, no subsistema de gerncia de memria do ambiente Xen.

Para tipo II 1 - O sistema convidado (guest system) acessa diretamente o sistema anfitrio

(host system). Essa otimizao implementada pelo monitor, oferecendo partes da API do sistema anfitrio ao sistema convidado. Um exemplo dessa otimizao ocorre no sistema de arquivos no VMware: em vez de reconstruir integralmente o sistema de arquivos sobre um dispositivo virtual provido pelo monitor, o sistema convidado faz uso da implementao de sistema de arquivos nativa existente no sistema anfitrio. 2 - O sistema convidado (guest system) acessa diretamente o hardware. Essa otimizao implementada parcialmente pelo monitor e parcialmente pelo sistema anfitrio, pelo uso de um device driver especfico. Um exemplo tpico dessa otimizao o acesso direto a dispositivos fsicos como leitor de CDs, hardware grfico e interface de rede provida pelo sistema VMware aos sistemas operacionais convidados. 3 - O monitor acessa diretamente o hardware. Neste caso, um device driver especfico instalado no sistema anfitrio, oferecendo ao monitor uma interface de baixo nvel para acesso ao hardware subjacente. Essa abordagem usada pelos sistemas VMware e UML. Essas otimizaes levam a arquiteturas que diferem dos modelos bsicos I e II, sendo por isso chamadas de abordagens hbridas. Formas de virtualizao Os softwares podem ser utilizados para fazer os recursos parecerem diferentes do que realmente so e essa capacidade chamada de virtualizao. A virtualizao a interposio do software (mquina virtual) em vrias camadas do sistema. uma forma de dividir os recursos de um computador em mltiplos ambientes de execuo. Existem trs formas de virtualizao: virtualizao do hardware, virtualizao do sistema operacional e virtualizao de linguagens de programao. Virtualizao do hardware A virtualizao exporta o sistema fsico como uma abstrao do hardware. Nesse modelo, qualquer software escrito para a arquitetura (x86, por exemplo) ir funcionar. Esse foi o modelo adotado na dcada de 1960 para o VM/370 nos mainframes IBM e a tecnologia de virtualizao utilizada pelo VMware na plataforma x86.

Virtualizao do Hardware Virtualizao do sistema operacional A virtualizao exporta um sistema operacional como abstrao de um sistema especfico. A mquina virtual roda aplicaes ou um conjunto de aplicaes de um sistema operacional especfico. O FreeBSD Jail ou o User- Mode Linux so exemplos dessa tecnologia.

Virtualizao do sistema operacional

Virtualizao de linguagens de programao A camada de virtualizao cria uma aplicao no topo do sistema operacional. Na prtica, as mquinas virtuais nessa categoria so desenvolvidas para computadores fictcios projetados para uma finalidade especfica. A camada exporta uma abstrao para a execuo de programas escritos para essa virtualizao. Java e Smalltalk so exemplos desse tipo de mquina virtual.

Virtualizao de linguagens de programao O poder da virtualizao O uso das mquinas virtuais e emuladores possibilitam: a. executar um sistema operacional (e suas aplicaes) sobre outro; b. utilizar uma aplicao de outra plataforma operacional; c. executar mltiplos sistemas operacionais; d. flexibilizar uma plataforma complexa de trabalho. Um exemplo claro sobre o poder da virtualizao (sua aplicao) seria um usurio executar uma aplicao em Java sobre a mquina virtual User-Mode Linux, que por sua vez estaria sobre um sistema Linux, que poderia estar sendo executado sob outra mquina virtual (VMware) e que, por fim, estaria sobre um sistema operacional (Windows).

Exemplo de virtualizao em sequncia. Exemplo mais complexo de utilizao de mquinas virtuais. Este exemplo teoricamente possvel, mas s implementvel se todas as aplicaes de mquinas virtuais e emuladores suportassem a auto-virtualizao, ou seja, se fossem capazes de executar uma cpia de si internamente. Infelizmente nem todas as mquinas virtuais ainda tm essa capacidade.

Exemplo complexo de mltiplas virtualizaes. Tcnicas de virtualizao e emulao As tcnicas mais utilizadas para virtualizao atualmente so a paravirtualizao (paravirtualization), virtualizao total (full virtualization) e recompilao dinmica (dynamic recompilation). Virtualizao total Na virtualizao total, uma estrutura completa de hardware virtualizada, portanto, o sistema a ser virtualizado (sistema convidado) no precisa sofrer qualquer tipo de alterao.

Representao da virtualizao total. O principal benefcio da virtualizao total justamente o fato de que o sistema a ser virtualizado no sofre qualquer tipo de alterao; em compensao, o sistema virtualizado executa de forma mais lenta e o monitor de mquinas virtuais precisa implementar alternativas para que as operaes privilegiadas possam ser executadas em processadores que no suportem a virtualizao nativamente, tais como os processadores Intel 32 bits disponveis atualmente. Paravirtualizao Na paravirtualizao, o sistema a ser virtualizado (sistema convidado) sofre modificaes para que a interao com o monitor de mquinas virtuais seja mais eficiente.

Representao da paravirtualizao. A paravirtualizao embora exija que o sistema a ser virtualizado precise ser modificado, o que diminui a portabilidade do sistema permite que o sistema convidado consiga acessar recursos do hardware diretamente. O acesso monitorado pelo monitor de mquinas virtuais, que fornece ao sistema convidado todos os limites do sistema, tais como endereos de memria que podem ser utilizados e endereamento em disco, por exemplo. A paravirtualizao reduz a complexidade do desenvolvimento das mquinas virtuais, j que, historicamente, os processadores no suportam a virtualizao nativa. A performance obtida, a principal razo para utilizar a paravirtualizao, compensa as modificaes que sero implementadas nos sistemas convidados. Relao entre a virtualizao total e a paravirtualizao A virtualizao total exige do monitor de mquinas virtuais um trabalho adicional para gerenciamento da memria. Ao ser instanciado, o monitor reserva um espao da memria para trabalho, mas o sistema convidado acredita estar utilizando o incio da memria. A Figura 1.17 demonstra exatamente essa dificuldade: a mquina real tem endereamento de memria iniciando em 0000 at FFFF. O monitor reserva o espao de memria compreendido entre 000F e 00FF, mas o sistema convidado enxerga esse espao reservado como sua memria total e, portanto, iniciando em 0000 e finalizando em 000F. Sempre que o sistema convidado acessa a memria virtual, o monitor faz a traduo dos endereos para acessar a memria real. Isso no ocorre na

paravirtualizao, pois o monitor informa ao sistema convidado qual o espao de memria que pode ser utilizado. Dessa forma, o sistema convidado acessa diretamente a memria fornecida sem interferncia do monitor de mquinas virtuais.

Alocao de memria para o sistema convidado. O mesmo processo ocorre para acesso a disco: enquanto num sistema com virtualizao total o sistema convidado enxerga o disco como seu para uso exclusivo, na paravirtualizao o sistema convidado sabe que o disco compartilhado. Ainda, na virtualizao total, sempre que o sistema realiza uma chamada de sistema para acesso a disco, o monitor de mquinas virtuais deve capturar essa chamada, interpret-la e repass-la para que o sistema anfitrio execute a operao (em casos de mquinas virtuais de tipo II); em mquinas virtuais de tipo I, o monitor de mquinas virtuais realiza a chamada de sistema a disco. O resultado da chamada de sistema ento repassado para o sistema convidado. Na paravirtualizao, o sistema convidado sabe que o disco compartilhado e realiza diretamente o acesso ao disco (sem a interferncia do monitor de mquinas virtuais), bem como aos demais dispositivos (mouse, teclado etc.); o monitor somente controla a ordem de acesso, no caso de mltiplos sistemas convidados em execuo simultaneamente. Propriedades de monitores de mquinas virtuais Os monitores possuem algumas propriedades que tambm podem ser utilizadas na segurana de sistemas e outras aplicaes: Isolamento: Essa propriedade garante que um software em execuo em uma mquina virtual no acesse nem modifique outro software em execuo no monitor ou em outra mquina virtual, ou seja, faz com que o software

funcione na mquina virtual e em outras mquinas virtuais e mquinas reais sem que um software interfira na execuo do outro. Essa propriedade utilizada para que erros de um software ou hackers possam ser contidos dentro da mquina virtual sem afetar as outras partes do sistema. Alm do isolamento dos dados, a camada de virtualizao possibilita a reduo do desempenho de um sistema convidado de modo que os recursos consumidos por uma mquina virtual no prejudiquem necessariamente o desempenho de outras mquinas virtuais (gerncia dos recursos). Inspeo: O monitor tem acesso e controle sobre todas as informaes do estado da mquina virtual, como estado da CPU, contedo de memria, eventos etc. Interposio: O monitor pode intercalar ou acrescentar instrues em certas operaes de uma mquina virtual, como, por exemplo, quando da execuo de instrues privilegiadas por parte da mquina virtual. Eficincia: Instrues inofensivas podem ser executadas diretamente no hardware, pois no iro afetar outras mquinas virtuais ou aplicaes. Gerenciabilidade: Como cada mquina virtual uma entidade independente das demais, a administrao das diversas instncias simplificada e centralizada. Compatibilidade do software: A mquina virtual fornece uma abstrao compatvel, de modo que todo o software escrito para ela funcione. Por exemplo, em uma mquina virtual com um sistema operacional de alto nvel funcionaro os programas escritos na linguagem de alto nvel. A abstrao da mquina virtual frequentemente pode mascarar diferenas nas camadas do hardware e do software abaixo da mquina virtual. Um exemplo disso escrever uma vez o software em Java e execut-lo em qualquer outra mquina virtual Java. Encapsulamento: A camada de virtualizao pode ser usada para manipular e controlar a execuo do software na mquina virtual. Pode tambm usar uma ao indireta para dar prioridade ao software ou fornecer um ambiente melhor para execuo. Por exemplo, mquinas virtuais para as verificaes de runtime podem ajudar a reduzir a quantidade de erros de programas. O encapsulamento fornece outra propriedade, que o encapsulamento de estado, que pode ser utilizado para construir checkpoints do estado da mquina virtual. Estados salvos tm vrios usos, como rollback e anlise postmortem. Desempenho: Adicionar uma camada de software a um sistema pode afetar o desempenho do software que funciona na mquina virtual, mas os benefcios proporcionados pelo uso de sistemas virtuais compensam a perda de desempenho. Hardwares virtualizveis, como as mquinas mainframe da IBM, tm uma propriedade chamada execuo direta que permite que esses sistemas obtenham, com a utilizao de mquinas virtuais, desempenho similar ao de um sistema convencional equivalente. Uso de mquinas virtuais Ao longo dos anos, as mquinas virtuais vm sendo utilizadas com vrias finalidades, como processamento distribudo e segurana. Um uso frequente de sistemas baseados em mquinas virtuais a chamada consolidao de

servidores. Em vez da utilizao de vrios equipamentos com seus respectivos sistemas operacionais, utiliza-se somente um computador com mquinas virtuais abrigando os vrios sistemas operacionais e suas respectivas aplicaes e servios. Benefcios ao utilizar mquinas virtuais A abordagem da IBM, que define uma mquina virtual como uma cpia totalmente protegida e isolada de um sistema fsico, permite que testes de sistemas na fase de desenvolvimento no prejudiquem os demais usurios em caso de um travamento do equipamento virtualizado. Nos mainframes, as mquinas virtuais tambm so utilizadas para time-sharing ou diviso de recursos para as diversas aplicaes. Muitos dos benefcios das mquinas virtuais utilizadas no ambiente dos mainframes tambm podem ser obtidos nos computadores pessoais. Existem vrias vantagens para a utilizao de mquinas virtuais em sistemas de computao: Facilitar o aperfeioamento e testes de novos sistemas operacionais. Auxiliar no ensino prtico de sistemas operacionais e programao ao permitir a execuo de vrios sistemas para comparao no mesmo equipamento. Executar diferentes sistemas operacionais sobre o mesmo hardware, simultaneamente. Simular configuraes e situaes diferentes do mundo real, como, por exemplo, mais memria disponvel ou a presena de outros dispositivos de E/S. Simular alteraes e falhas no hardware para testes ou reconfigurao de um sistema operacional, provendo confiabilidade e escalabilidade para as aplicaes. Garantir a portabilidade das aplicaes legadas (que executariam sobre uma mquina virtual simulando o sistema operacional original). Desenvolvimento de novas aplicaes para diversas plataformas, garantindo a portabilidade dessas aplicaes. Diminuio de custos com hardware, utilizando a consolidao de servidores. Facilidades no gerenciamento, migrao e replicao de computadores, aplicaes ou sistemas operacionais. Prover um servio dedicado a um cliente especfico com segurana e confiabilidade Dificuldades para o uso de mquinas virtuais Alm do custo do processo de virtualizao em si, existem outras dificuldades para a ampla utilizao de mquinas virtuais em ambientes de produo: Processador no virtualizado: A arquitetura dos processadores Intel 32 bits no permite naturalmente a virtualizao. O trabalho Formal Requirements for Virtualizable Third Generation Architectures demonstra que uma arquitetura pode suportar mquinas virtuais somente se todas as instrues aptas a inspecionar ou modificar o estado privilegiado da mquina forem executadas em modo mais privilegiado e puderem ser interceptadas. O processador Intel de 32 bits no se encontra nessa situao, pois no possvel virtualizar o processador para executar todas as operaes em um modo menos privilegiado.

Diversidade de equipamentos: Existe uma grande quantidade de equipamentos disponveis (caractersticas da arquitetura aberta do PC). Em uma execuo tradicional, o monitor teria de controlar todos esses dispositivos, o que requer um grande esforo de programao por parte dos desenvolvedores de monitores. Preexistncia de softwares: Ao contrrio de mainframes, que so configurados e controlados por administradores de sistema, os desktops e workstations normalmente j vm com um sistema operacional instalado e prconfigurado, e que normalmente ajustado pelo usurio final. Nesse ambiente, extremamente importante permitir que um usurio possa utilizar a tecnologia das mquinas virtuais, mas sem perder a facilidade de continuar utilizando seu sistema operacional padro e aplicaes. A principal desvantagem do uso de mquinas virtuais o custo adicional de execuo dos processos em comparao com a mquina real. Esse custo muito varivel, podendo chegar a 50% ou mais em plataformas sem suporte de hardware virtualizao, como os PCs de plataforma Intel. Esse problema inexiste em ambientes de hardware com suporte virtualizao, como o caso de mainframes. Todavia, pesquisas recentes tm obtido a reduo desse custo a patamares abaixo de 20%, graas, sobretudo, a ajustes no cdigo do sistema anfitrio. Outra tcnica utilizada a reescrita on-the-fly de partes do cdigo executvel das aplicaes, inserindo pontos de interceptao do controle antes/aps as instrues privilegiadas cuja virtualizao no permitida na plataforma Intel de 32 bits. Um exemplo desse avano o projeto Xen, no qual foram obtidos custos da ordem de 3% para a virtualizao de ambientes Linux, FreeBSD e Windows XP. Esse trabalho abre muitas perspectivas na utilizao de mquinas virtuais em ambientes de produo, ainda mais com novas pesquisas para suporte de virtualizao nos processadores. Abstrao e virtualizao Embora a virtualizao seja descrita como uma abstrao em software, existe uma diferena entre os termos abstrao e virtualizao. A abstrao uma forma simples de prover alguns recursos especficos de hardware para um software, enquanto a virtualizao prov um conjunto completo de recursos.

Diferena entre abstrao e virtualizao.

Exemplo de armazenamento em disco. A abstrao permite que softwares acessem os arquivos para operaes especficas e simples (read ou write, por exemplo). A virtualizao fornece para o software um sistema de arquivos (disco virtual) montado sobre um arquivo e, nesse caso, possvel realizar operaes mais complexas (mkdir ou chmod, por exemplo). O futuro O uso de mquinas virtuais atingir o seu auge em um curto espao de tempo, pois as pesquisas na indstria e nas universidades para aprimorar as questes de segurana, mobilidade e performance tm crescido bastante. Os principais campos de pesquisas nos prximos anos, para melhorar o suporte a virtualizao, devero ser: CPU: AMD e Intel anunciaram tecnologias (Pacifica e Vanderpool, respectivamente) para que a virtualizao sobre a plataforma x86 ocorra de forma mais natural e tranquila. Essas tecnologias simplificaro o esenvolvimento de novos monitores de mquinas virtuais. Memria: Vrias tcnicas tm permitido que a virtualizao da memria seja mais eficiente. Pesquisas futuras devem levar os sistemas operacionais convidados a gerenciar a memria juntamente com o monitor de mquinas virtuais (gerncia cooperativa). Dispositivos de E/S: Os dispositivos de E/S sero projetados para fornecer suporte virtualizao com alta-performance. O prprio dispositivo ir suportar a multiplexao, de forma a permitir o acesso simultneo por vrios sistemas virtuais. A responsabilidade pelo acesso aos dispositivos dever passar do monitor para o sistema convidado. O passo mais importante para a ampla adoo das mquinas virtuais so as pesquisas para uma nova gerao de processadores. Os processadores atuais implementam quatro nveis de operao (0,1,2 e 3). Cada nvel representa o privilgio para a execuo de cdigos binrios dentro do processador. Quanto maior o nvel, menor o privilgio para execuo. Por vrias razes de implementao dos sistemas operacionais, somente os nveis 0 e 3 so utilizados.

Estrutura atual de um processador x86.

Como os sistemas operacionais executam no modo mais privilegiado (level 0), os sistemas de virtualizao precisam implementar vrias tcnicas para fornecer a virtualizao, forando que os sistemas operacionais convidados rodem no privilgio 1 ou 3.

Estrutura atual do funcionamento da mquina virtual num processador x86. Essas tcnicas de retirar privilgios causam alguns problemas: Virtualizao total: Introduz muito overhead para a traduo de instrues. Paravirtualizao: Exige modificaes nos sistemas operacionais convidados, limitando sua compatibilidade e suporte. Na nova gerao de processadores ser implementado um assistente em hardware (hardware assist) para suportar nativamente a virtualizao. Esse assistente ir rodar em um modo mais privilegiado. A Intel, com sua tecnologia Vanderpool, prope uma estrutura de processadores com esse hardware assist.

Virtualizao com o uso do hardware assist.

Bibliografia LAUREANO, Marcos. Mquinas Virtuais e Emuladores, Conceitos, Tcnicas e Aplicaes, Novatec Editora.