Buscar

Virtualização de Sistemas Intel

Prévia do material em texto

Redes	
  de	
  Computadores	
  II	
  –	
  UFRJ	
  
Prof:	
  Luis	
  Henrique	
  
Aluno:	
  Felipe	
  Figueira	
  Horta	
  –	
  DRE:	
  106040758	
  
03/11/2010	
  
Intel	
  Virtualization	
  Technology	
  
Introdução	
  
O	
  que	
  é	
  virtualização?	
  
A	
  virtualização	
  permite	
  que	
  em	
  uma	
  única	
  máquina	
  possam	
  ser	
  executadas	
  dois	
  ou	
  mais	
  ambientes	
  
separados	
  e	
  isolados.	
  Antes	
  usada	
  apenas	
  em	
  servidores	
  ou	
  mainframes,	
  onde	
  estes	
  deviam	
  ser	
  compartilhados	
  por	
  
vários	
  usuários	
  em	
  ambientes	
  de	
  aplicação	
  completamente	
  heterogêneos,	
  hoje	
  em	
  dia	
  esta	
  tecnologia	
  pode	
  ser	
  usada	
  
normalmente	
  em	
  computadores	
  pessoais	
  graças	
  à	
  crescente	
  onda	
  de	
  interesse	
  em	
  técnicas	
  de	
  virtualização.	
  	
  
Sendo	
  assim,	
  na	
  última	
  década,	
  o	
  interesse	
  nesta	
  tecnologia	
  não	
  só	
  tem	
  caminhado	
  para	
  uma	
  
aperfeiçoamento	
  do	
  suporte	
  ao	
  hardware	
  na	
  virtualização	
  do	
  processador,	
  ou	
  na	
  simplificação	
  do	
  monitor	
  da	
  
máquina	
  virtual,	
  mas	
  tem	
  evoluido	
  sim	
  com	
  suas	
  principais	
  preocupações	
  na	
  segurança,	
  confiabilidade,	
  
disponibilidade,	
  adaptabilidade	
  e	
  custo.	
  
Objetivo	
  
Este	
  trabalho	
  visa	
  estudar	
  os	
  modelos	
  e	
  métodos	
  de	
  virtualização	
  aplicados	
  para	
  os	
  micro-­‐processadores	
  da	
  
família	
  Intel,	
  focando	
  nos	
  desafios	
  de	
  implementação	
  desta	
  tecnologia	
  na	
  arquitetura	
  32	
  bits	
  (IA-­‐32),	
  e	
  as	
  soluções	
  
propostas	
  pelo	
  próprio	
  fabricante.	
  Ao	
  final	
  deste,	
  	
  esperamos	
  chegar	
  à	
  uma	
  conclusão	
  a	
  respeito	
  do	
  desempenho,	
  
confiança	
  e	
  adaptabilidade	
  desta	
  tecnologia	
  cada	
  vez	
  mais	
  presente	
  na	
  área	
  de	
  TI.	
  
Modelos	
  de	
  Virtualização	
  
	
   Podemos	
  citar	
  muitas	
  efeitos	
  positivos	
  oferecida	
  pelo	
  uso	
  da	
  virtualização	
  de	
  sistemas,	
  como	
  a	
  melhora	
  em	
  
sua	
  utilização,	
  no	
  seu	
  gerenciamento	
  e	
  confiabilidade.	
  Sendo	
  assim,	
  diversos	
  usuários	
  com	
  diferentes	
  requisitos,	
  
podem	
  fazer	
  uso	
  do	
  mesmo	
  servidor	
  virtualizado,	
  minimizando	
  o	
  tempo	
  de	
  inatividade	
  quanto	
  a	
  atualizações	
  do	
  
sistema,	
  fazendo	
  uso	
  de	
  máquinas	
  virtuais	
  para	
  emular	
  tais	
  operações.	
  O	
  que	
  acaba,	
  neste	
  caso,	
  isolando	
  as	
  falhas	
  de	
  
softwares	
  que	
  operam	
  nas	
  máquinas	
  clientes.	
  
	
  
