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

    por  • 29 noviembre, 2016 • Desde Linux • 0 Comentarios

    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.

    Artículo original: Qemu-Kvm + Virt-Manager en Debian – Redes de Computadoras para las PYMES

    Deja un comentario

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *