This is an old revision of the document!
Table of Contents
KVM
virtualizacion
Instalar
1. Entrar en la BIOS del sistema y asegurarse de que el soporte de virtualización está activado
2. Instalar un sistema GNU/Linux reciente (yo pruebo con Debian 6.x=
3. Comprobar que el sistema operativo soporta virtualizacion:
sudo egrep '(vmx|svm)' --color=always /proc/cpuinfo
En caso de que SI soporte virtualizacion veremos lo siguiente:
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 syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm lahf_lm tpr_shadow vnmi flexpriority 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 syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm lahf_lm tpr_shadow vnmi flexpriority
Con la palabra 'vmx' o 'svm' en rojo
4. Instalar los siguientes paquetes:
sudo aptitude install qemu-kvm libvirt-bin virtinst
5. Anyadir el usuario X al grupo:
sudo adduser USUARIO libvirt
6. Configurar red para que soporte bridge. *OJO* si nos equivocamos en este paso perderemos conectividad con el hipervisor, por lo que tiene sentido crear un guion para recuperar la conexion de red inicial y reiniciar el sistema, y llamarlo por ejemplo cada 10 minutos en cron.
6.1 Realizar copia de seguridad de la configuracion de red:
sudo cp /etc/network/interfaces /etc/network/interfaces.bak
6.2 Crear un nuevo archivo de configuracion:
sudo vim /etc/network/interfaces
Con el siguiente contenido:
auto lo iface lo inet loopback # The primary network interface #allow-hotplug eth0 #iface eth0 inet dhcp auto eth0 iface eth0 inet manual auto br0 iface br0 inet static address 192.168.1.200 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.1 bridge_ports eth0 bridge_fd 9 bridge_hello 2 bridge_maxage 12 bridge_stp off dns-nameservers 192.168.1.1
6.3 Creo que es mas seguro reinicar el hipervisor que reiniciar la interfaz de red:
sudo shutdown -r now
Crear VM desde la linea de comando (probar)
Lanzar los comandos desde el hipervisor.
Debian estable desde red configurada con NAT, 512MB de RAM y 2 GB de disco duro:
virt-install \ -n vm1 \ -r 512 \ --vcpus=2 \ --os-variant=debiansqueeze \ --disk /var/lib/libvirt/images/vm1.img,size=2 \ --nographics \ --network user \ -l http://ftp.debian.org/debian/dists/squeeze/main/installer-amd64/ \ -x console=ttyS0,115200
Debian estable desde red configurada con bridge, 512MB de RAM y 2 GB de disco duro:
virt-install \ -n vm1 \ -r 512 \ --vcpus=2 \ --os-variant=debiansqueeze \ --disk /var/lib/libvirt/images/vm1.img,size=2 \ --nographics \ --bridge br0 \ -l http://ftp.debian.org/debian/dists/squeeze/main/installer-amd64/ \ -x console=ttyS0,115200
vmbuilder
http://www.howtoforge.com/virtualization-with-kvm-on-a-debian-squeeze-server
Administrar KVM (y VM) desde una GUI en el cliente
Escenario: NO quiero instalar las X en el hipervisor, y quiero administrar gráficamente el hipervisor y las máquinas virtuales desde otra máquina (cliente) con las X instaladas
1. (Hipervisor) Instalar los siguientes paquetes:
sudo aptitude update; sudo aptitude install netcat socat -R
2. (Hipervisor) Crear el siguiente archivo:
sudo vim /bin/netcatsocket
Con el siguiente contenido:
#!/bin/bash socat - unix-client:$2
3. (Hipervisor) Darle permisos
sudo chmod +x /bin/netcatsocket
4. (Cliente) Instalar paquetes:
sudo aptitude update; sudo aptitude install virt-manager ssh-askpass -R
5. (Cliente) Conectarse al hipervisor:
virt-manager -c qemu+ssh://USUARIO@HIPERVISOR:PUERTO/system?netcat=netcatsocket
Comandos varios
* Listar todas las Maquinas Virtuales (VM):
virsh list --all Id Name State ---------------------------------------------------- - name shut off
* Eliminar por completo una VM:
virsh undefine vm2 Domain vm2 has been undefined
Errores
* Cannot recv data: Host key verification failed. : Connection reset by peer
Sucede al lanzar:
virt-manager -c qemu+ssh://usuario@hipervisor/system
*Solucion*: iniciar una sesion SSH para almacenar las claves del hipervisor en el cliente:
ssh usuario@hipervisor