Isolamento	
  do	
  Sistema	
  
A	
  virtualização	
  pode	
  oferecer	
  de	
  diversas	
  formas,	
  toda	
  	
  a	
  seguranca	
  e	
  confiabilidade	
  ao	
  isolar	
  multiplas	
  pilhas	
  
de	
  aplicativos	
  em	
  suas	
  máquinas	
  virtuais.	
  A	
  segurança	
  pode	
  ser	
  oferecida	
  pois	
  em	
  qualquer	
  caso	
  de	
  ataque	
  ao	
  sistema	
  
emulado,	
  os	
  danos	
  podem	
  ser	
  confinados	
  dentro	
  da	
  maquina	
  virtual,	
  enquanto	
  podemos	
  obter	
  a	
  garantia	
  que	
  
nenhuma	
  outra	
  maquina	
  virtual	
  será	
  afetada.	
  FIGURA	
  1	
  
Múltiplos	
  Sistemas	
  em	
  apenas	
  uma	
  máquina	
  
Com	
  a	
  virtualização	
  é	
  possível	
  	
  a	
  coexistencia	
  de	
  diversos	
  sistemas	
  heterogêneos	
  em	
  apenas	
  uma	
  máquina	
  
físisca.	
  O	
  que	
  faz	
  com	
  que	
  acabe	
  o	
  dispedício	
  de	
  recursos,	
  como	
  no	
  caso	
  de	
  servidores	
  web	
  ou	
  de	
  arquivos,	
  onde	
  em	
  
uma	
  única	
  máquina	
  rodava	
  apenas	
  uma	
  aplicação	
  acarretando	
  um	
  sub-­‐uso	
  de	
  recursos	
  e	
  um	
  disperdício	
  de	
  capital.	
  
FIGURA	
  2	
  
Migração	
  de	
  Sistemas	
  
	
   Fazendo	
  o	
  encapsulamento	
  dos	
  clientes	
  em	
  máquinas	
  virtuais	
  separadas,	
  com	
  o	
  uso	
  da	
  virtualização	
  se	
  faz	
  
capaz	
  a	
  migração	
  entre	
  plataformas	
  diferentes	
  de	
  forma	
  transparente	
  para	
  o	
  usuário	
  cliente.	
  E	
  além	
  de	
  facilitar	
  a	
  
manutenção	
  das	
  plataformas	
  de	
  hardware,	
  este	
  procedimento	
  ainda	
  podem	
  ser	
  disparados	
  automáticamente	
  em	
  
casos	
  de	
  alguma	
  detecção	
  de	
  falha	
  na	
  plaforma	
  atual	
  do	
  cliente.	
  Esta	
  capacidade	
  pode	
  revolucionar	
  o	
  nível	
  da	
  
qualidade	
  de	
  serviço	
  oferecida	
  por	
  exemplo	
  em	
  máquinas	
  dedicadas	
  para	
  servidores	
  web,	
  onde	
  o	
  cliente	
  nem	
  notaria	
  
a	
  falha	
  do	
  sitema,	
  enquanto	
  ele	
  seria	
  migrado	
  para	
  outra	
  plataforma	
  diferente	
  da	
  que	
  se	
  encontra,	
  para	
  que	
  esta	
  
entre	
  em	
  manutenção.	
  FIGURA	
  3	
  
Intel	
  Virtualization	
  Technology	
  	
  
Com	
  o	
  aumento	
  do	
  uso	
  da	
  virtualização	
  para	
  novas	
  ferramentas	
  e	
  aplicações	
  que	
  encontraram	
  vantagens	
  no	
  
uso	
  desta	
  tecnologia,	
  tanto	
  em	
  servidores	
  quanto	
  em	
  máquinas	
  clientes,	
  foi	
  iniciado	
  um	
  grande	
  investimento	
  por	
  
conta	
  dos	
  fabricantes	
  de	
  processadores	
  para	
  gerir	
  esta	
  integração.	
  Infelizmente,	
  neste	
  processo,	
  em	
  especial	
  na	
  
