VMware Server, parte 1

VMware Server, parte 1

Quase tudo pode ser simulado via software. É possível até mesmo simular um computador de arquitetura diferente, para que os softwares escritos pare ele rodem da mesma forma que rodam dentro do seu sistema nativo.

Um dos exemplos mais conhecidos são os emuladores de videogames antigos, que permitem rodar jogos de Atari, Nintendo 8 bits, Mega-Drive, Super-Nes, Playstation e outros.

Assim como é possível emular um videogame para rodar os jogos escritos para ele, é possível simular um PC completo dentro de uma máquina virtual e até mesmo executar diversos sistemas operacionais simultaneamente.

O sistema principal neste caso passa a ser chamado de host (hospedeiro) e o sistema operacional que está rodando dentro da máquina virtual é chamado de “guest” (convidado). Ele acha que tem um PC completo para si, enquanto na verdade está rodando dentro de uma “matrix”, na máquina virtual.

Naturalmente, este trabalho de simular um PC completo e ainda por cima com um bom desempenho não é simples, veja o caso dos emuladores de videogame, que, de uma forma geral, precisam de um PC muito mais poderoso do que o sistema original. É preciso um Pentium 200 para emular um Super Nes (que usa um processador de 3.5 MHz e 128 KB de RAM) com qualidade.

Existem atualmente três softwares que se destacam nesta categoria, o VMware, Qemu e o Xen, que trabalham de forma ligeiramente diferente, mas com grandes diferenças práticas.

O VMware usa um conceito de virtualização. Ele tenta sempre que possível converter os comandos usados pelo sistema dentro da máquina virtual em comandos que o sistema host entenda e execute diretamente. Isso se aplica quando é necessário transmitir dados através da placa de rede, tocar sons na placa de som, ou executar instruções do processador. O VMware interpreta e converte instruções o mínimo possível, o que faz com que o sistema dentro da máquina virtual rode com um desempenho muito similar ao desempenho real da máquina.

O Qemu, por sua vez, é um emulador. Ele tenta processar todas as instruções, o que acaba demorando mais tempo e fazendo com que a performance seja menor. Em geral, o VMware (nas versões recentes) consegue fazer com que o sistema guest rode com de 70 a 90% do desempenho que teria se estivesse rodando diretamente, enquanto que o Qemu obtém de 5 a 10%. O Qemu possui um módulo adicional, o Kqemu, que faz com que ele passe a funcionar de forma mais similar ao VMware, virtualizando as instruções básicas do processador, ao invés de emular tudo. O Kqemu melhora consideravelmente o desempenho do Qemu, mas ainda assim o deixa bem atrás do VMware em questão de desempenho. Inicialmente, o Qemu era apenas um projeto menor, mas recentemente ele passou a ganhar mais destaque, com o desenvolvimento do KVM, um sistema de virtualização incluído diretamente no Kernel, disponível a partir do 2.6.20, que trabalha em conjunto com ele.

Temos ainda o Xen, que embora relativamente desconhecido entre os usuários de desktops, já é bastante utilizado nos servidores. Ele utiliza uma idéia diferente, a paravirtualização, que consiste em dividir de forma transparente os recursos do hardware, permitindo que o sistema guest rode com uma redução de performance muito pequena (menos de 5%, na maioria dos casos). O maior problema é que para rodar dentro do Xen é necessário que o sistema guest seja modificado. Não é possível rodar qualquer sistema diretamente, como no caso do VMware e do Qemu. Isto não é um grande problema no caso das distribuições Linux, mas é no caso do Windows e outros sistemas de código fechado.

O Xen é muito mais complicado de configurar que o VMware, o que limita um pouco seu público-alvo, mesmo quando falamos em servidores. Mesmo assim, é possível que o Xen evolua em termos de facilidade de uso e, graças ao bom desempenho, comece a disputar diretamente com o VMware. A página do Xen é a http://www.xensource.com/.

Por enquanto, o vamos estudar sobre o uso do VMware Server, que é atualmente a solução que melhor combina desempenho e facilidade de uso.

O VMware Player, VMware Workstation e o Qemu são os mais usados nos desktops, onde o uso mais comum é usar uma máquina virtual para rodar o Windows dentro do Linux, ou vice-versa. A principal utilidade da máquina virtual é rodar programas gráficos, de forma que você fica com a janela aberta continuamente.

