Virtualização: o que é e para que serve

Introdução

A virtualização está presente tanto no desktop de um entusiasta pelo assunto quanto no ambiente de TI de numerosas organizações. Não é por moda ou capricho. O conceito permite, entre outros benefícios, reduzir custos com equipamentos e otimizar resultados de tarefas computacionais.

Neste texto de introdução ao assunto, você saberá o que é máquina virtual e conhecerá as principais técnicas de virtualização existentes, bem como as suas vantagens.

Links diretos:

- O que é virtualização?
- Benefícios da virtualização
- Como a virtualização funciona?
- Virtualização total e paravirtualização
- Outros métodos de virtualização
- Máquina Virtual de Processo
- Máquina Virtual de Sistema Operacional
- Hardware na virtualização
- Algumas soluções de virtualização
- VMware
- Xen Project
- VirtualBox
- QEMU
- Red Hat Virtualization
- A virtualização tem desvantagens?

O que é virtualização?

Virtualização é uma técnica baseada em software que permite a um computador simular uma ou mais máquinas como se estas fossem reais. Uma máquina virtual pode ser criada para executar uma aplicação ou até se passar por um equipamento específico.

Também podemos definir o conceito como uma solução que permite a execução de vários sistemas operacionais e seus respectivos softwares a partir de uma única máquina, seja ela um desktop convencional ou um potente servidor.

É como se você se deparasse com um ou mais computadores distintos dentro de um só. A diferença é que essas máquinas são virtuais. Na prática, elas oferecem resultados como qualquer outro computador, mas existem apenas logicamente (e não fisicamente).

Cada máquina virtual corresponde a um ambiente computacional completo. Praticamente todos os recursos de seu sistema operacional podem ser usados, é possível conectá-la em rede, consegue-se instalar aplicativos, enfim.

Apesar de o conceito ser antigo — seu surgimento se deu na década de 1960, com a ideia ganhando força a partir de 1970 —, a virtualização é extremamente importante para o mundo cada vez mais digital de hoje.

Uma das razões para o surgimento da virtualização é que, na época em que os mainframes dominavam o cenário tecnológico e não havia computadores pessoais, não existia a praticidade de se adquirir, instalar e usar um software.

Virtualização — imagem ilustrativa: Mohamed Hassan/PxHere
Virtualização — imagem ilustrativa: Mohamed Hassan/PxHere

Normalmente, o software era acompanhado de bibliotecas e outros recursos que o tornavam quase que exclusivo ao computador para o qual foi desenvolvimento originalmente.

Por causa disso, não raramente, uma organização que implementava um novo sistema se via obrigada a adquirir um equipamento apenas para executá-lo, em vez de simplesmente aproveitar o maquinário existente. Isso deixava a operação mais complexa e cara.

A virtualização é capaz de resolver esse tipo de problema. Pode-se, por exemplo, aproveitar um computador já existente para executar dois ou mais sistemas distintos, cada um rodando dentro de sua própria máquina virtual. Evita-se, assim, gastos com novos equipamentos e aproveita-se os possíveis recursos ociosos do computador.

Nos dias de hoje, a virtualização permite até que uma organização execute vários serviços a partir de um único servidor ou até que um usuário doméstico teste um sistema operacional em seu computador antes de efetivamente instalá-lo.

Do ponto de vista corporativo, o conceito encontra espaço em numerosas aplicações. Exemplos: sistemas de ERP, serviços de computação nas nuvens, ferramentas de simulação, soluções de edge computing, entre outros.

Benefícios da virtualização

Você já conhece algumas vantagens da virtualização, mas o conceito oferece vários outros benefícios. Os principais são abordados a seguir:

- Aproveitamento da infraestrutura existente: ao executar vários serviços em um servidor ou conjunto de máquinas, por exemplo, pode-se aproveitar a capacidade de processamento desses equipamentos o mais próximo possível de sua totalidade;

- O parque de máquinas é menor: com o aproveitamento do maquinário existente, a necessidade de aquisição de novos equipamentos diminui, assim como os consequentes gastos com instalação, espaço físico, refrigeração, manutenção, consumo de energia, entre outros. Imagine o impacto que essa vantagem pode ter em um datacenter, por exemplo;

- Gerenciamento centralizado: dependendo da solução de virtualização utilizada, fica mais fácil monitorar os serviços em execução, pois o seu gerenciamento pode ser feito de modo centralizado;

- Implementação mais rápida: dependendo da aplicação, a virtualização pode permitir a sua implementação de modo mais rápido, pois a infraestrutura necessária para isso já existe;

