24
Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira Costa

Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

Embed Size (px)

Citation preview

Page 1: Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

Virtualização

André Luis Loureiro de CarvalhoEduardo Lourenço Apolinário

Fernando Henrique Calheiros LopesFrancisco Carvalho Felipe Leal

Vítor Teixeira Costa

Page 2: Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

Agenda

• Intro/História...• ....• ...

Page 3: Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

André

Page 4: Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

Por que virtualizar?

• Consolidação de servidores– Menor TCO

Diminuição do # de computadores

Diminuição dos custos com HW e manutenção!

Page 5: Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

Por que virtualizar?

• Consolidação de aplicações– Virtualizando hardware necessário para

aplicações legadas• Sandboxing

– VMs são ambientes seguros e isolados para rodar aplicações de terceiros ou pouco confiáveis

Page 6: Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

Por que virtualizar?

• Múltiplos ambientes de execução– Aumento de QoS através de garantia de

quantidade específicas de recursos• Hardware virtual

– Uma VM pode fornecer hardware que não existe fisicamente (ex: SCSI)

• Múltiplos SOs simultâneos– Linux, FreeBSD, Windows, etc, rodando ao

mesmo tempo em uma máquina

Page 7: Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

Por que virtualizar?

• Debugging– Possibilita debugar sistemas

operacionais e device drivers• Migração de software

– Facilita a migração de software entre máquinas

Page 8: Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

Por que virtualizar?

• Appliances– Permite o empacotamento de aplicação

junto com o sistema operacional• Teste/QA

– Permite a criação de cenários de teste difíceis de reproduzir

Page 9: Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

Atributos

• Compatibilidade de Software• Isolamento• Encapsulamento• Performance

Page 10: Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

Compatibilidade de SW

• Abstração compatível!– HW-Level: SOs e demais softwares– SW-Level: Aplicações– Language-Level: Programas na

linguagem

Page 11: Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

Isolamento

• Ambiente isolado• Contensão contra bugs e hackers

(debugging - sandboxing!)

• Mascaramento das camadas subjacentes

“write once, run anywhere!”

Page 12: Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

Encapsulamento

• Controle do SW virtualizador pelo SW subjacente

Melhor ambiente de execução!

Page 13: Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

Encapsulamento

• Máquinas virtuais de linguagens de alto nível:– Runtime checks– Gerenciamento de memória– Garbage collection– ...

Ambiente de programação filé!

Page 14: Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

Performance

• Camadas extras de abstração...

... overhead extra na execução

• Máquinas virtuais bem sucedidas valem à pena!

Page 15: Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

Requisitos para Máquinas Virtuais

• Popek e Goldberg (1974)– “For any computer a virtual machine

monitor may be constructed if the set of sensitive instructions for that computer is a subset of the set of privileged instructions.”

• Em outras palavras...

Page 16: Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

Requisitos para Máquinas Virtuais

• Três características essenciais (Popek e Goldberg):– Execução idêntica

• Exceção: timing– Subconjunto estatisticamente dominante

de instruções são executadas pelo processador real

– A VMM tem controle total

Page 17: Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

Virtualizando IA-32

• Não atende ao primeiro requisito de Popek e Goldberg:– 17 instruções que deveriam gerar trap

não geram

• Grande quantidade de devices e drivers

Page 18: Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

Virtualizando IA-32

• Instruções problemáticas:– SGDT, SIDT, SLDT

• Contém endereço linear de suas respectivas tabelas

– SMSW• Armazena o valor da machine status word

– PUSHF, POPF• Atualizar o registrador EFLAGS

Page 19: Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

Virtualizando IA-32

• Instruções problemáticas:– LAR, LSL, VERR, VERW

• Permitem verificar direitos de acesso de registradores de segmento e se um segmento pode ser lido/escrita no CPL atual

– PUSH• Permitiria que o valor do registrador CS (que contém

o CPL) seja examinado– POP

• Não pode ser usada para carregar um novo valor no registrador CS

Page 20: Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

Virtualizando IA-32

• Instruções problemáticas– CALL, JMP, INT n, RET

• Calls e jumps pra segmentos com diferente nível de prioridade

– STR• Permite a verificação do RPL do atual Task Segment

Selector

– MOVE• Permite a verificar o CPL dos registratores CS e SS

Page 21: Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

Virtualizando IA-32

• Procedimentos para virtualizar IA-32 (Robin e Irvine):– Instruções não-sensíveis e não-privilegiadas

podem ser rodadas diretamente no processador

– Instruções sensíveis e privilegiadas geram trap– Instruções sensíveis e não privilegiadas devem

ser detectadas

Page 22: Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

Hosted Architecture

Page 23: Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

Hypervisor Architecture

Page 24: Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira

Resto (sei lah como vai ser essa porra)