Máquinas virtuais (VMs)

menu icon

Máquinas virtuais (VMs)

Introdução às máquinas virtuais (VMs), uma tecnologia para o desenvolvimento de ambientes de computação virtualizados e base da primeira geração de cloud computing.

O que é uma máquina virtual (VM)?

Uma máquina virtual é uma representação virtual, ou emulação, de um computador físico. Elas geralmente são chamadas de guests e a máquina física na qual são executadas é chamada de host.

A virtualização possibilita a criação de diversas máquinas virtuais, cada uma com seu próprio sistema operacional e seus próprios aplicativos, em uma única máquina física. Uma VM não pode interagir diretamente com um computador físico. Em vez disso, ela precisa de uma camada de software leve chamada hypervisor para ser coordenada com o hardware físico subjacente. O hypervisor aloca recursos de computação física, como processadores, memória e armazenamento, para cada VM. Ele mantém cada VM separada das outras para evitar interferências.

Embora essa tecnologia possa ter diversos nomes, incluindo servidor virtual, instância de servidor virtual (VSI) e servidor privado virtual (VPS), este artigo se referirá a ela simplesmente como máquinas virtuais.

Como a virtualização funciona

Quando um hypervisor é usado em um computador ou servidor físico (também conhecido como servidor bare metal), ele permite que o computador físico separe o sistema operacional e os aplicativos do hardware. Em seguida, ele pode ser dividido em diversas “máquinas virtuais“ independentes.

Cada uma dessas novas máquinas virtuais pode executar o próprio sistema operacional e os próprios aplicativos de forma independente, ainda compartilhando os recursos originais do servidor bare metal gerenciado pelo hypervisor. Esses recursos incluem a memória, a RAM, o armazenamento e assim por diante.

Veja o vídeo a seguir, que explica os conceitos básicos da virtualização (5:20), e confira o artigo "Cinco benefícios da virtualização":

O hypervisor atua de forma semelhante a um policial de trânsito, direcionando e alocando os recursos do bare metal para cada uma das diversas novas máquinas virtuais a fim de evitar interrupções.

Existem dois tipos primários de hypervisors.

Hypervisors do tipo 1 são executados diretamente no hardware físico (geralmente um servidor), ocupando o lugar do sistema operacional. Normalmente, um produto de software distinto é usado para criar e manipular VMs no hypervisor. Algumas ferramentas de gerenciamento, como o vSphere da VMware, permitem que você selecione um sistema operacional guest para a instalação na VM.

É possível usar uma VM como modelo, duplicando-a para a criação de outras. Dependendo de suas necessidades, é possível criar diversos modelos de VM para diferentes propósitos, como testes de software, bancos de dados de produção e ambientes de desenvolvimento.

Hypervisors do tipo 2 são executados como um aplicativo dentro de um sistema operacional de host e geralmente têm como destino plataformas de notebook ou área de trabalho de usuário único. Com um hypervisor do tipo 2, é possível criar manualmente uma VM e, em seguida, instalar um sistema operacional guest nela. É possível usar o hypervisor para alocar recursos físicos para a sua VM, configurando manualmente a quantia de núcleos do processador e a memória que pode ser usada. Dependendo dos recursos do hypervisor, também é possível configurar opções como a aceleração 3D para gráficos.

Para obter uma visão geral dos hypervisors, confira "Hypervisors: um guia completo".

Vantagens e benefícios das VMs

