Configure e gerencie um sistema anfitrião com KVM e Virt-manager
CAPA
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 tecnologia da virtualização é
cada vez mais utilizada. As técnicas
empregadas são atualizadas diariamente, conseguindo em tempos
sempre menores resultados consistentemente melhores, e precisamos
nos adaptar e estar atentos a essas
melhorias.
No kernel Linux 2.6.20, foi introduzido o ambiente de virtualização
denominado KVM (Kernel-based
Virtual Machine – Máquina Virtual
com base no Kernel), que oferece
suporte à virtualização explorando 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 virtualização, utilizaremos como exemplo
o Ubuntu Server 9.10. Os princi-
Linux Magazine #65 | Abril de 2010
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 plataforma estável, que permite desligar as
máquinas virtuais e até reiniciar sistemas 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 particionamento do disco rígido (consulte
a tabela 1) e o uso da opção “Sem
Atualizações Automáticas”. Ao final 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.)
39
CAPA | KVM
Listagem 1: Bridges com
endereços dinâmicos
por razões óbvias, ou seja, um servidor que hospedará outros servidores:
# Interface loopback
auto lo
iface lo inet loopback
$ sudo aptitude update
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
A lista dos repositórios será mantida
somente com os oficiais e estáveis –
Em seguida, instale um gerenciador de runlevel e atualize seu menu:
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:
$ sudo aptitude install rcconf
$ sudo update-rcconf-guide
/etc/init.d/network restart
Agora, instale os softwares de virtualização:
Ambiente gráfico:
por que sim?
$ sudo aptitude install kvm \
libvirt-bin bridge-utils \
openssh-server
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 produtividade e agilidade 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:
Na versão 9.10 do Ubuntu, não há
necessidade de adicionar o usuário
ao grupo libvirtd, pois o próprio pacote já o faz automaticamente durante 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
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
iface br0
address
network
netmask
40
IP estático
inet static
192.168.0.100
192.168.0.0
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
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
auto br1
# br1 também usa IP estático
http://www.linuxmagazine.com.br
KVM | CAPA
1 facilidade para administrar as diversas 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 administraçã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 ambiente Xfce4 é o mais adequado para
fornecer a interface gráfica (na modesta 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 Openbox, 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á automaticamente – 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 gerenciamento gráfico das VMs:
$ sudo aptitude install \
virt-manager virt-viewer
O próximo passo será instalar o
FreeNX para permitir o acesso re-
Linux Magazine #65 | Abril de 2010
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 resultados 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 diretamente pelo Virt-manager e ter respostas
imediatas aos comandos. Porém, no
caso de acesso externo, via Internet,
essas respostas tornam-se impraticavelmente lentas.
É por isso que este artigo utiliza
o FreeNX para se conectar remotamente 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 compartilhamento 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 permitir 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, é necessá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 também requer um comando em separado:
$ 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 restriçã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 remoto 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
41
CAPA | KVM
aumentando o grau de segurança de
nosso servidor.
Outra política interessante é permitir 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 anfitriã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 x8664). 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 administrador 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:
Em Options, selecione New virtual desktop.
Webmin
Para o caso de administração do anfitriã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;
Para instalar o Webmin no Ubuntu Server, é preciso acrescentar um repositó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/jcameron-key.asc -O- | sudo apt-key add Por último, atualize a lista de pacotes e instale o pacote webmin:
42
/usr/bin/startxfce4
Quadro 1: Instalação do Webmin
$ sudo aptitude update
$ sudo aptitude install webmin
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 supõ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 desejado 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 mesma 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
http://www.linuxmagazine.com.br
KVM | CAPA
abrigará a VM. Digite um tamanho
(em MB) para o arquivo. Em Allocation, escolha todo o espaço definido
para assim ter uma VM mais rápida.
Máquina virtual criada. Vamos
agora instalar nela o sistema operacional.
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 Debian Lenny básico, já temos nossa
primeira VM funcional.
Clones
Para clonar um modelo de máquina
virtual, uma boa ferramenta é o Virtclone, devido à facilidade e à velocidade 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 acordo com a necessidade.
Uso do Virt-manager
Para administrar as VMs e o anfitriã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 administrar a rede.
No entanto, no caso de múltiplas
redes geograficamente separadas –
Linux Magazine #65 | Abril de 2010
muitas vezes em cidades diferentes
–, é preciso estar em muitos locais
ao mesmo tempo. São necessárias,
portanto, ferramentas que proporcionem 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 interagir com seu sistema operacional pela tela, como se fosse
um monitor físico local;
permitir remover e adicionar
hardware de forma rápida;
possibilitar a alteração do dispositivo 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, é interessante demonstrar a possibilidade de
acrescentar novos itens de hardware
a uma VM. Vamos criar, em nossa
nova VM, uma partição a ser montada em /dados/:
1 na aba Hardware da VM, clique
em + Add Hardware;
2 em Hardware Type, selecione
Storage;
3 em Block device (partition), escolha /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.), recomendase utilizar um dispositivo de armazenamento separado. Dessa forma,
mesmo em caso de desastres com
essa VM, os dados estarão preservados. Além disso, essa atitude evita o
uso demasiado de espaço por parte
da VM. Como resultado, isso simplifica e aumenta a segurança na
administração da virtualização. n
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 automação, eletrônica e TI.
Gostou do artigo?
Queremos ouvir sua opinião. Fale conosco em
[email protected]
Este artigo no nosso site:
http://lnm.com.br/article/3397
43
Download

Servidor KVM - Linux Magazine Online