Comenzaremos por deshabilitar SELinux, que es la herramienta de seguridad de Linux, en teoría, sólo debería desactivarlo de forma temporal y posteriormente añadir las reglas precisas para que funcione según le digamos.
Lea el artículo: Cómo crear máquinas virtuales en Linux usando KVM (máquina virtual basada en kernel)
Deshabilitar SELinux
# Utilice "setenforce" en la mayoría de las distribuciones lea el manual:
man setenforce
[root@localhost opt]# vi /etc/sysconfig/selinux
SELINUX=disabled
Instalación de Virsh
Si hemos seguido la entrada anterior donde aprendimos a virtualizar con KVM/QEMU pero en modo gráfico, tendremos ya prácticamente todos los paquetes necesarios instalados a falta de virt-install, de lo contrario los instalaremos:
[root@localhost ~]# yum install virt-install libvirt bridge-utils
Esto instalará las siguientes dependencias:
libvirt-client
libvirt-python
virt-manager-common
libvirt-daemon
libvirt-daemon-config-network
libvirt-daemon-config-nwfilter
libvirt-daemon-driver-interface
libvirt-daemon-driver-lxc
libvirt-daemon-driver-network
libvirt-daemon-driver-nodedev
libvirt-daemon-driver-nwfilter
libvirt-daemon-driver-qemu
libvirt-daemon-driver-secret
libvirt-daemon-driver-storage
Iniciamos el demonio:
[root@localhost ~]# service libvirtd start
Conectamos con el hipervisor:
[root@localhost ~]# virsh -c qemu:///system
Bienvenido a virsh, la terminal de virtualización interactiva.
virsh #
Listamos las máquinas (evidentemente no existirá ninguna):
virsh # list
Id Nombre Estado
----------------------------------------------------
Salimos de la consola Virsh:
virsh # quit
Crear máquina virtual
Lo primero es asegurarnos de que disponemos de una iso en nuestro sistema anfitrión. Nosotros tenemos nuestra ISO en el directorio:
[root@localhost opt]# ls /var/lib/libvirt/iso
linuxmint-17.1-cinnamon-64bit.iso
Y lo segundo es crear un directorio donde almacenar nuestras futuras imágenes, es decir nuestras máquinas virtuales (si no existiese):
[root@localhost opt]# mkdir /var/lib/libvirt/images
Lanzamos la instalación de la máquina
[root@localhost iso]# virt-install --connect qemu:///system --name myserver \
--memory 512 --disk path=/var/lib/libvirt/images/myserver.qcow2,size=10 \
--vcpus=1 -c /var/lib/libvirt/iso/linuxmint-17.1-cinnamon-64bit.iso \
--vnc --os-type linux --network bridge=virbr0 --noautoconsole \
--hvm --keymap es
Iniciando la instalación...
Asignando 'myserver.img' | 10 GB 00:00:00
Creando dominio... | 0 B 00:00:00
La instalación del dominio continúa en curso. Puede reconectarse a
la consola para completar el proceso de instalación.
[root@localhost opt]#
Donde:
--connect : conectar con el hipervisor
--name : indicamos el nombre de la máquina
--memory : ram en MB
--disk : especificar el disco de la nueva máquina. Se pueden combinar opciones por ejemplo --disk path=[ruta],size=10,cache=none
--vcpus : indicar el número de cpus virtuales. Igualmente podemos encadenar opciones como --vcpus 5,maxcpus=10 para definir un rango o incluso ser mas específicos con --vcpus sockets=2,cores=4,threads=2
-c : también podemos usar --cdrom y como podemos imaginar se usan para indicar el medio de instalación
--vnc : habilitamos escritorio vnc para poder conectar desde un cliente
--os-type : tipo de sistema operativo que va a ser instalado en la máquina virtual
--network : indicamos la interfaz de red, en nuestro caso tenemos configurado un puente a una red virtual mediante la interfaz virbr0
--noautoconsole : hará que el proceso continúe en segundo plano. Luego podremos continuar en modo
gráfico a través de virt-manager
--hvm : la máquina virtual tendrá una arquitectura full-virtualization. Para utilizar la para-virtualización deberíamos de utilizar --paravirt
--keymap : el teclado será configurado para el Español
Nota: Podemos conocer mas parámetros si utilizamos la opción –help:
$ virt-install --help
Ahora podemos abrir virt-manager desde el anfitrión y seguir con la instalación del sistema:
[root@localhost ~]# virt-manager
Iniciar, suspender, reanudar, reiniciar y apagar la máquina virtual
- Conectar con el hipervisor: virsh -c qemu:///system
- Iniciar la máquina virtual: start myserver
- Suspender la máquina virtual: suspend myserver
- Reanudad la máquina virtual: resume myserver
- Reiniciar la máquina virtual: reboot myserver
- Apagar una máquina virtual: shutdown myserver
Otros comandos
- “Matar” la máquina virtual: destroy myserver
- Listar máquinas virtuales running: virsh list
- Listar todas las máquinas: virsh list –all
- Obtener información sobre una máquina: dominfo myserver
- Ver CPU máquina: vcpuinfo hypnos
- Ver el estado de la máquina virtual: domstate myserver
- Listar volúmenes de almacenamiento: pool-list
- Obtener información sobre el volumen físico: pool-info myvol
- Editar las características del volumen: pool-edit myvol
- Listar todos los discos virtuales: vol-list myvol
- Hacer que una máquina inicie automáticamente: virsh autostart myserver
- Hacer que una máquina deje de iniciar al inicio: virsh –disabled autostart myserver
- Editar información de la máquina virtual: edit myserver
- Ver redes virtuales configuradas: net-list
- Obtener información sobre las redes: net-dumpxml <red>
- Crear una red virtual: net-create /etc/libvirt/qemu/networks/myred.xml ## Este archivo debe de existir, al final del post dejo una plantilla
- Definir/elegir una red virtual: net-define /etc/libvirt/qemu/networks/myotrared.xml
- Iniciar la red virtual: net-start myotrared
- Iniciar automáticamente una red virtual: net-autostart myred
- Editar una red virtual: net-edit myotrared
- Destruir una red virtual: net-destroy myre
Plantilla de red
[root@localhost opt]# vi /etc/libvirt/qemu/networks/myred.xml
<network>
<name>myred</name>
<uuid>6cbbd170-c641-8d6c-ae79-6791b3288426</uuid>
<forward mode='nat'/>
<bridge name='virbr0' stp='on' forwardDelay='0' />
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.100' end='192.168.122.200' />
</dhcp>
</ip>
</network>
Convertir una imagen
Convertir una imagen con formato raw a qcow2:
[root@localhost opt]# qemu-img convert -f raw -O qcow2 -o preallocation=metadata /ruta_imagen/nombre_imagen.img /ruta_imagen/nombre_imagen.qcow2
ó
[root@localhost opt]# qemu-img convert -f raw imagen.raw -O qcow2 imagen.qcow2