# Virtualização de hardware

A virtualização de hardware é a virtualização de computadores como plataformas de hardware completas, certas abstrações lógicas dos seus componentes ou apenas a funcionalidade necessária para executar vários sistemas operativos . A virtualização emula o ambiente de hardware da arquitetura do host, permitindo que vários sistemas operativos sejam executados sem modificações e de forma isolada. Nas suas origens, o software que controlava a virtualização era chamado de "programa de controle", mas os termos " hipervisor " ou "monitor de máquina virtual" tornaram-se preferidos ao longo do tempo.

## Conceito

O termo "virtualização" foi cunhado na década de 1960 para se referir a uma máquina virtual (por vezes chamada de "pseudo máquina"), um termo que data do sistema experimental IBM M44/44X . A criação e a gestão de máquinas virtuais também foram chamadas de "virtualização de plataforma" ou "virtualização de servidor", mais recentemente.
A virtualização de plataforma é realizada em uma determinada plataforma de hardware pelo software host (um programa de controle ), que cria um ambiente de computador simulado, uma máquina virtual (VM), para seu software convidado . O software convidado não se limita a aplicações de utilizador; muitos hosts permitem a execução de sistemas operativos completos. O software convidado é executado como se estivesse a ser executado diretamente no hardware físico, com várias ressalvas importantes. O acesso aos recursos físicos do sistema (como acesso à rede, monitor, teclado e armazenamento em disco ) geralmente é gerido em um nível mais restrito do que o processador host e a memória do sistema. Os convidados geralmente são impedidos de acessar dispositivos periféricos específicos ou podem ser limitados a um subconjunto dos recursos nativos do dispositivo, dependendo da política de acesso ao hardware implementada pelo host de virtualização. $^{(p5,13)}$
A virtualização geralmente acarreta penalidades de desempenho, tanto em recursos necessários para executar o hipervisor, quanto em desempenho reduzido na máquina virtual em comparação com a execução nativa na máquina física. $^{(p35,67-68)}$

## Razões para a virtualização de hardware

* No caso de consolidação de servidores, muitos servidores físicos pequenos podem ser substituídos por um servidor físico maior para diminuir a necessidade de mais recursos de hardware (custosos), como CPUs e discos rígidos. Embora o hardware seja consolidado em ambientes virtuais, normalmente os sistemas operativos não são. Em vez disso, cada sistema operativo executado em um servidor físico é convertido em um sistema operativo distinto executado dentro de uma máquina virtual. Dessa forma, o servidor grande pode "hospedar" muitas dessas máquinas virtuais "convidadas". Isso é conhecido como transformação física para virtual (P2V). A utilização média de um servidor no início dos anos 2000 era de 5 a 15%, mas com a adoção da virtualização esse número começou a aumentar para reduzir o número de servidores necessários.
* Além de reduzir os custos de equipamentos e mão de obra associados à manutenção de equipamentos, a consolidação de servidores também pode ter o benefício adicional de reduzir o consumo de energia e a pegada global em setores ambientais e ecológicos de tecnologia. Por exemplo, um servidor típico funciona a 425 W e a VMware estimam uma taxa de redução de hardware de até 15:1.
* Uma máquina virtual (VM) pode ser controlada e inspecionada mais facilmente remotamente do que uma máquina física, e a configuração de uma VM é mais flexível. Isso é muito útil no desenvolvimento do kernel e para ensinar cursos de sistemas operativos, incluindo a execução de sistemas operativos antigos que não oferecem suporte a hardware moderno.
* Uma nova máquina virtual pode ser provisionada conforme necessário, sem a necessidade de compra inicial de hardware.
* Uma máquina virtual pode ser facilmente realocada de uma máquina física para outra, conforme necessário. Por exemplo, um vendedor que vai até um cliente pode copiar uma máquina virtual com o software de demonstração para seu portátil, sem a necessidade de transportar o computador físico. Da mesma forma, um erro dentro de uma máquina virtual não danifica o sistema host, então não há risco de o sistema operativo ficar danificado no portátil.
* Devido a essa facilidade de realocação, as máquinas virtuais podem ser prontamente usadas em cenários de recuperação de desastres sem preocupações com o impacto de fontes de energia reformadas e defeituosas.
No entanto, quando várias VMs estão em execução simultaneamente no mesmo host físico, cada VM pode apresentar desempenho variável e instável, o que depende muito da carga de trabalho imposta ao sistema por outras VMs. Esse problema pode ser resolvido por técnicas de instalação apropriadas para isolamento temporal entre máquinas virtuais .
Existem várias abordagens para virtualização de plataforma.
Exemplos de casos de uso de virtualização:
* Executando uma ou mais aplicações que não são suportadas pelo sistema operativo host: Uma máquina virtual executando o sistema operativo convidado necessário pode permitir que as aplicações desejadas sejam executadas, sem alterar o sistema operativo host.
* Avaliação de um sistema operativo alternativo: O novo sistema operativo pode ser executado numa VM, sem alterar o sistema operativo host.
* Virtualização de servidores: vários servidores virtuais podem ser executados em um único servidor físico, para utilizar melhor os recursos de hardware do servidor físico.
* Duplicação de ambientes específicos: uma máquina virtual pode, dependendo do software de virtualização usado, ser duplicada e instalada em vários hosts ou restaurada para um estado de sistema com backup feito anteriormente.
* Criação de um ambiente protegido: se um sistema operativo convidado em execução em uma VM for danificado de uma forma que não seja economicamente viável reparar, como pode ocorrer ao estudar malware ou instalar software com mau comportamento, a VM pode ser simplesmente descartada sem causar danos ao sistema host, e uma cópia limpa pode ser usada ao reinicializar o convidado.

