Desde Linux Luigys Toro  

Qemu-Kvm + Virt-Manager en Debian – Redes de Computadoras para las PYMES

En mayo del 2013 publicamos en este blog, sendos artículos dedicados a la instalación de Qemu-Kvm en Debian 7 “Wheezy“. Tienen vigencia aún. Como el panorama de la instalación y configuración en Debian 8 “Jessie” ha cambiado un poco, queremos actualizar el procedimiento.

No estaría demás que antes de sumergirse en la lectura de éste Cómo se hace, visitarán el artículo anterior Virtualización en Debian: Introducción – Redes de Computadoras para las PYMES, para tener un pequeño antecedente sobre el tema.

Sitios que sugerimos visitar

Observación

  • Copiamos la salida de los comandos, pues son mucho más didácticos que cualquier otra composición escrita por nosotros. Sugerimos lean detenidamente los mensajes de los diferentes mandatos, ya que es una de las mejores formas de aprender sin tener que, obligadamente, acudir a una búsqueda en Internet. Al menos, esa es nuestra opinión.

Instalación

Partimos de la instalación básica de un Debian “Jessie” según vimos en Instalación de estación de trabajo – Redes de Computadoras para las PYMES. Después, instalamos el Escritorio o Desktop de nuestra preferencia según vimos en 6 Escritorios en Debian – Redes de Computadoras para las PYMES.

Para este artículo escogimos el Cinnamon Desktop. Lo seleccionamos porque a muchos lectores les encanta este ambiente de escritorio. 😉

Los datos generales de nuestra workstation son:

Nombre del Dominio      : desdelinux.fan
Nombre del Equipo       : sysadmin
FQDN                    : sysadmin.desdelinux.fan
Dirección IP            : 192.168.10.3
SubNet                  : 192.168.10.0/24
Usuario normal          : buzz
Nombre completo usuario : Debian First OS Buzz

Comprobamos el soporte para la virtualización

En una consola ejecutamos:

buzz@sysadmin:~$ egrep -c "(svm|vmx)" /proc/cpuinfo
2

En nuestro caso el comando nos devuelve que poseemos 2 CPUs con el debido soporte.

Paquetes que instalaremos

Ante todo, nos enteramos de que vamos a instalar mediante los siguientes comandos:

buzz@sysadmin:~$ aptitude search kvm
p   ikvm                            - Java virtual machine for the CLI          
v   kvm                             -                                           
p   libicsharpcode-nrefactory-ikvm5 - C# Parsing and Refactoring Library - IKVM 
p   libikvm-native                  - native library for IKVM.NET               
p   nova-compute-kvm                - OpenStack Compute - compute node (KVM)    
p   qemu-kvm                        - QEMU Full virtualization on x86 hardware

buzz@sysadmin:~$ aptitude show nova-compute-kvm
Paquete: nova-compute-kvm                        
Nuevo: sí
Estado: sin instalar
Versión: 2014.1.3-11
Prioridad: extra
Sección: net
Desarrollador: PKG OpenStack <openstack-devel@lists.alioth.debian.org>
Arquitectura: all
Tamaño sin comprimir: 50.2 k
Depende de: adduser, dpkg-dev, qemu-kvm | kvm, libvirt-daemon-system,
            nova-common, nova-compute, python-libvirt
Predepende de: dpkg (>= 1.15.6~)
Recomienda: guestmount
Tiene conflictos con: nova-baremetal, nova-compute-lxc, nova-compute-qemu,
                      nova-compute-uml, nova-compute-xen
Proporciona: nova-compute-hypervisor
Descripción: OpenStack Compute - compute node (KVM)
 OpenStack is a reliable cloud infrastructure. Its mission is to produce the
 ubiquitous cloud computing platform that will meet the needs of public and
 private cloud providers regardless of size, by being simple to implement and
 massively scalable. 
 
 OpenStack Compute, codenamed Nova, is a cloud computing fabric controller
 designed to be modular and easy to extend and adapt. In addition to its
 "native" OpenStack API, it also supports the Amazon EC2 API, and it supports
 many different database backends (including SQLite, MySQL, and PostgreSQL),
 hypervisors (KVM, Xen), and user directory systems (LDAP, SQL). 
 
 This is a dependency package for compute nodes using KVM.
Página principal: http://www.openstack.org/software/openstack-compute/
  • Nosotros no vamos a instalar el paquete OpenStack, pues no necesitamos de toda una infraestructura de virtualización para la Nube – Cloud. 😉
