KVM (Kernel-based Virtual Machine)
Trata-se de uma solução de virtualização (Intel VT ou AMD-V). Consiste de um módulo de kernel kvm.ko, que fornece a infra-estrutura de virtualização do núcleo e um módulo de processador específico, kvm-intel.ko ou kvm-amd.ko. O KVM também requer um QEMU modificado.
Com o KVM, é possível executar múltiplas máquinas virtuais rodando imagens de GNU/Linux ou Windows. Cada máquina virtual tem hardware virtual privado: uma placa de rede, disco, placa gráfica, etc.
O componente KVM do kernel está incluído na árvore principal do mesmo desde a versão 2.6.20. O KVM é um software de código aberto.
Após uma breve explicação vamos instalar e configurar o KVM
Primeiramente vamos verificar se há o suporte de Virtualização em seu processador:
# grep -E ‘(vmx|svm)’ –color=auto /proc/cpuinfo
grep -E ‘(vmx|svm)’ –color=auto /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt npt lbrv svm_lock nrip_save
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt npt lbrv svm_lock nrip_save
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt npt lbrv svm_lock nrip_save
Se nada em destaque aparecer, significa se seu processador não oferece suporte a virtualização e você não poderá prosseguir com esse post.
Mas no caso de positivo, instale os pacotes abaixo:
# apt-get install kvm qemu-kvm libvirt-bin virtinst
Vamos adicionar o usuário aos grupos libvirt e kvm:
# usermod -a -G libvirt ricardo
# usermod -a -G kvm ricardo
Obs.: Para que essas mudanças tenham efeito será necessário o logout do usuário e verifique com o comando abaixo se o usuário aparece nos grupos:
# groups
Vamos verificar se o KVM foi corretamente instalado com o comando:
# virsh -c qemu:///system list
Id Name State
———————————-
Se nenhum erro aparecer podemos prosseguir com o post. Se o pacote bridge utils não estiver instalado instale-o:
# apt-get install bridge-utils
E para configurar vamos editar o arquivo /etc/network/interfaces para configurar a bridge:
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet manual auto br0 iface br0 inet static address 10.5.1.60 network 10.5.1.0 netmask 255.255.255.0 broadcast 10.5.1.255 gateway 10.5.1.254 bridge_ports eth0 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge_stp off
Feito isso vamos reiniciar o serviço de rede:
# /etc/init.d/networking restart
CRIAR A MÁQUINA VIRTUAL
Para tal irei utilizar o virt-install para a instalação da máquina virtual (Debian):
# virt-install –connect qemu:///system -n debian_squeeze -r 1024 –vcpus=3 –disk path=/var/lib/libvirt/images/debian_squeeze.img,size=12 -c /dev/cdrom –vnc –noautoconsole –os-type linux –os-variant debiansqueeze –accelerate –network=bridge:br0 –hvm
Starting install... Allocating 'debian_squeeze.img' | 12 GB 00:00 Creating domain... | 0 B 00:00 Domain installation still in progress. You can reconnect to the console to complete the installation process. root@debian:~#
Vamos utilizar um Desktop Ubuntu para a instalação do virt-manager e terminar a instalação
Hypervisor: QEMU/KVM Conexão: Túnel remoto por SSH Nome da máquina: 10.5.1.60