As VMs oferecem diversos benefícios quando comparadas ao hardware físico tradicional:

  • Utilização de recursos e ROI melhorado: como diversas VMs são executadas em um único computador físico, os clientes não precisarão comprar um novo servidor sempre que desejarem executar outro sistema operacional e poderão obter mais retorno de cada peça de hardware já adquirida.
  • Escalabilidade: com o cloud computing é fácil implementar diversas cópias da mesma máquina virtual para melhor atender aos aumentos de carga.
  • Portabilidade: as VMs podem ser realocadas entre os computadores físicos em uma rede de acordo com a necessidade. Isso possibilita a alocação de cargas de trabalho em servidores com capacidade de computação sobressalente. As VMs podem ser movidas até mesmo entre ambientes locais e em cloud, o que as torna úteis para cenários de cloud híbrida, nos quais os recursos de computação são compartilhados entre seu data center e um provedor de serviços em cloud.
  • Flexibilidade: criar uma VM é mais rápido e fácil do que instalar um sistema operacional em um servidor físico porque é possível clonar uma VM com o sistema operacional já instalado. Desenvolvedores e testadores de software podem criar novos ambientes sob demanda para lidar com novas tarefas à medida que elas surgem.
  • Segurança: as VMs melhoram a segurança de diversas maneiras quando comparadas a sistemas operacionais em execução diretamente no hardware. Uma VM é um arquivo que pode ser varrido por um programa externo em busca de softwares maliciosos. É possível criar uma captura instantânea inteira da VM a qualquer momento e, em seguida, restaurá-la para esse estado caso ela seja infectada por um malware, recuperando-a de forma rápida e eficaz. A criação rápida e fácil de VMs também permite excluir completamente uma VM comprometida e, em seguida, recriá-la rapidamente, acelerando a recuperação de infecções por malware.

Casos de uso de VMs

As VMs podem ser usadas de diversas formas por administradores de TI corporativos e usuários. Veja a seguir algumas opções:

  • Cloud computing: nos últimos 10 anos, as VMs têm sido a unidade fundamental para cloud computing, permitindo que dezenas de diferentes tipos de aplicativos e cargas de trabalho sejam executados e dimensionados com sucesso.
  • Suporte para DevOps: as VMs são uma ótima maneira de oferecer suporte a desenvolvedores corporativos, que podem definir modelos de VM com as configurações para seus processos de desenvolvimento e teste de software. Eles podem criar VMs para tarefas específicas, como testes de software estático, incluindo essas etapas em um fluxo de trabalho de desenvolvimento automatizado. Isso tudo ajuda a simplificar a Cadeia de ferramentas de DevOps.
  • Testar um novo sistema operacional: uma VM permite a realização do test drive de um novo sistema operacional na área de trabalho sem impacto no sistema operacional primário.
  • Investigar malwares: as VMs são úteis para pesquisadores de malware, que frequentemente precisam de máquinas novas para testar programas maliciosos.
  • Executar softwares incompatíveis: alguns usuários podem preferir um sistema operacional, mas precisar usar um programa disponível somente em outro. Um bom exemplo é o software Dragon com ampla variedade de ditados de voz. Seu fornecedor, Nuance, descontinuou a versão macOS do produto. No entanto, a execução de um hypervisor focado em área de trabalho, como o VMware Fusion ou o Parallels, permite a execução do Windows em uma VM para acesso a essa versão do software.
  • Navegar de forma segura: usar uma máquina virtual para a navegação possibilita visitar sites sem se preocupar com infecções. É possível tirar uma captura instantânea de sua máquina e, em seguida, recuperá-la após cada sessão de navegação. Um usuário pode realizar essa configuração por conta própria ao usar um hypervisor de área de trabalho do tipo 2. Como alternativa, um administrador pode fornecer uma área de trabalho virtual temporária localizada no servidor.

Tipos de VMs

Esta seção aborda alguns dos diferentes tipos de máquinas virtuais:

  • Máquinas virtuais Windows
  • Máquinas virtuais Android
  • Máquinas virtuais Mac
  • Máquinas virtuais iOS
  • Máquinas virtuais Java
  • Máquinas virtuais Python
  • Máquinas virtuais Linux
  • Máquinas virtuais VMware
  • Máquinas virtuais Ubuntu

Máquinas virtuais Windows