buzz@sysadmin:~$ aptitude show qemu-kvm
Paquete: qemu-kvm                                
Nuevo: sí
Estado: sin instalar
Multi-Arch: foreign
Versión: 1:2.1+dfsg-12+deb8u1
Prioridad: opcional
Sección: misc
Desarrollador: Debian QEMU Team <pkg-qemu-devel@lists.alioth.debian.org>
Arquitectura: amd64
Tamaño sin comprimir: 60.4 k
Depende de: qemu-system-x86 (>= 1.7.0+dfsg-2~)
Tiene conflictos con: kvm
Rompe: qemu-system-x86 (< 1.7.0+dfsg-2~)
Reemplaza: qemu-system-x86 (< 1.7.0+dfsg-2~)
Proporciona: kvm
Descripción: QEMU Full virtualization on x86 hardware
 QEMU is a fast processor emulator.  This package provides just a wrapper script
 /usr/bin/kvm which run qemu-system-x86 in kvm mode for backwards compatibility.
 
 Please note that old qemu-kvm configuration files (in /etc/kvm/) are no longer
 used.
Página principal: http://www.qemu.org/

Instalamos la plataforma de virtualización Qemu-Kvm

buzz@sysadmin:~$ sudo aptitude install qemu-kvm libvirt-bin bridge-utils
Se instalarán los siguiente paquetes NUEVOS:     
  augeas-lenses{a} bridge-utils dmeventd{a} ebtables{a} ethtool{a} 
  hdparm{a} ipxe-qemu{a} libaio1{a} libapparmor1{a} libaugeas0{a} 
  libboost-thread1.55.0{a} libdevmapper-event1.02.1{a} libfdt1{a} 
  libiscsi2{a} liblvm2cmd2.02{a} libnetcf1{a} libnuma1{a} librados2{a} 
  librbd1{a} libreadline5{a} libseccomp2{a} libspice-server1{a} 
  libvdeplug2{a} libvirt-bin libvirt-clients{a} libvirt-daemon{a} 
  libvirt-daemon-system{a} libvirt0{a} libx86-1{a} libxen-4.4{a} 
  libxenstore3.0{a} libxml2-utils{a} lvm2{a} netcat-openbsd{a} pm-utils{a} 
  powermgmt-base{a} qemu-kvm qemu-system-common{a} qemu-system-x86{a} 
  qemu-utils{a} seabios{a} vbetool{a} 
0 paquetes actualizados, 42 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 8,422 kB/14.8 MB de ficheros. Después de desempaquetar se usarán 53.3 MB.
¿Quiere continuar? [Y/n/?] y

Importante

  • Como estamos instalando sobre un Desktop, necesitaremos una interfaz para le gestión del KVM. Si estuviéramos instalando sobre uno o más servidores, es opcional tanto la instalación del Desktop, como la del Virtual Machine Manger, que instalaremos mas adelante. Con una sola instancia de esta interfaz gráfica, podemos administrar todos los servidores en los que hayamos instalado los paquetes qemu-kvm, libvirt-bin y bridge-utils.
  • El principal demonio – daemon de la virtualización es el libvirtd.  Para conocer su estado ejecutamos:
buzz@sysadmin:~$ sudo systemctl status libvirtd
buzz@sysadmin:~$ sudo service libvirtd status
  • Si en la salida de cualquiera de los comandos anteriores, leemos algunas líneas en color rojo, es saludable reiniciar el servicio libvirtd y volver a comprobar, o reiniciar el equipo y comprobar. El scriptlibvirtd.service que maneja systemd, se encuentra en /lib/systemd/system/libvirtd.service. Observemos que podemos invocar a ese demonio de la forma antigua también, o sea:
buzz@sysadmin:~$ sudo service libvirtd
Usage: /etc/init.d/libvirtd {start|stop|restart|reload|force-reload|status|force-stop}

