Programação Concorrente e Distribuída

Virtualização

Aula 02 — Introdução, tipos e aplicação de VMs
Prof. Newton S. B. Miyoshi
newton.miyoshi@baraodemaua.br
Centro Universitário Barão de Mauá — Ribeirão Preto
Tópicos

O que veremos hoje

1 · Introdução

O que é e por que virtualizar.

2 · Tipos

Processo, Hypervisor Tipo 1 e Tipo 2.

3 · Aplicação em SD

Virtualização na computação em nuvem.

Parte 1

Introdução à Virtualização

Criando ilusões úteis sobre os recursos do computador.

Pikachu

A ilusão de paralelismo

  • 1 CPU executa 1 instrução de 1 thread/processo por vez.
  • A troca rápida entre processos e threads cria a ilusão de múltiplas CPUs.
  • Podemos criar essa ilusão para outros recursos também — memória, rede, USB, disco.
    • Isso é a virtualização de recursos.

Princípio da virtualização

  • Todo SO oferece uma API de alto nível para o software.
  • Virtualizar é estender ou substituir essas interfaces para imitar o comportamento de outro sistema.
Em uma frase
Fazer o sistema B se comportar como se fosse o sistema A.

Interface padrão × interface com virtualização

Programa sobre Interface A sobre sistema de hardware/software A
Interface padrão: o programa fala diretamente com o sistema A.
Programa sobre Interface A, implementação que imita A sobre B, Interface B e sistema B
Com virtualização: uma camada imita A sobre o sistema B.

Interfaces em três níveis

  • Hardware ↔ software
    • ISA — Instruction Set Architecture
    • Instruções de máquina: privilegiadas (só o SO) e gerais (qualquer programa)
  • Chamadas de sistema — oferecidas pelo SO
  • Bibliotecas de software — APIs

Os três níveis de interface

Diagrama dos três níveis: instruções privilegiadas/gerais, chamadas de sistema e funções de biblioteca
A virtualização pode imitar qualquer um desses níveis.
Parte 2

Tipos de Virtualização

Virtualização é imitar essas interfaces — de três formas.

Três formas de virtualização

1 · VM de processo

Promove um conjunto abstrato de instruções que virtualiza um processo.

Ex.: JVM e Wine (o Wine imita chamadas de sistema).

2 · Hypervisor Tipo 1

Monitor nativo: camada sob o hardware que o isola e oferece um conjunto completo de instruções.

Vários SOs guests em um único monitor.

3 · Hypervisor Tipo 2

Monitor hospedado: roda sobre um SO host.

Forma mais simples; usa privilégios especiais do host.

Comparando as três formas

Pilha de VM de processo
VM de processo
Pilha de hypervisor tipo 1
Hypervisor Tipo 1 (nativo)
Pilha de hypervisor tipo 2
Hypervisor Tipo 2 (hospedado)
Pergunta!
?

Vantagens e desvantagens da virtualização?

Importância das VMs

Robustez e segurança

  • Isolamento total da aplicação e seu ambiente
  • Ataques ou falhas não afetam a máquina toda nem outras aplicações

Portabilidade

  • Desacoplamento entre hardware e software
  • Migração do ambiente de execução entre máquinas

Performance das VMs

Parte das instruções usa acesso direto ao hardware (todas as não privilegiadas).

Diagrama de instruções privilegiadas e gerais em uma VM
Instruções gerais vão direto ao hardware; as privilegiadas passam pelo monitor.
Parte 3

Aplicação de VMs em Sistemas Distribuídos

A virtualização como base da computação em nuvem.

Computação em nuvem

Uma das aplicações mais importantes da virtualização.

IaaS

Infrastructure as a Service

PaaS

Platform as a Service

SaaS

Software as a Service

IaaS
VMs podem ser alugadas e o hardware físico compartilhado, com isolamento total entre clientes.
Exemplo · AWS

Amazon Elastic Compute Cloud (EC2)

  • Diversos servidores virtuais interconectados.
  • AMI — Amazon Machine Images: o cliente escolhe uma e depois adapta/configura.
  • Ao criar uma instância EC2: 2 IPs — 1 privado e 1 público (mapeamento via NAT).
  • Gerenciamento via SSH, com as chaves fornecidas pela Amazon.
Exemplo · AWS

EC2 — serviços configuráveis

CPUMemóriaArmazenamento Plataforma (32/64)Rede (banda)

Além de outros serviços — redundância, segurança…

Exemplos de Monitores de Máquina Virtual

VMware
VMware
Oracle VirtualBox
VirtualBox
Microsoft Hyper-V
Hyper-V
KVM
KVM
QEMU
QEMU
Xen Project
Xen
Vagrant
Vagrant
Atividade

Instale uma VM e suba um servidor web

  • Instale o VirtualBox.
  • Baixe uma ISO de um Linux leve (modo servidor)
    • Debian modo server, Puppy Linux — procure versões light / minimal / server.
  • Configure uma aplicação web inicial (ex.: Django).

Vagrant

  • Ferramenta desenvolvida pela HashiCorp.
  • Automatiza a criação, o gerenciamento e a customização de máquinas virtuais.
  • IaC — Infrastructure as Code.
Logo Vagrant Cloud (HashiCorp)
Infrastructure as Code (IaC)

Infraestrutura descrita como código

Em vez de configurar servidores manualmente (clicando, um a um), você declara a infraestrutura em arquivos de código — versionáveis e reproduzíveis.

📄
Arquivo de código Vagrantfile, Terraform, Ansible…
⚙️
Ferramenta aplica vagrant up · terraform apply
☁️
Infraestrutura pronta VMs, redes, discos e serviços provisionados
Versionável (Git) Reproduzível Automatizável Documentada

Fluxo do Vagrant

Fluxo do Vagrant: usuário, Vagrantfile, provisioners, VirtualBox e máquina virtual via SSH
Do Vagrantfile à máquina virtual provisionada e acessível por SSH.

Referências

  • TANENBAUM, A. S.; VAN STEEN, M. Distributed Systems. 3. ed. 2018 — Cap. 3. ISBN 978-90-815406-2-9. distributed-systems.net