A maioria dos hypervisors oferece suporte a VMs em execução no sistema operacional Windows como guest. O hypervisor Hyper-V da Microsoft é fornecido como parte do sistema operacional Windows. Quando instalado, ele cria uma partição pai que contém ele mesmo e o sistema operacional Windows primário e ambos obtêm acesso privilegiado ao hardware. Outros sistemas operacionais, incluindo guests do Windows, são executados em partições filhas que se comunicam com o hardware por meio da partição pai.

Máquinas virtuais Android

O sistema operacional Android de software livre do Google é comum em dispositivos móveis e em dispositivos domésticos conectados, como aqueles de entretenimento doméstico. O sistema operacional Android é executado somente na arquitetura de processador ARM comum a esses dispositivos, mas entusiastas e jogadores do Android ou desenvolvedores de software podem querer executá-lo em PCs.

Isso é problemático porque os PCs são executados em uma arquitetura de processador x86 completamente diferente e um hypervisor de virtualização de hardware transmite instruções somente entre a VM e a CPU. Ele não as traduz para processadores com diferentes conjuntos de instruções. Há diversos projetos para lidar com esse problema.

Alguns, como o Shashlik ou o Genymotion, usam um emulador que recria a arquitetura ARM no software. Uma alternativa, o projeto Android-x86, move o Android para a arquitetura x86. Para executá-lo, deve-se instalar o programa Android-x86 como uma máquina virtual usando o hypervisor de tipo 2 VirtualBox. Outra alternativa, o Anbox, executa o sistema operacional Android no kernel de um sistema operacional Linux de host.

Máquinas virtuais Mac

A Apple permite que seu sistema macOS seja executado apenas em hardwares Apple, proibindo sua execução em hardwares de outras empresas como uma VM ou, de outra forma, sob o acordo de licença de usuário final. É possível usar hypervisors de tipo 2 no hardware Mac para criar VMs com um guest do macOS.

Máquinas virtuais iOS

Atualmente, não é possível executar o iOS em uma VM porque a Apple controla rigorosamente seu sistema operacional iOS e não permite que ele seja executado em qualquer outro dispositivo que não seja destinado a ele.

O mais próximo possível de uma VM iOS é o simulador de iPhone que acompanha o ambiente de desenvolvimento integrado Xcode, que simula todo o sistema do iPhone no software.

Máquinas virtuais Java

A plataforma Java é um ambiente de execução para programas escritos na linguagem de desenvolvimento de software Java. A promessa do Java era a funcionalidade para "gravar uma única vez e executar em qualquer lugar". Isso significava que qualquer programa Java poderia ser executado em qualquer hardware que executasse a plataforma Java. Para que isso seja possível, a plataforma Java inclui uma Java virtual machine (JVM).

Os programas Java contêm bytecode, que são instruções destinadas à JVM. A JVM compila esse bytecode no código da máquina, que é a linguagem de nível mais baixo usada pelo computador host. A JVM na plataforma Java de uma plataforma de computação criará um conjunto diferente de instruções de código de máquina para a JVM de outra, com base no código de máquina esperado pelo processador.

A JVM, portanto, não executa um sistema operacional inteiro e não usa um hypervisor, como outras VMs. Em vez disso, ela converte programas de software de nível de aplicativo para a execução em um hardware específico.

Para obter informações adicionais sobre Java, confira "Java: um guia completo".

Máquinas virtuais Python

Como a JVM, a VM Python não é executada em um hypervisor e não contém um sistema operacional guest. Ela é uma ferramenta que permite que programas escritos na linguagem de programação Python sejam executados em uma variedade de CPUs.

De forma semelhante ao Java, o Python converte seus programas em um formato intermediário chamado bytecode e os armazena em um arquivo pronto para execução. Quando o programa é executado, a VM Python converte o bytecode em um código de máquina para a execução rápida.

Máquinas virtuais Linux

