Início
topics
Virtual Machines
Publicado em: 3 de março de 2024
Colaboradores: Stephanie Susnjara, Ian Smalley
Uma Virtual Machine (VM) é uma representação ou emulação virtual de um computador físico que usa software em vez de hardware para executar programas e implementar aplicações.
Ao usar os recursos de uma única máquina física, como memória, CPU, interface de rede e armazenamento, as VMs permitem que as empresas executem várias máquinas virtualmente com diferentes sistemas operacionais em um único dispositivo.
As VMs são normalmente chamadas de convidadas, com uma ou mais máquinas "convidadas" sendo executadas em uma máquina física chamada de máquina "hospedeira". A tecnologia de VM inclui servidores virtuais, instâncias de servidor virtual (VSIs) e servidores virtuais privados (VPSs).
Em um relatório Global Market Insights (GMI) (link externo ao site ibm.com), o tamanho do mercado de máquinas virtuais ultrapassou US$ 9,5 bilhões em 2023. O GMI projeta que este mercado se expandirá a uma taxa composta de crescimento anual (CAGR) de cerca de 12% entre 2024 e 2032, impulsionada pela adoção constante da computação em nuvem. À medida que as empresas migram para a nuvem devido à sua escalabilidade, flexibilidade e eficiência de custos, os provedores de nuvem continuam integrando máquinas virtuais e outras tecnologias críticas (por exemplo, contêineres) para fornecer uma infraestrutura de TI consistente.
Saiba como o desktop como serviço (DaaS) permite as empresas atingirem o mesmo nível de performance e segurança ao implementar aplicações no local.
As VMs funcionam usando a virtualização, um processo de criação de versões virtuais ou baseadas em software de recursos (computador, armazenamento, rede, servidores) ou aplicações.
A virtualização permite o uso mais eficiente do hardware físico do computador e é fundamental para a computação em nuvem.
A virtualização é possível com um hipervisor, também conhecido como monitor de máquina virtual (VMM). Essa camada de software leve gerencia as máquinas virtuais à medida que elas são executadas lado a lado.
O nascimento da virtualização remonta a 1964, quando a IBM projetou e apresentou o CP-40, um projeto experimental de pesquisa de compartilhamento de tempo para o IBM System/360. O CP-40, que mais tarde evoluiu para o CP-67 e depois para o Unix, forneceu um hardware de computador capaz de suportar vários usuários simultâneos e abriu caminho para as máquinas virtuais.
Em 2 de agosto de 1972, a IBM lançou o que muitos consideram a primeira máquina virtual, o VM/370 e o primeiro mainframe System/370 compatível com memória virtual.
Em 1998, o VMware (link externo a ibm.com) desenvolveu o sistema operacional x86, que permitiu que uma única máquina fosse segmentada em várias máquinas virtuais, cada uma com seu próprio sistema operacional. Em 1999, a empresa lançou o VM Workstation 1.0, o primeiro produto comercial que permitia aos usuários executar vários sistemas operacionais como máquinas virtuais em um único PC.
Atualmente, a virtualização é uma prática padrão para a infraestrutura de TI de nível empresarial e uma força motriz na economia da computação em nuvem, permitindo que as empresas aumentem a utilização da capacidade e reduzam os custos. Toda a infraestrutura de TI pode ser virtualizada, incluindo ambientes de desktop, sistemas operacionais, hardware de armazenamento, data centers e muito mais.
A virtualização depende da tecnologia do hipervisor. Esta camada de software colocada em um computador físico ou servidor (também conhecido como servidor bare metal) permite que o computador físico separe seu sistema operacional e aplicações do hardware. Essas máquinas virtuais podem executar seus sistemas operacionais e aplicações de forma independente, enquanto ainda compartilham os recursos originais (memória, RAM, armazenamento e assim por diante) do servidor, que o hipervisor gerencia. Em essência, o hipervisor atua como um guarda de trânsito, alocando recursos para máquinas virtuais e garantindo que elas não atrapalhem umas às outras.
Existem dois tipos principais de hipervisores:
Além da classificação de acordo com o gerenciamento do hipervisor, as máquinas virtuais se enquadram em duas categorias principais: máquinas virtuais de sistema (também chamadas de máquinas de virtualização completa) e máquinas virtuais de processo.
As VMs do sistema permitem o compartilhamento de recursos de máquinas físicas subjacentes entre diferentes máquinas virtuais, cada uma executando seu próprio sistema operacional. Por outro lado, as máquinas virtuais de processo (também chamadas de máquinas virtuais de aplicações) executam uma aplicação dentro de um sistema operacional e oferecem suporte a um único processo. As máquinas virtuais Java, que executam programas compilados em Java, são exemplos de VMs de processo.
As VMs oferecem inúmeras vantagens em relação ao hardware físico tradicional.
Como várias VMs são executadas em um único computador físico, os clientes não precisam comprar um novo servidor toda vez que quiserem executar outro sistema operacional. Portanto, eles podem obter mais retorno de cada hardware que já possuem, reduzindo significativamente os custos de TI relacionados a despesas operacionais e de capital.
Como as VMs são baseadas em software, é fácil criar novas, o que torna mais rápido o escalonamento para atender às novas demandas de carga de trabalho em comparação com o provisionamento de novos ambientes baseados em hardware.
As empresas podem realocar as VMs conforme necessário entre os computadores físicos em uma rede. Esse recurso possibilita alocar cargas de trabalho em servidores com capacidade de computação sobressalente. As VMs podem até mesmo migrar entre ambientes locais e de nuvem, tornando-as úteis para cenários de nuvem híbrida em que você compartilha recursos de computação entre seu data center e um provedor de serviços de nuvem.
Criar uma VM é mais rápido e fácil do que instalar um sistema operacional em um servidor físico, pois você pode 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 surgirem.
As VMs melhoram a segurança de várias maneiras em comparação com os sistemas operacionais, que são executados diretamente no hardware. Usando um programa externo, você pode escanear um arquivo de VM em busca de um software malicioso. Você pode criar um instantâneo da máquina virtual a qualquer momento e restaurá-la para esse estado se ela for infectada por um malware, fazendo com que a VM volte no tempo. A criação rápida e fácil de VMs também torna possível excluir e recriar rapidamente uma VM comprometida, acelerando a recuperação de infecções por malware.
Com menos servidores físicos necessários para executar cargas de trabalho e aplicações, você pode reduzir drasticamente o consumo de energia para melhorar seu impacto ambiental.
Embora as VMs tenham muitos benefícios, elas têm algumas desvantagens a serem consideradas.
As VMs dependem dos recursos de hardware disponibilizados a elas no computador convidado. Recursos limitados podem levar à redução do desempenho e à ineficiência.
As máquinas virtuais podem ser complexas de configurar e de gerenciar, exigindo equipes com conhecimento técnico e experiência para configurá-las e mantê-las.
As VMs representam o risco de ponto único de falha por dependerem de um computador físico.
As VMs têm uma ampla variedade de usos para administradores e usuários de TI corporativos, incluindo os seguintes:
A VMware é a primeira empresa a comercializar com sucesso a virtualização da arquitetura de microprocessador x86, líder no mercado de virtualização (link externo ao site ibm.com). A VMware fornece o hipervisor do tipo 1 e tipo 2 e software de VM para clientes corporativos.
A maioria dos hipervisores oferece suporte a VMs executando o sistema operacional Windows como convidado. O hipervisor Hyper-V da Microsoft faz parte do sistema operacional Windows. Quando instalado, ele cria uma partição principal que contém a si mesmo e o sistema operacional Windows principal, cada um com acesso privilegiado ao hardware. Outros sistemas operacionais, incluindo os convidados do Windows, são executados em partições secundárias e se comunicam com o hardware por meio da partição principal.
O sistema operacional Android de código aberto do Google é comum em dispositivos móveis e dispositivos domésticos conectados.
O sistema operacional Android é executado apenas na arquitetura de processador ARM típica desses dispositivos, mas entusiastas, jogadores de Android ou desenvolvedores de software podem querer executá-lo em PCs. Essa situação pode ser problemática porque os PCs são executados em uma arquitetura de processador x86 totalmente diferente e um hipervisor de virtualização de hardware só transmite instruções entre a VM e a CPU. Ele não as traduz para processadores com conjuntos variados de instruções.
Vários projetos, como o Shashlik ou o Genymotion, podem lidar com esse problema usando um emulador que recria a arquitetura ARM no software. O projeto Android-x86, uma alternativa, transporta o Android para a arquitetura x86. Para executá-lo, você deve instalar o programa Android-x86 como uma máquina virtual que usa o hipervisor VirtualBox do tipo 2. Outra alternativa, o Anbox, executa o sistema operacional Android no kernel de um sistema operacional Linux hospedeiro.
A Apple permite que seu sistema macOS seja executado somente em um hardware da Apple. Isso significa que você não pode executá-lo em um hardware que não seja da Apple como uma VM ou sob seu contrato de licença de usuário final. No entanto, você pode usar hipervisores do tipo 2 em um hardware Mac para criar VMs com um convidado no macOS.
Atualmente, é impossível executar o iOS em uma VM porque a Apple controla rigorosamente seu sistema operacional iOS e só permite que ele seja executado em dispositivos iOS.
O que mais se aproxima de uma VM do iOS é o simulador do iPhone que vem com o ambiente de desenvolvimento integrado Xcode, que simula todo o sistema do iPhone em um software.
A plataforma Java é um ambiente de execução para programas que são escritos na linguagem de desenvolvimento de software Java. A promessa do Java "escreva uma vez, execute em qualquer lugar" significa que qualquer programa Java pode ser executado em qualquer plataforma Java, e é por isso que a plataforma Java incluiu uma máquina virtual Java (JVM).
Os programas Java contêm bytecode, que é uma forma de instrução destinada à JVM. A JVM compila esse bytecode para código de máquina, que é a linguagem de nível mais baixo usada pelo computador hospedeiro. A JVM na plataforma Java de uma plataforma de computação cria 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 que o processador espera.
Portanto, a JVM não executa um sistema operacional inteiro e não usa um hipervisor como outras VMs fazem. Em vez disso, ele traduz programas de software em nível de aplicação para serem executados em um hardware específico.
Como a JVM, a VM do Python não é executada em um hipervisor nem contém um sistema operacional convidado. É uma ferramenta que permite que programas escritos em Python sejam executados em várias CPUs.
Semelhante ao Java, o Python traduz 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 traduz o bytecode em código de máquina para uma execução rápida.
O Linux é um sistema operacional convidado típico usado em muitas VMs. É também um sistema operacional hospedeiro típico usado para executar VMs e até tem seu próprio hipervisor, a máquina virtual baseada em kernel (KVM). Embora seja um projeto de código aberto, a Red Hat é proprietária da KVM.
Ubuntu é uma distribuição Linux produzida pela Canonical. Está disponível nas versões desktop e servidor, que você pode instalar como uma VM. Os usuários podem implementar o Ubuntu como sistema operacional convidado no Microsoft Hyper-V. Ele fornece uma versão otimizada do Ubuntu Desktop que funciona bem no modo de sessão aprimorada do Hyper-V, proporcionando uma forte integração entre o hospedeiro Windows e a VM Ubuntu. Ele inclui suporte para integração da área de transferência, redimensionamento dinâmico da área de trabalho, pastas compartilhadas e movimentação do mouse entre as áreas de trabalho hospedeira e convidada.
As máquinas virtuais públicas ou multilocatário são máquinas virtuais com vários usuários que compartilham uma infraestrutura física comum. Esse modelo é a abordagem mais econômica e escalável para o provisionamento de máquinas virtuais. No entanto, os ambientes multilocatários não têm algumas características de isolamento que as organizações com requisitos rigorosos de segurança ou conformidade podem preferir.
Dois modelos para as máquinas virtuais de locatário único são os hospedeiros dedicados e as instâncias dedicadas.
Um modelo de pagamento conforme o uso não tem custos iniciais para a máquina virtual e os usuários simplesmente pagam pelo que usam. Os clientes pagam por hora ou segundo, dependendo do provedor e do tipo de instância.
O modelo de VMs de menor custo, instâncias temporárias ou pontuais aproveita o excesso de capacidade de um provedor, mas pode ser recuperado pelo provedor a qualquer momento. As instâncias temporárias/pontuais são úteis para as aplicações que não precisam estar sempre ativas ou que são proibitivamente caras em qualquer outro modelo.
Diferentemente dos modelos de pagamento conforme o uso, os casos reservados vêm com um compromisso explícito de prazo, geralmente entre um e três anos, mas também incluem grandes descontos.
Normalmente, o usuário arca com o custo total do servidor físico e é cobrado de acordo com os intervalos definidos pelo provedor para servidores dedicados, geralmente por hora ou por mês.
Os servidores bare metal são sinônimos de hardware bruto, potência e isolamento. Eles são servidores físicos de locatário único, completamente desprovidos de ciclos de hipervisor (software de virtualização) e totalmente dedicados a um único cliente: você.
Cargas de trabalho que priorizam desempenho e isolamento, como aplicações com computação intensiva de dados e mandatos de conformidade regulatória, normalmente são mais adequadas para servidores bare metal, especialmente quando implementadas por períodos prolongados.
Programas de recursos empresariais (ERP), gerenciamento de relacionamento com o cliente (CRM), gerenciamento da cadeia de suprimentos (SCM), aplicações de comércio eletrônico e serviços financeiros são apenas algumas das cargas de trabalho ideais para servidores bare metal.
Por outro lado, quando suas cargas de trabalho exigem o máximo de flexibilidade e escalabilidade, é melhor colocar um hipervisor no hardware bare metal para criar uma máquina virtual. As máquinas virtuais aumentam a capacidade e a utilização do servidor. Eles são ideais para migrar dados de uma VM para outra, redimensionar conjuntos de dados e dividir cargas de trabalho dinâmicas.
A maneira mais fácil de entender um contêiner é saber como ele difere de uma VM (máquina virtual) tradicional. Na virtualização tradicional, seja no local ou na nuvem, um hipervisor ajuda a virtualizar o hardware físico. Cada VM contém um sistema operacional convidado, uma cópia virtual do hardware do qual o sistema operacional precisa para ser executado e uma aplicação e suas bibliotecas e dependências associadas.
Em vez de virtualizar o hardware subjacente, os contêineres virtualizam o sistema operacional (normalmente Linux). Cada contêiner contém apenas a aplicação e suas bibliotecas e dependências. A ausência do sistema operacional convidado é o motivo pelo qual os contêineres são tão leves, rápidos e portáteis.
Contêineres e Kubernetes, a plataforma de orquestração de contêineres de código aberto que os gerencia, tornaram-se as unidades padrão das arquiteturas modernas nativas da nuvem e de microsserviços. Embora os contêineres sejam mais comumente associados a serviços sem estado, as organizações também podem usá-los para serviços com estado. Os contêineres são padrão nos cenários de nuvem híbrida porque podem ser executados de forma consistente na nuvem pública, nuvem privada e configurações locais tradicionais. Hoje, uma organização pode executar a aplicação na sua nuvem privada, mas amanhã poderá ser necessário implementá-la em uma nuvem pública de um provedor diferente. A conteinerização de aplicações oferece às equipes a flexibilidade necessária para lidar com os diversos ambientes de software da TI moderna.
É importante observar que as empresas podem coexistir com contêineres e máquinas virtuais. Por exemplo, é comum executar contêineres em VMs, já que muitas empresas têm uma infraestrutura baseada em VM.
Uma empresa pode escolher um contêiner para executar uma aplicação e ter uma máquina virtual para fornecer a infraestrutura subjacente. Esse método combina a portabilidade e a velocidade dos contêineres com a segurança das máquinas virtuais. Em outro cenário, uma instituição financeira pode usar VMs para seus sistemas de banco de dados, garantindo uma maior segurança com isolamento de recursos e usar contêineres para aplicações front-end, como aplicativos móveis voltados para o cliente.
A publicação do blog "Contêineres versus VMs: qual é a diferença?" explica melhor.
O vídeo a seguir detalha os fundamentos da conteinerização e como ela se compara ao uso de VMs:
A seleção de uma máquina virtual e de um provedor de nuvem começa com a análise de suas necessidades de carga de trabalho e de orçamento, além de outros fatores críticos. Veja abaixo 10 coisas a serem consideradas ao selecionar um provedor de serviços de máquina virtual.
Máquinas virtuais altamente escaláveis, de locatário único e de vários locatários, que você pode iniciar rapidamente para obter o máximo de isolamento e controle da rede.
O IBM Power Virtual Server é uma família de servidores IBM Power virtuais configuráveis multilocatários com acesso aos serviços IBM Cloud. Migre e gerencie cargas de trabalho sem dificuldades em ambientes de nuvem e locais.
IBM z/VM é um sistema operacional com tecnologia de virtualização e hipervisor escalonável e rica em segurança, projetada para executar servidores convidados como Linux , z/OS e máquinas virtuais z/TPF, bem como Red Hat OpenShift nos servidores IBM Z e LinuxONE.
A computação em nuvem transforma a infraestrutura de TI em um utilitário, permitindo que você "se conecte" a recursos e aplicações de computação pela internet sem instalá-los e mantê-los no local.
A nuvem híbrida integra serviços de nuvem pública, serviços de nuvem privada e infraestrutura local em um único ambiente de computação distribuída.
O DevOps acelera a entrega de software de maior qualidade, combinando e automatizando o trabalho das equipes de desenvolvimento de software e operações de TI.
Microsserviços, ou arquitetura de microsserviços, é uma abordagem de arquitetura nativa da nuvem na qual uma única aplicação é composta por muitos componentes ou serviços menores vagamente acoplados e implementáveis de forma independente.
Contêineres são unidades executáveis de software nas quais o código da aplicação é empacotado junto com suas bibliotecas e dependências de formas comuns, para que o código possa ser executado em qualquer lugar, seja no desktop, na TI tradicional ou na nuvem.
A virtualização é um processo que permite o uso mais eficiente do hardware do computador físico e é a base da computação em nuvem.