- Uso de sistemas legados: pode-se manter em uso um sistema legado (antigo), mas ainda essencial às atividades da companhia, bastando destinar a ele uma máquina virtual compatível com o seu ambiente;

- Diversidade de plataformas: pode-se ter uma grande diversidade de plataformas e, assim, realizar testes de desempenho de determinada aplicação em cada uma delas, por exemplo;

- Ambiente de testes: é possível avaliar um novo sistema, um novo procedimento ou uma atualização de software antes de efetivamente implementá-la, por exemplo, de modo a diminuir os riscos inerentes a esses procedimentos;

- Segurança e confiabilidade: como cada máquina virtual funciona de maneira independente das outras, um problema que surgir em uma delas — como uma vulnerabilidade de segurança — não afetará as demais;

- Migração e ampliação mais fácil: dependendo da aplicação, mudar o ambiente de virtualização é uma tarefa que pode ser feita rapidamente, assim como a ampliação da infraestrutura em uso.

Ilustração de virtualização
Ilustração de virtualização

Como a virtualização funciona?

Uma solução de virtualização é composta, essencialmente, por dois "protagonistas": o hospedeiro (host) e o hóspede ou convidado (guest).

Podemos interpretar o hospedeiro como sendo o sistema operacional que é executado por uma máquina física. O hóspede, por sua vez, é o sistema virtualizado que deve ser executado pelo hospedeiro. A virtualização acontece quando esses dois elementos existem.

A forma como hospedeiro e hóspedes trabalham varia de acordo com a solução. Em um método bastante comum há a figura do VMM (Virtual Machine Monitor — Monitor de Máquina Virtual), que também pode ser chamado de hypervisor. Trata-se de uma plataforma implementada no hospedeiro que recebe os sistemas a serem virtualizados, controlando os seus recursos e mantendo-os "invisíveis" em relação aos outros.

Para fazer o seu trabalho, o VMM tem um tratamento diferenciado. Ele pode ser executado no modo supervisor, enquanto programas comuns (aplicativos) rodam no modo usuário.

No modo supervisor, o software pode requisitar instruções que lidam diretamente com certos recursos hardware, como funcionalidades específicas do processador.

No modo usuário, os recursos mais críticos não podem ser acessados diretamente, cabendo ao sistema operacional, que trabalha em modo supervisor, fazer uma espécie de intermediação.

O VMM precisa ter acesso privilegiado porque cabe a ele alocar os recursos a serem utilizados por cada máquina virtual, assim como determinar a ordem pela qual cada solicitação será atendida.

O hóspede é executado em modo usuário, mas como a máquina virtual possui um sistema operacional, qualquer requisição de instrução mais crítica solicitada por este é "interceptada" pelo hypervisor, que se encarrega de fornecê-la.

Ilustração de Virtual Machine Monitor
Ilustração de Virtual Machine Monitor

Virtualização total e paravirtualização

A virtualização por meio de Virtual Machine Monitor é comumente dividida em duas técnicas: a virtualização total (full virtualization) e a paravirtualização (paravirtualization).

Na virtualização total, o sistema operacional do hóspede trabalha como se, de fato, houvesse uma máquina física inteiramente à sua disposição. Com isso, o sistema não precisa passar por nenhuma adaptação e trabalha como se não houvesse virtualização ali.

O problema é que essa abordagem pode ter limitações consideráveis. Uma delas é o risco de algumas solicitações do hóspede não serem atendidas da maneira esperada.

Isso acontece, por exemplo, quando o hypervisor não consegue lidar com determinada instrução privilegiada ou quando um recurso de hardware não pode ser plenamente acessado por não haver drivers (uma espécie de software que "ensina" o sistema operacional a lidar com um dispositivo) na virtualização capazes de garantir a sua compatibilidade.

A paravirtualização surge como uma solução para problemas do tipo. Nela, o sistema operacional do hóspede roda em uma máquina virtual similar ao hardware físico, mas não equivalente.

Como esse método, o hóspede é modificado para recorrer ao hypervisor quando precisar de uma instrução privilegiada, e não diretamente ao processador. Assim, o VMM não precisa interceptar essas solicitações e testá-las (tarefa que causa perda de desempenho), como acontece na virtualização total.

Além disso, a paravirtualização diminui sensivelmente problemas com compatibilidade de hardware porque o sistema operacional do hóspede pode utilizar drivers adequados.

Na virtualização total, os drivers disponíveis podem ser "genéricos", isto é, criados para suportar o máximo possível de dispositivos, mas sem considerar as particularidades de cada componente.