O Linux é um sistema operacional guest comum usado em muitas VMs. Ele também é um sistema operacional de host comum usado para executar VMs e tem até mesmo o próprio hypervisor, chamado de KVM (máquina virtual com base em kernel). O kernel do Linux convencional inclui a KVM desde 2007. Embora seja um projeto de software livre, a Red Hat agora é proprietária da empresa original que desenvolveu a KVM.

Máquinas virtuais VMware

A VMware foi um dos primeiros fornecedores de software de virtualização e agora é um fornecedor popular de hypervisors dos tipos 1 e 2 e de softwares de VM para clientes corporativos.

"VMware: um guia completo" fornece uma visão geral abrangente sobre o VMware.

Máquinas virtuais Ubuntu

O Ubuntu é uma distribuição Linux produzida pela Canonical. Ele está disponível em versões de área de trabalho e de servidor, que podem ser instaladas como uma VM. O Ubuntu pode ser implementado como um sistema operacional guest no Microsoft Hyper-V. Ele fornece uma versão otimizada da área de trabalho Ubuntu que funciona adequadamente no modo de sessão aprimorada do Hyper-V, fornecendo uma integração sólida entre o host Windows e a VM Ubuntu. Ele inclui suporte para a integração de área de transferência, o redimensionamento dinâmico de área de trabalho, as pastas compartilhadas e a movimentação de mouse entre as áreas de trabalho do host e guest.

Diversos locatários vs. único locatário

Em cloud computing, as máquinas virtuais são geralmente fornecidas em variações de hospedagem única e hospedagem múltipla.

Máquinas virtuais públicas ou de hospedagem múltipla são aquelas nas quais diversos usuários estão compartilhando uma infraestrutura física comum. Essa é a abordagem mais econômica e escalável para provisionar máquinas virtuais, mas ela carece de algumas das características de isolamento preferenciais de empresas com mandatos rígidos de segurança ou conformidade.

Os hosts dedicados e as instâncias dedicadas são dois modelos para máquinas virtuais de hospedagem única.

Um host dedicado envolve alugar uma máquina física inteira e manter acesso e controle sustentados sobre essa máquina, seu hardware e qualquer software instalado nela. Esse modelo fornece a quantia máxima de flexibilidade e transparência de hardware, além de controle e posicionamento de carga de trabalho e algumas vantagens para determinados softwares de licença de uso pessoal.

Uma instância dedicada oferece o mesmo isolamento de hospedagem única e o mesmo controle sobre o posicionamento da carga de trabalho, mas não é acoplada a uma máquina física específica. Portanto, por exemplo, se uma instância dedicada for reinicializada, ela poderá acabar em uma nova máquina física, dedicada à conta individual, mas uma nova máquina e possivelmente em um local físico diferente.

Modelos de precificação para máquinas virtuais

Os modelos de precificação mais comuns para máquinas virtuais na cloud são o pré-pago (por hora ou segundo), as instâncias temporárias/pontuais, as instâncias reservadas e os hosts dedicados.

  • Pré-pago: No modelo pré-pago, não há custos iniciais para a máquina virtual e os usuários simplesmente pagam pelo que usam, normalmente sendo faturados por hora ou segundo, de acordo com o tipo de provedor e instância.
  • Instâncias temporárias/momentâneas: As instâncias temporárias e momentâneas, o modelo de menor custo de VMs, aproveitam o excesso de capacidade de um provedor, mas o provedor pode recuperar essa capacidade a qualquer momento. Elas geralmente são úteis para aplicativos que não precisam estar sempre ativos ou que são proibitivamente caros em qualquer outro modelo.
  • Instâncias reservadas: Diferentemente dos modelos pré-pagos, as instâncias reservadas são fornecidas com um compromisso de prazo explícito, geralmente de um a três anos, mas também são acompanhadas de descontos consideráveis.
  • Hosts dedicados: No caso de hosts dedicados, um usuário normalmente assume o custo do servidor físico total e é faturado de acordo com quaisquer incrementos sob os quais o provedor ofereça servidores dedicados, geralmente por hora ou de forma mensal.

