Categorías
12.04 HowTos

KVM server

Kernel-based Virtual Machine o KVM, (en español, Máquina virtual basada en el núcleo) es una solución para implementar virtualización completa con Linux. Está formada por un módulo del núcleo (con el nombre kvm.ko) y herramientas en el espacio de usuario, siendo en su totalidad software libre. El componente KVM para el núcleo está incluido en Linux desde la versión 2.6.20. KVM permite ejecutar máquinas virtuales utilizando imágenes de disco que contienen sistemas operativos sin modificar. Cada máquina virtual tiene su propio hardware virtualizado: una tarjeta de red, discos duros, tarjeta gráfica, etc. KVM fue creado, y está mantenido, por Qumranet.

(Extraído de Wikipedia)

Requisitos:

Procesador x86, o x86_64, con soporte para virtualización. La tecnología de virtualización recibe la denominación VT en Intel y SVM en AMD.2 KVM puede ejecutar huéspedes Linux/Unix/Windows de 32 o 64 bits

(Extraído de Wikipedia)

Estado actual de desarrollo:

KVM utiliza una versión modificada de QEMU como front-end. Se está trabajando para utilizar más características de la Virtualization Technology presente en las últimas CPUs de Intel (Core 2 Duo E6300 en adelante para equipos de escritorio y Core 2 Duo T5600 y superiores para equipos portátiles) y AMD. Se han realizado pruebas de rendimiento con Xen (utilizando virtualización hardware en lugar de paravirtualización) y, para algunas cargas de trabajo, ha resultado ser más rápido. Para otras, no tanto.4 Una de las características que KVM posee es el «overcommit» que es el uso de memoria excediendo aún la memoria física del host.

(Extraído de Wikipedia)

Verificaciones de hardware previo a la instalación:

No todos los equipos soportan virtualización por hardware (es imprescindible para tener buen desempeño de KVM Server). Para verificar que el equipo soporta debe ejecutarse el comando:

< egrep -c '(vmx|svm)' /proc/cpuinfo

Y devolver un valor 1 o superiosr Se debe verificar que la virtualización este habilitada desde el bios. Es conveniente virtualizar en equipos con soporte a 64bit ya que permiten administrar procesos de mayor tamaño, que es uno de los elementos que van a limitar a la máquinas virtuales. Para validar si el equipo soporta kernels de 64bits.

< egrep -c ' lm ' /proc/cpuinfo

Debe devolver un valor igual o mayor a 1.

Procedimiento:

El primer paso a realizar es actualizar el sistema.

< sudo aptitude update
< sudo aptitude safe-upgrade

Y a continuación se deben instalar los siguientes paquetes.

< sudo aptitude install kvm libvirt-bin ubuntu-vm-builder bridge-utils virt-manager virt-viewer

Finalizada la instalación de los paquetes, el usuario se debe volver a loguear para que la nueva sesión pertenezca al grupo

Configuración de Red:

Partiendo de un archivo original «/etc/network/interfaces» ( Configurado acorde a la necesidad de la red local )

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
   address 192.168.21.150
   network 192.168.21.0
   netmask 255.255.255.0
   broadcast 192.168.21.255
   gateway 192.168.21.1

Se configura el «Bridge» (puente) para que sea utilizado por las máquinas virtuales. Recuerde adaptar eso a las necesidades de su red.

auto lo
iface lo inet loopback
auto br
iface br0 inet static
  address 192.168.21.150
  network 192.168.21.0
  netmask 255.255.255.0
  broadcast 192.168.21.255
  gateway 192.168.21.1
  bridge_ports eth0
  bridge_fd 9
  bridge_hello 2
  bridge_maxage 12
  bridge_stp off

Crear una Máquina Virtual: Gui:

Consola:

< virt-install \
  --connect qemu:///system \
  --name=www \
  --hvm \
  --ram 512 \
  --disk /var/vms/www.img,size=20 \
  --network bridge=br0 \
  --cdrom=/var/lib/libvirt/images/isos/ubuntu-12.04.2-server-amd64.iso \
  --vnc \
  --noautoconsole \
  --os-type=linux \
  --os-variant=ubuntuprecise

