Tipos de virtualização
Last updated
Last updated
Ato de criar todo um ambiente de hardware virtual para a execução isolada de software. Este tipo de virtualização é a base para a criação de máquinas virtuais. Para a criação e gestão dessas máquinas virtuais um hypervisor (também chamado de VMM - Virtual Machine Monitor) é utilizado. O sistema operacional virtualizado é chamado de guest (convidado).
Existem dois tipos de VMM:
Tipo 1: é quando o sistema operacional do host é otimizado e dedicado para funções de VMM (também chamado de bare metal VMM). Exemplos: VMware ESXi, Xen e KVM (dependendo do ponto de vista).
Tipo 2: é quando o VMM roda sobre um sistema operacional de propósito geral (também chamado de hosted VMM). Exemplos: VirtualBox, VMware Workstation, Parallells.
Com relação ao VMM de tipo 1, é possível que duas diferentes técnicas sejam utilizadas:
Virtualização completa (full virtualization): é mais antiga que a paravirtualização, pode emular totalmente os recursos de hardware acessíveis pelo guest (se baseando em técnicas de trap-and-emulate e binary translation) ou emulando parcialmente na intenção de evitar que haja modificações no sistema operacional virtualizado. Quando emulado parcialmente, o VMM conta com a ajuda de recursos de virtualização nativos do hardware (mecanismos de hardware-assisted virtualization).
Paravirtualização (paravirtualization): o guest tem acesso direto ao hardware e procedimentos privilegiados recorrem ao VMM por meio de hypercalls. Apresenta uma performance muito boa e requer que o kernel do guest seja modificado para o VMM em uso. Surgiu como alternativa em uma época onde a virtualização completa era lenta e não contava com otimizações de hardware. Atualmente está em desuso devido aos avanços em melhorias de performance na virtualização completa e soluções de containerização.
Possui duas vertentes:
local: quando aplicações locais desenvolvidas para outros ambientes rodam em algum modo de compatibilidade. Exemplos: - Win64 emulador de x86. - Cygwin. - QEMU User Mode Emulation. - VMware Fusion. - Recurso do Parallels estilo VMware Fusion.
remoto: quando aplicações são aparentemente executadas local, mas são processadas em um servidor central. Exemplos: - Citrix XenApp. - Microsoft App-V. - Microsoft RDS Remote App. - Execução remota de aplicações gráficas via X Window System. - Game Streamming, como o Google Stadia e o Xbox Cloud Gaming.
Ato de apresentar um disco lógico virtual a partir de um ou mais recurso de armazenamento físico. Basicamente, qualquer esquema de armazenamento que não seja diretamente em um dispositivo local (como é o convencional) pode ser considerado uma virtualização de storage.
Hosted-based: exige a atuação de algum software no host. Exemplos: LVM logical volumes, ZFS pools, BTRFS pools, software-defined RAID.
Storage device-based: RAID.
Network-based: iSCSI, Fibre Channel.
É toda abstração construída sobre interfaces e tecnologias de rede reais. Exemplos:
VLANs.
Interfaces veth.
Interfaces bridge.
VPNs (ou tudo o que envolva encapsulamento de protocolos e uso de interfaces de rede virtuais, como interfaces tun/tap, IPSec, TLS, VXLAN, GRE, GENEVE, e etc).
Também chamada de lightweight virtualization, utiliza de mecanismos nativos do sistema operacional para a execução de aplicações em ambientes isolados de outros recursos públicos do sistema. Esses "ambientes isolados" são atualmente chamados de "containers". Existem dois tipos de soluções de containers:
Application containers: provisionam um ambiente para a execução de uma única aplicação. Exemplo: Docker, rkt.
System containers: provisionam um ambiente para execução de múltiplas aplicações. Exemplo: LXC, LXD (que atua sobre o LXC), OpenVZ, Jails, Solaris Zones.