Uma máquina virtual (MV) é uma representação emulada de um computador físico que simula suas funções e aloca recursos em um ambiente virtual.
Em termos mais formais, pode-se dizer que uma MV é uma instância de um sistema operativo que é executada como um aplicativo dentro de outro sistema operativo, permitindo a execução de programas e a gestão de recursos de forma isolada do sistema anfitrião.
Pode realizar as mesmas tarefas numa Máquina Virtual que numa máquina física (um computador real, como o seu portátil ou PC). Por exemplo, ligar-se a uma rede, fazer o download de software, atualizar o sistema operativo e muito mais.
Naturalmente, dependendo do caso de utilização, a experiência será diferente da de um computador físico.
Vamos explorar as máquinas virtuais, os seus casos de utilização e o seu funcionamento.
Máquinas Virtuais: As Origens
Primeiras Experiências (1960s-1970s): O conceito de virtualização começou a ser explorado nas décadas de 1960 e 1970. Um dos marcos importantes foi o desenvolvimento do CP/CMS (Control Program/Cambridge Monitor System) pela IBM. O CP/CMS permitia a execução de múltiplos sistemas operativos em mainframes IBM.
Avançando rapidamente para 2023, quando publicamos este artigo, as Máquinas Virtuais (MVs) estão em todo o lado, desde computadores pessoais até empresas e pequenos negócios. Todos utilizam MVs de uma forma ou de outra.
Considerando tudo isso, é evidente que as Máquinas Virtuais (MVs) são extremamente úteis. Mas como é que funcionam e para que exatamente as usamos?
Como é que as Máquinas Virtuais Funcionam?
O conceito de virtualização deve esclarecer o funcionamento das máquinas virtuais.
Para relembrar, de acordo com um dos nossos artigos:
“A virtualização apresenta uma abstração do hardware do computador que auxilia na criação de máquinas virtuais (VMs), redes, armazenamento e outros recursos.”
A virtualização permite que um utilizador aproveite os recursos físicos do sistema num ambiente virtual. Isso possibilita que um processo utilize os recursos de forma independente, sem afetar o computador físico.
E a Máquina Virtual é o processo que faz uso dessa capacidade, obtendo recursos virtuais, como um disco virtual, RAM e outros ficheiros de configuração, para executar um sistema operativo sobre eles.
É possível que já esteja familiarizado com software de virtualização para Linux que ajuda a criar essas máquinas virtuais.
Para lhe fornecer uma diferença técnica entre uma máquina virtual e um computador físico, aqui está um diagrama para o ajudar a compreender:
Porque é que as utilizamos?
Utilizamos Máquinas Virtuais (VMs) por várias razões, devido aos vários benefícios e flexibilidade que oferecem na gestão de ambientes de computação. Aqui estão algumas das principais razões pelas quais usamos VMs:
- Isolamento: As VMs fornecem isolamento completo entre si e entre a máquina física (host). Isso significa que problemas ou falhas em uma VM geralmente não afetam outras VMs ou o host, tornando as VMs ideais para ambientes de teste, desenvolvimento e produção onde a estabilidade é crucial.
- Consolidação de Servidores: As VMs permitem executar vários sistemas operativos e aplicativos em uma única máquina física. Isso ajuda a consolidar servidores, reduzindo a quantidade de hardware necessário e, por consequência, os custos operacionais.
- Flexibilidade: É possível criar, clonar, mover e dimensionar VMs rapidamente, o que oferece uma flexibilidade significativa na gestão de recursos de computação. Isso é útil para adaptar ambientes às necessidades em constante mudança.
- Desenvolvimento e Teste de Software: Desenvolvedores podem criar ambientes de teste isolados usando VMs para testar software em várias configurações sem interferir no seu ambiente de desenvolvimento principal.
- Recuperação de Desastres: VMs são usadas em estratégias de recuperação de desastres, permitindo a rápida restauração de sistemas em caso de falha ou interrupção.
- Testes de Compatibilidade: As VMs permitem testar a compatibilidade de software em várias versões de sistemas operativos e configurações, o que é fundamental para garantir que as aplicações funcionem em diversos ambientes.
- Alocação de Recursos Controlada: Os recursos de CPU, memória e armazenamento podem ser alocados e geridos de forma precisa para cada VM, garantindo um desempenho previsível e consistente.
- Ambientes de Ensino e Formação: Instituições educacionais utilizam VMs para criar ambientes de laboratório virtuais onde os alunos podem aprender e praticar sem necessidade de hardware físico adicional.
- Migração e Portabilidade: VMs podem ser facilmente movidas ou copiadas entre diferentes hosts físicos, tornando a migração e a portabilidade de ambientes uma tarefa relativamente simples.
- Segurança: VMs são usadas para isolar ambientes potencialmente inseguros ou não confiáveis do host e de outras VMs, ajudando a melhorar a segurança.
As Máquinas Virtuais Consomem Recursos do Sistema?
Quando cria uma máquina virtual para executar outro sistema operativo nela, aloca alguns recursos do sistema para a mesma. Esses recursos são principalmente:
- CPU: Utilizada apenas quando o sistema operativo está a ser executado na VM.
- RAM: Utilizada apenas quando o sistema operativo está a ser executado na VM.
- Espaço em disco: Reservado quando cria a VM. Ocupado independentemente de a VM estar em execução ou não.
Algumas pessoas pensam que o CPU e a RAM serão sempre utilizados. Isso não é verdade. A RAM e o CPU são consumidas apenas quando a VM está a executar um sistema operativo.
No entanto, o espaço em disco está sempre reservado, mesmo quando as VMs não estão a ser executadas.
Tipos de Virtualização
Se tem curiosidade acerca do conceito de virtualização responsável por ajudar a criar uma máquina virtual, permita-me destacar todos os diferentes tipos dela e explicá-los brevemente.
Um hipervisor gere o hardware enquanto separa os recursos do sistema do ambiente virtual. Tecnicamente, é designado como um “Monitor de Máquina Virtual (VMM)”.
E o hipervisor é o software responsável por permitir que crie e execute máquinas virtuais.
Existem dois tipos de hipervisores, incluindo:
Hipervisor de Tipo 1: Este está diretamente ligado à máquina física para gerir os recursos para a VM. Um excelente exemplo é o KVM, que está integrado no Linux.
Hipervisor de Tipo 2: Este existe por cima de um sistema operativo como uma aplicação que lhe permite gerir recursos de VM e muito mais, como o VirtualBox, por exemplo.
Enquanto o hipervisor torna a virtualização possível, os tipos de virtualização disponíveis tornam a sua experiência sem complicações, facilitando as funcionalidades que obtém com uma VM.
Alguns dos tipos relevantes incluem:
Virtualização de Armazenamento: Isso ajuda a criar um disco virtual dividindo o espaço em disco disponível em pequenos segmentos reservados para serem usados por uma máquina virtual.
Virtualização de Rede: Permite que a ligação de rede física seja encaminhada através de redes virtuais (ou adaptadores) para as máquinas virtuais.
Virtualização de Desktop: Com esta tecnologia, pode implementar múltiplos ambientes de desktop virtuais em várias máquinas físicas ao mesmo tempo. A configuração e gestão de todos os desktops virtuais são possíveis a partir de um ponto central.
Vantagens das Máquinas Virtuais
Embora os casos de uso já lhe darem uma ideia dos benefícios que proporcionam, permita-me acrescentar algumas informações para que compreenda melhor:
- As Máquinas Virtuais permitem-lhe utilizar completamente os recursos de hardware sem interferir no sistema anfitrião.
- Com as VMs, tem a liberdade de testar ou experimentar qualquer coisa que deseje, seja uma aplicação muito antiga ou um software arriscado. Pode confiar na VM para realizar todas essas tarefas sem afetar o seu sistema anfitrião.
- Pode executar vários sistemas operativos a partir de um único local, sem precisar de lidar com a complexidade de dual-boot ou adicionar unidades físicas adicionais para utilizar outros sistemas operativos. Isso economiza custos, tempo e complicações de gestão.
- Com as VMs, pode clonar as suas configurações rapidamente, sem necessidade de hardware adicional.
Desvantagens das Máquinas Virtuais
Considerando que as Máquinas Virtuais são benéficas em muitos cenários, é importante estar ciente de algumas das potenciais preocupações associadas ao seu uso:
- Mesmo que as Máquinas Virtuais sejam conhecidas por utilizar recursos de forma eficiente, é possível sobrecarregar os recursos do sistema se não forem devidamente monitorizadas ou se múltiplas VMs forem executadas sem um planeamento adequado.
- As Máquinas Virtuais não conseguem igualar a experiência e o desempenho de um computador físico. Independentemente da potência do hardware hospedeiro, as VMs geralmente apresentam um desempenho inferior ao de um computador físico dedicado.
- Embora as Máquinas Virtuais sejam isoladas do sistema hospedeiro, é necessário ter cuidado com a partilha de ficheiros entre a VM e o sistema hospedeiro, uma vez que isso pode expor o sistema hospedeiro a ameaças de malware.
É importante considerar a possibilidade de utilizar o software de criação de máquinas virtuais com base nas necessidades e no contexto específico do seu projeto.
- VirtualBox: Se estiver a trabalhar num ambiente individual, pequeno ou de desenvolvimento, o VirtualBox é uma opção viável e fácil de usar. É adequado para testar e desenvolver aplicações, bem como para utilizadores que procuram uma solução de virtualização de baixo custo.
- Proxmox: Se estiver a gerir uma infraestrutura empresarial de médio a grande porte ou um data center, o Proxmox oferece uma solução robusta que combina virtualização e containers. É uma escolha sólida para organizações que necessitam de funcionalidades avançadas de gestão e escalabilidade.
- VMware: Se a sua prioridade for o desempenho, a confiabilidade e a gestão avançada, o VMware é uma escolha de referência. É amplamente utilizado em empresas e fornece uma ampla gama de soluções, desde máquinas virtuais a ambientes de nuvem privada.
Portanto, enquanto as Máquinas Virtuais oferecem inúmeras vantagens, é importante estar ciente dessas considerações para utilizar essa tecnologia de forma segura e eficaz.