KVM: Administrando máquinas virtuales por consola / KVM with virsh


Listar las Máquinas Virtuales

[root@test ~]# virsh list
 Id    Name                           State
----------------------------------------------------
 1     w2003                        running
 2     centos                       running
 4     fedora                       running

Apagar Máquina Virtual

# virsh shutdown centos

Reiniciar Máquina Virtual

# virsh reboot centos

Forzar / Detener Máquina Virtual

# virsh destroy centos

Obtener Información acerca de la Máquina Virtual

# virsh dominfo centos

Obtener información acerca del Nodo

[root@test ~]# virsh nodeinfo
CPU model:           x86_64
CPU(s):              24
CPU frequency:       1596 MHz
CPU socket(s):       1
Core(s) per socket:  6
Thread(s) per core:  2
NUMA cell(s):        2
Memory size:         32814444 kB

Editar Configuración de Máquina Virtual

# virsh edit centos

Instalar Máquina Virtual CenOS 5.5 utilizando un mirror http:

Con 512Mb de RAM, 4GB de espacio en disco y utilizando la interfaz de red br0 (bridged network).

# virt-install \
 -n centos \
 -r 512 \
 --vcpus=1 \
 --os-variant=rhel5.4 \
 --accelerate \
 -v \
 -l http://mirrors.kernel.org/centos/5.5/os/x86_64/ \
 -w bridge:br0 \
 --vnc \
 --disk path=/tmp/centos.img,size=4 

Podemos conectarnos a dicha máquina virtual haciendo un:

# virt-viewer centos

Ubicación de archivos log:

$HOME/.virtinst/virt-install.log
$HOME/.virt-manager/virt-manager.log
/var/log/libvirt/qemu

Ubicación de archivos de configuración:

/etc/libvirt/qemu/centos.xml

Otras herramientas que podemos utilizar para resolver problemas:

ps, pstree, top
vmstat, iostat, lsof
tcpdump, brctl, ip, ifconfig

entre otras.

 

 

Backup de Volúmenes Lógicos en servidor remoto / LVM Snapshot to Remote


Tengo varias máquinas virtuales KVM corriendo en un CentOS. Estas VMs trabajan sobre volúmenes LVM almacenados en /dev/VolGroup01/vm01 , /dev/VolGroup01/vm02, etc
El tema es que necesitaba realizar backups de estos LVMs para tenerlos como respaldo en un equipo backup , y en caso de contingencia levantar la máquina virtual en dicho equipo.
El CentOS que administra todas estas máquinas virtuales, no tiene mas espacio en disco como para hacer snapshots locales de los LVM para luego transferirlos a otro equipo.
Como hacer para mandar estos snapshots a otro equipo? La opción que encontré hasta ahora es la siguiente:

# dd if=/dev/VolGoup01/vm01 | ssh root@equiporemoto “dd of=/var/lib/libvirt/images/vm01.img”

opcionalmente , puedo poner un gzip en el medio para reducir el tamaño del archivo y el tráfico:

# dd if=/dev/VolGoup01/vm01 | gzip |ssh root@equiporemoto “dd of=/var/lib/libvirt/images/vm01.img.gz”

Con esto, teniendo preconfigurada la máquina en el KVM del equipo backup, en caso de necesidad, solo debo descomprimir el archivo y ponerla en marcha.

Si alguien tiene una sicutación similar y le encontró otra vuelta lo escucho ansioso !!!

KVM: Configurar Bridged Networking – Adaptador Puente


Bueno, resulta que entrando en el mundo de la virtualización, este es un tema de consulta permanente, así que merece la presente entrada.

Aplicable a: Fedora / CentOS / Redhat con KVM / qemu / libvirt

– Deshabilitar el Network Manager. Aparentemente el Network Manager no soporta el bridging.

# chkconfig NetworkManager off
# chkconfig network on
# service NetworkManager stop
# service network start

Otra opción para no deshabilitar el servicio es editar el /etc/sysconfig/network-scripts/ifcfg-eth0 y agregar la entrada: “NM_CONTROLLED=no”.

– Creamos las interfaces bridge:

Editar el /etc/sysconfig/network-scripts/ifcfg-eth0 y agregar la entrada:

BRIDGE=br0

Crear el archivo /etc/sysconfig/network-scripts/ifcfg-br0

con un contenido similar a este:

DEVICE=br0
TYPE=Bridge
BOOTPROTO=dhcp
ONBOOT=yes
DELAY=0

Ojo que “Bridge” es case-sensitive y va como en el ejemplo.

– Restarteamos la red

# service network restart

– Configuramos las iptables para que permitan que el trafico sea redirigido forwarded a través del bridge:

# iptables -I FORWARD -m physdev –physdev-is-bridged -j ACCEPT
# service iptables save
# service iptables restart

Opcionalemente podemos evitar que el trafico del puente sea procesado por las reglas de las iptables. Esto lo hacemos modificando los parámetros del kernel en el /etc/sysctl.conf y agregando las siguientes líneas:

net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

Luego, releemos los parametros del kernel:

# sysctl -p /etc/sysctl.conf

– Restarteamos el libvirt daemon:

# service libvirtd reload

Ahora, debería aparecer el “shared physical device” habilitado.

– Podemos chequear el bridge de la siguiente manera:

# brctl show
bridge name     bridge id               STP enabled     interfaces
virbr0          8000.000000000000       yes
br0             8000.000e0cb30550       no              eth0

Ojo que este bridge es completamente independiente del virbr0.

El virbr0 se utiliza unicamente para hacer NAT.