Entretanto, num servidor dedicado as coisas são um pouco diferentes. Ao invés de você ficar o tempo todo na frente da máquina, como faria num desktop, espera-se que o servidor funcione continuamente, sem precisar de muita manutenção. Embora (com um pouco de malabarismo), seja até possível instalar o VMware Player no servidor e deixá-lo ativo, rodando outro sistema numa máquina virtual, ele não é a solução mais prática para a tarefa, sem falar que não é possível usá-lo em servidores sem o ambiente gráfico instalado.

Entendendo o VMware Server

Em um PC desktop, o uso mais comum de um software de virtualização é rodar um segundo sistema operacional, de forma a fazer testes ou rodar algum software específico. Muita gente usa o VMware Player ou o Virtual Box para rodar uma cópia do Windows dentro do Linux ou vice-versa. A principal utilidade da máquina virtual é rodar programas gráficos, de forma que você fica com a janela aberta continuamente:

1b051e9e

Entretanto, em um servidor dedicado as coisas são um pouco diferentes. Ao invés de você ficar o tempo todo na frente da máquina, como faria num desktop, espera-se que o servidor funcione continuamente, sem precisar de muita manutenção. Embora (com um pouco de malabarismo), seja até possível instalar o VMware Player no servidor e deixá-lo ativo, rodando outro sistema numa máquina virtual, ele não é a solução mais prática para a tarefa, sem falar que não é possível usá-lo em servidores sem o ambiente gráfico instalado.

Chegamos então ao VMware Server, que vamos ver em detalhes ao longo deste tutorial. Ele é uma versão adaptada e otimizada para uso em servidores dedicados, sem monitor nem ambiente gráfico. A principal diferença é que o VMware Server roda remotamente, e é acessado através de uma interface de administração via web (chamada de VMware Management Interface, ou MUI), onde você pode ativar, desativar e monitorar o status das máquinas virtuais remotamente. A idéia é que cada máquina virtual seja configurada como um novo servidor dedicado, que você administra usando o SSH ou outro software de acesso remoto.

Usando o VMware Server, você pode transformar um único servidor dedicado em vários servidores virtuais, cada um se comportando como se fosse uma máquina separada. Em geral, ao locar um servidor dedicado você recebe uma faixa de IPs com máscara 255.255.255.248, com 5 endereços IPs utilizáveis. Isso significa que você pode usar um endereço para o servidor principal e ainda ficar com mais 4 endereços para as máquinas virtuais (sendo que uma delas pode acumular a função de servidor DNS secundário).

Para emergências, onde você precise ver as mensagens de inicialização ou quando precisar alterar as configurações da máquina virtual (quantidade de memória RAM reservada, CD-ROM ou imagem ISO de boot, etc.) você pode usar o VMware Server Console, uma interface de administração, através da qual você pode se conectar remotamente a qualquer uma das máquinas virtuais disponíveis, obtendo a imagem que seria enviada para o monitor. Ele pode também ser usado para criar novas VMs e instalar ou reinstalar o sistema:

m4da9491b

Como um servidor dedicado pode custar menos de US$ 100 por mês, dependendo do datacenter escolhido, existe até mesmo uma boa possibilidade de ganhar algum dinheiro alugando os servidores virtuais e, ainda assim (embora com menos recursos de hardware disponíveis), continuar dispondo do sistema principal.

Até junho de 2006, a VMware oferecia o VMware GSX Server, que era um produto caro, assim como o VMware Workstation. Ele vinha perdendo terreno devido à concorrência do Xen, do Virtuozzo e do Virtual PC (da Microsoft), de forma que a VMware decidiu disponibilizá-lo gratuitamente, como uma solução “entry-level” para a virtualização de servidores. Nasceu assim o VMware Server. O resultado é que temos disponível uma solução de virtualização para servidores muito prática, ao custo de um download.

As limitações do VMware Server são o suporte a até 3.6 GB de memória RAM (na versão 2.0 o limite foi ampliado para 8 GB, desde que você o utilize sobre um sistema operacional de 64 bits) e o suporte a um máximo de 64 máquinas virtuais ativas simultaneamente. Ou seja, embora existam, as limitações não afetam a grande maioria dos usuários.

