Introdução aos Sistemas Operacionais Virtualização Histórico

Propaganda
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Introdução aos Sistemas
Operacionais
Virtualização
Eleri Cardozo
FEEC/Unicamp
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Histórico
Cenário da década de 70:
●
Cada computador (mainframe) possuia um sistema operacional próprio.
Cada compilador/ligador/carregador era implementado para um
sistema operacional específico.
●
Como consequência, cada aplicação era desenvolvida para um
computador e para um sistema operacional.
●
Como evoluir o hardware mantendo o software já desenvolvido?
A IBM adotou uma solução engenhosa: máquinas virtuais.
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Histórico
Uma máquina virtual (VM) é uma implementação em software de uma
máquina física ou lógica. Exemplos:
Máquina física: hardware x86.
Máquina lógica: Java Virtual Machine (JVM, ambiente de execução
de programas Java), Linux.
●
●
Máquinas virtuais ideiais oferecem exatamente os mesmos recursos
da máquina física ou lógica.
Máquinas virtuais podem ser implementadas sobre um sistema
operacional ou diretamente sobre os recursos de hardware.
Já que VMs podem oferecer os mesmos recursos de hardware,
podemos instalar um sistema operacional sobre uma VM.
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Histórico
Máquina Virtual (HW1)
Máquina Virtual (HW2)
SO1
SO2
Hardware 3 (real)
Cada VM emulava um hardware com seu respectivo sistema operacional.
Com isso a IBM pode diminuir a diversidade do hardware ofertado sem
comprometer as aplicações desenvolvidas pelos clientes.
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Histórico
Na década de 90, virtualização foi abandonada devido a dois fatores:
1. Downsizing (troca de um computador grande por vários pequenos),
propiciado pelo barateamento das infraestruturas de rede (Ethernet) e dos
servidores/desktops (Intel)
2. Uniformização dos sistemas operacionais (Windows, Unix/Linux).
Entretanto, nos anos 2000 o cenário voltou a mudar:
Custo de manutenção de um grande número de computadores (energia,
atualização, sub-utilização, segurança física, etc.).
● Aumento considerável do poder dos desktops e servidores.
● Maturidade da Internet.
● Mobilidade.
●
Isto trouxe de volta a virtualização !
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Virtualização hoje
Até mesmo um desktop/notebook moderno tem capacidade para executar
múltiplas máquinas virtuais (como os mainframes de antigamente). Pode-se
utilizar dois ou mais sistemas operacionais simultaneamente em uma mesma
máquina.
Com virtualização podemos dispor de múltiplos ambientes de processamento
sobre um único hardware. Por exemplo, um único hardware pode abrigar
servidores (Web, BD, etc.) baseados em diferentes sistemas operacionais.
A diminuição do número de servidores propicia economia de energia (green
computing) e melhor aproveitamento dos recursos.
Virtualização trouxe uma nova forma de operar uma infraestrutura de TI: ao
invés de adquirir processadores pode-se alugar VMs acessíveis por meio da
Internet. Isto propicia uma adequação contínua às demandas de TI.
Virtualização é base para a computação em nuvem. Por exemplo, toda a
infraestrutura de armazenamento do Dropbox é baseada em VMs alugadas
da Amazon.
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Desafios da virtualização
A virtualização impõe os seguintes desafios:
Compartilhamento do mesmo hardware por múltiplas VMs que, por sua
vez, devem prover isolação para os sistemas operacionais que as utilizam.
●
Desempenho: VMs devem impor o mínimo overhead possível para não
degradar o desempenho das aplicações que executam sobre ambientes
virtualizados.
●
Custo: a mudança para uma infraestrutura virtualizada demanda custos
iniciais de planejamento, adquisição de software e hardware, treinamento
e transição.
●
Segurança e privacidade: como garantir que informações corporativas
estão protegidas se nem sabemos aonde elas estão armazenadas?
●
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Terminologia
Máquina Virtual
(VM)
Máquina Virtual
(VM)
Sistema
Operacional
Hospedado
Sistema
Operacional
Hospedado
Monitor de Máquina Virtual (MMV)
Sistema Operacional Hospedeiro
Hardware
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Requisitos para Virtualização
Popek e Goldberg em 1974 identificaram três requisitos para um
MMV:
1. Equivalência (fidelidade): um sistema operacional executando
sobre um MMV deve exibir comportamento idêntico àquele exibido
quando executado sobre o hardware real.
2. Controle de recursos: o MMV deve ter total controle sobre os
recursos de hardware virtualizados.
3. Eficiência: uma fração significativa das instruções de máquina
devem executar sem a intervenção do MMV.
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Requisitos para Virtualização
Popek e Goldberg definiram dois tipos de instruções de hardware que
impactam na construção de um MMV:
1. Instruções privilegiadas: aquelas que geram uma interrupção quando
executadas em modo não supervisor.
2. Instruções sensíveis: aquelas que mudam o estado do hardware tais
como operações que afetam a MMU, os registradores especiais, etc.
A condição necessária para que uma arquitetura de hardware possa
ser virtualizada estabelece que, para esta arquitetura o conjunto de
instruções sensíveis seja um subconjunto do conjunto de instruções
privilegiadas.
Esta condição permite construir um MMV que intercepte as instruções
sensíveis executadas pelos sistemas operacionais hospedados. Para
tal, basta o MMV executar em modo supervisor e os sistemas
operacionais hospedados em modo usuário ou em um modo com
privilégio intermediário.
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Requisitos para Virtualização
A arquitetura x86 não satisfaz as condições de Popek e
Goldberg para virtualização. Nesta arquitetura, algumas
instruções privilegiadas quando executadas em modo
usuário falham sem gerar interrupções. Estas instruções
são referidas como “instruções problemáticas”.
Em 1999 a MWare conseguiu virtualizar a arquitetura x86
empregando uma técnica denominada Tradução Binária.
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Tradução Binária
Tradução binária é uma técnica que troca as instruções
problemáticas por outras que geram interrupção se executadas
em modo não supervisor.
Nesta técnica não é o sistema operacional hospedado na VM
que executa na máquina virtual, mas sim um tradutor. O código
do sistema operacional é uma entrada para o tradutor que lê
suas instruções e as executa na CPU.
Para determinadas instruções problemáticas, o tradutor as
altera ou acrescenta outras a fim de obter o comportamento
desejado (gerar interrupções).
Deve-se observar que apenas o núcleo do sistema operacional
deve ter seu código traduzido pois somente este código utiliza
instruções sensíveis.
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Virtualização com Suporte do
Hardware
Arquiteturas modernas de hardware provêem suporte para
vitualização, por exemplo:
Virtualização da memória.
Virtualização da CPU.
● Virtualização da entrada e saída.
●
●
Arquiteturas com suporte à virtualização (como Intel-VT, AMD-V)
oferecem instruções adicionais e modos do processador que
facilitam a implementação do MMV, diminuindo assim seu
overhead. Por exemplo, as instruções “problemáticas” foram
eliminadas e existe um nível de privilégio maior que o supervisor
que apenas o MMV pode executar.
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Virtualização da Memória
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Virtualização da Memória (MMU)
End. Virtual → End. Físico
(2)
Tab. de Páginas (do SO)
(4)
Sistema
Operacional
Hospedado
Sistema
Operacional
Hospedado
Máquina Virtual
(1)
(3)
MMU
Máquina Virtual
(6)
Monitor de Máquina Virtual
(1): Hardware consulta TLB
(2): Tab. de páginas do HW é pesquisada
(3): Page Fault tratado pelo SO
(4): SO providencia mapeamento
(5): MMU consulta tab. de páginas estendida
(6): Page Fault tratado pelo MMV
(7): MMV providencia mapeamento
(8): MMU é atualizada
(8)
(7)
End. Físico → End. de Máquina
Tab. de Páginas Estendida
(5)
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Virtualização da CPU
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Virtualização da CPU
Tratamento de interrupções via injeção de eventos.
(1): MMV registra junto ao hardware as interrupções
que deseja interceptar.
(2): Uma destas interrupções é gerada.
(3): Interrupção causa a saída de VM.
(4): O manipulador desta interrupção do MMV é
invocado.
(5) Terminado o tratamento desta interrupção o
hardware providencia a entrada de VM.
(6): O MMV injeta a interrupção para ser tratada agora
pelo sistema operacional hospedado.
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Virtualização de E/S
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Virtualização de DMA
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Modelos de Virtualização
Basicamente existem três maneiras de prover virtualização:
1. Virtualização plena sem suporte do hardware. O MMV executa sobre um
sistema operacional como uma aplicação qualquer. É a forma mais comum
de virtualização.
Aplicação
VM
VM
Sistema
Operacional
Hospedado
Sistema
Operacional
Hospedado
MMV (Hypervisor)
Sistema Operacional Hospedeiro
Hardware
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Modelos de Virtualização
Para o SO host o MMV é uma aplicação como outra qualquer.
Nenhuma alteração é necessária nos sistemas operacionais
hopedeiro ou hospedado.
O MMV opera como um hardware pleno (CPU, memória, disco,
vídeo, etc.), interceptando todo o acesso ao hardware por parte dos
SO hospedados e repassando-o ao SO hospedeiro.
A desvantagem está no overhead imposto pelo MMV.
Alguns produtos que empregam virtualização plena: VirtualBox,
VMWare Workstation, Oracle-VM, KVM.
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Modelos de Virtualização
2. Virtualização plena suportada pelo hardware. Processadores
recentes passaram a oferecer suporte nativo à virtualização,
permitindo assim a implementação do MMV diretamente sobre o
hardware.
VM
VM
VM
Sistema
Operacional
Hospedado
Sistema
Operacional
Hospedado
Sistema
Operacional
Hospedado
MMV
Hardware
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Modelos de Virtualização
Muitas instruções podem ser executadas pelos SO hospedado
diretamente sobre o hardware sem interceptação do MMV,
produzindo maior eficiência à virtualização.
Não requer alteração no SO hospedado, mas todo SO deve rodar
em ambiente virtualizado.
Alguns produtos que empregam virtualização suportada pelo
hardware: VMWare vSphere, Microsoft Hyper-V, Oracle-VM Server.
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Modelos de Virtualização
3. Paravirtualização. É uma técnica onde o sistema operacional
hospedado é modificado para para operar em ambiente virtualizado.
Em outras palavras, o SO hospedado conhece a existência do MMV
e utiliza sua interface de acesso ao hardware (hypercalls).
VM
VM
VM
Sistema
Operacional
Hospedado
Modificado
Sistema
Operacional
Hospedado
Modificado
Sistema
Operacional
Hospedado
Modificado
MMV
Hardware
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Modelos de Virtualização
Como paravirtualização requer alteração dos SO hospedado, esta
técnica não é viável para SO proprietários. Para estes casos é
possível a instalação de device drivers “paravirtualizados” no SO
sem modificação.
É a técnica de virtualização mais otimizada pois demanda pouca
intermediação do MMV.
Alguns produtos que empregam paravirtualização: Xen, VMWare
ESX.
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Virtualização Suportada pelo SO
Virtualização suportada pelo SO permite virtualizar um sistema operacional sobre
ele próprio. O sistema operacional não é replicado, oferecendo apenas isolação
para aplicações (containers) como se elas executassem sobre sistemas
operacionais distintos. Cada container tem seu próprio sistema de arquivos.
Exemplo de soluções para Linux: LXC, OpenVZ, UML (User Mode Linux).
Container
App.
App.
Container
App.
App.
Núcleo do Sistema Operacional
Hardware
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Virtualização no Linux: Xen
Xen é um produto de código aberto de alta robustez que emprega a
solução de paravirtualização.
VM
VM
Xen Linux
(Linux Modificado)
(Hospedado)
Device
Drivers
Nativos
Windows
(Não Modificado)
(Hospedado)
Device
Drivers
Modificados
Xen Hypervisor
Hardware
EA876 - Prof. Eleri Cardozo - FEEC/Unicamp
Virtualização no Linux: KVM
VM
Sistema
Operacional
Hospedado
QEMU
(virtualizador)
kvm-intel.ko
kvm-amd-ko
(módulos nativos)
Solução de virtualização
plena sobre Linux
Núcleo do Linux
Hardware
Download