Ja lido um pouco sobre isso em uma revista, parece ser um projeto legal.
Mas vc teria como fazer um comparativo entre outra soluções, tipo vantagens e desvantagens???
Rodrigo,
Esse tipo de comparação pode ser origem de um novo post, como existem hoje algumas soluções de virtualização tanto para linux quanto para windows. Vamos elaborar um post com estas soluções, só não podemos prometer para agora.
Abraços.
Trabalho com o KVM.
Muito boa ferramenta para virtualização. Otimo desempenho e facilidade para backup, principalmente incremental.
mas acho que VMWare e HyperV tem mais recursos.
VLW
Realmente o KVM é muito bom, mas como você mesmo disse outras soluções possuem mais recursos. Acredito que o KVM irá crescer, pois grandes empresas estão investindo nesta tecnologia.
Abraços
O Hyper-V está se tornando realmente interessante na versão do Windows 8 Server.
Particularmente e atualmente, prefiro trababalhar com o XenServer que possui uma versão free bastante funcional.
Artur,
Obrigado pelo comentário e compartilhar sua opinião sobre o Hyper-V e XenServer.
Abraços
Muito bom,
Porém fiquei com uma dúvida, como posso fazer as máquinas virtuais inicializarem quando a máquina for reiniciada, pois pretendo implantar um ambiente de teste virtualizado.
fico grato pela resposta.
Corrigindo a pergunta, como posso fazer as máquinas virtuais iniciarem junto com a máquina real,q uando a máquina real for reiniciada ?
Fico grato pelo retorno.
Edson, esta opção é possível na interface de gerenciamento do Virt-Manager.
Siga os passos:
- Desligue sua VM;
- Selecione a VM e clique em “Abrir”
- Selecione o “I” Azul!!
- Clique em “BootOptions”
Verá a opção “Inicializar máquina virtual na inicialização do host”
Basta marcar esta opção!
Flw!
Olá, cara eu uso KVM aqui na empresa, mas uso pq quando entrei aqui já era esta infra.. pretendo mudar no futuro para hyper-V server 2012, mas não agora…
Mas estou querendo aderir o System Center VMM, vi que o SCVMM tem a opção de gerenciar tb servidores Xen… fiz um teste aqui se conseguiria adicionar um srv KVM, mas n consegui, ai fica minha pergunta…
Tenho como gerenciar um srv KVM via SCVMM? ja que ele tem suporte ao Xen.
Abraços.
Boa tarde.
Estou com uma dúvida com relação a placas virtuais de rede.
No virtualbox, temos 04 placas virtuais de rede, pré-existentes, para serem utilizadas.
No KVM há apenas uma.
Tem como acrescentar mais placas de rede virtuais para que o KVM possa vir a utilizá-las semelhantemente ao virtualbox?
Olá Marcos..acho que entendi sua pergunta.
No VirtualBox já vem 4 interfaces de rede para utilizar, enquanto que no KVM vem apenas uma, quando você cria uma VM. É possível sim adicionar mais placas de rede, assim como qualquer outra interface. Utilizando VirtManager, após abrir a VM e clicar no ( i ) azul { Mostrar detalhes da VM } você poderá clicar em (Adicionar máquina) lá embaixo, depois em ( Network ) acima. Do lado direito você define o dispositivo host ( Nat / bridge ) e clique em (Concluir).
Repita o processo para cada inserção que precise.
Espero ter ajudado
Marcos Dunguel, Você quis dizer em relação a VM ou em relação a virtualização com KVM ?
Quando vc tem mais de uma placa de rede, vc pode usa-las no KVM normalmente como o VirtualBox, exemplo se vc configurar as 4 placas de rede como br0, br1, br2, br3 (seriam os nomes das 4 placas), ai vc poderia usa-las nas VMs, ai vc poderia configurar de 2 modos, tanto gráfico, quanto por texto.
No gráfico vc vai usar o Gerenciador de Maquinas Virtuais, vai na opção da VM e vai adicionar um hardware e vai escolher a rede, dai ela vai perguntar qual rede vc vai querer usar, ai vc vai dizer se é br0,br1,br2 ou br3. Fora esse método, vc pode configurar via texto indo direto no xml da maquina virtual e adicionar a placa de rede, dizendo qual rede vc vai usar tb.. br0,br1,br2 ou br3.
bem.. foi um resumão, acho que o pessoal pode dar mais detalhes, espero que tenha ajudado.
Obrigado Rafael e Sizino.
Nas duas respostas sobre a minha dúvida, vocês utilizaram a interface gráfica.
Como posso fazer a mesma operação só que utilizando a linha de comando?
No aguardo.
Marcos Dunguel
Olá Marcos, via linha de comando você vai fazer o seguinte, no KVM a pasta padrão que os “.XML” ficam salvos é no diretório “/etc/libvirt/qemu/”, acesse ele e com o comando “vim” ou “nano”, ex: “vim VM.xml”
Vai abrir um texto ai vc vai encontrar o seguinte código no meio do texto:
Você pode duplicar esse código e alterar o mac address para n dar conflito e na source bridge vc vai dizer com qual placa de rede vc vai usar para transmissão de dados.
Depois salva e inicia a maquina, vai ter uma nova placa de rede na VM.
o código n apareceu no post anterior
”
“
interface type=’bridge’
mac address=’52:54:00:fb:3c:63′/
source bridge=’br2′/
address type=’pci’ domain=’0×0000′ bus=’0×00′ slot=’0×03′ function=’0×0′/
/interface
Então, pelo que eu entendi, que escolhe o mac address sou eu.
Posso por qualquer valor?
A propósito, essa máquina terá somente uma placa de rede física, algum problema?
Outro sim, é que estou querendo salvar as máquinas virtuais em um hd externo, posso fazer isso?
Sim, sobre o mac vc criando na mão assim vc escolhe, seguindo o padrão;
- sobre usar somente 1 física, não tem problema, lembrando que se for ser uma grande quantidade de carga de dados saindo pelas placas de rede, pode ser que fique lento pq esta usando somente uma saída;
- sobre salvar as VMs num HD Externo, eu n aconselho, pq fica muito lento a execução da VM de um hd Externo, recomendo vc a usar a vm em disco local e fazer backups da vm em hd externo durante o fim de semana via crontab.
espero que tenha ajudado!
Mais uma pergunta, onde e quais são os diretórios/arquivos/pastas que o KVM usa.
Pois estou com uma idéia de colocar estas máquinas virtuais em um outro local.
Motivos: segurança e facilitar o backup das mesmas.
Marcos Dunguel
no:
/etc/libvirt/
ficam as configurações do KVM (qemu) e das VMs
em
/var/lib/libvirt
ficam opções de boot, as imagens da VM
Agora como já falei, cuidado para não colocar num hd Externo e ficar muito lento o processo, pra falar a verdade nunca testei se funciona em hd externo, mas vai ficar muito lento, cuidado.
Obrigado pelas dicas.
Não utilizarei mais o HD externo para armazenar as máquinas que eu criar, vou adicionar mais um HD para isso.
A máquina em si tem 80GB HD, processador Intel xeon de 8 núcleos, placa mãe para servidor Intel, 16GB RAM e colocarei um segundo HD de 1TB, onde instalarei as máquinas virtuais.
No segundo HD irei utilizar LVM para poder ficar mais fácil redimensionar.