A principal desvantagem da paravirtualização é a necessidade de o sistema operacional ter que sofrer modificações para "saber" que está sendo virtualizado. Isso pode gerar custos com adaptação e atualização ou limitações referentes à migração para um novo conjunto de hardware, por exemplo.

Na virtualização total, vale relembrar, não há necessidade de alteração do sistema, mas o procedimento fica sujeita aos problemas mencionados no início do tópico.

Em razão disso, a adoção de um modo ou outro depende de análises e testes capazes de determinar qual modelo oferece mais benefícios para um serviço ou aplicação.

Uma máquina fazendo o papel de três
Uma máquina fazendo o papel de três

Outros métodos de virtualização

O VMM não é a única técnica de virtualização que existe. Para atender às mais variadas necessidades, vários métodos foram (e são) desenvolvidos. Entre os demais, tem-se o Process Virtual Machine, o Operating System Virtual Machine e a virtualização assistida por hardware.

Process Virtual Machine (Máquina Virtual de Processo)

Neste método, a máquina virtual funciona como uma aplicação rodando dentro do sistema operacional. Um exemplo clássico de máquina virtual do tipo vem da linguagem de programação Java. Nela, quando um programa é compilado, um código específico é gerado para ser executado por uma JVM (Java Virtual Machine — Máquina Virtual Java).

O Virtual Machine Monitor é uma camada de software diretamente ligada ao hardware, por isso, permanece ativo durante todo o tempo em que o computador ficar ligado. No Process Virtual Machine, a máquina virtual é tratada como um processo, como o seu nome indica. Assim, quando a sua execução é concluída, o ambiente de máquina virtual deixa de existir.

Operating System Virtual Machine (Máquina Virtual de Sistema Operacional)

Você já sabe que um único computador pode suportar mais de uma máquina virtual, sem que uma saiba da existência da outra. O problema é que, muitas vezes, essa abordagem pode comprometer o desempenho do computador real.

Para lidar com o problema, um administrador de TI pode recorrer à técnica Operating System Virtual Machine (Máquina Virtual de Sistema Operacional).

Aqui, a máquina física recebe um sistema operacional, mas há a criação de vários ambientes virtuais sobre este. Cada um desses ambientes tem acesso a determinados recursos, como espaço em disco e quotas de processamento, mas compartilham o mesmo kernel (núcleo do sistema operacional). Normalmente, um ambiente não sabe da existência do outro.

Máquinas Virtuais de Sistema Operacional são bastante usadas, por exemplo, por serviços de hospedagem de sites na web. Cada ambiente é oferecido a um cliente como se fosse um sistema exclusivo, quando, na verdade, o servidor está sendo compartilhado com vários outros usuários.

Hardware na virtualização

Até agora, lidamos com a virtualização como sendo uma variedade de técnicas baseadas em software. Mas o hardware pode ter participação importante em soluções do tipo.

Companhias como Intel e AMD desenvolveram (e desenvolvem) tecnologias que permitem aos seus processadores executar um trabalho aprimorado em soluções de máquinas virtuais, especialmente no que diz respeito à virtualização total.

No caso da Intel, muitos de seus processadores contam com a tecnologia Intel Virtualization Technology (Intel VT), que consiste em um conjunto de instruções aplicadas ao chip especialmente para tratar de tarefas de virtualização.

Já a AMD oferece recursos de virtualização em linhas de chips como a AMD Epyc, direcionada a servidores.

Neste ponto, é válido destacar que a virtualização também pode ser direcionada a aplicações de redes ou de armazenamento de dados, por exemplo. Neste último, vários equipamentos de armazenamento podem ser combinados virtualmente para fazer a aplicação "entender" que só existe um volume para dados no sistema.

Algumas soluções de virtualização

Como a virtualização pode atender às mais distintas aplicações, há várias soluções do tipo no mercado, assim como diversas empresas especializadas no assunto. Conheça algumas dessas soluções a seguir, entre opções gratuitas e pagas.

VMware

A VMware é uma gigante do setor de TI que tem, entre os seus serviços e produtos, soluções para virtualização. Os sistemas da companhia são bastante conhecidos no mercado e atendem a aplicações das mais variadas áreas.

Um deles, da categoria de virtualização, é o VMware Workstation Player, que permite a criação de máquinas virtuais em computadores Windows ou Linux. Vários recursos são suportados, como telas 4K, dispositivos USB e mecanismos de segurança.

O VMware Workstation Player é gratuito para uso pessoal. Organizações podem fazer uso do VMware Workstation Pro, que é pago, mas oferece mais funcionalidades.

Xen Project