buzz@sysadmin:~$ sudo service libvirtd restart
buzz@sysadmin:~$ sudo service libvirtd statuslibvirtd.service - Virtualization daemon
   Loaded: loaded (/lib/systemd/system/libvirtd.service; enabled)
   Active: active (running) since dom 2016-11-27 11:23:53 EST; 8min ago
     Docs: man:libvirtd(8)
           http://libvirt.org
 Main PID: 1112 (libvirtd)
   CGroup: /system.slice/libvirtd.service
           └─1112 /usr/sbin/libvirtd
  • El script ubicado en /etc/init.d/qemu-system-x86, es el encargado de insertar los módulos necesarios para el correcto funcionamiento del Qemu-Kvm. Después que efectúa su trabajo de forma satisfactoria, termina. Si consultamos su estado, nos devolverá que es 0 o exitoso.
buzz@sysadmin:~$ sudo systemctl status qemu-system-x86
● qemu-system-x86.service - LSB: QEMU KVM module loading script
   Loaded: loaded (/etc/init.d/qemu-system-x86)
   Active: active (exited) since dom 2016-11-27 11:18:17 EST; 18min ago
  Process: 172 ExecStart=/etc/init.d/qemu-system-x86 start (code=exited, status=0/SUCCESS)
  • Si somos curiosos y queremos conocer cuales son los módulos y su ubicación, ejecutamos:
buzz@sysadmin:~$ sudo updatedb

buzz@sysadmin:~$ locate kvm | grep ko
/lib/modules/3.16.0-4-amd64/kernel/arch/x86/kvm/kvm-amd.ko
/lib/modules/3.16.0-4-amd64/kernel/arch/x86/kvm/kvm-intel.ko
/lib/modules/3.16.0-4-amd64/kernel/arch/x86/kvm/kvm.ko

buzz@sysadmin:~$ ls -l /lib/modules/3.16.0-4-amd64/kernel/arch/x86/kvm/
total 1016
-rw-r--r-- 1 root root  97120 jul 17  2015 kvm-amd.ko
-rw-r--r-- 1 root root 223680 jul 17  2015 kvm-intel.ko
-rw-r--r-- 1 root root 715920 jul 17  2015 kvm.ko

Instalamos el Virtual Machine Manager

buzz@sysadmin:~$ sudo aptitude install virt-manager
[sudo] password for buzz: 
Se instalarán los siguiente paquetes NUEVOS:     
  gir1.2-gtk-vnc-2.0{a} gir1.2-libvirt-glib-1.0{a} 
  gir1.2-spice-client-glib-2.0{a} gir1.2-spice-client-gtk-3.0{a} 
  libvirt-glib-1.0-0{a} python-ipaddr{a} python-libvirt{a} 
  python-urlgrabber{a} virt-manager virt-viewer{a} virtinst{a} 
0 paquetes actualizados, 11 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 2,041 kB de ficheros. Después de desempaquetar se usarán 12.5 MB.
¿Quiere continuar? [Y/n/?] y
  • Después de instalado el paquete, consultamos:
buzz@sysadmin:~$ cat /usr/share/doc/virt-manager/README.Debian 
Access Control
==============
Access to the libvirt socket is controlled by membership in the "libvirt"
group. If you want to manage virtual machines as non root you need to add your
user to that group or you have to use the session uris like qemu:///session.

See also /usr/share/doc/libvirt-bin/README.Debian.

 -- Guido Guenther <agx@sigxcpu.org>  Thu, 04 Jun 2010 11:46:03 +0100
  • Lo anterior nos indica que debemos hacer al usuario buzz miembro del grupo libvirt para tener acceso a la interfaz recién instalada:
buzz@sysadmin:~$ sudo adduser buzz libvirt
Añadiendo al usuario `buzz' al grupo `libvirt' ...
Añadiendo al usuario buzz al grupo libvirt
Hecho.
  • Ahora cerramos la sesión y la iniciamos nuevamente. Después de entrar en nuestro Cinnamon Desktop, vamos al Menú –> Administración –> Gestor de Máquina Virtual, y accedemos a la interfaz de administración de nuestro KVM.virt-manager

Redes Virtuales en el Gestor de Máquina Virtual

A pesar de que el Gestor de Máquina Virtual es fácil de utilizar y que con la práctica diaria podemos obtener una Maestría en su uso, ofrecemos un Tip sobre cómo modificar la red virtual que por defecto instala el Qemu-Kvm.

Navegamos por su Menú –> Editar –> Detalles de la conexión, y vamos a la pestaña “Redes Virtuales“. Si hacemos clic sobre el enlace configuración IPv4, se muestra la Red, y además nos informa que el servidor DHCP está activado para ella. Ese servidor se ejecuta gracias al paquete dnsmasq-base, el cual está instalado.