família	
  de	
  processadores	
  da	
  Intel,	
  foram	
  descobertos	
  diversos	
  desafios	
  por	
  conta	
  das	
  arquiteturas	
  IA-­‐32	
  e	
  Itanium.	
  
Sendo	
  assim	
  foram	
  criadas	
  várias	
  técnicas	
  de	
  software	
  para	
  contornar	
  todos	
  estes	
  desafios.	
  
A	
  tecnologia	
  
A	
  tecnologia,	
  chamada	
  também	
  de	
  Intel	
  VT-­‐x,	
  se	
  propõe	
  a	
  diminuir	
  a	
  complexidade	
  dos	
  VMM	
  (Monitores	
  de	
  
Máquina	
  Virtual),	
  aumentar	
  o	
  desempenho	
  de	
  sistemas	
  virtualizados	
  baseados	
  em	
  software	
  e	
  permitir	
  que	
  sistema	
  
operacionais	
  não	
  modificados	
  sejam	
  executados,	
  em	
  máquinas	
  virtuais,	
  com	
  desempenho	
  igual	
  ou	
  superior	
  ao	
  
alcançado	
  pela	
  paravirtulização,	
  na	
  qual	
  os	
  sistemas	
  operacionais	
  são	
  modificados	
  ou	
  sofrem	
  translações	
  binárias	
  
para	
  serem	
  executados	
  sobre	
  um	
  VMM.	
  	
  
	
  
Métodos	
  de	
  Virtualização	
  
	
   Os	
  microprocessadores	
  da	
  Intel	
  oferecem	
  uma	
  proteção	
  baseada	
  no	
  conceito	
  de	
  2	
  bits	
  de	
  níveis	
  de	
  
privilégios,	
  fazendo	
  uso	
  do	
  0	
  para	
  o	
  nível	
  mais	
  alto	
  e	
  3	
  para	
  o	
  mais	
  baixo.	
  O	
  nivel	
  de	
  privilegio	
  determina	
  qual	
  
instrução	
  privilegiada,	
  que	
  controla	
  as	
  funcionalidades	
  básicas	
  da	
  CPU,	
  pode	
  operar	
  sem	
  obter	
  falhas.	
  	
  
Analisando	
  a	
  FIGURA	
  4,	
  podemos	
  observar	
  que	
  a	
  virtualização	
  assistida	
  por	
  hardware,	
  caso	
  da	
  Intel	
  VT-­‐x	
  que	
  
extende	
  a	
  IA-­‐32,	
  muda	
  a	
  forma	
  de	
  acesso	
  ao	
  sistema	
  operacional.	
  Sistemas	
  operacionais	
  para	
  a	
  plataforma	
  IA-­‐32	
  são	
  
projetados	
  para	
  terem	
  acesso	
  direto	
  aos	
  recursos	
  do	
  sistema	
  para	
  executarem.	
  Na	
  virtualização	
  por	
  software,	
  o	
  VMM	
  
emula	
  o	
  hardware	
  requerido	
  pelo	
  SO	
  visitante.	
  Na	
  virtualização	
  por	
  hardware,	
  o	
  SO	
  tem	
  acesso	
  direto	
  aos	
  recursos,	
  
sem	
  emulação	
  ou	
  qualquer	
  modificação	
  no	
  SO	
  visitante.	
  
Enquanto	
  que	
  aa	
  arquitetura	
  IA-­‐32,	
  o	
  núcleo	
  do	
  sistema	
  operacional	
  espera	
  ter	
  acesso	
  direto	
  à	
  CPU	
  
executando	
  no	
  nível	
  0.	
  Por	
  outro	
  lado,	
  vemos	
  que	
  com	
  a	
  virtualização	
  porsoftware	
  isso	
  não	
  é	
  possível,	
  pois	
  o	
  VMM	
  já	
  
está	
  sendo	
  executado	
  no	
  nível	
  0,	
  sendo	
  assim,	
  o	
  sistema	
  operacional	
  visitante	
  deve	
  ser	
  executado	
  no	
  nível	
  1	
  ou	
  3.	
  