El sistema de archivos QCOW2 permite generar snapshots de las máquinas virtuales, pero el formato RAW directo es más rápido.

< virt-install \
  --connect qemu:///system \
  --name=www \
  --hvm \
  --ram 512 \
  --disk /var/vms/www.img,format=qcow2,size=20 \
  --network bridge=br0 \
  --cdrom=/var/lib/libvirt/images/isos/ubuntu-12.04.2-server-amd64.iso \
  --vnc \
  --noautoconsole \
  --os-type=linux \
  --os-variant=ubuntuprecise

Para imprimir en pantalla la lista de variantes de sistemas operativos optimizados se debe ejecutar:

< virt-install --os-variant list

Administración:

Consola: Con el comando virsh podemos ejecutar acciones sobre las máquinas virtuales:

< virsh
> Welcome to virsh, the virtualization interactive terminal. 
> 
> Type: 'help' for help with commands 
> 'quit' to quit Los comandos básicos
  • autostart [NombreHuésped] -> Marca al huésped para ser iniciado automáticamente usando se inicia el anfitrión.
  • define [ArchivoDefinicion] -> Actualiza o incorpora la configuración del huésped cuando se modifica el xml que lo define (/etc/libvirt/qemu/huesped.xml)
  • destroy [NombreHuésped] -> Apaga el huésped desconectandolo (equivalente a tirar el cable de alimentación)
  • list -> lista los huespedes registrados en el servidor.
  • shutdow [NombreHuésped] -> apaga el huésped amablemente
  • start [NombreHuésped] -> prende el huésped

LVM para los discos virtuales (avanzado):

Si se están usando volúmenes lógicos para los discos, primero se debe listar los grupos disponibles y luego crear el volumen lógico.

El comando vgdisplay lista los grupos de volumenes disponibles en el servidor.

< vgdisplay 
 --- Volume group ---
 VG Name vkvms
 System ID 
 Format lvm2
 Metadata Areas 1
 Metadata Sequence No 2
 VG Access read/write
 VG Status resizable
 MAX LV 0
 Cur LV 1
 Open LV 1
 Max PV 0
 Cur PV 1
 Act PV 1
 VG Size 3.56 TiB
 PE Size 4.00 MiB
 Total PE 933168
 Alloc PE / Size 12800 / 50.00 GiB
 Free PE / Size 920368 / 3.51 TiB
 VG UUID Bef5NJ-FLy2-jGfj-ZN8m-ERAE-5DhH-qDrzAV

Se procede a crear el volumen lógico (LV) (voy a crear un disco para un motor de base de datos) con el mismo nombre que va a llevar la máquina «virtualmysql-mmsx-02» dentro del grupo de volúmenes «vkvms».  La capacidad asignada a este LV es de 50Gb.

< lvcreate -n mysql-mmsx-02 -L 50g vkvms

Verificamos que el volumen lógico este disponible.

< lvdisplay 
 --- Logical volume ---
 LV Name /dev/vkvms/mysql-mmsx-02
 VG Name vkvms
 LV UUID MjCXIx-ocn2-Bk9l-uPSB-GOf5-7M5A-bRA80t
 LV Write Access read/write
 LV Status available
 # open 0
 LV Size 50.00 GiB
 Current LE 12800
 Segments 1
 Allocation inherit
 Read ahead sectors auto
 - currently set to 256
 Block device 252:0

Para crear una máquina virtual con el volumen lógico como disco (se debe utilizar la ruta que muestra el comando lvdisplay) se debe ejecutar el siguiente comando:

< virt-install \
 --connect qemu:///system \
 --name=mysql-mmsx-02 \
 --hvm \
 --ram 2048 \
 --disk /dev/vkvms/mysql-mmsx-02 \
 --network bridge=br0 \
 --cdrom=/var/lib/libvirt/images/isos/ubuntu-12.04.2-server-amd64.iso \
 --vnc \
 --noautoconsole \
 --os-type=linux \
 --os-variant=ubuntuprecise

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.