Tecnologia

Tipos de virtualização

Este artigo iremos apresentar os tipos de virtualização existentes. Basicamente temos dois tipos: por hardware e por software. A seguir, será apresentado detalhes de cada um. Boa leitura!!

I – PARTICIONAMENTO DE HARDWARE

Particionamento de hardware refere-se à tecnologia de hardware altamente especializado, que permitem que os recursos de um único computador sejam divididos em múltiplas partições, as chamadas ‘hard partitions’, 1 onde cada uma pode hospedar uma instância de um sistema operacional. A figura 1 ilustra como funciona a virtualização por particionamento por hardware.

Particionamento por hardware existe a um bom tempo, originando dos sistemas mainframes da IBM. Nos dias atuais existem diversas tecnologias de particionamento por hardware disponíveis, cada qual implementação proprietária e requer hardware e software específicos para serem utilizados. Em algumas implementações, somente um ou dois sistemas operacionais muito específicos possui suporte. Geralmente todos os componentes requeridos são disponíveis de um único fornecedor, devido a sua natureza proprietária.

image

Vantagens

  • Grande eficiência no compartilhamento de recursos e gerenciamento de capacidade. Estes sistemas são mais eficientes do que o particionamento por software porque o gerenciamento de recursos entre as ‘hard partitions’ são mantidos utilizando componentes de hardware separados (memory, storage, chips, etc.).
  • O software especializado (geralmente chamado de microcode) que executa o gerenciamento de recursos reside em componentes de hardware gerenciados por recursos especializados. Com isto, o desempenho disponível em cada ‘hard partition’ é maximizada e não ocorre sobrecarga.
  • Isolamento elétrico: Esta característica de isolamento elétrico entre as ‘hard partitions’ permite que falhas ocorridas em uma partição não afetem as demais.
  • Alta escalabilidade: Pelo fato de somente hardware altamente especializado permitir o particionamento por hardware, estes mesmos apresentam uma alta escalabilidade e robustez.

Desvantagens

  • Preço alto: Devido a possuir hardware e software proprietário, os custos de aquisição, suporte são elevados e o cliente acaba sendo ‘refém’ do fornecedor.
  • Suporte limitado de vários sistemas operacionais.
  • Baixa portabilidade: Devido a cada fornecedor possuir tecnologia proprietária, a portabilidade de bases instaladas nas ‘hard partitions’ fica limitada a somente hardwares do mesmo proprietário.

Alguns fornecedores e suas tecnologias atuais.

  • HP – nPartition
  • IBM – LPAR e DLPAR
  • Sun Microsystem – Dynamic System Domain
  • Unisys – Dynamic Partitioning

II – PARTICIONAMENTO LÓGICO

Particionamento lógico refere-se à separação de ambientes de execução em um sistema computacional usando software. Particionamento lógico inclui particionamento por software, particionamento de recursos e particionamento de serviços.

Particionamento por software

Particionamento por software é uma tecnologia baseada em software que permite um computador físico ser dividido em múltiplas partições (chamadas de ‘soft partitions’ ou máquinas virtuais), cada qual, hospedando sua própria e isolada instância de um sistema operacional. Seu comportamento é semelhante ao particionamento de hardware, pois múltiplas instâncias podem coexistir em um único servidor físico, com a diferença que, pelo particionamento por software, o isolamento de cada partição e o gerenciamento dos recursos compartilhados é realizado por uma camada especial de software chamada ‘Virtual machine Monitor’ (VMM) ou Hypervisor.

O VMM, assim como os sistemas operacionais de cada ‘soft partition’, consomem recursos do mesmo conjunto de hardware, ou seja, a VMM utiliza-se de recursos de hardware, o que ocasiona degradação de desempenho, se comparado com o particionamento de hardware. Esta degradação varia de acordo com cada implementação, mas sempre causa impacto no desempenho de cada Máquina Virtual.

Existem dois tipos de particionamento por software:

1. Hosted:  Neste tipo de implementação (conforme figura 2), a camada de virtualização é um aplicativo que é instalado em um sistema operacional. As vantagens deste tipo de implementação é utilizar a capacidade de gerenciamento de recursos do sistema operacional utilizado, sua compatibilidade de hardware, APIs e desenvolvimento relativamente mais simples, assim como seu suporte. Como desvantagens, irá apresentar as mesmas deficiências e ineficiências do sistema operacional em que a mesma está hospedada; degradação de desempenho devido ao consumo de recursos que o sistema operacional que hospeda este apresenta. Algumas tecnologias deste tipo de implementação inclui Microsoft Virtual Server, Oracle VM VirtualBox e VMware GSX Server, em ambiente Windows e o VMware GSX Server e Oracle VM VirtualBox para Linux

image

2. Bare-metal ou Hypervisor:   Neste tipo, a camada de virtualização é instalada diretamente no hardware, com isto, apresenta um melhor desempenho, pois por não apresentar um sistema operacional intermediando, o gerenciamento dos recursos computacionais se torna mais eficiente. Atualmente, o VMware ESX Server é a implementação mais madura de um sistema de particionamento por software instalado nativamente em arquitetura baseada em x86, embora podemos citar outras tecnologias como Cytrix XenServer, Microsoft Hyper-V e Oracle VM Server.

image

Sistemas de particionamento por software utiliza-se de combinação de emulação, simulação e ‘pass-through’ (passar através) em seus métodos de abstração de hardware. Cada máquina virtual ‘enxerga’ seu próprio conjunto de recursos de hardware que irá consumir.

Particionamento de aplicações

