Instalación de una máquina virtual basada en el núcleo (Kernel-based Virtual Machine o KVM) en un sistema Debian Wheezy.
Pre-requisitos
- Habilitar las extensiones de virtualización de hardware (Hardware Virtualization) en el BIOS de su máquina.
- Verificar que el procesador de su máquina es de 64 bits.
El procesador no es de 64 bits si obtiene 0 como resultado de la ejecución del comando
egrep -c ' lm ' /proc/cpuinfo
- Verificar que el procesador de su máquina sea compatible con la tecnología de virtualización.
El procesador no es compatible si obtiene 0 como resultado de la ejecución del comando
egrep -c '(svm|vmx)' /proc/cpuinfo
KVM
Instalar KVM ejecutando el comando
apt-get install qemu-kvm libvirt-bin virtinst
Agregar un usuario (en este ejemplo debianuser) al grupo libvirt
adduser debianuser libvirt
Verificar la instalación de KVM.
virsh net-list --all
virsh list --all
Open VSwitch
Configurar la red de KVM para usar el puente virtual vbridge0 de Open vSwitch.
virsh net-dumpxml default > /tmp/default.xml
virsh net-destroy default
virsh net-undefine default
Extracto del archivo: /tmp/vbridge0.xml
<network>
<name>vbridge0</name>
<forward mode='bridge'/>
<bridge name='vbridge0'/>
<virtualport type='openvswitch'/>
</network>
virsh net-define /tmp/vbridge0.xml
/etc/init.d/libvirt-bin restart
virsh net-list --all
virsh net-start vbridge0
virsh net-list
Activar el inicio automático de la red.
virsh net-autostart vbridge0
Reiniciar la máquina.
reboot
Verificar que la red de KVM esté activada.
virsh net-list
Name State Autostart ----------------------------------------- vbridge0 active yes
Agrupación de almacenamiento
Crear una agrupación de almacenamiento (storage pool) para las máquinas virtuales y para las imágenes de CD/DVD.
mkdir -p /srv/kvm/vms
mkdir /srv/kvm/iso
cd /srv/kvm/iso/
wget http://cdimage.debian.org/debian-cd/7.5.0/amd64/iso-cd/debian-7.5.0-amd64-CD-1.iso
wget http://cdimage.debian.org/debian-cd/7.5.0/amd64/iso-cd/SHA512SUMS
sha512sum -c SHA512SUMS
Contenido del archivo: /tmp/vms.xml
<pool type="dir">
<name>VMS</name>
<target>
<path>/srv/kvm/vms</path>
</target>
</pool>
Contenido del archivo: /tmp/isos.xml
<pool type="dir">
<name>ISO</name>
<target>
<path>/srv/kvm/iso</path>
</target>
</pool>
virsh pool-define /tmp/vms.xml
virsh pool-define /tmp/isos.xml
virsh pool-start VMS
virsh pool-start ISO
virsh pool-autostart VMS
virsh pool-autostart ISO
Verificar la configuración.
virsh pool-list
Creación de una máquina virtual Linux
Crear el disco duro para la máquina virtual.
qemu-img create -f qcow2 /srv/kvm/vms/debian750x64-1cpu1ram48hd.qcow2 48G
Crear la máquina virtual sin interface de red (será después configurada con Open vSwitch).
virt-install \
--connect qemu:///system \
--virt-type kvm \
--name debian750x64-1cpu1ram48hd \
--vcpus 1 \
--ram 1024 \
--disk path=/srv/kvm/vms/debian750x64-1cpu1ram48hd.qcow2,size=48,format=qcow2 \
--cdrom /srv/kvm/iso/debian-7.5.0-amd64-CD-1.iso \
--boot hd,cdrom,menu=on \
--graphics vnc \
--os-type linux \
--os-variant debianwheezy \
--nonetworks
virsh list
Crear una dirección MAC nueva para la interface de red.
MACADDR="52:54:00:$(dd if=/dev/urandom bs=512 count=1 2>/dev/null | md5sum | sed 's/^\(..\)\(..\)\(..\).*$/\1:\2:\3/')"; echo $MACADDR
Configurar la máquina virtual para usar Open vSwitch.
virsh dumpxml debian750x64-1cpu1ram48hd > /tmp/debian750x64-1cpu1ram48hd.xml
Añadir la siguiente porción de XML directamente antes de la etiqueta </devices>.
Extracto del archivo: /tmp/debian750x64-1cpu1ram48hd.xml
<interface type='bridge'>
<mac address='52:54:00:11:22:33'/>
<source bridge='vbridge0'/>
<virtualport type='openvswitch' />
<model type='virtio'/>
</interface>
Detener la máquina virtual.
virsh destroy debian750x64-1cpu1ram48hd
Redifinir la máquina virtual usando la configuración del archivo /tmp/debian750x64-1cpu1ram48hd.xml.
virsh define /tmp/debian750x64-1cpu1ram48hd.xml
Iniciar la máquina virtual.
virsh start debian750x64-1cpu1ram48hd
Comprobar que todo esté funcionando.
virsh list --all
Id Name State ---------------------------------------------------- 3 debian750x64-1cpu1ram48hd running
ovs-vsctl show
aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee Bridge "vbridge0" Port "eth0" Interface "eth0" Port "vbridge0" Interface "vbridge0" type: internal Port "vnet0" Interface "vnet0" ovs_version: "1.4.2"
ifconfig
eth0 Link encap:Ethernet Hardware Adresse 11:22:33:44:55:66 UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1 RX packets:809 errors:0 dropped:0 overruns:0 frame:0 TX packets:694 errors:0 dropped:0 overruns:0 carrier:1 Kollisionen:0 Sendewarteschlangenlänge:1000 RX bytes:425806 (415.8 KiB) TX bytes:89357 (87.2 KiB) Interrupt:45 lo Link encap:Lokale Schleife inet Adresse:127.0.0.1 Maske:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metrik:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 Kollisionen:0 Sendewarteschlangenlänge:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) vbridge0 Link encap:Ethernet Hardware Adresse 11:22:33:44:55:66 inet Adresse:192.168.0.100 Bcast:192.168.0.255 Maske:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1 RX packets:809 errors:0 dropped:0 overruns:0 frame:0 TX packets:659 errors:0 dropped:0 overruns:0 carrier:0 Kollisionen:0 Sendewarteschlangenlänge:0 RX bytes:425806 (415.8 KiB) TX bytes:83531 (81.5 KiB) vnet0 Link encap:Ethernet Hardware Adresse fe:54:00:11:22:33 UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 Kollisionen:0 Sendewarteschlangenlänge:500 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
ping google.com
PING google.com (173.194.113.137) 56(84) bytes of data. 64 bytes from ham02s11-in-f9.1e100.net (173.194.113.137): icmp_seq=1 ttl=54 time=24.9 ms 64 bytes from ham02s11-in-f9.1e100.net (173.194.113.137): icmp_seq=2 ttl=54 time=24.2 ms
Administrador de Máquinas Virtuales
Puede instalar el Administrador de Máquinas Virtuales (Virtual Machine Manager) para manejar las máquinas virtuales desde otro cliente (en este ejemplo un cliente Debian).
apt-get install virt-manager