## Virtualização completa

Na virtualização completa, a máquina virtual simula hardware necessário para permitir que um sistema operativo "convidado" não modificado, projetado para o mesmo conjunto de instruções, seja executado isoladamente. Essa abordagem foi pioneira em 1966 com o IBM CP-40 e CP-67, predecessores da família VM .

## Paravirtualização

Na paravirtualização, a máquina virtual não simula necessariamente o hardware, mas em vez disso (ou adicionalmente) oferece uma API especial que só pode ser usada modificando o sistema operativo "convidado". Para que isso seja possível, o código-fonte do sistema operativo "convidado" deve estar disponível. Se o código-fonte estiver disponível, é suficiente substituir instruções confidenciais por chamadas para APIs do VMM (por exemplo: "cli" por "vm_handle_cli"), depois recompilar o sistema operativo e usar os novos binários. Esta chamada de sistema para o hipervisor é chamada de "hiperchamada" no TRANGO e no Xen ; é implementada por meio de uma instrução de hardware DIAG ("diagnóstico") no CMS da IBM sob VM (que foi a origem do termo hipervisor ).

## Virtualização assistida por hardware

Na virtualização assistida por hardware, o hardware fornece suporte arquitetónico que facilita a construção de um monitor de máquina virtual e permite que os sistemas operativos convidados sejam executados isoladamente. Isso pode ser usado para auxiliar na virtualização completa ou na paravirtualização. A virtualização assistida por hardware foi introduzida pela primeira vez nos processadores IBM 308X em 1980, com a instrução Start Interpretive Execution (SIE).
Em 2005 e 2006, a Intel e a AMD desenvolveram hardware adicional para dar suporte à virtualização executada em suas plataformas. A Sun Microsystems (agora Oracle Corporation ) adicionou recursos semelhantes em seus processadores UltraSPARC T-Series em 2005.
Em 2006, descobriu-se que o suporte de hardware x86 de 32 e 64 bits de primeira geração raramente oferecia vantagens de desempenho em relação à virtualização de software.

## Virtualização em nível de sistema operacional

Na virtualização no nível do sistema operativo, um servidor físico é virtualizado no nível do sistema operativo, permitindo que vários servidores virtualizados isolados e seguros sejam executados em um único servidor físico. Os ambientes do sistema operativo "convidado" compartilham a mesma instância em execução do sistema operativo que o sistema host. Assim, o mesmo kernel do sistema operativo também é usado para implementar os ambientes "convidados", e as aplicações executados em um determinado ambiente "convidado" o veem como um sistema autónomo.

## Recuperação de desastres de virtualização de hardware

Um plano de recuperação de desastres (DR) é frequentemente considerado uma boa prática para uma plataforma de virtualização de hardware. A recuperação de desastres de um ambiente de virtualização pode garantir alta taxa de disponibilidade durante uma ampla gama de situações que interrompem as operações comerciais normais. Em situações em que as operações contínuas de plataformas de virtualização de hardware são importantes, um plano de recuperação de desastres pode garantir que os requisitos de desempenho e manutenção do hardware sejam atendidos. Um plano de recuperação de desastres de virtualização de hardware envolve proteção de hardware e software por vários métodos, incluindo aqueles descritos abaixo.

### Backup em fita para necessidades de arquivamento de dados de software de longo prazo

    Esse método comum pode ser usado para armazenar dados fora do local, mas a recuperação de dados pode ser um processo difícil e demorado. Os dados de backup em fita são tão bons quanto a última cópia armazenada. Os métodos de backup em fita exigirão um dispositivo de backup e material de armazenamento contínuo.

### Replicação de arquivo inteiro e aplicação

    A implementação deste método exigirá software de controle e capacidade de armazenamento para replicação de aplicações e arquivos de dados, normalmente no mesmo site. Os dados são replicados em uma partição de disco diferente ou em um dispositivo de disco separado e podem ser uma atividade agendada para a maioria dos servidores, sendo implementados mais para aplicações do tipo banco de dados.

### Redundância de hardware e software

    Este método garante o mais alto nível de proteção de recuperação de desastres para uma solução de virtualização de hardware, fornecendo replicação duplicada de hardware e software em duas áreas geográficas distintas.