A VMware ganha dinheiro vendendo o ESX Server, uma solução de virtualização para grandes empresas, que suporta o uso de servidores muito mais robustos e oferece mais opções de gerenciamento e integração entre diversos servidores. Diferente do VMware Server, que é instalado sobre um sistema operacional já existente, o ESX Server roda diretamente sobre o hardware, substituindo o sistema operacional inteiramente.

Preparando o terreno

O VMware Server possui versões para Linux e Windows. No caso da versão Linux, é necessário instalar dois módulos de Kernel (vmmon e vmnet), que permitem que o VMware tenha acesso direto ao hardware. O pacote de instalação inclui módulos pré-compilados para diversas distribuições, mas em muitos casos os módulos precisam ser compilados durante a instalação, o que torna necessário ter instalados os headers do Kernel e um conjunto de compiladores. Eles não são instalados por padrão na maioria das distribuições, o que demanda uma preparação adicional.

O primeiro passo é baixar os arquivos de instalação do VMware Server, disponíveis no:
http://www.vmware.com/download/server/

É necessário fazer um cadastro gratuito para receber o código de registro solicitado durante a instalação. O procedimento é bastante amigável e é possível inclusive solicitar vários números de registro (gratuitamente), caso pretenda instalar em vários servidores.

Estão disponíveis três componentes, o VMware Server propriamente dito, a interface de gerenciamento via web (Management Interface) e o “VMware Server Linux client package”, um arquivo compactado contendo o VMware Server Console. Os dois primeiros são instalados no servidor, enquanto o último (o Server Console) é instalado no seu desktop, a partir de onde você administrará o servidor:

12f19543

Tanto as versões em .rpm quanto em .tar.gz contém os mesmos componentes, o que muda é apenas o formato do pacote. Nos exemplos vou utilizar as versões .tar.gz, que podem ser usadas em qualquer distribuição.

Enquanto baixa os pacotes, aproveite para ir adiantando o serviço, verificando a instalação dos headers, compiladores e das bibliotecas do X.

Comece verificando a versão do Kernel instalada, usando o comando “uname -a”, como em:

# uname -a

Linux server 2.6.18-4 #1 Tue Aug 16 12:46:35 UTC 2005 i686 GNU/Linux

Em seguida, instale a versão correspondente dos headers do Kernel, usando o gerenciador de pacotes. Procure pelo pacote “linux-headers”, seguido pela versão do Kernel usada. No caso do Debian ou do Ubuntu você pode fazer a instalação usando o apt-get, como em:

# apt-get install linux-headers-2.6.18-4

Além dos headers, é necessário instalar um conjunto básico de compiladores, incluindo o gcc, make, libc6-dev e o binutils. No Debian e no Ubuntu você pode instalá-los através do pacote “build-essential”, um metapacote que instala toda a turma:

# apt-get install build-essential

No OpenSuSE, abra o Yast e, na seção Software Management, instale os pacotes “gcc” e o pacote “kernel-source” da mesma versão do Kernel instalado.

No Fedora, você precisa instalar também o pacote “xinetd”, que é necessário para que os scripts de inicialização utilizados pelo VMware Server funcionem corretamente.

No Mandriva a lista de pacotes é um pouco maior, similar ao que precisamos instalar no Debian. Abra o mcc e instale os pacotes autoconf, automake, gcc, gcc-cpp, xinetd, perl-devel e kernel-source, lembrando de instalar a versão do pacote kernels-source correspondente à versão do kernel atualmente instalada.

Muitas distribuições incluem estes componentes por padrão, dispensando estes passos. No caso do Ubuntu, você pode precisar criar manualmente o link “/usr/src/linux”, apontando para a pasta referente à versão instalada. Para isso, acesse a pasta “/usr/src” e rode o comando “sudo ln -sf linux-headers-2.6.*-* linux”, como em:

# sudo ln -sf linux-headers-2.6.20-15-server linux

Se mesmo depois de criar o link o instalador do VMware continuar parando na pergunta sobre a localização dos headers do Kernel, significa que você não instalou a versão correta do pacote “linux-headers”. Verifique e tente novamente. 🙂

