Tópicos
Introdução
Técnica que permite criar um dispositivo ou recurso virtual, baseado em software, que é simplesmente uma abstração para o hardware físico.
Exemplos:
- VMs
- Virtual Networks
- Virtual Memory
- Logical Volumes
Aspetos de Virtualização
Heterogeneidade
É um facto que dispositivos de hardware são altamente heterogéneos (possuem características muito diferentes).
Virtualização pode ser usada para abstrair estas diferenças, providenciando uma “API” comum.
Transparência
Apesar de existir uma camada de virtualização, a interação com os recursos virtualizados é, em muito, similar à interação com recursos físicos.
Por exemplo, iniciar uma sessão SSH é exatamente igual seja numa VM, seja num servidor baremetal.
Isolamento
Diversas aplicações podem, por via de virtualização, utilizar os mesmos recursos físicos, de forma isolada.
No entanto, é preciso ter atenção a alguns desafios como a segurança. Não queremos que a VM de um certo utilizador consiga aceder ou modificar a VM de outro utilizador.
Além disso, a utilização intensiva de recursos físicos por parte de uma VM não deveria afetar a performance dos demais utilizadores.
Ainda, deverá existir uma tolerância a falhas isolada.
Consolidação
Uma vez que vários recursos virtualizados dizem respeito a um mesmo conjunto de recursos físicos, é normal que os custos gerais de utilização sejam menores.
Performance
Tal como era de esperar, existir uma camada extra de virtualização irá afetar a performance das aplicações (ou serviços) a correr.
Máquinas Virtuais
Máquinas virtuais permitem rodar múltiplos sistemas operativos (com diferentes características) em cima do mesmo servidor.
As instruções geradas pelo Guest OS (VM) são intercetadas, traduzidas e executadas pelo Host OS.
Hypervisor
Também conhecido como monitor, controla as interações de baixo nível entre as VMs e o Host OS.
Host CPU
A divisão de CPU entre as diferentes VMs ocorre segundo o princípio de time slicing.
Host RAM e Armazenamento
Cada VM aloca uma porção específica da RAM e do Armazenamento do Host.
O manuseamento da memória principal utiliza os mesmos mecanismos a que estamos habituados: paginação, TLBs, etc.
Uma vez que um mesmo armazenamento é partilhado entre todas as VMs, existe a necessidade de possuir mecanismos mais complexos que lidem de forma eficiente com múltiplas escritas e leituras.
Host Network
A largura de banda do Host é partilhada com as VMs, em três modos:
- Host-only: a VM apenas tem acesso ao Host (e nada externo)
- Nat: mascara a atividade de rede como se estivesse sempre a ser feita pelo Host (a VM possui acesso a recursos externos)
- Bridge: através do Hypervisor, é criado um IP específico para a VM e as interações são vistas como feitas pela mesma, como se de um nó físico se tratasse
Modos de Virtualização
Virtualização total
O Guest OS (VM) é completamente abstraído do Host OS. Isto leva a que não sejam necessárias modificações específicas ao Guest OS, podendo utilizar o que queremos.
A desvantagem é que as instruções necessitam todas de ser traduzidas pelo Hypervisor, deteriorando a performance final. No entanto, existe algum hardware específico que ajuda neste quesito: Intel VT-x ou AMD-V.
Paravirtualização
Neste caso, o Guest OS já não pode ser qualquer um. Necessita de ter modificações específicas onde seja possível fazer bypass à camada de tradução.
Tipos de Virtualização
Baremetal Hypervisor
Não é necessário a existência de um software compatível, o hypervisor é instalado diretamente no hardware.
A vantagem é a performance ser muito superior, se comparada a hosted.
Hosted Hypervisor
Neste caso, precisamos de um software compatível com o Guest OS. Ainda assim, estes softwares necessitam sempre de instalar alguns módulos ao nível do kernel.
Exemplos:
- VirtualBox
- KVM
A desvantagem é que a performance vai ser pior, se comparada a baremetal.