Máquina Virtual

Máquina virtual (ou Virtual Machine, VM) é o nome dado a uma máquina implementada através de software e que executa programas como um computador real, só que ela não existe fisicamente, como se fosse um computador dentro de outro. Fazendo um paralelo com o filme Matrix, é como se a máquina virtual um dia descobrisse que ela é apenas um programa rodando em uma máquina real, a matrix.

Tela de com o software de virtualização VirtualBox rodando DOS + Windows 3.11 em uma máquina física rodando o sistema operacional Debian 7 (Wheezy).

Tela de com o software de virtualização VirtualBox rodando DOS + Windows 3.11 em uma máquina física rodando o sistema operacional Debian 7 (Wheezy).

O termo máquina virtual (ou emulador) foi descrito na década de 1960, empregue nos mainframes da IBM, utilizando um termo de sistema operacional: uma abstração de software (computador fictício criado por um programa de simulação) que enxerga um sistema físico (máquina real). Com o passar dos anos, o termo englobou um grande número de abstrações, como a Java Virtual Machine – JVM que não virtualiza um sistema real. O software que reproduz as funções de um determinado ambiente, a fim de permitir a execução de outros softwares sobre ele, é conhecido como emulador. São bastante conhecidos os emuladores de vídeo games antigos e os emuladores de microcomputadores, como o VMware, o KVM-Qemu e o VM VirtualBox (software livre da Oracle).

A utilização de máquinas virtuais em um mesmo computador envolve várias vantagens, por exemplo a economia de recursos como aquisição de computadores, espaço, ar condicionado e energia elétrica. Também facilita o aperfeiçoamento e testes de novos sistemas operacionais, utilizando um mesmo equipamento e de modo independente (não precisa formatar e particionar disco antes de instalar) e simultâneo (dá pra usar o Windows ao mesmo tempo que você está usando o Linux, por exemplo, sem a necessidade de reiniciar o computador). Existe maior facilidade no gerenciamento, migração e replicação de computadores, aplicações ou sistemas operacionais, ou seja, dá pra gravar um arquivo com a imagem de todo o sistema operacional, acionando-o em qualquer máquina que possua o programa que virtualiza máquinas (emulador). As configurações, programas e arquivos permanecem os mesmos, sendo fácil migrar para outra máquina física ou mesmo manter um backup de tudo.

Esquema demonstrando o funcionamento de uma máquina física e uma virtual.

Esquema demonstrando o funcionamento de uma máquina física e uma virtual.

Uma desvantagem é a introdução de uma camada extra de software entre o sistema operacional e o hardware, conhecido como VMM (Monitor de Máquina Virtual) e o hypervisor (controla o acesso dos sistemas operacionais visitantes aos dispositivos de hardware). Isso gera um custo de processamento superior ao que se teria sem a virtualização, e também utiliza uma porcentagem dos recursos da máquina física. Visando minimizar esse problema, surgiram processadores com tecnologia suporte à virtualização via hardware, como o AMD-V ou Intel VT, que permitem o uso direto do hardware pela máquina virtual em alguns processos, através do armazenamento dessas instruções no cache do próprio processador (veja mais no site Clube da Informática). Uma forma de verificar se o seu processador possui essa configuração e se ela está habilitada é através da BIOS. Geralmente, tem que clicar F10 durante inicialização para acessar a tela de configuração da BIOS, e então use as teclas de setas para rolar a tela até a opção Configuração do sistema, selecione a opção Tecnologia de Virtualização e pressione a tecla Enter, habilitando. Saia salvando e reinicie o computador. Caso não tenha suporte via hardware, será somente via software. Verifique a saída através do seguinte comando:

$ egrep -wo 'vmx|ept|vpid|npt|tpr_shadow|flexpriority|vnmi|lm|aes' /proc/cpuinfo | sort | uniq