O Xen Project é outro nome bastante conhecido quando o assunto é virtualização. Trata-se de uma solução capaz de criar máquinas virtuais de desktops, servidores, aplicações de segurança, sistemas embarcados, entre outros.

Outros atributos do projeto incluem: estrutura modular, recursos avançados de segurança e código-fonte aberto. Para completar, o Xen é gratuito.

VirtualBox

O VirtualBox é um projeto iniciado em 2007 por uma empresa alemã de nome Innotek, mas que hoje pertence à Oracle. Sua proposta é a de permitir ao usuário rodar um sistema operacional dentro de outro sem enfrentar complexidade.

Há versões do software para os principais sistemas operacionais do mercado, como Windows, macOS e distribuições Linux. Que conste ainda que o VirtualBox tem código-fonte aberto e é gratuito.

VirtualBox — imagem: divulgação/VirtualBox
VirtualBox — imagem: divulgação/VirtualBox

QEMU

Eis outra solução gratuita e com código-fonte aberto. O QEMU pode atuar tanto como emulador (para executar um software desenvolvido para uma arquitetura diferente daquela existente na máquina física), quanto executar máquinas virtuais.

A ferramenta é compatível com várias arquiteturas, como x86, MIPS, Arm e PowerPC, bem como conta com versões para Windows, macOS e Linux. Entre as distribuições Linux que contam com pacotes do QEMU estão Ubuntu, Fedora e SUSE.

SteamOS rodando no QEMU — imagem: Alberto Garcia
SteamOS rodando no QEMU — imagem: Alberto Garcia

Red Hat Virtualization

A Red Hat é mais conhecida por sua distribuição Enterprise Linux, voltada a aplicações profissionais. Mas a companhia também tem outros tipos de soluções, inclusive para virtualização.

O Red Hat OpenShift Virtualization é um bom exemplo. A solução oferece diversos recursos para execução e gerenciamento de máquinas virtuais em ambientes corporativos. Há compatibilidade com sistemas Windows e, claro, Linux.

Por serem focadas em atividades profissionais, por padrão, os recursos de virtualização da Red Hat são pagos.

Red Hat OpenShift Virtualization — imagem: divulgação/Red Hat
Red Hat OpenShift Virtualization — imagem: divulgação/Red Hat

A virtualização tem desvantagens?

Pode ter, sim. A infinidade de soluções e métodos disponíveis faz a virtualização atender às mais variadas necessidades. Apesar disso, não podemos considerar o conceito um "remédio" para todos os problemas de TI.

Dependendo das circunstâncias, a virtualização pode levar a alguns problemas. Eis alguns riscos:

- Sobrecarga: a quantidade de máquinas virtuais que um computador pode suportar não é ilimitada, razão pela qual é necessário existir um equilíbrio para evitar sobrecarga, do contrário, o desempenho de todas as máquinas virtuais poderá ser prejudicado;

- Segurança: se houver uma vulnerabilidade de segurança no VMM, por exemplo, todas as máquinas virtuais poderão ser afetadas pelo problema;

- Portabilidade: dependendo da solução em uso, migrar uma máquina virtual para um ambiente diferente pode ser um procedimento complexo;

- Contingência: em aplicações críticas, é importante ter um computador que possa atuar imediatamente no lugar da máquina principal, pois se esta parar de funcionar, todos os sistemas virtualizados que rodam nela serão interrompidos;

- Desempenho: a virtualização pode não ter bom desempenho em todas as aplicações, por isso, é importante avaliar bem a solução antes de sua efetiva implementação;

- Gastos: pode haver gastos não previstos com manutenção, certificações, treinamento de funcionários, implementação e outros.

Esses pontos deixam claro que a escolha de uma solução de virtualização deve considerar as necessidades da aplicação, os recursos computacionais requisitados, a disponibilidade de redundâncias, parâmetros de segurança, entre vários outros fatores.

Para uso pessoal ou projetos simples, não é preciso ter todo esse cuidado, obviamente. Mas, para demandas corporativas ou projetos complexos, a implementação de um sistema de virtualização pode requerer até a contratação de empresas ou profissionais especializados no assunto.

* * *

Referências para este texto:

Veja também:

Publicado em 25_08_2012. Atualizado em 28_09_2022.

Emerson Alecrim Autor: Emerson Alecrim
Graduado em ciência da computação, tem experiência profissional em TI e produz conteúdo sobre tecnologia desde 2001. É especializado em temas como hardware, sistema operacionais, dispositivos móveis, internet e negócios.
Principais redes sociais: • X/TwitterLinkedIn