Contudo,	
  algumas	
  instruções	
  só	
  funcionam	
  no	
  nível	
  0,	
  logo	
  uma	
  possível	
  solução	
  é	
  recompilar	
  o	
  sistema	
  operacional	
  
visitante,	
  com	
  o	
  intuito	
  de	
  evitar	
  essas	
  instruções.	
  Esta	
  técnica	
  é	
  chamada	
  de	
  paravirtualização,	
  que	
  muitas	
  vezes	
  não	
  
é	
  prática,	
  pois	
  o	
  código	
  do	
  sistema	
  operacional	
  pode	
  nem	
  sempre	
  estar	
  acessível.	
  Sabendo	
  disso,	
  para	
  evitar	
  este	
  
problema,	
  o	
  VMM	
  captura	
  as	
  instruções	
  que	
  podem	
  vir	
  a	
  falhar	
  na	
  execução	
  e	
  emula	
  a	
  sua	
  execução,	
  o	
  que	
  resulta	
  
numa	
  perda	
  significativa	
  de	
  desempenho.	
  
Arquitetura	
  e	
  funcionamento	
  
A	
  VT-­‐x	
  adiciona	
  ao	
  IA-­‐32	
  duas	
  novas	
  formas	
  de	
  operação	
  da	
  CPU:	
  VMX	
  (Virtual	
  Machine	
  Extensible)	
  root	
  e	
  
VMX	
  non-­‐root-­‐operation.	
  Enquanto	
  o	
  VMM	
  é	
  executado	
  no	
  VMX	
  root-­‐operation,	
  seus	
  sistemas	
  visitantes	
  	
  são	
  
executados	
  no	
  VMX	
  non-­‐root-­‐operation.	
  Ambos	
  os	
  suportes	
  de	
  operação	
  possuem	
  suporte	
  para	
  os	
  quatro	
  níveis	
  de	
  
privilégio	
  (0	
  a	
  3),	
  permitindo	
  que	
  um	
  sistema	
  visitante	
  seja	
  executado	
  com	
  o	
  privilegio	
  que	
  desejar,	
  e	
  fornecendo	
  ao	
  
VMM	
  a	
  flexibildade	
  	
  de	
  usar	
  todos	
  os	
  níveis	
  de	
  operação.	
  	
  
No	
  modo	
  de	
  operação	
  VMX	
  root,	
  o	
  funcionamento	
  é	
  similar	
  à	
  arquitetura	
  32	
  bits	
  sem	
  o	
  VT-­‐x.	
  Onde	
  as	
  
aplicações	
  que	
  são	
  executados	
  no	
  modo	
  VMX	
  non-­‐root	
  são	
  desprivilegiados	
  em	
  alguns	
  aspectos,	
  independente	
  do	
  
nível	
  de	
  privilégio.	
  Assim,	
  o	
  VT-­‐x	
  define	
  duas	
  novas	
  transições,	
  	
  onde	
  a	
  primeira	
  é	
  a	
  transição	
  do	
  modo	
  VMX	
  root	
  para	
  
o	
  modo	
  VMX	
  non-­‐root,	
  ou	
  seja,	
  do	
  VMM	
  para	
  o	
  sistema	
  visitante,	
  que	
  é	
  chamada	
  de	
  “VM	
  entry”,	
  e	
  a	
  transição	
  do	
  
modo	
  VMX	
  non-­‐root	
  para	
  o	
  VMX	
  root,	
  ou	
  seja,	
  do	
  sistema	
  visitante	
  para	
  o	
  VMM,	
  chamada	
  de	
  “VM	
  exit”.	
  
A	
  Intel	
  VT-­‐x	
  introduz	
  um	
  conjunto	
  de	
  novas	
  instruções	
  no	
  processador,	
  chamado	
  de	
  Virtual	
  Machine	
  
