Criar um servidor virtual baseado em KVM

Três etapas para criar um servidor virtual em um hypervisor da Linux KVM com virtualização completa

Em três etapas relativamente simples, é possível criar um servidor virtual no host do hypervisor da Linux® KVM usando a virtualização completa. A Kernel-based Virtual Machine (KVM) é um software de virtualização livre gratuito para Linux que tem como base as extensões de virtualização de hardware (Intel VT-X e AMD-V) e uma versão modificada de QEMU.

Da Shuang He, Software Engineer, IBM

Da Shuang é engenheiro de software no IBM China Development Lab em Xangai, China. Trabalha atualmente no software de gerenciamento de sistema; enfoca a criação de servidores com inicialização automática, instalação remota de sistema operacional e gerenciamento de energia.



08/Mar/2010

Participe dos grupos ecológicos no My developerWorks

Discuta tópicos e compartilhe recursos sobre energia, eficiência e meio ambiente no espaço GReen IT Report e no Grupo de computação ecológica do My developerWorks.

A Kernel-based Virtual Machine (KVM) é um software de virtualização livre gratuito para Linux que tem como base as extensões de virtualização de hardware Intel VT-X e AMD-V e uma versão modificada de QEMU (o trabalho está sendo feito para se fazer o envio de dados das alterações solicitadas). KVM—na forma de kvm.ko, um módulo do kernel que pode ser carregado que fornece a infraestrutura de virtualização principal e os módulos específicos de processador kvm-intel.ko e kvm-amd.ko—foi projetado para permitir emulação de hardware completa na medida necessária para inicializar muitos sistemas operacionais de PC na forma não modificada.

Usando KVM, é possível executar várias máquinas virtuais que executam imagens de Linux ou Windows® ou Mac OS® X não modificadas. Cada máquina virtual tem hardware virtualizado particular, como placa de rede, disco, placa de vídeo etc.

Para este artigo, usei um IBM® Blade Server HS21 com SUSE 11 como o sistema operacional. O HS21 suporta a extensão Intel VT, e a versão de kernel de SUSE 11 é 2.6.27.13, que já contém a KVM (a KVM está incluída nas versões de kernel Linux desde a 2.6.20).

As três principais etapas para fazer o servidor virtual operar são:

  1. Instalar o sistema operacional e o software necessário.
  2. Criar o servidor virtual.
  3. Configurar a rede do servidor virtual.

Etapa 1. Instalar o sistema operacional e os softwares necessários

Esta seção cobre o seguinte:

  1. Instalar o sistema operacional e os softwares necessários
  2. Determinar se a CPU suporta ou não a KVM
  3. Verificar se o software está instalado corretamente

Instalar o sistema operacional e o software

Após a instalação do sistema operacional, é possível encontrar a versão instalada do kernel Linux com o seguinte comando:

kvm:~ # uname -a
Linux kvm 2.6.27.13-1-pae #1 SMP 2009-01-27 13:41:16 +0100 i686 i686 i386 GNU/Linux

Em seguida, instale os pacotes kvm e kvm-kmp-default (que já têm um QEMU modificado para emulação de hardware de E/S). Como mostrado na Figura 1, selecione esses pacotes e clique em Accept para instalá-los:

Figura 1. Localizando o kernel instalado
Finding the installed kernel

Agora, a versão de kvm-kmp-default deve ser 78_2.6.27.13_1-11.3. (78 é a versão da KVM, e o restante das informações indica a versão do kernel.)

Uma instalação de KVM típica consiste em três componentes:

  • Um driver de dispositivo para gerenciar o hardware de virtualização; esse driver expõe seus recursos via dispositivo de caractere /dev/kvm
  • Um componente de espaço do usuário para emular hardware de PC; atualmente, isso é manipulado no espaço do usuário e é um processo QEMU levemente modificado
  • O modelo de E/S, derivado diretamente do modelo de QEMU com suporte para imagens de disco copy-on-write e outros recursos de QEMU

Determinar se a CPU suporta ou não a KVM

A KVM depende das extensões de virtualização x86. Para verificar a compatibilidade, execute o comando grep vmx /proc/cpuinfo (em AMD, execute o comando grep svm /proc/cpuinfo). Se a saída for similar à Listagem 1, a CPU suportará KVM; caso contrário, sua CPU não suportará KVM.

Listagem 1. Verificando CPU para suporte de KVM
kvm:~ # grep vmx /proc/cpuinfo
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 
clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc arch_perfmon pebs bts pni 
monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr dca lahf_lm
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 
clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc arch_perfmon pebs bts pni 
monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr dca lahf_lm
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 
clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc arch_perfmon pebs bts pni 
monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr dca lahf_lm
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 
clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc arch_perfmon pebs bts pni 
monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr dca lahf_lm

Determinar se o software foi instalado com êxito

Execute o comando lsmod | grep kvm para verificar se o módulo de KVM foi instalado com êxito. Se o resultado for similar a esta saída, o módulo da KVM será instalado com êxito:

kvm:~ # lsmod | grep kvm
kvm_intel              42604  0
kvm                   150264  1 kvm_intel