Máquinas virtuais vs. servidores bare metal

A escolha de uma máquina virtual em detrimento de uma física, também conhecida como servidor bare metal, tem menos a ver com os recursos concorrentes e mais com o conhecimento do é necessário e quando é necessário.

Servidores bare metal significam hardware bruto, potência e isolamento. Eles são servidores físicos de hospedagem única completamente nulos quanto aos ciclos de hypervisor (software de virtualização) e totalmente dedicados a um único cliente, ou seja, você.

As cargas de trabalho que priorizam altamente o desempenho e a reclusão, como aplicativos com uso intensivo de dados e mandatos de conformidade regulamentar, geralmente são mais adequadas para servidores bare metal, especialmente quando implementadas por períodos prolongados.

Os aplicativos de e-commerce, ERP, CRM, SCM e serviços financeiros são somente algumas das cargas de trabalho ideais para servidores bare metal.

Então, quando colocar um hypervisor em cima do hardware de bare metal para criar uma máquina virtual? Quando suas cargas de trabalho demandarem grande flexibilidade e escalabilidade.

As máquinas virtuais aumentam facilmente a utilização e a capacidade do servidor, sendo ideais para a movimentação de dados de uma máquina virtual para outra, o redimensionamento de conjuntos de dados e a divisão de cargas de trabalho dinâmicas.

Máquinas virtuais vs. contêineres

A maneira mais fácil de entender um contêiner é entender como ele difere de uma máquina virtual (VM) tradicional. Na virtualização tradicional, seja no local ou na cloud, um hipervisor é utilizado para virtualizar o hardware físico. Cada VM contém um sistema operacional guest, uma cópia virtual do hardware que ele precisa para ser executado e um aplicativo com suas bibliotecas e dependências associadas.

Em vez de virtualizar o hardware subjacente, os contêineres virtualizam o sistema operacional (geralmente o Linux) de modo que cada contêiner individual contenha somente o aplicativo e suas bibliotecas e dependências. A ausência do sistema operacional guest é o motivo pelo qual os contêineres são tão leves e, portanto, rápidos e portáveis.

Os contêineres e o mecanismo de orquestração que os gerencia, o Kubernetes, são adequados para as arquiteturas nativas de cloud e de microsserviços modernas. Embora os contêineres sejam mais comumente associados a serviços stateless, também podem ser adequados para serviços stateful.

Os contêineres também estão se tornando mais comuns em cenários de cloud híbrida porque podem ser executados de maneira consistente em notebooks, na cloud e na TI tradicional local.

A postagem do blog "Contêineres vs. VMs: qual é a diferença?" explica mais.

No vídeo a seguir, Sai Vennam detalha os conceitos básicos da conteinerização e fala sobre como ela é comparada ao uso de VMs (8:09):

Como escolher um provedor de máquina virtual

