KVM

De 33system wiki
Saltar a: navegación, buscar

<< Informatica

KVM

Teoría

Práctica

Instalación de los paquetes

# instalamos los paquetes necesarios
apt-get install kvm virt-manager bridge-utils
# ó
apt-get install ubuntu-virt-server python-vm-builder kvm-ipxe

Configuración de red

# creamos un bridge sobre la interfaz de salida
# editamos el archivo /etc/network/interface
## Para ip estatica
====================
auto br0
iface br0 inet static
        address 192.168.0.100
        network 192.168.0.0
        netmask 255.255.255.0
        broadcast 192.168.0.255
        gateway 192.168.0.1
        dns-nameservers 8.8.8.8 8.8.4.4
        bridge_ports eth0
        bridge_fd 9
        bridge_hello 2
        bridge_maxage 12
        bridge_stp off
==================== 

## Para dhcp
====================
auto br0
iface br0 inet dhcp
        bridge_ports eth0
        bridge_fd 9
        bridge_hello 2
        bridge_maxage 12
        bridge_stp off
====================

Conexion al servidor de KVM

# configuramos el servidor para poder exportar las X
vim /etc/ssh/sshd_config
====================================
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#X11UseLocalhost yes
X11UseLocalhost no
====================================
# reiniciamos el servicio de ssh
/etc/init.d/sshd restart
# instalamos el servicio xauth
apt-get install xauth
# nos conectamos al servidor exportando las X
ssh -X kvm.server.com
# ejecutamos el programa virt-manager para gestionar kvm
virt-manager
## en caso de error probar con (sudo virt-manager)

Configuración dhcp statico kvm

# eliminamos la red existente
virsh -c qemu:///system net-destroy default
# editamos la red 
virsh -c qemu:///system net-edit default
vim /var/lib/libvirt/network/default.xml

## mac de la maquina virtual: 52:54:00:10:6e:17
## nombre de la maquina virtual: servidor1
## ip de la maquina virtual: 192.168.122.100
=======================================
...
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254' />
      <host mac='52:54:00:10:6e:17' name='servidor1' ip='192.168.122.100' />
    </dhcp>
...
=======================================

# activamos la red
virsh -c qemu:///system net-start default

Administración de maquinas

Iniciamos una maquina virtual
# listamos todas las maquinas 
virsh list --all
# iniciamos la maquina
virsh start server


Virtualización
# comprobamos si nuestro equipo puede virtualizar
egrep -c '(vmx|svm)' /proc/cpuinfo
# instalamos los paquetes necesarios
apt-get install lvm2 lvm-common

Creacion de imagenes
# creamos un disco qcow2 de 120Gb
qemu-img create -f qcow2 pruebas.img 120G
Conversion de raw a qcow2
# convertimos la imagen1.img a imagen1.qcow2
qemu-img convert -f raw -O qcow2 imagen1.img imagen1.qcow
Crear overlay
# creamos un overlay a partir de una imagen previa
qemu-img create -f qcow2 -b demo.qcow2 demo-overlay.qcow2
Apagar una maquina virtual
# queremos apagar una maquina por la fuerza
virsh destroy demo

Respaldo y Recuperacion

Respaldo con LVM

# save the config
virsh dumpxml puppet > /vms/puppet/puppet.xml
# shutdown the machine
virsh shutdown puppet
# take a snapshot
lvcreate --snapshot --name snap --size 10GB /dev/vg_brcvhost1/lv_vm_puppet
# restart the machine
virsh start puppet
# mount the snapshot
mkdir /snapshot
mount /dev/vg_brcvhost1/snap /snapshot
# backup the image and config xml
rsync -avz /snapshot/puppet.* /vms/backup/
# tidy up
unmount /snapshot
rmdir /snapshot
lvremove /dev/vg_brcvhost1/snap

Recuperación con LVM

# Stop the machine if necessary
virsh shutdown puppet
# copy files from backup to host
rsync -avz /vms/backup/puppet/* /vms/puppet/
# Check the source file location is correct in the xml file and if required reload the config
virsh define /vms/puppet/puppet.xml
# Start the machine
virsh start puppet

Migrar maquinas a un nuevo host

cd /etc/libvirt/qemu/
rsync -Pavz * root@destination.33system.com:/etc/libvirt/qemu/
# en el servidor destino
cd /etc/libvirt/qemu
for i in `ls *.xml`; do virsh define $i ; done

Clonar maquinas virtuales

# revisamos los volumenes de lvm
ls /dev/virt/
# revisamos los archivos xml de las máquinas
cd /etc/libvirt/qemu
# creamos un nuevo xml a partir del original que vamos a clonar
cp protoserver-14.04.xml clon.xml
# editamos el archivo para diferenciarlo del original
vim clon.xml
# cambiamos  <uuid>c61f3f52-4fa3-0506-78b9-54a95a56c01e</uuid>
# cambiamos :%s/protoserver-14.04/clon/g
# cambiamos  <mac address='52:54:00:d2:10:ce'/>
# obtenemos la informacion del original para la creacion del nuevo volumen
lvdisplay | grep /dev/virt/protoserver-14.04 -A 15
# creamos el nuevo volumen
lvcreate -L 15G -n clon virt
# con el servidor original apagado clonamos el volumen
dd if=/dev/virt/protoserver-14.04 | pv | dd of=/dev/virt/clon bs=4096
# definimos el servidor 
virsh define clon.xml
# iniciamos la maquina
virsh start clon

Documentación