O libvirt (comando virsh) é um daemon e ferramenta de gestão para o gerenciamento de plataformas de virtualização. Ele pode ser usado na camada de hypervisors para gerenciar KVM, Xen, VMware ESX, QEMU e outras tecnologias de virtualização. Conheça as mais populares soluções para virtualização disponíveis.

KVM

O KVM (Kernel-based Virtual Machine) é uma solução de virtualização para Linux, com suporte a virtualização via hardware. Por si só, KVM não realiza nenhuma emulação. Ao invés disso, um programa de espaço de usuário usa a interface /dev/kvm para instalar o espaço de endereçamento da máquina virtual hóspede, alimenta-a com entrada/saída de dados simulada e mapeia o seu visor de vídeo para o do hospedeiro. Pelo menos dois programas aproveitam este recurso: uma versão modificada do Qemu e o próprio Qemu. Sua base de funcionamento é o daemon (programa de computador que roda de forma independente em background) libvirt-bin.

Para uma virtualização qemu-kvm, máquina física deve ter o suporte de virtualização ativado na BIOS. (apenas máquinas com esse suporte nativo do processador podem ser utilizadas). Após habilitar o suporte na bios, o ambiente pode ser instalado: "aptitude install qemu-kvm libvirt-bin virt-manager". Agora chame pelo menu ou terminal virt-manager, que é um utilitário gráfico de gerenciamento das máquinas virtuais. Veja mais no link do Wiki Debian e como instalar/usar KVM a partir da linha de comando no Debian.

Para restaurar uma máquina virtual (ambiente Qemu-KVM):

  • Abrir o gerenciador de VMs com o comando "virt-manager" no terminal;
  • Wizard 1/4: nomeie a máquina, escolha a opção "import existing disk image" e clique em avançar;
  • Wizard 2/4: clique em "browse" e escolha a imagem (se não aparecer, escolha outra e renomeie no campo);
  • Escolha o sistema operacional, versão e clique avançar;
  • Wizard 3/4: mantenha as opções de memória (1GB), escolha 2 CPUs se for 64 bits e clique em avançar;
  • Wizard 4/4: em "advanced options", escolha "Rede Virtual 'default' (NAT)" para a VM não conectar em rede com outros PCs, só a máquina hospedeira;

Assim como no Xen e no LXC, a configuração de rede mais frequente envolve uma brigde agrupando as intefaces de rede das máquinas virtuais. Alternativamente, e na configuração padrão fornecida pelo KVM, um endereço privado é atribuído a máquina virtual (no intervalo 192.168.122.0/24), e o NAT é configurado para que a VM possa acessar a rede externa.

Para converter de imagem raw (qemu) para VirtualBox (VDI):

$ VBoxManage convertfromraw -format VDI [filename].img [filename].vdi

VirtualBox

Outro programa de virtualização é o VirtualBox, que pode ser instalado dentro das máquinas virtuais Windows e Linux. Apóia inteiramente o padrão Remote Desktop Protocol (RDP), que é um protocolo multi-canal que permite que um usuário se conecte a um computador rodando o Microsoft Terminal Services. Veja mais informações no manual do VirtualBox. Para instalar VirtualBox no Debian, execute o seguinte comando para instalação:

# apt-get install linux-headers-$(uname -r|sed 's,[^-]*-[^-]*-,,') virtualbox

Para começar a usar, vá ao terminal e digite "virtualbox". No Windows, acesse o site do VirtualBox, baixe o arquivo correspondente ao seu hardware (32 ou 64 bits) e execute o arquivo, seguindo as instruções que aparecerem.

Agora é só escolher um ou mais sistemas operacionais para instalar na máquina virtual. Clique em nova máquina e siga as instruções. Basicamente, você deverá nomear sua máquina, escolher o sistema operacional na lista de sistemas suportados, selecionar o uso de memória, selecionar o disco rígido virtual (crie um novo ou use um já existente, caso você já tenha criado um anteriormente), criar novo disco virtual (caso não tenha nenhum) e separar espaço de HD (fixo ou dinamicamente alocado). Com relação ao tipo de arquivo do disco virtual, tem as opções VDI (formato nativo do VirtualBox, geralmente opto por essa), VMDK (formato original da VMWare), VHD (nativo do Microsoft Virtual PC), HDD, QED (novo formato de disco Linux). Caso queira converter o arquivo VDI para o formato utilizado no KVM, veja esse link. Você pode seguir o vídeo abaixo do youtube (nesse vídeo será instalado Windows XP, mas pode ser qualquer sistema operacional):

