Hypervisor - Hypervisor

Um hipervisor (ou monitor de máquina virtual , VMM , virtualizador ) é uma espécie de emulador ; é um software de computador , firmware ou hardware que cria e executa máquinas virtuais . Um computador no qual um hipervisor executa uma ou mais máquinas virtuais é chamado de máquina host e cada máquina virtual é chamada de máquina convidada . O hipervisor apresenta aos sistemas operacionais convidados uma plataforma operacional virtual e gerencia a execução dos sistemas operacionais convidados. Várias instâncias de uma variedade de sistemas operacionais podem compartilhar os recursos de hardware virtualizados: por exemplo, instâncias do Linux , Windows e macOS podem ser executadas em uma única máquina física x86 . Isso contrasta com a virtualização no nível do sistema operacional , em que todas as instâncias (geralmente chamadas de contêineres ) devem compartilhar um único kernel, embora os sistemas operacionais convidados possam diferir no espaço do usuário , como diferentes distribuições Linux com o mesmo kernel.

O termo hypervisor é uma variante do supervisor , as menções tradicionais para o núcleo de um sistema operacional : o hypervisor é o supervisor dos supervisores, com hiper usado como uma variante mais forte de super- . O prazo data de cerca de 1970; no sistema CP / CMS (1967) anterior, o termo Programa de Controle foi usado em seu lugar.

Classificação

Hipervisores tipo 1 e tipo 2

Em seu artigo de 1974, "Requisitos formais para arquiteturas virtualizáveis ​​de terceira geração", Gerald J. Popek e Robert P. Goldberg classificaram dois tipos de hipervisor:

Hipervisores tipo 1, nativos ou bare-metal
Esses hipervisores são executados diretamente no hardware do host para controlar o hardware e gerenciar os sistemas operacionais convidados. Por esse motivo, às vezes são chamados de hipervisores bare-metal . Os primeiros hipervisores, desenvolvidos pela IBM na década de 1960, eram hipervisores nativos. Isso incluiu o software de teste SIMMON e o sistema operacional CP / CMS , o predecessor do IBM z / VM . Equivalentes modernos incluem AntsleOS, Microsoft Hyper-V e software de sistema Xbox One , Nutanix AHV , XCP-ng , Oracle VM Server para SPARC , Oracle VM Server para x86 , POWER Hypervisor , QNX Hypervisor , VMware ESXi (anteriormente ESX), Proxmox Virtual Environment e Xen .
Hipervisores tipo 2 ou hospedados
Esses hipervisores são executados em um sistema operacional (SO) convencional, assim como outros programas de computador. Um sistema operacional convidado é executado como um processo no host. Os hipervisores tipo 2 abstraem os sistemas operacionais convidados do sistema operacional host. Parallels Desktop para Mac , QEMU , VirtualBox , VMware Player e VMware Workstation são exemplos de hipervisores tipo 2.

A distinção entre esses dois tipos nem sempre é clara. Por exemplo, Kernel-based Virtual Machine (KVM) e bhyve são módulos de kernel que convertem efetivamente o sistema operacional host em um hipervisor tipo 1. Ao mesmo tempo, como as distribuições Linux e o FreeBSD ainda são sistemas operacionais de uso geral, com aplicativos competindo entre si por recursos de VM, o KVM e o bhyve também podem ser categorizados como hipervisores do tipo 2.

Origens do mainframe

Os primeiros hipervisores fornecendo virtualização total foram a ferramenta de teste SIMMON e o sistema de pesquisa único IBM CP-40 , que começou a ser usado em produção em janeiro de 1967 e se tornou a primeira versão do sistema operacional IBM CP / CMS . O CP-40 foi executado em um S / 360-40 modificado no Cambridge Scientific Center para oferecer suporte à tradução dinâmica de endereços , um recurso que permitia a virtualização. Antes dessa época, o hardware do computador só tinha sido virtualizado na medida em que permitia que vários aplicativos de usuário fossem executados simultaneamente, como no CTSS e no IBM M44 / 44X . Com o CP-40, o estado de supervisor do hardware também foi virtualizado, permitindo que vários sistemas operacionais funcionassem simultaneamente em contextos de máquina virtual separados .

