A virtualização é o processo que separa o software (como um sistema operacional ou um aplicativo) do hardware físico em que ele é executado. Em termos mais simples, a virtualização permite a criação de um computador digital ou virtual que funciona dentro de um computador físico.
A tecnologia de virtualização existe há anos, tendo surgido nos anos 70 com os mainframes caros e gigantescos. Originalmente, o conceito foi criado para simplificar a migração e a execução de aplicações em ambientes que possuíam sistemas operacionais diferentes, mesmo sendo do mesmo fabricante.
A "máquina" criada através do processo de virtualização é chamada de Máquina Virtual (VM) ou partição virtual.
Definição: Uma VM é um computador virtual que existe como código. Ela nada mais é do que um arquivo de computador, geralmente chamado de imagem, que se comporta como um computador de verdade, refletindo todo o comportamento de uma máquina real, mas por meio de virtualização.
Funcionamento: As VMs são instaladas dentro do computador físico, que é chamado de host físico. Embora o hardware que compõe o computador seja físico e tangível, o "hardware" da VM (CPU, disco rígido, RAM, etc.) é definido e particionado usando software.
Compartilhamento de Recursos: A VM obtém recursos emprestados do computador host. Recursos como CPU, memória, armazenamento, acesso à rede e disco são compartilhados com as Máquinas Virtuais (VMs).
Isolamento: A VM é executada em uma janela como um ambiente computacional separado e particionado do restante do sistema. Isso significa que o software dentro de uma VM não pode interferir no sistema operacional primário do computador físico, o host.
Para gerenciar e criar essas máquinas virtuais, é necessário um software especializado.
O Virtual Machine Monitor (VMM), também amplamente conhecido como Hipervisor, é o software que torna a virtualização possível.
Função: Ele é responsável por gerenciar e criar as máquinas virtuais, além de controlar a operação dos ambientes virtualizados nas máquinas hospedeiras. O hipervisor é a camada que coordena a tecnologia de virtualização, suportando várias VMs rodando ao mesmo tempo.
Gerenciamento de Recursos: O Hipervisor é incumbido de gerenciar a utilização dos recursos do sistema hospedeiro (memória, processadores e dispositivos de entrada e saída) e é responsável pelo escalonamento das VMs, de modo similar a um escalonador de processos em um sistema operacional.
Integração: Ele é o software que integra o hardware físico e o "hardware" virtual da VM. Assim como um guarda de trânsito ajuda a alocar alunos em um cruzamento, o hipervisor garante que cada VM receba os recursos necessários do servidor físico de maneira eficiente.
As bancas de concursos frequentemente distinguem os hipervisores pelo modo como eles interagem com o hardware físico.
Característica | Hipervisor Tipo 1 (Bare Metal) | Hipervisor Tipo 2 (Hospedado) |
Localização | Fica em cima do servidor bare metal (diretamente no hardware físico). | É uma aplicação instalada no Sistema Operacional Host. |
Acesso ao Hardware | Acesso direto aos recursos de hardware. Negocia diretamente com o hardware. | Interage com o hardware através do Sistema Operacional Host. Negocia a alocação de recursos com o SO. |
Performance | Maior performance para as VMs, pois não precisa passar pela camada do SO. | Mais lenta e menos eficiente, pois deve usar apenas os recursos que o SO host é capaz de fornecer. |
Isolamento e Segurança | Oferece maior grau de isolamento (não há camada SO compartilhada), sendo inerentemente mais seguro. | O SO host prioriza as próprias funções, e a segurança depende da estabilidade do SO host. |
Gerenciamento | Mais complexo, requer conhecimento em nível de administrador de sistema. | Mais fácil, pode ser instalado e gerenciado como uma aplicação (usuários sem conhecimento técnico podem operá-lo). |
Uso Típico | Datacenters, ambientes de computação em nuvem (ex: AWS usa o Nitro System), servidores Web. | Ambientes de área de trabalho e desenvolvimento, ou quando o usuário precisa usar dois SOs simultaneamente em uma única máquina. |
Exemplos | VMware ESXi, Microsoft Hyper-V, KVM. | Oracle VM VirtualBox, VMware Workstation, Microsoft Virtual PC. |
Embora a virtualização em geral tenha certas semelhanças, as arquiteturas se distinguem nos métodos utilizados e no nível de abstração. O entendimento dessas quatro arquiteturas (Paravirtualização, Virtualização Total, Assistida por Hardware e em Nível de SO) é crucial para a aprovação em concursos que cobram Noções de Informática avançadas.
Nesta arquitetura, o hardware tem que ser completamente emulado.
Mecanismo: O VMM (Hipervisor) é responsável por receber e traduzir as instruções em tempo real para a máquina virtual. Todas as características do hardware alvo são fielmente emuladas (incluindo I/O e acesso à memória).
Consciência do SO: O sistema operacional convidado não precisa ter "consciência" de que está sendo executado em um ambiente virtualizado.
Vantagem: Não há necessidade de modificação do sistema operacional original, o que é uma grande vantagem para sistemas operacionais de código fechado, como os da família Microsoft.
Desvantagem (Exceção de Performance): Possui uma notável inferioridade em desempenho (perda de desempenho) em relação às demais arquiteturas, devido à necessidade dessa emulação completa do hardware.
Nesta arquitetura, o sistema operacional convidado é modificado para cooperar com o VMM.
Mecanismo: O SO tem "consciência" de que está sendo virtualizado e necessita ser modificado para funcionar. As instruções que teriam acesso direto aos recursos físicos são rearranjadas e substituídas por chamadas diretas ao VMM. O VMM fornece uma interface de comunicação para operações críticas ao kernel, como gerenciamento de memória.
Vantagem (Exceção de Performance): Geralmente existe um ganho de desempenho quando comparada com a arquitetura de virtualização total.
Desvantagem (Exceção de Requisito): O principal efeito negativo é que o sistema operacional necessita ser modificado para esta arquitetura, o que é inviável para sistemas operacionais de código fechado (que não disponibilizam o código fonte), como os da família Microsoft.
Esta arquitetura é um avanço que utiliza recursos incorporados no processador para otimizar a virtualização.
Mecanismo: Usa o suporte de hardware (como Intel VT e AMD-V) para a virtualização. O objetivo é reduzir o impacto da camada de virtualização. O VMM tem um controle parcial sobre o comportamento do CPU.
Funcionamento: Essa arquitetura elimina a necessidade da tradução da camada de software. Permite que vários sistemas operacionais não modificados sejam executados paralelamente.
Diferença Chave: O acesso é realizado diretamente ao hardware, removendo a necessidade de emulação de um processador.
Esta é a arquitetura que se diferencia fundamentalmente das demais e é amplamente cobrada em provas que envolvem performance e arquitetura de sistemas modernos.
A virtualização em nível do sistema operacional (ou conteinerização) é a arquitetura de virtualização indiretamente abordada que não depende de um Virtual Machine Monitor (VMM).
Mecanismo: O sistema operacional isola múltiplas "áreas de usuários" (User-Spaces), que são denominadas de contêineres.
Kernel Compartilhado (Exceção Chave): Um contêiner usa o mesmo kernel do sistema hospedeiro. Os contêineres são similares às máquinas virtuais, mas conseguem ter um desempenho mais satisfatório justamente por utilizarem o mesmo kernel da máquina host.
Recursos: Os recursos não são pré-alocados; eles são controlados e limitados pelo kernel e podem ser dinamicamente alocados. Se um recurso não está sendo usado, ele pode ser alocado para outro contêiner.
Isolamento: A conteinerização executa uma única instância de SO, mas com vários espaços de usuário isolando processos uns dos outros. Contudo, uma crítica importante é a dificuldade de manter um isolamento eficaz em diferentes aplicações compartilhando o mesmo kernel. Todos os contêineres podem estar em risco se um invasor controlar o host.
Docker é uma das ferramentas de contêinerização mais populares. Estudos de desempenho mostram uma clara superioridade dos contêineres em relação à virtualização tradicional (como o Virtual Box).
Comparativo | Desempenho (Contêineres/Docker) | Desempenho (Virtualização/Virtual Box) |
Geral | Mais eficiente. A diferença de performance para a execução nativa no SO é praticamente nula (0,002666498% no teste de CPU). | Menos eficiente. |
Processador (CPU) | Os resultados com Docker foram aproximadamente 50% mais eficientes que a virtualização. | A média dos resultados de CPU no Virtual Box foi aproximadamente 50,36% maior que a média do Docker. |
Memória RAM | Os resultados com Docker foram aproximadamente 86% mais eficientes para a memória que a virtualização. | A diferença percentual entre os testes do Docker e Virtual Box na memória RAM foi de aproximadamente 88,37%. |
Em resumo, a eficiência do Docker se deve ao fato de ele ser mais compacto, usar grande parte dos recursos do sistema host, e possuir um overhead menor, já que compartilha o kernel, ao invés de emular todo um hardware e virtualizar um novo sistema operacional como fazem as VMs tradicionais.
A virtualização é adotada por empresas e usuários comuns devido a uma série de benefícios, mas também apresenta riscos e desvantagens.
Economia de Custos:
Redução de custos na aquisição de hardware e instalação de equipamentos.
Economia de espaço físico em data centers.
Menor consumo de energia elétrica (hardware e sistemas de refrigeração).
Ambiente de Testes e Desenvolvimento:
Permite que desenvolvedores de software realizem testes de software, aplicativos ou segurança sem arriscar o PC físico.
Possibilidade de instalar vários tipos de sistemas operacionais para testes.
Segurança:
Benefício de segurança ao virtualizar, impedindo o comprometimento do sistema físico/real instalado na máquina.
Maior segurança dos dados confidenciais, que podem residir em data centers altamente seguros (fora dos dispositivos do cliente).
Portabilidade e Agilidade:
Maior portabilidade. Se uma máquina virtual falhar, ela pode ser levantada em outro computador e funcionará perfeitamente.
Facilidade de instalação, migração e remoção.
Otimização de Recursos e Escalabilidade:
Aloca recursos ociosos, aumentando o desempenho do hardware host.
Se for necessário mais recursos (memória, armazenamento, CPU), é fácil escalar/aumentar a quantidade.
Sobrecarga de Tarefas (Hardware):
Ligar várias máquinas virtuais simultaneamente pode causar uma grande sobrecarga no sistema host, podendo levar à paralisação do funcionamento.
A virtualização gera um grande consumo de Memória RAM, pois cada VM ocupa uma área separada desse recurso.
Perda de Desempenho (Geral):
Máquinas virtuais que simulam ambientes reais acessam o hardware de forma indireta, resultando em um desempenho geralmente inferior ao de máquinas reais, exceto nas arquiteturas mais eficientes (como a Paravirtualização ou Virtualização em Nível de SO).
Tecnologias de hipervisor sempre apresentam uma sobrecarga de desempenho.
Vulnerabilidade do VMM (Segurança):
O VMM (Hipervisor) é o software central para a abstração da VM. Caso algum problema ocorra com ele, todas as máquinas virtuais ficarão vulneráveis a ataques, com um ambiente afetando o outro.
Isolamento de Contêineres:
Na conteinerização, vulnerabilidades no kernel host significam que todos os contêineres em um cluster podem ser comprometidos, não apenas alguns isolados.
A Virtual Desktop Infrastructure (VDI) é uma aplicação moderna da virtualização que se tornou crucial para o trabalho remoto e a centralização de dados.
VDI é a infraestrutura de TI que permite o acesso a sistemas de computadores corporativos a partir de quase qualquer dispositivo (PC, smartphone ou tablet).
Objetivo: Eliminar a necessidade de a empresa fornecer, gerenciar e substituir um computador físico.
Funcionamento: A VDI executa cargas de trabalho tradicionais de área de trabalho em servidores centralizados. Ela utiliza o hardware de servidor para executar Sistemas Operacionais de área de trabalho (como Windows ou Linux) em uma VM que está hospedada em um servidor centralizado em um datacenter físico.
Benefícios Chaves: Suporte a funcionários remotos e em filiais, segurança de dados (que residem no datacenter), e suporte a políticas de BYOD (Traga os Próprios Dispositivos).
Os provedores de nuvem oferecem dois tipos principais de áreas de trabalho virtuais hospedadas em VDI:
Área de Trabalho Virtual Persistente:
Características: Oferece o maior grau de personalização. O ambiente é permanente, e o usuário sempre retorna à mesma máquina virtual customizada.
Melhor Uso: Desenvolvedores e profissionais de TI que exigem permissões elevadas e um ambiente consistente.
Custo: Geralmente tem um custo mais alto por usuário.
Área de Trabalho Virtual Não Persistente:
Características: Oferece um nível de personalização, mas a camada de personalização é separada do SO subjacente. A personalização não persiste e é removida depois que o usuário sai.
Melhor Uso: Funcionários de tarefas ou turnos em ambientes como call centers, laboratórios de computador ou quiosques de varejo, onde muitos usuários precisam do mesmo software limitado.
Custo: Solução de custo mais baixo por usuário.
O termo Área de Trabalho como Serviço (DaaS) é um tipo de serviço VDI oferecido por provedores de nuvem (como o Microsoft Azure).
O DaaS é a hospedagem virtual do back-end da implantação de VDI, oferecendo vantagens similares (segurança, trabalho remoto).
O DaaS pode proporcionar grande economia de custos iniciais porque não exige o mesmo investimento inicial em infraestrutura (computação, armazenamento, rede) que a implantação tradicional de VDI exige.
Conhecer as ferramentas e os conceitos correlatos é essencial para uma preparação completa.
Existem vários softwares de virtualização disponíveis no mercado:
Oracle VirtualBox: Software gratuito que será utilizado em aulas práticas (como na instalação do Ubuntu).
VMware: Inclui VMware Workstation (Tipo 2) e VMware ESXi (Tipo 1).
Microsoft: Inclui Microsoft Hyper-V (Tipo 1), Microsoft Virtual PC (Tipo 2).
Outros: Proxmox, XCP-ng, oVirt, Citrix XenServer, Microsoft HyperV.
A virtualização é a base da computação em nuvem.
O modelo de Infraestrutura como Serviço (IaaS) é a categoria básica de serviços em nuvem, onde se aluga infraestrutura (servidores, VMs, armazenamento, redes) em um esquema pago conforme o uso.
A adoção do IaaS permite migrar de um modelo CAPEX (investimento inicial rígido) para um modelo OPEX (custo operacional flexível, escalável e acessível).
Ao focar nesses conceitos centrais, especialmente nas arquiteturas, nos tipos de hipervisores e na distinção de performance e segurança entre VMs e Contêineres (Docker), o estudante estará preparado para as questões mais complexas cobradas em provas de alto nível.