Paravirtualização Explicada


"Para" é um prefixo de origem grega que significa “ao lado de”, “proximidade” ou “semelhança”. A paravirtualização é outra abordagem para a virtualização de servidores onde, ao invés de emular um ambiente de hardware completo, a paravirtualização age como uma camada fina, que garante que todos os sistemas operativos hóspedes partilham os recursos do sistema e convivem harmoniosamente.

Paravirtualização

Na paravirtualização, o núcleo (kernel) do sistema operativo hóspede é modificado especificamente para correr no hipervisor. Isto normalmente envolve a substituição de quaisquer operações privilegiadas, que só seriam executadas no anel 0 da CPU, por chamadas para o hipervisor, conhecidas como hiperchamadas (hypercalls). O hipervisor, por sua vez executa a tarefa em nome do núcleo hóspede e também fornece interfaces de hiperchamada para outras operações críticas do núcleo, tais como gestão de memória ou gestão de interrupções.


Hiperchamadas da Paravirtualização

A paravirtualização tenta corrigir os problemas da virtualização total permitindo que os sistemas operativos hóspedes tenham acesso directo ao hardware subjacente, portanto, refere-se a comunicação entre o sistema operativo hóspede e o hipervisor para melhorar o desempenho e eficiência. Uma vez que envolve modificações no sistema operativo, a paravirtualização é também por vezes referida como Virtualização de SO Assistido (OS-assisted).

A paravirtualização, onde o sistema operativo hóspede "sabe" que está a ser virtualizado, é diferente de virtualização total, onde o sistema operativo inalterado não sabe que é virtualizado e as chamadas críticas do SO são interceptadas e traduzidas usando tradução binária.

Vantagens da Paravirtualização


Há duas vantagens nesta abordagem:
  • A capacidade do kernel do hóspede para comunicar directamente com o hipervisor resulta em maiores níveis de desempenho. Lembram-se certamente que a virtualização total insere uma grande camada de emulação de hardware entre o sistema operativo hóspede e o hardware físico. Por contraste, a camada fina de de software da paravirtualização age mais como um controlador de tráfego aéreo para servidores virtualizados, permitindo que um SO hóspede tenha acesso aos recursos físicos do hardware e impedindo todos os outros sistemas operativos hóspedes de aceder aos mesmos recursos, ao mesmo tempo. Este método é geralmente muito mais eficiente do que a virtualização tradicional por emulação de hardware. O valor da paravirtualização está na menor sobrecarga de virtualização mas a vantagem de desempenho de sobre a virtualização total pode variar muito, dependendo da carga de trabalho;

  • A segunda vantagem da abordagem da paravirtualização em comparação com a virtualização total é que a paravirtualização não o limita aos drivers de dispositivo contidos no software de virtualização; na verdade, a paravirtualização não inclui quaisquer drivers de dispositivos. Em vez disso, usa os drivers de dispositivo contidos num dos sistemas operativos hóspedes, referido como o hóspede privilegiado. Sem entrar em muitos detalhes sobre esta arquitectura, basta dizer que este é um benefício, uma vez que permite às organizações tirar partido de todas as capacidades do hardware do servidor, em vez de estarem limitadas ao hardware para o qual os drivers estão disponíveis no software de virtualização como na virtualização total.

Limitações da Paravirtualização


  • A paravirtualização exige que os sistemas operativos hóspedes sejam modificados a fim de interagirem com as interfaces de paravirtualização. Isto normalmente limita o suporte a sistemas de código aberto como o Linux, que pode ser livremente alterado, e sistemas operativos proprietários onde os proprietários concordaram em fazer as modificações de código necessário para trabalhar com um determinado hipervisor. Como a paravirtualização não suporta sistemas operativos não modificados (por exemplo, a família Windows), a sua compatibilidade e portabilidade são pobres;

  • A paravirtualização pode também introduzir significativas questões de apoio e manutenção em ambientes de produção, uma vez que requer profundas modificações do kernel do SO.

O projecto open source Xen é um exemplo de paravirtualização que virtualiza o processador e a memória usando um kernel Linux modificado e virtualiza as E/S usando drivers de dispositivo personalizados no SO hóspede.

Conclusão: A paravirtualização não é "virtualização completa", pois envolve modificações no sistema operativo do hóspede. Portanto, ao mesmo tempo que traz uma melhoria significativa em termos de custo de virtualização, tem as suas limitações quando se trata de compatibilidade e portabilidade. No entanto, desenvolvimentos recentes permitem que o Xen execute SOs não modificados recorrendo a técnicas de assistência de hardware. Vou abordar isso num futuro artigo.