Para más información al respecto, consulte el archivo: /usr/share/doc/libvirt-bin/README.Debian.redes

Si queremos cambiar la configuración de la red “default“, procederemos de la siguiente forma:

buzz@sysadmin:~$ sudo cp /etc/libvirt/qemu/networks/default.xml  /etc/libvirt/qemu/networks/default.xml.original
buzz@sysadmin:~$ cat /etc/libvirt/qemu/networks/default.xml.original
<network>
  <name>default</name>
  <bridge name="virbr0"/>
  <forward/>
  <ip address="192.168.122.1" netmask="255.255.255.0">
    <dhcp>
      <range start="192.168.122.2" end="192.168.122.254"/>
    </dhcp>
  </ip>
</network>

buzz@sysadmin:~$ sudo nano /etc/libvirt/qemu/networks/default.xml
<network>
  <name>default</name>
  <bridge name="virbr0"/>
  <forward/>
  <ip address="192.168.100.1" netmask="255.255.255.0">
  </ip>
</network>

buzz@sysadmin:~$ sudo systemctl restart libvirtd
buzz@sysadmin:~$ sudo systemctl status libvirtd

Sino habíamos cerrado el Gestor de Máquina Virtual antes de reiniciar el demonio libvirtd, recibiremos el siguiente mensaje de error, lo cual es normal que suceda:errorSolamente debemos cerrar el Virt-Manager y volverlo a abrir. Volvemos a la parte de la configuración de Redes Virtuales, y comprobamos que la red default, ya tiene los parámetros modificados.

Sugerimos se habilite el inicio automático de la Red default, marcando la casilla “Autoniciar“.

Almacenamiento en el Virt-Manager

Otro aspecto que queremos tocar es el del Almacenamiento – Storage en el Virt-Manager. Por defecto, la carpeta del sistema para guardar todas las imágenes de las máquinas virtuales, está ubicada en /var/lib/libvirt/images. Supongamos que tenemos un disco duro totalmente dedicado a esa función, y lo tenemos montado en /home/vms. Para adicionarlo al Virt-Manager, navegamos por su Menú –> Editar –> Detalles de la conexión –> Almacenamiento. En la esquina inferior izquierda hacemos clic sobre el botón “+“. Entonces se despliega un Asistente para “Crear depósito de almacenamiento“:almacenamiento

Observemos los diferentes tipos de almacenamiento que podemos escoger. Detallada documentación encontraremos en Virtualization Deployment and Administration Guide, de la Red Hat. Nosotros selecionaremos la primera “dir: Directorio del Sistema de Archivos“.almacenamiento2 almacenamiento3

Al terminar el asistente el nuevo depósito de almacenamiento queda Activo y con su inicio de forma automática.

Primera máquina virtual

Debemos navegar por, y leer las, diferentes opciones que nos ofrece el Virt-Manager. Observemos en la penúltima imagen de las mostradas más adelante, que cuando llegamos a la edición de la máquina virtual recién creada y antes de Iniciar la instalación, en la opción “Procesor“, marcamos la casilla “Configuración” Copiar configuración de CPU del equipo anfitrión. Puede que No sea necesario el hacerlo, pero nos atenemos a la recomendación de Debian y a nuestra práctica sobre servidores HP.

Para más información al respecto, consulte el archivo: /usr/share/doc/libvirt-bin/README.Debian.crea-vm01 crea-vm02 crea-vm03 crea-vm04 crea-vm05 crea-vm06 crea-vm07 crea-vm08 crea-vm09

Solo añadiremos que desde hace más tres de años, tenemos en producción en dos empresas a esta plataforma de virtualización. A pesar de fallas en el suministro eléctrico, computadoras normales “adaptadas” para que funcionen como servidores, y de todas las dificultades que puedan existir en un país subdesarrollado como el nuestro, el Qemu-Kvm siempre ha funcionado correctamente, así como los servidores virtuales que se ejecutan sobre él.

Esperamos les sea de utilidad este artículo.

¿Próxima entrega?

Virsh en Debian

Recuerden que esta será una serie de artículos de Redes de Computadoras para las PYMES.  ¡Los estaremos esperando!.

El artículo Qemu-Kvm + Virt-Manager en Debian – Redes de Computadoras para las PYMES aparece primero en Qemu-Kvm + Virt-Manager en Debian – Redes de Computadoras para las PYMES.

Leave A Comment

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