250 likes | 386 Views
Virtualização. André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira Costa. Agenda. Intro/História. André. Por que virtualizar?. Consolidação de servidores Menor TCO. Diminuição do # de computadores.
E N D
Virtualização André Luis Loureiro de Carvalho Eduardo Lourenço Apolinário Fernando Henrique Calheiros Lopes Francisco Carvalho Felipe Leal Vítor Teixeira Costa
Agenda • Intro/História... • .... • ...
Por que virtualizar? • Consolidação de servidores • Menor TCO Diminuição do # de computadores Diminuição dos custos com HW e manutenção!
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
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
Por que virtualizar? • Debugging • Possibilita debugar sistemas operacionais e device drivers • Migração de software • Facilita a migração de software entre máquinas
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
Atributos • Compatibilidade de Software • Isolamento • Encapsulamento • Performance
Compatibilidade de SW • Abstração compatível! • HW-Level: SOs e demais softwares • SW-Level: Aplicações • Language-Level: Programas na linguagem
Isolamento • Ambiente isolado • Contensão contra bugs e hackers (debugging - sandboxing!) • Mascaramento das camadas subjacentes “write once, run anywhere!”
Encapsulamento • Controle do SW virtualizador pelo SW subjacente Melhor ambiente de execução!
Encapsulamento • Máquinas virtuais de linguagens de alto nível: • Runtime checks • Gerenciamento de memória • Garbage collection • ... Ambiente de programação filé!
Performance • Camadas extras de abstração... ... overhead extra na execução • Máquinas virtuais bem sucedidas valem à pena!
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...
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
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
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
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
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
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