Princípios de Virtualização
  • Princípios de virtualização
    • Tipos de virtualização
    • Emulação vs Virtualização
  • Arquitetura de computadores
  • Hardware-based virtualization
Powered by GitBook
On this page
  1. Princípios de virtualização

Tipos de virtualização

PreviousPrincípios de virtualizaçãoNextEmulação vs Virtualização

Last updated 1 year ago

Hardware virtualization

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.

Nested Virtualization (Virtualização Aninhada) é quando uma máquina virtual é provisionada dentro de outra máquina virtual. Dependendo do hypervisor, recursos de aceleração por hardware poderão ser habilitados. Caso não esteja habilitado ainda é possível recorrer a uma virtualização lenta baseada em software.

Migration e Live Migration de VMs é quando uma máquina virtual é movida de um host físico para outro (estando desligada ou ligada). Para otimizar o processo de migração de uma VM para outro host físico, é uma boa prática centralizar as imagens de disco virtuais das VMs em um storage.

Em infraestruturas grandes, é desejado que o processo de migração de VMs ocorra de forma automática para evitar a saturação de hosts físicos e também para evitar downtime de serviços caso algum host físico falhe. Para isto é usado uma solução para orquestração de VMs (cabendo a ele detectar hosts físicos sobrecarregados e indisponíveis, e redistribuir as VMs para hosts ociosos e saudáveis).

Application virtualization

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.

Storage virtualization

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.

Network virtualization

É 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).

Em infraestruturas muito grandes e virtualizadas entra em cena tecnologias como o SDN e o NFV. O NFV (Network Function Virtualization) é um framework que trata do provisionamento e orquestração de componentes de rede virtuais (Switches, DHCP Servers, Roteadores, Firewalls, Loadbalancers, DNS Servers, e etc). O SDN (Software Defined Network) é uma solução para centralizar e coordenar as configurações de switches e roteadores de uma grande rede (onde, geralmente, um SDN controller configura os equipamentos de rede remotamente via OpenFlow).

OS-level virtualization

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.

Execução de aplicações gráficas remotas via Xming: observe que várias das aplicações deste print estão sendo processadas remotamente em um servidor Linux. Mas o cliente tem a ilusão de que elas estão sendo executadas localmente no Windows.
Exemplo de console da BIOS para configuração de controladora RAID. Apesar de haver 5 discos Seagate independentes, a controladora RAID irá abstrair isto para o sistema operacional da máquina apresentando apenas um único dispositivo de armazenamento.
Exemplo de switch virtual provisionado e gerenciado pelo Open vSwitch. Cada porta deste switch virtual pode ser uma interface de rede real ou virtual (como por exemplo as interfaces br0 e tap0).
Listando containers LXC provisionados pelo LXD.