Embora o VMware Server não precise da interface gráfica para funcionar, ele precisa que um conjunto básico de bibliotecas esteja disponível. Quando você faz uma instalação em modo servidor do Ubuntu, ou uma instalação mínima do Debian, estas bibliotecas precisam ser instaladas manualmente:

# apt-get install libx11-6 libxtst-dev libxt-dev libxrender-dev libxtst6 libxt6 libxrender1 libxi6 libdb3

Note que a instalação destas bibliotecas não implica na instalação do ambiente gráfico propriamente dito. Somados, os pacotes totalizam pouco mais de 14 MB, enquanto uma instalação completa do ambiente gráfico, incluindo o KDE (ou o Gnome) e alguns aplicativos somaria mais de 300 MB em pacotes.

Sem as bibliotecas do X, você receberá um erro similar a esse no final da instalação, quando o instalador pedir o serial. Ele surge justamente quando o instalador tenta carregar as bibliotecas utilizadas pelo programa a fim de concluir a instalação e se repete indefinidamente até que elas sejam instaladas:

Type XXXXX-XXXXX-XXXXX-XXXXX or ‘Enter’ to cancel: xxxxx-xxxxx-xxxxx-xxxxx
/usr/lib/vmware/bin/vmware-vmx: error while loading shared libraries: libX11.so.6: cannot open shared object file: No such file or directory

Uma dica é que você pode fazer a instalação dos pacotes usando um segundo terminal, sem precisar abortar a instalação do VMware. Depois que os pacotes forem instalados, o instalador aceita o serial e a instalação é concluída.

Como comentei no início, o pacote do VMware-Server inclui um grande conjunto de módulos pré-compilados, de forma que em muitos casos você sequer precisará se preocupar com os headers do Kernel ou com ferramentas de compilação. De qualquer forma, é interessante ter esses componentes instalados, já que eles são necessários para instalar diversos softwares e drivers. Mesmo em um servidor, mais cedo ou mais tarde você acaba precisando instalar alguma coisa que precisa deles.

Instalando

Para instalar o pacote principal do VMware Server, descompacte o arquivo .tar.gz e execute o arquivo “vmware-install.pl” dentro da pasta criada, como em:

$ tar -zxvf VMware-server-1.0.5-80187.tar.gz
$ cd vmware-server-distrib
# ./vmware-install.pl

O instalador é um script perl que roda em modo texto, o que permite a instalação em servidores sem o ambiente gráfico instalado. Não existe muito mistério, desde que os headers e os compiladores estejam em ordem, você vai acabar com uma instalação utilizável mesmo que simplesmente pressione Enter em todas as opções. Algumas perguntas que precisam de um pouco mais de atenção são:

Trying to find a suitable vmmon module for your running kernel.

None of the pre-built vmmon modules for VMware Server is suitable for your
running kernel. Do you want this program to try to build the vmmon module for
your system (you need to have a C compiler installed on your system)? [yes]

Using compiler “/usr/bin/gcc”. Use environment variable CC to override.

What is the location of the directory of C header files that match your running
kernel? [/lib/modules/2.6.8-2-386/build/include]

Aqui ele pergunta sobre o os módulos do Kernel, confirmando a localização dos headers. Este arquivo “/lib/modules/2.6.8-2-386/build/include” é, na verdade, um link para a pasta “/usr/src/kernel-headers-2.6.8-2-386”, onde estão os headers do kernel. Em caso de erros neste ponto, verifique a instalação dos headers e a presença do link. Outra dica é que você precisa ter instalados os pacotes “gcc” e “g++” da mesma versão usada para compilar o Kernel.

As próximas perguntas são sobre as interfaces de rede virtuais:

Do you want networking for your virtual machines? (yes/no/help) [yes]

Do you want to be able to use NAT networking in your virtual machines? (yes/no) [no]

Do you want to be able to use host-only networking in your virtual machines? [no]

Naturalmente, você deve responder sempre “yes” na primeira pergunta, caso contrário as máquinas virtuais ficarão desconectadas da rede, mas as duas seguintes precisam de uma inspeção mais cuidadosa. Por padrão, o VMware oferece uma rede virtual em modo bridge (bridged network), onde as máquinas virtuais simplesmente acessam a rede, como se fossem máquinas separadas. Cada uma tem seu próprio IP, como se fossem vários servidores distintos.