Os programadores logo implementaram o CP-40 (como CP-67 ) para o IBM System / 360-67 , o primeiro sistema de computador de produção capaz de virtualização total. A IBM despachou esta máquina em 1966; incluía hardware de tabela de tradução de página para memória virtual e outras técnicas que permitiam uma virtualização completa de todas as tarefas do kernel, incluindo E / S e tratamento de interrupções. (Observe que o sistema operacional "oficial", o malfadado TSS / 360 , não empregava virtualização completa.) Tanto o CP-40 quanto o CP-67 começaram a ser usados ​​em produção em 1967. O CP / CMS estava disponível para clientes IBM de 1968 a início dos anos 1970, na forma de código-fonte sem suporte.

O CP / CMS fez parte da tentativa da IBM de construir sistemas robustos de compartilhamento de tempo para seus computadores mainframe . Ao executar vários sistemas operacionais simultaneamente, o hipervisor aumentou a robustez e a estabilidade do sistema: mesmo se um sistema operacional travasse, os outros continuariam funcionando sem interrupção. Na verdade, isso permitiu até mesmo versões beta ou experimentais de sistemas operacionais‍ - ou mesmo de novo hardware‍ - a serem implantados e depurados, sem colocar em risco o sistema de produção principal estável e sem exigir sistemas de desenvolvimento adicionais caros.

A IBM anunciou sua série System / 370 em 1970 sem o recurso de memória virtual necessário para virtualização, mas o adicionou no anúncio de funções avançadas de agosto de 1972. A virtualização foi apresentada em todos os sistemas sucessores, de forma que todos os mainframes IBM modernos, incluindo a linha zSeries , mantêm compatibilidade com versões anteriores da linha IBM S / 360 da década de 1960. O anúncio de 1972 também incluiu VM / 370 , uma reimplementação do CP / CMS para o S / 370. Ao contrário do CP / CMS , a IBM forneceu suporte para esta versão (embora ainda fosse distribuída na forma de código-fonte para vários releases). VM significa Virtual Machine , enfatizando que todas, não apenas algumas, as interfaces de hardware são virtualizadas. Tanto VM quanto CP / CMS desfrutaram de aceitação precoce e rápido desenvolvimento por universidades, usuários corporativos e fornecedores de compartilhamento de tempo , bem como dentro da IBM. Os usuários desempenharam um papel ativo no desenvolvimento contínuo, antecipando tendências vistas em projetos modernos de código aberto . No entanto, em uma série de batalhas disputadas e amargas, o time-sharing perdeu para o processamento em lote devido às lutas políticas da IBM, e o VM permaneceu o "outro" sistema operacional de mainframe da IBM por décadas, perdendo para o MVS . É desfrutado de um ressurgimento da popularidade e apoio de 2000 como o z / VM produto, por exemplo, como a plataforma para Linux on IBM Z .

Conforme mencionado acima, o programa de controle VM inclui um manipulador de chamada de hipervisor que intercepta as instruções DIAG ("Diagnose", opcode x'83 ') usadas em uma máquina virtual. Isso fornece execução rápida não virtualizada de acesso ao sistema de arquivos e outras operações (DIAG é uma instrução privilegiada dependente do modelo, não usada na programação normal e, portanto, não é virtualizada. Portanto, está disponível para uso como um sinal para o sistema operacional "host"). Quando implementado pela primeira vez no CP / CMS versão 3.1, este uso de DIAG forneceu uma interface de sistema operacional que era análoga à instrução System / 360 Supervisor Call (SVC), mas que não exigia alterar ou estender a virtualização do sistema de SVC.

Em 1985, a IBM introduziu o hipervisor PR / SM para gerenciar partições lógicas (LPAR).

Suporte para sistema operacional

Vários fatores levaram ao ressurgimento por volta de 2005 no uso da tecnologia de virtualização entre Unix , Linux e outros sistemas operacionais semelhantes ao Unix:

  • Expandir os recursos de hardware, permitindo que cada máquina faça um trabalho mais simultâneo
  • Esforços para controlar custos e simplificar o gerenciamento por meio da consolidação de servidores
  • A necessidade de controlar grandes instalações de multiprocessador e cluster , por exemplo em farms de servidores e render farms
  • A segurança aprimorada, confiabilidade e independência de dispositivo possível a partir de arquiteturas de hipervisor
  • A capacidade de executar aplicativos complexos e dependentes do sistema operacional em diferentes ambientes de hardware ou sistema operacional

