Técnicas
Existem várias técnicas de virtualização, as quais fornecem aspectos similares, porém, diferem no grau de abstração e nos médodos usados para a virtualização.
Virtual Machines ( VMs )
As Máquinas Virtuais emulam algum hardware real ou fictício, o qual , por sua vez, requer recursos reais da máquina hospedeira.
Esta abordagem, usadas por muitos dos emuladores , permite que o emulador seja executado em um sistema operacional "guest" arbitrário , sem modificações, pelo fato dele não saber que não está sendo executado em hardware real.
A questão principal dessa abordagem é que, algumas instruções da CPU necessitam de privilégios adicionais e não podem ser executadas no espaço do usuário, exigindo portanto, um Monitor de Máquinas Virtuais ( VMM ) para analisar o código sendo executado e torná-lo seguro, dinamicamente.
A abordagem de emulação de hardware é usada pelo VMware, QEMU Parallels e Microsoft Virtual Server.
Paravirtualização
Esta técnica também requer um Monitor de Máquinas Virtuais ( VMM ), porém, muito do seu trabalho é executado no sistema operacional convidado (guest), que por sua vez , é modificado para suportar este VMM, e evita o uso desnecessário de instruções privilegiadas.
A técnica de paravirtualização também permite a execução de diferentes sistemas operacionais (OSs) em um único servidor, mas é necessário que eles sejam portados, ou seja, esses OSs sabem que estão rodando debaixo de um supervisor.
A técnica de paravirtualização é usada por produtos tais como o Xen e o UML.
Virtualização ao nível do SO
Virtualização de Containers
Muitas aplicações rodando em um servidor podem facilmente compartilhar a máquina com outros processos, se puderem ser isoladas e terem a segurança adequada.
Além disso, em muitos casos sistemas operacionais diferentes não são necessários no mesmo servidor, apenas múltiplas instâncias de um único sistema operacional.
Os sistemas de virtualização ao nível do sistema operacional foram projetados para prover o isolamento e a segurança necessários para rodar múltiplas aplicações ou cópias do mesmo sistema operacional ( porém, diferentes distribuições do OS ) no mesmo servidor.
OpenVZ, Virtuozzo, Linux-Vserver, Solaris Zones e FreeBSD Jais são exemplos desse tipo de virtualização.
Breve comparação
As três técnicas diferem:
- na complexidade de implementação
- no suporte a diferentes sistemas operacionais
- na performance em relação a um servidor stand-alone no nível de acesso aos recursos compartilhados.
Por exemplo, VMs tem uma abrangência maior de sistemas operacionais, porém sua performance é pior.
Para-VMs tem uma performance melhor , mas suportam poucos SOs um vez que eles precisam sofrer alterações para rodar nesse modo de virtualização.
A virtualização ao nível do SO provê a melhor performance e escalabilidade em comparação com as outras abordagens.
Aplicação pŕatica
- OpenVZ
Solução implementada que permite criar, manipular e gerenciar VMs (Máquinas Virtuais) mostrando que o esforço interno para disponibilização de ambientes para desenvolvimento e produção podem ser otimizados.
Com essa ferramenta, todo o processo interno de criar máquinas para desenvolvimento de aplicações, testes de carga, homologações de novas soluções e outras demandas poderiam ser facilitadas pelo gerenciamento do OpenVZ.
O cliente deste serviço teria flexibilidade e agilidade na criação de máquinas virtuais para vários propósitos , com uma interface amigável e funcionalidades que satisfazem as principais atividades de um configurador de ambientes com autonomia para administrar as máquinas através de um interface web.
- Hélvio Pereira de Freitas