Extensions	
  (Extensões	
  de	
  Máquina	
  Virtual),	
  VMX.	
  Esse	
  conjunto	
  é	
  formado	
  por	
  10	
  instruções	
  específicas	
  de	
  
virtualização:	
  VMPTRLD,	
  VMPTRST,	
  VMCLEAR,	
  VMREAD,	
  VMWRITE,	
  VMCALL,	
  VMLAUCH,	
  VMRESUME,	
  VMXOFF	
  e	
  
	
  
VMXON.	
  Na	
  figura	
  abaixo,	
  temos	
  ilustrado	
  o	
  processo	
  de	
  chamada	
  de	
  instruções	
  para	
  executar	
  uma	
  máquina	
  virtual.	
  
FIGURA	
  5	
  
Para	
  entrar	
  no	
  modo	
  de	
  virtualização,	
  a	
  instrução	
  VMXON	
  deve	
  ser	
  chamada	
  pelo	
  software	
  e,	
  só	
  então,	
  
chamar	
  o	
  VMM.	
  Após	
  entrar	
  no	
  modo	
  de	
  virtualização,	
  o	
  VMM	
  pode	
  entrar	
  em	
  cada	
  máquina	
  virtual	
  usando	
  a	
  
instrução	
  VMLAUNCH	
  e	
  sair	
  delas	
  usando	
  a	
  instrução	
  VMRESUME.	
  Para	
  parar	
  todas	
  as	
  máquinas	
  virtuais	
  e	
  sair	
  do	
  
modo	
  de	
  virtualização,	
  o	
  VMM	
  deve	
  executar	
  a	
  instrução	
  VMXOFF.	
  
Desafios	
  e	
  Soluções	
  
Ambas	
  tecnologias	
  VT-­‐x	
  e	
  VT-­‐I	
  permitem	
  que	
  aplicações	
  de	
  sistemas	
  visitantes	
  sejam	
  executados	
  com	
  os	
  
privilégios	
  os	
  quais	
  foram	
  designados,	
  porém	
  em	
  extensões	
  separaradas	
  da	
  VMM,	
  chamadas	
  de	
  VMX.	
  Sendo	
  assim,	
  
estas	
  aplicações	
  não	
  são	
  vetadas	
  em	
  relação	
  aos	
  seus	
  níveis	
  de	
  acesso,	
  fazendo	
  com	
  que	
  os	
  desafios	
  de	
  virtualização	
  
sejam	
  identificados	
  antes,	
  sendo	
  assim	
  tratados	
  por	
  camadas	
  inferiores	
  ou	
  pelo	
  próprio	
  VMM.	
  
Compressão	
  do	
  espaço	
  de	
  memória	
  
A	
  VMM	
  reserva	
  para	
  si	
  uma	
  parte	
  do	
  espaço	
  de	
  endereçamento	
  virtual	
  do	
  visitante.	
  Poderia	
  rodar	
  
inteiramente	
  no	
  espaço	
  do	
  visitante,	
  mas	
  poderia	
  utilizar	
  uma	
  quantidade	
  relevante	
  de	
  espaço	
  de	
  endereçamento	
  
virtual	
  do	
  visitante.	
  Como	
  alternativa	
  a	
  isso,	
  a	
  VMM	
  roda	
  em	
  seu	
  próprio	
  espaço,	
  ainda	
  usando	
  obrigatóriamente	
  um	
  
pouco	
  do	
  espaço	
  do	
  usuário	
  para	
  estruturas	
  de	
  controle	
  que	
  gerenciam	
  transições	
  entre	
  a	
  VMM	
  e	
  o	
  software	
  do	
  
visitante.	
  Nesta	
  situação,	
  a	
  VMM	
  precisa	
  proteger	
  a	
  parte	
  do	
  espaço	
  de	
  endereçamento	
  virtual	
  utilizada	
  do	
  visitante,	
  
de	
  forma	
  que	
  ele	
  não	
  descubra	
  que	
  executa	
  um	
  ambiente	
  virtual,	
  comprometendo	
  assim	
  o	
  isolamento	
  da	
  máquina	
  
