KVM é um virtualizador opensource onde podemos instalar várias vms virtuais e também amplamente utilizado pelo Openstack .
1) Introdução
Antes de começarmos a instalar o KVM é necessário verificar se o processador suportar virtualização.
[root@kvm ~]# grep -E '(vmx|svm)' /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 ss syscall nx rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx hypervisor lahf_lm tpr_shadow vnmi ept vpid tsc_adjust ibpb ibrs stibp arat spec_ctrl intel_stibp arch_capabilities
Caso o processador tenha suporte aparecerá o output no exemplo acima .
2) Instalação
Vamos configurar apenas uma bridge padrão para teste .
Arquivo /etc/sysconfig/network-scripts/ifcfg-ens33
[root@kvm network-scripts]# cat ifcfg-ens33
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0
HWADDR=00:0c:29:00:00:00
Configuramos a brigde em uma rede de teste 10.0.0.0/24
Arquivo /etc/sysconfig/network-scripts/ifcfg-br0
[root@kvm network-scripts]# cat ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.0.0.14
NETMASK=255.255.255.0
DELAY=0
GATEWAY=10.0.0.1
Reinicie o serviço de network e valide se a bridge está ativa
[root@kvm network-scripts]# systemctl restart network
[root@kvm network-scripts]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c29d244f3 no ens33
virbr0 8000.525400bb5dca yes virbr0-nic
[root@kvm network-scripts]# ip -4 -o a s
...
3: br0 inet 192.168.15.114/24 brd 192.168.15.255 scope global noprefixroute br0\ valid_lft forever preferred_lft forever
Instalação dos pacotes via YUM.
[root@kvm ~]# yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install -y
Abra o arquivo /etc/syconfig/libvirt.conf e descomente as opções abaixo:
LIBVIRTD_ARGS=”listen”
listen_tls = 0
listen_tcp = 1
Inicie e habilite no boot o serviço
[root@kvm ~]# systemctl start libvirtd
[root@kvm ~]# systemctl enable libvirtd
Verifique se a rede padrão está ativa
[root@kvm network-scripts]# virsh net-list
Name State Autostart Persistent
----------------------------------------------------------
default active yes yes
3) Criando vms
Segue abaixo exemplo de comandos para instalação da vm via comando virt-install.
Instalação a partir de uma ISO
virt-install \
--name VMNAME \
--memory 2048 \
--vcpus 2 \
--disk size=8 \
--cdrom /path/to/ISONAME.iso \
--os-variant VARIANTNAME
Instalação a partir da importação de um disco
virt-install \
--name VMNAME \
--memory 2048 \
--vcpus 2 \
--disk /path/to/imported/disk.qcow \
--import \
--os-variant VARIANTNAME
Para configuração de várias vms via automação foi criada a role abaixo:
https://github.com/fabioabreureis/ansible-kvm-cloudinit-prosivion