Os principais fornecedores de Unix, incluindo HP , IBM , SGI e Sun Microsystems , vendem hardware virtualizado desde antes de 2000. Geralmente, são sistemas grandes e caros (na faixa de milhões de dólares no topo de linha), embora a virtualização também tenha sido disponível em alguns sistemas de gama baixa e média, como servidores IBM pSeries , máquinas HP Superdome series e servidores Sun / Oracle T-series CoolThreads.

Embora Solaris sempre tenha sido o único sistema operacional de domínio convidado oficialmente suportado pela Sun / Oracle em seu hipervisor de Domínios Lógicos , no final de 2006, Linux (Ubuntu e Gentoo) e FreeBSD foram portados para rodar em cima do hipervisor (e podem todos executado simultaneamente no mesmo processador, como sistemas operacionais convidados independentes totalmente virtualizados). O Wind River " Carrier Grade Linux " também roda no hipervisor da Sun. A virtualização completa em processadores SPARC provou ser simples: desde seu início em meados da década de 1980, a Sun manteve deliberadamente a arquitetura SPARC livre de artefatos que teriam impedido a virtualização. (Compare com virtualização em processadores x86 abaixo.)

A HPE fornece HP Integrity Virtual Machines (Integrity VM) para hospedar vários sistemas operacionais em seus sistemas Integrity com base em Itanium . Itanium pode executar HP-UX , Linux, Windows e OpenVMS , e esses ambientes também são suportados como servidores virtuais na plataforma Integrity VM da HP. O sistema operacional HP-UX hospeda a camada de hipervisor Integrity VM que permite que muitos recursos importantes do HP-UX sejam aproveitados e oferece grande diferenciação entre esta plataforma e outras plataformas de commodities - como hotswap de processador, hotswap de memória e kernel dinâmico atualizações sem reinicialização do sistema. Embora aproveite fortemente o HP-UX, o hipervisor Integrity VM é realmente um híbrido que é executado em bare-metal enquanto os convidados estão executando. A execução de aplicativos HP-UX normais em um host Integrity VM é altamente desencorajada, porque Integrity VM implementa seu próprio gerenciamento de memória, programação e políticas de I / O que são ajustadas para máquinas virtuais e não são tão eficazes para aplicativos normais. A HPE também fornece um particionamento mais rígido de seus sistemas Integrity e HP9000 por meio da tecnologia VPAR e nPar , o primeiro oferecendo particionamento de recursos compartilhados e o último oferecendo I / O completo e isolamento de processamento. A flexibilidade do ambiente de servidor virtual (VSE) deu lugar a seu uso com mais frequência em implantações mais recentes.

A IBM fornece tecnologia de partição de virtualização conhecida como partição lógica (LPAR) em sistemas System / 390 , zSeries , pSeries e iSeries . Para Power Systems da IBM, o POWER Hypervisor (PHYP) é um hypervisor nativo (bare-metal) em firmware e fornece isolamento entre LPARs. A capacidade do processador é fornecida aos LPARs de maneira dedicada ou com base em direitos, onde a capacidade não utilizada é colhida e pode ser realocada para cargas de trabalho ocupadas. Grupos de LPARs podem ter sua capacidade de processador gerenciada como se estivessem em um "pool" - a IBM se refere a esse recurso como Multiple Shared-Processor Pools (MSPPs) e o implementa em servidores com o processador POWER6 . As alocações de capacidade LPAR e MSPP podem ser alteradas dinamicamente. A memória é alocada para cada LPAR (na inicialização da LPAR ou dinamicamente) e é controlada por endereço pelo Hypervisor POWER. Para endereçamento em modo real por sistemas operacionais ( AIX , Linux , IBM i ), os processadores POWER ( POWER4 em diante) projetaram recursos de virtualização em que um deslocamento de endereço de hardware é avaliado com o deslocamento de endereço do SO para chegar ao endereço de memória física. Os adaptadores de entrada / saída (E / S) podem ser "pertencentes" exclusivamente a LPARs ou compartilhados por LPARs por meio de uma partição de dispositivo conhecida como Servidor de E / S Virtual (VIOS). O Power Hypervisor fornece altos níveis de confiabilidade, disponibilidade e capacidade de manutenção (RAS), facilitando a adição / substituição a quente de muitas peças (dependente do modelo: processadores, memória, adaptadores de E / S, ventiladores, unidades de energia, discos, controladores de sistema, etc. )