Para compartilhar pastas entre máquina virtual e real, veja esse link do Blog do Albuquerque. No caso do Windows XP, instale o Service Pack 3 (baixe a ISO, vá para o menu do VirtualBox e clique em Dispositivos > Dispositivos de CD/DVD > Selecione um arquivo de CD/DVD virtual), Office e um anti vírus.

Caso seja um saudosista e queira usar novamente o DOS rodando Windows 3.11, veja como fazer no site XM Downlodas (Virtualizando o antigão Windows 3.11). Para baixar a imagem do DOS, baixe-a no All Boot Disks, depois clique em arquivo, Gerenciador de Mídias Virtuais, abra a aba do disquete e arraste ícone da imagem DOS pra lá. Talvez seja necessário gravar a imagem ISO utilizando um programa que grave CDs (não precisa gravar a mídia, só o arquivo). Ou siga esse vídeo do youtube, que tem link para a imagem com tudo já instalado:

Por último, um vídeo mostrando a instalação numa VirtualBox do sistema operacional Linux distribuição Debian versão 7 (Wheezy):

VMWare

O VMWare é uma máquina virtual proprietária. Sendo uma das mais antigas que se tem por ai, também é uma das mais amplamente conhecidas. Ela funciona com princípios similares aos do QEMU. A VMWare propõe recursos avançados tais como "snapshotting" de uma máquina virtual em execução. O conceito de snapshot é o de guardar uma cópia (foto) do estado atual da máquina virtual antes de fazer a instalação de alguma aplicação que pode ocasionar problemas no sistema operacional da máquina virtual.

Xen

Xen é uma solução de "paravirtualização". Ele introduz uma fina camada de abstração (hypervisor) entre o hardware e os sistemas superiores, agindo como um árbitro que controla o acesso ao hardware feito pelas máquinas virtuais. Entretanto, ele apenas lida com algumas das instruções, o resto é executado diretamente pelo hardware em nome dos sistemas. A principal vantagem é que o desempenho não se degradada, e os sistemas rodam perto da velocidade nativa; a desvantagem é que os núcleos dos sistemas operacionais que alguém deseja usar em um "hypervisor" Xen precisam ser adaptados para rodar o Xen.

LXC

O LXC (LinuX Containers) não é, estritamente falando, um sistema de virtualização, mas um sistema que isola grupos de processos uns dos outros mesmo que eles todos rodem no mesmo host. Ele tira proveito dos "control groups" do kernel, de maneira que diferentes conjuntos de processos (groups) tem diferentes visões de certos aspectos do sistema global (sem acesso a outros processos do sistema), como os identificadores de processo, a configuração de rede, e os pontos de montagem. Esses recursos podem ser combinados para isolar toda uma família de processos iniciando a partir do processo init, e o conjunto resultante se parece muito com uma máquina virtual, nomeado como "container". Não há um segundo núcleo; o container usa o mesmo núcleo que o sistema hospedeiro.

A computação em nuvens permite a utilização de computadores remotos, dispostos em datacenters (ambientes físicos climatizados e seguros, com sistema de backup em caso de queda de energia elétrica). Uma possibilidade está em fazer funcionar na nuvem uma máquina virtual configurada por você, garantindo assim as configurações, programas e documento que você deseja utilizando um computador mais estável e com grande desempenho, de qualquer lugar do mundo que possua acesso à internet.

Compartilhe o link desse texto, mas se for copiar algum trecho, cite a fonte. Valorize nosso trabalho.
Mais informações na licença de uso do site.

4 Pingbacks/Trackbacks