Etapa 2. Criar o servidor virtual

Esta seção cobre o seguinte:

  1. Criar a imagem de disco bruta
  2. Instalar o sistema operacional nessa imagem
  3. Executando o servidor virtual

Criar uma imagem de disco bruta

Para criar uma imagem de disco bruta, use este comando:

dd if=/dev/zero of=/mnt/kvmtest.img bs=1024 count=0 seek=$[10*1024*1024]

Com esse comando, você criará uma imagem de 10 GB com o nome de kvmtest.img.

Instalar o sistema operacional nessa imagem

Para instalar o sistema operacional nessa imagem, use este comando:

/usr/bin/qemu-kvm -hda /mnt/kvmtest.img -boot d -cdrom /mnt/SLES-11-DVD-i586-RC3-DVD1.iso -m 1024

Como você não está instalando um pacote de KVM e não está criando a KVM a partir da origem, é possível usar qemu-kvm, mas não qemu-system-x86_64.

-boot d significa que faremos o boot do servidor virtual a partir do CD-ROM. -m 1024 significa que especificamos 1 GB de memória para o servidor virtual.

Após a execução desse comando, a tela de instalação do sistema operacional deve ficar como a Figura 2:

Figura 2. A tela de instalação do sistema operacional
The OS installation screen

Em seguida, instale o sistema operacional normalmente.

Agora, execute o seu servidor virtual

Após a instalação com êxito do sistema operacional, é possível iniciar o servidor virtual com este comando:

/usr/bin/qemu-kvm -hda /mnt/kvmtest.img -m 1024

O seu servidor deve ser executado como um servidor normal em execução no hardware físico.


Etapa 3. Configurar a rede do servidor virtual

Você viu até agora como criar um servidor virtual, mas não a rede para ele. Agora, vou lhe mostrar como criar uma rede de ponte para o servidor virtual:

  1. Instalando o pacote bridge-util
  2. Criando a interface de rede de ponte
  3. Criando o script para controle de rede
  4. Iniciando a rede do sistema operacional de convidado
  5. Configurando a rede do sistema operacional de convidado

A instalação do pacote bridge-util

Precisamos criar uma rede de ponte, portanto, precisamos instalar o pacote bridge-util na seção de gerenciamento de software do sistema operacional. A Figura 3 mostra onde selecionar e instalar o pacote.

Figura 3. Instalando o pacote bridge-util
Installing the bridge-util package

Criar a interface de rede de ponte

Na tela de configuração de rede do sistema operacional, clique em Add a new network interface (consulte a Figura 4):

Figura 4. Adicionando uma nova interface de rede
Adding a new network interface

Deve aparecer uma caixa de diálogo Hardware, como indicado na Figura 5:

Figura 5. A caixa de diálogo Hardware para a nova interface de rede
The hardware dialog for new network interface

Escolha o tipo de dispositivo Bridge; clique em Next para continuar a configuração da rede. Você verá a tela de configuração mostrada na Figura 6:

Figura 6. Tela de configuração de rede
Network configuration screen

Escolha eth0 em "Bridged Devices" e configure um IP estático para a interface de ponte, que é a mesma configuração de eth0 (veja a Figura 7).

Figure 7. Configurando um IP estático para a interface bridge
Configuring a static IP for the bridge interface

Após isso, a configuração eth0 será desmarcada, portanto, clique em Next para continuar, e você voltará à tela de configuração de rede. É possível ver que uma nova interface de rede de ponte foi criada e que a configuração eth0 está desmarcada.

Criar o script de controle de rede

O conteúdo de um script de controle de rede deve ficar algo parecido à Listagem 2:

Listagem 2. Script de controle de rede
#!/bin/sh
set -x
switch=br0
if [ -n "$1" ];then
        tunctl -u `whoami` -t $1
        ip link set $1 up
        sleep 0.5s
        brctl addif $switch $1
        exit 0
else
        echo "Error: no interface specified"
        exit 1
fi

Iniciar o sistema operacional de convidado

Inicie o sistema operacional de convidado com uma interface de rede usando o comando:

/usr/bin/qemu-kvm -hda /mnt/kvmtest.img -m 1024 -net nic,macaddr=52:54:00:12:34:56 -net tap,script=/etc/qemu-ifup

Especifique uma interface de rede ao iniciar o servidor virtual.

Configurar a rede do sistema operacional de convidado

Após o boot do sistema operacional de convidado, configure sua rede normalmente.

Parabéns! Você criou com êxito um servidor virtual construído em KVM.

Recursos

Aprender

Obter produtos e tecnologias

  • A IBM oferece toneladas de documentação e suporte para seus servidores BladeCenter.
  • Com o software de teste IBM, disponível para download diretamente no developerWorks, faça seu próximo projeto de desenvolvimento em Linux.

Discutir

  • Envolva-se na comunidade My developerWorks. Mantenha contato com outros usuários do developerWorks enquanto explora blogs, fóruns, grupos e wikis direcionados a desenvolvedores.

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Linux
ArticleID=472336
ArticleTitle=Criar um servidor virtual baseado em KVM
publish-date=03082010