virtual.	
  
Ring	
  Aliasing	
  e	
  Ring	
  Compression	
  
Problemas	
  de	
  Ring	
  aliasing	
  surgem	
  quando	
  um	
  programa	
  é	
  executado	
  a	
  um	
  nível	
  de	
  privilégio	
  diferente	
  do	
  
nível	
  para	
  que	
  este	
  foi	
  escrito.	
  Por	
  exemplo	
  ao	
  executar	
  a	
  instrução	
  PUSH	
  com	
  o	
  registrador	
  CS,	
  é	
  possível	
  determinar	
  
que	
  um	
  SO	
  visitante	
  não	
  estaria	
  rodando	
  com	
  privilégio	
  nivel	
  0.	
  
Acesso	
  ao	
  estado	
  privilegiado	
  sem	
  gerar	
  falta	
  
Proteção	
  baseada	
  em	
  privilégios	
  costuma	
  prevenir	
  programas,	
  sem	
  o	
  privilegio	
  adequado,	
  de	
  acessar	
  certos	
  
componentes	
  de	
  estado	
  privilegiado	
  da	
  CPU,	
  resultando	
  em	
  falha	
  para	
  essas	
  tentativas	
  de	
  acesso	
  e	
  permitindo	
  que	
  a	
  
VMM	
  (Virtual	
  Machine	
  Monitor)	
  emule	
  a	
  instrução	
  desejada.	
  	
  No	
  entanto,	
  as	
  arquiteturas	
  IA-­‐32	
  e	
  Itanium	
  possuem	
  
instruções	
  que	
  acessam	
  estados	
  privilegiados	
  e	
  não	
  falham,	
  mesmo	
  em	
  caso	
  de	
  privilégios	
  insuficientes.	
  Para	
  o	
  IA-­‐32,	
  
por	
  exemplo,	
  um	
  visitante	
  pode	
  executar	
  as	
  instruções	
  LGDT,	
  LIDT,	
  LLDT	
  e	
  LTR	
  com	
  nível	
  0	
  de	
  privilégio.	
  Isso	
  pode	
  ser	
  
evitado	
  se	
  a	
  VMM	
  manter	
  valores	
  inexperados	
  para	
  os	
  registradores	
  mencionados.	
  
	
  
	
  
Perguntas	
  
1. Em	
  qual	
  SO	
  o	
  VMM	
  roda?	
  Ele	
  precisa	
  de	
  um	
  SO?	
  
2. Quais	
  SOs	
  são	
  permitidos	
  como	
  convidados	
  pelo	
  VMM?	
  
3. Como	
  funcionam	
  os	
  níveis	
  de	
  proteção	
  no	
  IA-­‐32?	
  
	
  
Bibliografia	
  
 
Intel 
1.	
  "Intel®	
  Virtualization	
  Technology:	
  Hardware	
  Support	
  for	
  Efficient	
  Processor	
  Virtualization"	
  
http://www.intel.com/technology/itj/2006/v10i3/1-­‐hardware/3-­‐software.htm	
  
Artigos	
  
1.	
  Intel	
  Virtualization	
  Technology	
  
www.gta.ufrj.br/ensino/CPE758/artigos-­‐basicos/IntelVT-­‐Computer.pdf	
  
2.	
  Rich	
  Uhlig,	
  Gil	
  Neiger,	
  	
  Dion	
  Rodgers,	
  Amy	
  L.	
  Santoni,	
  Fernando	
  C.M.	
  Martins,	
  Andrew	
  V.	
  Anderson,	
  Steven	
  
M.	
  Bennett,	
  Alain	
  Kägi,	
  Felix	
  H.	
  Leung,	
  Larry	
  Smith.	
  Intel	
  Corporation.	
  
Wikipedia	
  
1.	
  x86	
  virtualization	
  
http://en.wikipedia.org/wiki/X86_virtualization	
  
2.	
  Virtualmachine	
  
http://en.wikipedia.org/wiki/Virtual_machine

Mais conteúdos dessa disciplina