Tendências semelhantes ocorreram com plataformas de servidor x86 / x86-64, onde projetos de código aberto, como o Xen , lideraram os esforços de virtualização. Isso inclui hipervisores construídos em kernels Linux e Solaris, bem como kernels personalizados. Como essas tecnologias abrangem desde grandes sistemas até desktops, elas são descritas na próxima seção.

sistemas x86

Desde 2005, os fornecedores de CPU adicionaram assistência de virtualização de hardware a seus produtos; por exemplo, Intel VT-x (codinome Vanderpool) e AMD-V (codinome Pacifica).

Uma abordagem alternativa requer a modificação do sistema operacional convidado para fazer uma chamada de sistema ao hipervisor subjacente, em vez de executar instruções de E / S da máquina que o hipervisor simula. Isso é chamado de paravirtualização no Xen , uma "hiperchamada" no Parallels Workstation e um "código DIAGNOSE" no IBM VM . Alguns microkernels, como Mach e L4 , são flexíveis o suficiente para permitir a paravirtualização de sistemas operacionais convidados.

Sistemas embarcados

Os hipervisores incorporados , voltados para sistemas incorporados e determinados ambientes de sistema operacional em tempo real (RTOS), são projetados com requisitos diferentes quando comparados aos sistemas de desktop e corporativos, incluindo robustez, segurança e recursos em tempo real. A natureza restrita de recursos de muitos sistemas embarcados, especialmente sistemas móveis alimentados por bateria, impõe um requisito adicional para tamanho de memória pequeno e baixo overhead. Finalmente, em contraste com a onipresença da arquitetura x86 no mundo do PC, o mundo embarcado usa uma variedade maior de arquiteturas e ambientes menos padronizados. O suporte para virtualização requer proteção de memória (na forma de uma unidade de gerenciamento de memória ou pelo menos uma unidade de proteção de memória) e uma distinção entre modo de usuário e modo privilegiado , que exclui a maioria dos microcontroladores . Isso ainda deixa o x86 , MIPS , ARM e PowerPC como arquiteturas amplamente implantadas em sistemas embarcados de médio a alto desempenho.

Como os fabricantes de sistemas embarcados geralmente têm o código-fonte de seus sistemas operacionais, eles têm menos necessidade de virtualização completa neste espaço. Em vez disso, as vantagens de desempenho da paravirtualização tornam esta geralmente a tecnologia de virtualização de escolha. No entanto, ARM e MIPS adicionaram recentemente suporte total à virtualização como uma opção de IP e o incluíram em seus processadores de ponta e versões de arquitetura mais recentes, como ARM Cortex-A15 MPCore e ARMv8 EL2.

Outras diferenças entre a virtualização em servidores / desktops e ambientes integrados incluem requisitos para compartilhamento eficiente de recursos entre máquinas virtuais, comunicação entre VMs de alta largura de banda e baixa latência, uma visão global de programação e gerenciamento de energia e controle refinado de informações fluxos.

Implicações de segurança

O uso da tecnologia de hipervisor por malware e rootkits que se instalam como hipervisor abaixo do sistema operacional, conhecido como hyperjacking , pode torná-los mais difíceis de detectar porque o malware pode interceptar qualquer operação do sistema operacional (como alguém digitando uma senha) sem o software anti-malware necessariamente o detecta (já que o malware é executado abaixo de todo o sistema operacional). A implementação do conceito supostamente ocorreu no rootkit de laboratório SubVirt (desenvolvido em conjunto por pesquisadores da Microsoft e da Universidade de Michigan ), bem como no pacote de malware Blue Pill . No entanto, tais afirmações foram contestadas por outros que afirmam que seria possível detectar a presença de um rootkit baseado em hipervisor.

Em 2009, pesquisadores da Microsoft e da North Carolina State University demonstraram um anti-rootkit de camada de hipervisor chamado Hooksafe, que pode fornecer proteção genérica contra rootkits de modo kernel .

Notas

Referências

links externos