As opções para criar uma rede NAT e host-only permitem que as máquinas virtuais sejam configuradas com endereços internos, e acessem a rede através do host. Esta configuração é útil no VMware Player (onde você geralmente quer que o sistema dentro da máquina virtual apenas acesse a internet, sem compartilhar nada), mas não é tão interessante no VMware Server, onde a idéia é justamente criar servidores virtuais. Veja que no exemplo anterior desativei ambas as opções.

Caso seu servidor tenha mais de uma placa de rede, o instalador pergunta:

Your computer has multiple ethernet network interfaces available: eth0, eth1.

Which one do you want to bridge to vmnet0? [eth0]

Ou seja, ao detectar que existe mais de uma placa de rede disponível, ele pergunta a qual delas as máquinas virtuais devem ser ligadas. É importante indicar a placa correta, referente à rede onde as máquinas virtuais ficarão disponíveis, seja a placa da rede local, ou seja a placa com o link de internet.

Embora a mesma placa física seja compartilhada por todas as máquinas virtuais, o VMware se encarrega de encaminhar corretamente os pacotes recebidos. Ele simula inclusive a existência de diversos endereços MAC, um para cada placa de rede virtual. Imagine que ele cria uma espécie de “hub virtual”, onde as máquinas virtuais são conectadas.

Em seguida, temos:

Please specify a port for remote console connections to use [902]

Esta é a porta que será usada para a conexão do cliente, o vmware-server-console. Você pode alterar a porta por outra menos visada (e indicá-la manualmente ao conectar). O ponto principal é que a porta precisa ficar aberta no firewall. Se você é paranóico e prefere não correr o risco de manter a porta 902 aberta, pode ainda utilizar um túnel para se conectar a ela através da porta utilizada pelo SSH. Veja a dica mais adiante.

Em seguida, você deve definir a pasta onde as máquinas virtuais serão armazenadas. Aqui escolhi a pasta “/var/vms” (a pasta “/var” é usada por padrão para armazenar os sites do apache, bases de dados do MySQL, etc.), mas a escolha fica por sua conta. Naturalmente, as máquinas virtuais podem ocupar bastante espaço, por isso é importante checar o espaço livre dentro da partição destino.

In which directory do you want to keep your virtual machine files?
[/var/lib/vmware/Virtual Machines] /var/vms/

Depois de fornecer o código de registro, que você recebe via e-mail, a instalação está completa:

The configuration of VMware Server 1.0.5 build-80187 for Linux for this running
kernel completed successfully.

Depois de instalado, o VMware pode ser iniciado e parado através do serviço “vmware”, como em “/etc/init.d/vmware start” ou “/etc/init.d/vmware stop”. Sempre que tiver problemas, experimente, antes de mais nada, reiniciar o serviço.

O próximo passo é instalar o VMware Server Console, na sua estação de trabalho. A instalação é bem similar à do servidor, com a diferença de não serem necessários os headers e os compiladores. Basta descompactar o arquivo (ele usa uma dupla compactação, em .tar.gz e depois em .zip), acessar a pasta que será criada e executar o script “vmware-install.pl”, como em:

$ unzip VMware-server-linux-client-1.0.5-80187.zip
$ tar -zxvf VMware-server-console-1.0.5-80187.tar.gz
$ cd vmware-server-console-distrib
# ./vmware-install.pl

Depois de instalado, chame-o usando o comando:

$ vmware-server-console

Ao abrir a conexão com o servidor, você pode logar usando qualquer conta de usuário. De início, você pode se logar como root, para testar e fazer a configuração, mas depois é interessante criar uma conta de usuário separada, que tenha acesso à pasta das VMs. O VMware utiliza SSL de 128 bits para garantir a segurança da conexão, mas sempre é bom evitar utilizar o root para tarefas rotineiras.

Confira a segunda parte em: https://www.hardware.com.br/tutoriais/vmware-server2/

Sobre o Autor

Redes Sociais:

Deixe seu comentĂĄrio

X