Virtualização Assistida por Hardware Explicada


A virtualização assistida por hardware foi introduzida pela primeira vez pela IBM no seu System/370 em 1972 para ser utilizada com o VM/370, o primeiro sistema operativo de máquina virtual. A virtualização foi esquecida no final dos anos 70, mas a proliferação de servidores x86 reacendeu o interesse em virtualização motivado pela necessidade de consolidação de servidores; a virtualização permitiu que um único servidor substituísse vários servidores dedicados subutilizados.

No entanto, a arquitectura x86 não cumpria os Critérios de Popek e Goldberg para alcançar a chamada "virtualização clássica". Para compensar essas limitações, a virtualização da arquitectura x86 tem sido realizada através de dois métodos: a virtualização total e a paravirtualização. Ambos criam a ilusão de hardware físico para alcançar a meta de independência do sistema operativo do hardware, mas apresentam algumas desvantagens no desempenho e complexidade.

Assim, a Intel e a AMD criaram as suas novas tecnologias de virtualização, um punhado de novas instruções e, fundamentalmente, um novo nível de privilégio. O hipervisor pode agora ser executado no Anel -1 e assim os sistemas operativos hóspedes podem ser executados no Anel 0.

A virtualização por hardware utiliza recursos de virtualização incorporados nas últimas gerações de CPUs da Intel e da AMD. Estas tecnologias, conhecidas como Intel VT e AMD-V, respectivamente, oferecem extensões necessárias para executar máquinas virtuais não modificadas sem as desvantagens inerentes à emulação de CPU da virtualização total. Em termos muito simplistas, estes novos processadores fornecem um modo de privilégio adicional abaixo do Anel 0 em que o hypervisor pode operar, deixando o Anel 0 disponível para sistemas operativos hóspedes não modificados.


Com virtualização assistida por hardware, o VMM pode virtualizar eficientemente todo o conjunto de instruções x86 ao lidar com essas instruções críticas usando um modelo clássico apanhar-e-emular por hardware, em vez de por software. Os hipervisores que suportam esta tecnologia podem funcionar no Anel -1 e os sistemas operativos hóspedes podem aceder à CPU no Anel 0, como fariam normalmente se estivessem a ser executados numa máquina física. Isto permite virtualizar SOs hóspedes sem nenhuma modificação.

Virtualização Assistida por Hardware

Conforme ilustrado na figura, as chamadas privilegiadas e sensíveis são configurados para ser automaticamente apanhadas pelo hipervisor, eliminando a necessidade para qualquer tradução binária ou paravirtualização.

Vantagens da Virtualização Assistida por Hardware


A virtualização assistida por hardware muda o próprio acesso ao sistema operativo. Os sistemas operativos x86 são projectados para terem acesso directo aos recursos do sistema durante a sua execução. Com a virtualização de software, o VMM emula o hardware necessário para o sistema operativo. Com a virtualização assistida por hardware, o sistema operativo tem acesso directo aos recursos sem qualquer emulação ou modificação e isto melhora o desempenho.

Isto significa que  os kernels dos SO não precisam ser modificados como na paravirtualização. Ao mesmo tempo, o hipervisor também não precisa estar envolvido na ineficiente tradução binária das instruções críticas. Assim, a virtualização assistida por hardware não só satisfaz os critérios de Popek e Goldberg (de virtualização total) como também proporciona um melhor desempenho porque as instruções privilegiadas são agora apanhadas e emuladas directamente no hardware.

Limitações da Virtualização Assistida por Hardware


A virtualização assistida por hardware requer o apoio explícito no CPU anfitrião que ainda não está disponível em todos os processadores. Uma abordagem pura de virtualização assistida por hardware, usando sistemas operativos hóspedes não modificados, envolve muitas capturas por parte do VMM e, por conseguinte, grande carga na CPU limitando a escalabilidade e a eficiência de consolidação de servidores. Esta quebra de desempenho pode ser atenuada com o uso de drivers paravirtualizados, combinação que tem sido chamada "virtualização híbrida".

Isto conclui, por agora, a série teórica sobre virtualização e alta disponibilidade. Em seguida irei produzir uma série de artigos explicando como se pode juntar tudo isto, em casa, criando um pequeno laboratório para testar o poder destas tecnologias emergentes. Continuem a ler…