Particionamento de aplicações é uma tecnologia baseada em software que permite que recursos do sistema operacional em que uma aplicação dependa de estar executando em um ambiente alternativo em um sistema operacional sem o conhecimento da mesma.

O aplicativo isolado pode ser executado em múltiplas instâncias simultaneamente em um mesmo sistema operacional, por um ou mais usuários, sem uma instância de aplicação interferindo em outra. Cada instância não tem conhecimento da existência de outras, e esta implementação não requer nenhuma mudança no aplicativo para que possa ser hospedado em um sistema de particionamento de aplicações.

A grande vantagem de um sistema de particionamento de aplicações é que, qualquer aplicação, independente de ser usada por um ou mais usuários, pode ser gerenciada de forma centralizada e ser disponível de forma distribuída. Um único servidor pode executar muitas instâncias desta aplicação e cada estado da instância desta aplicação é escrito em um container separado. Cada container é automaticamente controlado pelo sistema de particionamento de aplicações.

O particionamento de aplicações pode consolidar uma única aplicação para múltiplos computadores desktops e servidores em um único servidor e a aplicação pode ser gerenciada como uma única instância desta aplicação. O próprio sistema operacional não é completamente abstraído desta aplicação, somente certos subcomponentes, tais como sistema de arquivos, portanto somente aplicações executam normalmente em um sistema operacional começando a usar são permitidos para ser hospedado em um sistema de particionamento de aplicações. A figura 4 ilustra este exemplo.

image

Particionamento de recursos

Particionamento de recursos é uma tecnologia baseada em software que abstrai como certos recursos do sistema operacional são alocados para instâncias de aplicações ou processos individuais executando em um sistema operacional. Esta tecnologia é usada para controlar consumo de recursos de aplicações e processos, permitindo maior controle granular que os providos pelo sistema operacional.

image

Os sistemas de particionamento de recursos permitem também que o consumo de recursos possa ser controlado não somente no nível de aplicações ou recursos, mas também por uma combinação de aplicações ou processos e contas de usuários.

Este tipo de virtualização permite também habilitar qualidade de serviço no sistema operacional, pois as instâncias de aplicações ou processos podem passar parâmetros, que permitem níveis mínimos e máximos de utilização de recursos tais como CPU, memoria e I/O de discos para serem efetivamente controladas e gerenciadas. Assim, como o particionamento de aplicações, este não abstrai o sistema operacional inteiro, ao invés disto, somente aplicações que devam ser controladas pelo sistema de particionamento de recursos são abstraídas.

Particionamento de serviços

O particionamento de serviços é uma tecnologia baseada em software em que uma única instância da aplicação prove múltiplas e isoladas instâncias de um serviço (conforme figura 9).

image

Cada instância do serviço aparece para os consumidores do serviço como sendo uma instância de aplicação dedicada (e geralmente oferece uma instância de servidor dedicada). Neste tipo de virtualização, a abstração ocorre no topo da instância da aplicação, que permite que múltiplas instâncias desta aplicação possam coexistir.

O nível de isolação entre estas instâncias pode variar conforme a implementação; ocorrendo casos em que há completo isolamento entre as instâncias até o caso em que não há isolamento.

Exemplos comuns deste tipo de virtualização são servidores de banco de dados e web. Em um servidor de banco de dados, uma única instância é executada em um sistema operacional. Esta instância pode conter diversos bancos de dados. Com o particionamento de serviços, cada banco de dados pode ser configurado para aparecer para os consumidores do serviço somente como o único do servidor, embora possa ter mais de vinte bancos de dados sendo executados simultaneamente.

Outro exemplo são os servidores web modernos que permitem múltiplos ‘web sites’ virtuais para serem criados e hospedados simultaneamente de uma única instância da aplicação. Cada ‘web site’ é isolado um do outro e aparece como se estivesse hospedado em seu próprio servidor dedicado, quando na realidade podem ter mais de cem ‘web sites’ rodando simultaneamente de uma instância de aplicação de servidor web.

Sistemas Operacionais e ambientes Runtime

Embora não seja usualmente descrito como um tipo de tecnologia de virtualização, sistemas operacionais são na verdade um dos tipos mais comuns de tecnologias de virtualização. Pode-se dizer que um sistema operacional é uma maquina virtual implementada em software usada para abstrair os recursos do hardware do computador. Aplicativos que residem e executam dentro deste sistema operacional, utilizam-se das facilidades deste SO para acessar o hardware ao invés deste próprio acessar o hardware, geralmente através do modulo chamado driver de dispositivo.

Alguns frameworks de programação incluem um ambiente runtime designado para rodar no topo do sistema operacional. Softwares escritos para serem executados neste ambiente rodam no topo do sistema operacional como também dependem deste ambiente runtime (ou maquinas virtuais como são chamados) para executar as tarefas. Este tipo de virtualização não prove um ambiente de execução completo e depende do sistema operacional e seus recursos para executar seu trabalho. Exemplos incluem o framework Microsoft .Net e o Sun Java.

Conclusão

Este artigo encerra a série sobre os conceitos relacionados a virtualização. Apresentei o que é virtualização, os principais conceitos, sua história e finalizando apresentando os tipos de virtualização existentes. Em meus próximos artigos irei estar falando sobre as soluções comerciais existentes e as principais características que cada produto apresente. Aguardem!!

Referencias

  1. MARSHALL, David, REYNOLDS, Wade A, MCCRORY, Dave. Advanced server virtualization – Vmware and Microsoft Platforms in the Virtual Data Center. Auerbach Publications, 2006  
Fábio Massalino

Comentários

Deixe uma resposta