C
A
P
A
Servidor KVM
O KVM vem ganhando atenção do mercado corporativo como solução de virtualização. Veja como usá-lo com facilidade.
por Carlos R. M. Guimarães
A
tualmente com foco nas tecnologias “verdes”, a tec-nologia da virtualização é cada vez mais utilizada. As técnicas empregadas são atualizadas diaria-mente, conseguindo em tempos sempre menores resultados consis-tentemente melhores, e precisamos nos adaptar e estar atentos a essas melhorias.No kernel Linux 2.6.20, foi intro-duzido o ambiente de virtualização denominado KVM (Kernel-based
Virtual Machine – Máquina Virtual
com base no Kernel), que oferece suporte à virtualização exploran-do as tecnologias VT (da Intel) e AMD-V (da AMD), encontradas nos processadores mais recentes desses fabricantes.
Este artigo mostra como criar novas máquinas virtuais sobre o KVM, instalar nelas um sistema e prepará-las para o gerenciamento via rede, incluindo uma interface gráfica básica.
Hypervisor
Para construir o servidor de virtuali-zação, utilizaremos como exemplo o Ubuntu Server 9.10. Os
princi-pais motivos desta escolha são as versões recentes dos aplicativos
kvm-qemu (0.11.0), libvirt (0.7.0)
e virt-manager (0.7.0) incluídos nesse sistema.
Com isso, obtemos uma platafor-ma estável, que permite desligar as máquinas virtuais e até reiniciar sis-temas virtuais Windows XP, Vista e Windows 7. Em outras plataformas e versões, a reinicialização de VMs equipadas com esses sistemas não acontecia da forma esperada.
Para a instalação do sistema na máquina física, escolha a opção de “Instalação mínima do sistema”, pois hypervisors devem sempre
con-ter o menor número de pacotes, de forma a reduzir riscos à segurança e também restringir o número de processos a executar.
Todo o processo de instalação ocorre de forma normal, sendo as únicas particularidades o particio-namento do disco rígido (consulte a tabela 1) e o uso da opção “Sem Atualizações Automáticas”. Ao fi-nal da instalação, o servidor será reiniciado.
Na primeira inicialização, ative a conta de root e forneça uma senha com no mínimo oito caracteres:
$ sudo passwd root
Tabela 1: Particionamento de disco no anfitrião
Ponto de montagem Tamanho e importância swap Semelhante à quantidade de
memória RAM instalada / 10 GB (sistema anfitrião e
outros poucos pacotes)
/vserver Local de instalação das VMs
/dados Alojará dados e diretórios que compõem as
VMs (dados dinâmicos, como diretórios / home, arquivos de log, cache do proxy etc.)
A lista dos repositórios será mantida somente com os oficiais e estáveis –
por razões óbvias, ou seja, um servi-dor que hospedará outros serviservi-dores:
$ sudo aptitude update
Em seguida, instale um gerencia-dor de runlevel e atualize seu menu:
$ sudo aptitude install rcconf $ sudo update-rcconf-guide
Agora, instale os softwares de vir-tualização:
$ sudo aptitude install kvm \ libvirt-bin bridge-utils \ openssh-server
Na versão 9.10 do Ubuntu, não há necessidade de adicionar o usuário ao grupo libvirtd, pois o próprio pa-cote já o faz automaticamente du-rante a instalação. Caso você deseje verificar isso:
$ sudo adduser ‘usuário’ libvirtd
Para permitir a conexão entre as máquinas virtuais hospedadas sobre esse servidor, e também entre essas VMs e toda a rede física existente, utilize o modo bridge. Para isso, edite o arquivo /etc/network/interfaces para criar as bridges que poderão receber
endereços dinâmicos (listagem 1) ou estáticos (listagem 2). As listagens 1 e 2 supõem a existência de duas placas de rede, cada uma atendendo uma máquina virtual.
Para ativar as configurações, basta reiniciar a rede:
/etc/init.d/network restart
Ambiente gráfico:
por que sim?
Em servidores, não utilizamos, na maioria das vezes, ambiente gráfico, seja ele qual for. Porém, no caso de hypervisors, o ambiente gráfico nos permite um aumento de produtivi-dade e agiliprodutivi-dade com a ferramenta gráfica virt-manager.
A maioria das tarefas podem e devem ser executadas na linha de comando. Contudo, quando temos vários servidores para administrar – muitas vezes, pertencentes a empresas diferentes – é importante dispor de muita agilidade. Então, por que não optar por ferramentas que auxiliam o trabalho e facilitam essas operações sem abrir mão da segurança?
No caso deste artigo, as razões que levam a optar por um ambiente gráfico são:
Listagem 1: Bridges com
endereços dinâmicos
# Interface loopback auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual auto br0 # br0 usa DHCP iface br0 inet dhcp bridge_ports eth0 bridge_stp off bridge_fd 0 bridge_maxwait 0 metric 1 auto eth1
iface eth1 inet manual auto br1 # br1 também usa DHCP iface br1 inet dhcp bridge_ports eth1 bridge_stp off bridge_fd 0 bridge_maxwait 0 metric 1
Listagem 2: Bridges com endereços estáticos
# Interface loopback auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
auto br0
# br0 usa IP estático iface br0 inet static address 192.168.0.100 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255 gateway 192.168.0.1 bridge_ports eth0 bridge_stp off bridge_fd 0 bridge_maxwait 0 metric 1 auto eth1
iface eth1 inet manual
auto br1
# br1 também usa IP estático
iface br1 inet static address 192.168.0.101 network 192.168.0.0 netmask 255.255.255.0 broadcast 192.168.0.255 gateway 192.168.0.1 bridge_ports eth1 bridge_stp off bridge_fd 0 bridge_maxwait 0 metric 1
1 facilidade para administrar as di-versas VMs que serão instaladas; 2 interface para a instalação dos
sistemas operacionais e pacotes adicionais em cada VM; 3 administrar remotamente cada
VM e o próprio hypervisor; 4 pela linha de comando, a
admi-nistração de servidores virtuais que exigem grande interação com a área de trabalho dos usuá-rios (como LTSP, por exemplo) é muito mais demorada.
Xfce4
Após uma análise criteriosa, o am-biente Xfce4 é o mais adequado para fornecer a interface gráfica (na mo-desta opinião do autor deste artigo, evidentemente): a tabela 2 mostra uma comparação entre Openbox e Xfce4, juntamente com os motivos que determinam o vencedor.
Instale o Xfce4:
$ sudo aptitude install \ xserver-xorg xserver-xorg-core \ xfce4 xfce4-icon-theme
Caso você prefira instalar o Open-box, basta instalar o pacote openbox. Feito isso, seu sistema anfitrião já tem um ambiente gráfico bem básico pronto. Ele não iniciará au-tomaticamente – isto é proposital, pois não há necessidade de mantê-lo ativo todo o tempo. Localmente, o ambiente gráfico será muito útil apenas na hora de criar e configurar as VMs; posteriormente, será muito utilizado no caso de acesso remoto via FreeNX.
Acesso gráfico remoto
Instale as ferramentas de gerencia-mento gráfico das VMs:
$ sudo aptitude install \ virt-manager virt-viewer
O próximo passo será instalar o FreeNX para permitir o acesso
re-moto (mesmo via Internet, e não apenas pela LAN), pois é assim que vamos acessar o anfitrião e também as VMs via Virt-manager. Os resul-tados obtidos com a utilização do FreeNX com o Virt-manager são bem superiores à conexão direta entre a máquina do administrador e o anfitrião.
Em uma rede Ethernet local, é possível acessar o anfitrião diretamen-te pelo Virt-manager e diretamen-ter respostas imediatas aos comandos. Porém, no caso de acesso externo, via Internet, essas respostas tornam-se impratica-velmente lentas.
É por isso que este artigo utiliza o FreeNX para se conectar remota-mente ao ambiente gráfico do próprio anfitrião. A partir dele, abriremos um terminal para chamar o Virt-manager, acessando assim as VMs de forma satisfatória, independentemente da localização do administrador.
Instalação do FreeNX
O FreeNX é um aplicativo para com-partilhamento de área de trabalho, mais eficiente que o VNC ou o X11, pois possui um sistema aprimorado para cache de imagens. Ele se divide em duas partes: uma aplicação no servidor, que fornece as sessões, e uma aplicação no cliente para per-mitir acesso ao servidor.
A conexão ocorre por meio do protocolo SSH. Então, teremos uma autenticação criptografada e podemos utilizar tráfego de dados criptografado
via SSL. Outro ponto importante é que as informações transmitidas são compactadas pela zlib.
Para instalar o FreeNX, é neces-sários mais (mas não muito mais) do que um simples apt-get:
$ sudo aptitude install \ python-software-properties $ sudo add-apt-repository \ ppa:freenx-team $ sudo aptitude update
$ sudo aptitude install freenx
A configuração do FreeNX tam-bém requer um comando em se-parado:
$ sudo /usr/lib/nx/nxsetup \ --install
O primeiro ponto importante após a instalação é a chave SSH usada pela conexão NX. Você pode utilizar a chave padrão que já vem instalada no FreeNX ou, para uma maior segurança, uma chave própria.
A recomendação é utilizar uma chave própria. Neste caso, somente quem tem a chave poderá acessar o servidor, garantindo assim uma res-trição maior e, consequentemente, uma maior segurança.
Uma política de segurança muito saudável é editar o arquivo /etc/ssh/ sshd_config e desabilitar o acesso ao usuário root via SSH. Desta forma, somente é possível fazer login remo-to como um usuário sem privilégios,
Tabela 2: Comparativo entre Xfce4 e Openbox
Xfce4 Openbox
Uso de disco 1,4 GB 1,1 GB Uso de memória 193,25 MB 215,63 MB Aplicativos e
ambiente gráfico Adicionados ao menu automaticamente na instalação Adicionados ao menu editando-se os arquivos de configuração Software para acesso remoto FreeNX (sem pacotes adicionais)
NX Server, pois o FreeNX requer diversos pacotes adicionais neste ambiente
aumentando o grau de segurança de nosso servidor.
Outra política interessante é per-mitir acesso às VMs somente a partir do anfitrião. Com isso, para acessar qualquer máquina virtual, é preciso primeiramente acessar o anfitrião e, a partir dele, a VM desejada.
Para acessar as VMs a partir do an-fitrião, é necessário também instalar o cliente NX (nxclient) no servidor. Para isso, acesse [1] e baixe o pacote mais indicado para a sua máquina (no caso deste artigo, trata-se do pacote DEB para Linux na arquitetura
x86-64). Em seguida, instale o pacote e
dê permissão de execução ao arquivo que controla a impressão:
$ sudo dpkg -i nxclient_x.y.z.deb $ sudo chmod 755 \
/usr/lib/cups/backend/ipp
Cliente NX
Vamos agora configurar o nxclient no anfitrião e na máquina do admi-nistrador para acessar o Xfce4 das VMs e do anfitrião, respectivamente.
Execute o nxclient (Aplicativos |
Internet | NX Connection Wizard),
preencha os valores adequados para o nome da conexão e o endereço da
máquina, assim como a forma de acesso. Na etapa seguinte, selecione
Unix e Custom, e depois pressione
o botão Settings .
Em Application, selecione Run
the following command e digite:
/usr/bin/startxfce4
Em Options, selecione New
vir-tual desktop.
Webmin
Para o caso de administração do an-fitrião via via Web, temos o Webmin, cuja instalação é descrita no quadro 1.
VM básica
A primeira máquina virtual a ser criada receberá um sistema Debian
Lenny. É uma boa ideia usá-la como
modelo para criação de quaisquer outras VMs que desejemos. Desta forma, poupa-se bastante trabalho na hora de criar novas VMs. Com o Virt-manager aberto, inicie sua configuração.
As primeiras opções são exibidas de forma gráfica pelo programa:
menu Editar | Preferências: marque as opções Disk I/O e
Network I/O;
no menu Ver, marque as opções
CPUs, Disk I e Network I/O;
na linha localhost (System),
clique com o botão direito do mouse e selecione Conectar;
no menu Editar | Hosts Details, a janela de Detalhes do Host será aberta e conterá três abas;
na aba Visão geral, podemos ativar a opção Autoconnect |
Virtual Networks;
na aba Storage, iremos adicionar a partição /vserver da seguinte forma: clique no botão com um símbolo de soma +, escolha um nome para a nova localização
vserver, mantenha a opção dir: Diretório de Sistema de Arquivo
e clique em avançar. Na pró-xima janela que se abrir, Add
Storage Pool, escolha o caminho
/vserver.
Pronto: agora você já tem um local para hospedar as VM’s. Vamos agora criar uma máquina virtual.
Clique na linha localhost (System) com o botão direito e selecione Nova. A janela Criar Nova VM se abrirá para você criar a VM propriamente dita.
Note que este procedimento su-põe a existência de uma unidade de CD/DVD no anfitrião, com o CD de instalação via rede (netinstall) ou o CD1 inserido nela.
Em nome, digite o nome deseja-do para a VM, como lenny. Depois, selecione Local install media (iso
Image or CDROM), e marque Use CDROM or DVD. Selecione Linux
como tipo de sistema operacional e
DebianLenny como versão. Defina
uma quantidade de memória RAM para a VM, como 1024 MB, e uma quantidade de CPUs para essa mes-ma máquina.
Depois, selecione Select managed
or other existing storage e Browse. Na
janela que se abre, selecione vserver. Clique em New Volume, o que abrirá a janela Add a Storage Volume: digite
lenny para o nome do arquivo que
Quadro 1: Instalação do Webmin
Para instalar o Webmin no Ubuntu Server, é preciso acrescentar um repo-sitório de pacotes que produz pacotes para Debian Sarge. Porém, primeiro vamos instalar alguns pacotes necessários para o Webmin:
$ sudo aptitude install perl libnet-ssleay-perl openssl libauthen -pam-perl libpam-runtime libio-pty-perl libmd5-perl
Feito isso, acrescente ao arquivo /etc/apt/sources.list a seguinte linha: deb http://download.webmin.com/download/repository sarge contrib Em seguida, baixe a chave do repositório e adicione-a ao apt:
$ wget http://www.webmin.com/jcameronkey.asc O | sudo aptkey add -Por último, atualize a lista de pacotes e instale o pacote webmin:
$ sudo aptitude update
abrigará a VM. Digite um tamanho (em MB) para o arquivo. Em
Alloca-tion, escolha todo o espaço definido
para assim ter uma VM mais rápida. Máquina virtual criada. Vamos agora instalar nela o sistema ope-racional.
Lenny virtual
A instalação do Lenny será feita a partir de um CD netinstall, pois serão instalados somente os pacotes básicos. Com isso, teremos uma VM básica que servirá como ponto de partida para vários tipos de servidores.
Em relação ao particionamento do disco, podemos manter o espaço de swap com um tamanho igual ao da memória RAM, enquanto a raiz ocupa todo o restante do espaço.
Finalizada a instalação do De-bian Lenny básico, já temos nossa primeira VM funcional.
Clones
Para clonar um modelo de máquina virtual, uma boa ferramenta é o
Virt-clone, devido à facilidade e à
veloci-dade oferecidas por ele. Ao final do processo, teremos a nova VM com um domU criado e pronta para uso.
A linha de comando para isso é:
$ sudo virt-clone -o lenny \ -n ‘nome da nova VM’ \ -f ‘arquivo da nova VM.img’
Com isso, já temos a nova VM pronta para ser configurada de acor-do com a necessidade.
Uso do Virt-manager
Para administrar as VMs e o anfi-trião, existem ferramentas de linha de comando como o virsh e o virt-top, entre outras. O cenário ideal para uso destas é um número pequeno de servidores anfitriões e o emprego da ferramenta apenas para adminis-trar a rede.
No entanto, no caso de múltiplas redes geograficamente separadas –
muitas vezes em cidades diferentes –, é preciso estar em muitos locais ao mesmo tempo. São necessárias, portanto, ferramentas que proporcio-nem agilidade, facilidade de uso e recursos de análise, para aumentar a produtividade do administrador.
Nesse caso, o Virt-manager é o mais indicado, pois reúne uma série de recursos em uma única tela: uso de memória e CPU no anfitrião e em cada VM, além de:
reunir informações básicas das VMs – ID, status, uso de CPU, número de CPUs, memória utilizada, I/O de disco e I/O de rede;
permitir “entrar” na VM e in-teragir com seu sistema opera-cional pela tela, como se fosse um monitor físico local;
permitir remover e adicionar hardware de forma rápida;
possibilitar a alteração do
dis-positivo de boot;
permitir alterar a inicialização automática da VM;
oferecer a conexão à unidade de CD.
Novo hardware virtual
Com fim de exemplo, é interessan-te demonstrar a possibilidade de acrescentar novos itens de hardware a uma VM. Vamos criar, em nossa nova VM, uma partição a ser mon-tada em /dados/:
1 na aba Hardware da VM, clique em + Add Hardware;
2 em Hardware Type, selecione
Storage;
3 em Block device (partition), es-colha /dev/sda7;
4 com Target Device Type, use
Virtio Disk.
É importante enfatizar que, no caso de VMs com uma grande massa de dados dinâmicos (como os da parti-ção /home, os logs etc.), recomenda-se utilizar um dispositivo de arma-zenamento separado. Dessa forma, mesmo em caso de desastres com essa VM, os dados estarão preserva-dos. Além disso, essa atitude evita o uso demasiado de espaço por parte da VM. Como resultado, isso sim-plifica e aumenta a segurança na administração da virtualização. n
Gostou do artigo?
Queremos ouvir sua opinião. Fale conosco em
cartas@linuxmagazine.com.br
Este artigo no nosso site:
http://lnm.com.br/article/3397
Mais informações
[1] Download do nxclient:
http://www.nomachine.com/download-client-linux.php
Sobre o autor
Carlos R. M. Guimarães Filho é diretor da CRMG Network & Security. É engenheiro
de sistemas e especialista em redes, com 26 anos de experiência nas áreas de au-tomação, eletrônica e TI.