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
- Kernel-based Virtual Machine
- Hypervisor
- Índice de la Documentación de Red Hat
- Virtualization Getting Started Guide
- Virtualization Deployment and Administration Guide
- Virtualization Tuning and Optimization Guide
- Virtualization Security Guide
- Converting virtual machines from other hypervisors to KVM with virt-v2v
- Libvirt Project
- Virt-Manager Organization
- Linux KVM Organization
- Qemu Organization
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 status ● libvirtd.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.
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.
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:Solamente 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“:
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“.
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.
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.