A seleção de uma máquina virtual e de um provedor de cloud não precisa ser um desafio, desde que você saiba o que procurar. Evidentemente, a máquina virtual precisa atender às suas necessidades de carga de trabalho e ao orçamento de seus negócios, mas outros fatores desempenham funções importantes entre você e seu ambiente de virtualização. Veja abaixo dez coisas a serem consideradas ao selecionar um provedor de serviços de máquina virtual.

  • Suporte confiável: certifique-se de que haja suporte ao cliente 24/7 por telefone, e-mail e chat. Você deseja que uma pessoa real do outro lado da linha o ajude em situações críticas de TI. Também é importante observar quais provedores de cloud oferecem serviços adicionais para um suporte mais prático.
  • Opções gerenciadas: o provedor de cloud oferece soluções gerenciadas e não gerenciadas? Se você não conhece bem a tecnologia de virtualização, considere um provedor que seja responsável pela configuração, manutenção e monitoramento contínuo do desempenho.
  • Integração de software: o ambiente de sua máquina virtual funcionará bem com outros ambientes? Sistemas operacionais, softwares de terceiros, aplicativos e tecnologias de software livre ajudam você a fornecer mais soluções para seus negócios. Prefira um fornecedor de máquina virtual com fortes parcerias com os fornecedores de software mais usados do mercado.Nota: Não se prenda a um único fornecedor.
  • Rede e infraestrutura de alta qualidade: quão atualizada está a infraestrutura na qual a sua nova máquina virtual será executada? Isso inclui servidores bare metal confiáveis, data centers modernos e o backbone de rede. Um provedor de cloud deve ser capaz de cumprir sua parte do negócio com hardwares de ponta e tecnologias de rede de alta velocidade.
  • Localização, localização, localização: quanto mais próximos os dados estiverem de seus usuários, menos problemas você terá com relação a latência, segurança e entrega pontual de serviços. Uma boa rede global de data centers dispersos e locais POP é importante para que os dados possam ser dados onde e quando for necessário.
  • Backup e recuperação: qual plano seu provedor de cloud tem para manter suas máquinas virtuais em funcionamento diante de eventos inesperados? Ele também fornece opções adicionais de backup e redundância para o seu ambiente virtualizado? A operação contínua é algo que deve ser levado a sério.
  • Facilidade de escalabilidade: quão rápido e fácil será acelerar, desacelerar, reservar, pausar e atualizar sua máquina virtual? A palavra que você mais deseja ouvir quando se trata de escalabilidade de máquina virtual é "sob demanda".
  • Configurações de CPU variadas: quanto mais configurações, melhor. Nem toda configuração de máquina virtual se adéqua a todas as cargas de trabalho durante cada estação de uso. Certifique-se de procurar um fornecedor de máquina virtual que ofereça pacotes de configuração variados para requisitos de hospedagem única e múltipla.
  • Camadas de segurança: pergunte ao provedor sobre elas e, em seguida, pergunte novamente sobre elas. Seus dados de negócios são a moeda mais importante, especialmente ao lidar com informações confidenciais do cliente. Linhas de rede privada, opções de data centers federais, recursos de criptografia integrados e cumprimento dos padrões de conformidade regulamentar são essenciais para proteger seu ativo mais valioso.
  • Suporte de migração contínuo: suas prioridades de TI sempre evoluirão. Disso, todos sabemos. Qualquer fornecedor de máquina virtual deve ser capaz de ajudá-lo a alternar entre ambientes híbridos, locais e externos. Procure opções de ingestão de dados completa, "over-the-network" e migração orientada por aplicativo.

Máquinas virtuais e a IBM Cloud

A IBM Cloud oferece a oportunidade de configurar e executar suas próprias VMs com base em diferentes opções técnicas e de precificação. É possível selecionar perfis técnicos para VMs com base nos recursos necessários de capacidade de computação, memória, armazenamento local e GPU, adaptando o sistema à sua carga de trabalho específica. Também é possível gerenciar VMs VMware usando o IBM Cloud for VMware Solutions.

É possível escolher entre nós públicos ou privados para atender aos seus requisitos de segurança e conformidade. Um serviço privado de hospedagem única pode residir em um host dedicado de sua escolha dentre os mais de 60 data centers da IBM distribuídos por 19 países ao redor do mundo.

Escolha entre diversas opções de implementação para atender às suas necessidades de precificação. Uma instância de VM pública reservada por um tempo definido com antecedência é mais barata do que um sistema não reservado. Como alternativa, é possível escolher uma VM com base na precificação de mercado momentânea para lidar com cargas de trabalho temporárias.

O IBM Cloud também possibilita a combinação e a correspondência de recursos de servidor virtual e bare metal para a adequação aos seus requisitos de carga de trabalho.

Para saber mais, visite a página do IBM Cloud e inscreva-se para obter um IBMid.