Diferencia entre revisiones de «Virtualización con libvirt»
(→Paso 3: Configuración de la imagen cloud con virt-customize) |
|||
| (No se muestran 10 ediciones intermedias del mismo usuario) | |||
| Línea 1: | Línea 1: | ||
Para la realización de esta práctica necesitará de una imagen de Debian Cloud que descargaremos de https://cloud.debian.org | Para la realización de esta práctica necesitará de una imagen de Debian Cloud que descargaremos de https://cloud.debian.org | ||
| − | En esta práctica se empleará la imagen descargada de la web Debian Cloud y se hará uso de la herramienta ''' | + | En esta práctica se empleará la imagen descargada de la web Debian Cloud y se hará uso de la herramienta '''virt-customize''' para configurarla. |
A continuación, utilizaremos la imagen de Ubuntu ya configurada para ser importada al software de virtualización '''libvirt'''. | A continuación, utilizaremos la imagen de Ubuntu ya configurada para ser importada al software de virtualización '''libvirt'''. | ||
| Línea 7: | Línea 7: | ||
= Paso 1: Descarga de la imagen Cloud = | = Paso 1: Descarga de la imagen Cloud = | ||
| − | Entramos en http://cloud.debian.org/images/cloud/ y descargamos la imagen de Debian 13 | + | Entramos en http://cloud.debian.org/images/cloud/ y descargamos la imagen de Debian 13. |
Puedes descargarla directamente con la orden ''wget'': | Puedes descargarla directamente con la orden ''wget'': | ||
| Línea 38: | Línea 38: | ||
Esto aumenta en 8 Gbytes la imagen, por tanto, quedas con una imagen de Debian cloud de 10 GBytes. | Esto aumenta en 8 Gbytes la imagen, por tanto, quedas con una imagen de Debian cloud de 10 GBytes. | ||
| − | = Paso | + | = Paso 2: Configuración de la imagen cloud con virt-customize = |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
La orden ''virt-customize'' permite establecer la contraseña del usuario administrador de la imagen que hemos descargado. | La orden ''virt-customize'' permite establecer la contraseña del usuario administrador de la imagen que hemos descargado. | ||
| Línea 82: | Línea 48: | ||
El ejemplo anterior muestra cómo configurar la imagen descargada para que disponga del usuario ''root'', y en este caso, la contraseña es ''coolpass''. | El ejemplo anterior muestra cómo configurar la imagen descargada para que disponga del usuario ''root'', y en este caso, la contraseña es ''coolpass''. | ||
| − | = Paso | + | = Paso 3: Creación de máquina virtual = |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
Para crear una máquina virtual con libvirt, tienes que hacer uso de ''virt-install'': | Para crear una máquina virtual con libvirt, tienes que hacer uso de ''virt-install'': | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
| − | virt-install --name mi-mv --memory 2048 --disk path=/home/usuario/ | + | virt-install --name mi-mv --memory 2048 --disk path=/home/usuario/debian-13-generic-amd64.qcow2 --network network=default --os-variant generic --import |
</syntaxhighlight> | </syntaxhighlight> | ||
| Línea 106: | Línea 64: | ||
* Se especifica que la variante de sistema operativo genérico | * Se especifica que la variante de sistema operativo genérico | ||
* Se indica que se trata de una importación de una imagen con un sistema operativo ya instalado mediante ''--import'' | * Se indica que se trata de una importación de una imagen con un sistema operativo ya instalado mediante ''--import'' | ||
| + | * Opcionalmente, puede indicar ''--vcpus=NUM'' donde NUM es el número de CPUs para su máquina virtual. | ||
'''Recuerde modificar el nombre de la máquina virtual ''mi-mv'' y actualizar la ruta a la imagen Cloud que ha descargado en el paso anterior'''. | '''Recuerde modificar el nombre de la máquina virtual ''mi-mv'' y actualizar la ruta a la imagen Cloud que ha descargado en el paso anterior'''. | ||
| Línea 148: | Línea 107: | ||
tras los cual ya no aparecerá en el listado de ''virsh list --all''. | tras los cual ya no aparecerá en el listado de ''virsh list --all''. | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
'''Nota''': El teclado de la imagen de Ubuntu cloud que corre en la máquina virtual está en inglés, puedes cambiarlo con la siguiente orden: | '''Nota''': El teclado de la imagen de Ubuntu cloud que corre en la máquina virtual está en inglés, puedes cambiarlo con la siguiente orden: | ||
| Línea 200: | Línea 130: | ||
que sirve para obtener los tiempos de arranque del kernel de Linux y de los servicios lanzados por ''systemd'' en tiempo de arranque. | que sirve para obtener los tiempos de arranque del kernel de Linux y de los servicios lanzados por ''systemd'' en tiempo de arranque. | ||
| − | = Paso | + | = Paso 4: Configuración de la red en libvirt = |
Antes de ver los detalles de red, vamos a hacer una pequeña diferencia entre las dos ventanas que tenemos abiertas, virt-manager principal y virt-manager máquina virtual ejecutándose. En la primera tendremos las configuraciones generales y en la segunda tendremos las configuraciones de una máquina virtual concreta, en nuestro caso, la configuración de la máquina virtual. | Antes de ver los detalles de red, vamos a hacer una pequeña diferencia entre las dos ventanas que tenemos abiertas, virt-manager principal y virt-manager máquina virtual ejecutándose. En la primera tendremos las configuraciones generales y en la segunda tendremos las configuraciones de una máquina virtual concreta, en nuestro caso, la configuración de la máquina virtual. | ||
| Línea 289: | Línea 219: | ||
Dispones de más información suplementaria sobre la [[configuración de red en libvirt]]. | Dispones de más información suplementaria sobre la [[configuración de red en libvirt]]. | ||
| − | = Paso | + | = Paso 5: Clonado de máquinas virtuales = |
Vamos a reutilizar la configuración y la máquina virtual creada, para crear varias iguales. Empecemos: | Vamos a reutilizar la configuración y la máquina virtual creada, para crear varias iguales. Empecemos: | ||
| Línea 315: | Línea 245: | ||
* Desde la máquina host, deberíamos de obtener ping hacía las dos máquinas | * Desde la máquina host, deberíamos de obtener ping hacía las dos máquinas | ||
| − | = Paso | + | = Paso 6: Instantáneas de máquinas virtuales = |
Las instantáneas nos permiten almacenar una captura del estado de la ejecución de una máquina virtual en un cierto instante tiempo que podremos restaurar cuando sea necesario. Las instantáneas te serán útiles si tienes trabajo a medio hacer en la máquina virtual, de manera que quieras guardar lo que has hecho para restaurarlo posteriormente. | Las instantáneas nos permiten almacenar una captura del estado de la ejecución de una máquina virtual en un cierto instante tiempo que podremos restaurar cuando sea necesario. Las instantáneas te serán útiles si tienes trabajo a medio hacer en la máquina virtual, de manera que quieras guardar lo que has hecho para restaurarlo posteriormente. | ||
| − | Para crear una instantánea, accedemos a la máquina virtual en ejecución | + | Para crear una instantánea, accedemos a la máquina virtual en ejecución, podemos hacerlo con: |
| − | + | <syntaxhighlight lang="bash"> | |
| − | + | virsh snapshot-create-as --domain mimv --name snapshot-mimv-131125 --description "mi snapshot de prueba" | |
| − | + | </syntaxhighlight> | |
| − | |||
| − | |||
| − | + | La creación de instantáneas toma algo de tiempo, sé paciente. | |
| − | + | Puedes listar los snapshots disponibles para una máquina virtual en: | |
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
| − | + | virsh snapshot-list mimv | |
</syntaxhighlight> | </syntaxhighlight> | ||
| − | + | Puedes resturar un snapshot mediante: | |
| − | |||
| − | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
| − | + | virsh snapshot-revert mimv snapshot-mimv-131125 | |
</syntaxhighlight> | </syntaxhighlight> | ||
| − | + | Puedes almacenar tantas instantáneas como quieras. El nombre ''Captura de pantalla'' es una traducción poco afortunada del inglés ''snapshot'' que se refiere al término ''instantánea''. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | + | = Material complementario = | |
| − | + | Además, existe [[material complementario sobre libvirt]] que no es parte del contenido del examen pero que podría ser de su interés. | |
Revisión actual del 01:44 15 nov 2025
Para la realización de esta práctica necesitará de una imagen de Debian Cloud que descargaremos de https://cloud.debian.org
En esta práctica se empleará la imagen descargada de la web Debian Cloud y se hará uso de la herramienta virt-customize para configurarla.
A continuación, utilizaremos la imagen de Ubuntu ya configurada para ser importada al software de virtualización libvirt.
Contenido
Paso 1: Descarga de la imagen Cloud
Entramos en http://cloud.debian.org/images/cloud/ y descargamos la imagen de Debian 13.
Puedes descargarla directamente con la orden wget:
wget https://cloud.debian.org/images/cloud/trixie/latest/debian-13-generic-amd64.qcow2si comenzó a descargar verás una salida similar a esta:
-2019-08-06 12:26:26-- https://cloud.debian.org/images/cloud/trixie/latest/debian-13-generic-amd64.qcow2
Resolviendo cloud.debian.org (cloud.debian.org)... 91.189.88.89, 2001:67c:1560:8001::8001
Conectando con cloud.debian.org (cloud.debian.org)[91.189.88.89]:443... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 343474176 (328M) [application/octet-stream]
Grabando a: “debian-13-generic-amd64.qcow2”
debian-13-generic-amd64.qcow2. 0%[ ] 2,21M 472KB/s eta 14m 6sEspera hasta que la imagen esté descargada al 100%.
La imagen de Debian cloud viene con 2 GBytes de espacio por defecto, puedes ampliar el tamaño con la siguiente orden antes de usarla en la máquina virtual:
qemu-img resize debian-13-generic-amd64.qcow2 +8GEsto aumenta en 8 Gbytes la imagen, por tanto, quedas con una imagen de Debian cloud de 10 GBytes.
Paso 2: Configuración de la imagen cloud con virt-customize
La orden virt-customize permite establecer la contraseña del usuario administrador de la imagen que hemos descargado.
virt-customize -a debian-13-generic-amd64.qcow2 --root-password password:coolpassEl ejemplo anterior muestra cómo configurar la imagen descargada para que disponga del usuario root, y en este caso, la contraseña es coolpass.
Paso 3: Creación de máquina virtual
Para crear una máquina virtual con libvirt, tienes que hacer uso de virt-install:
virt-install --name mi-mv --memory 2048 --disk path=/home/usuario/debian-13-generic-amd64.qcow2 --network network=default --os-variant generic --importEn la orden anterior:
- Se crea una máquina virtual denominada mi-mv
- La memoria de la máquina virtual es de 2 GBytes (2048 Mbytes)
- El --disk path indica la ruta a la imagen Cloud
- Se usa la configuración de red por defecto.
- Se especifica que la variante de sistema operativo genérico
- Se indica que se trata de una importación de una imagen con un sistema operativo ya instalado mediante --import
- Opcionalmente, puede indicar --vcpus=NUM donde NUM es el número de CPUs para su máquina virtual.
Recuerde modificar el nombre de la máquina virtual mi-mv y actualizar la ruta a la imagen Cloud que ha descargado en el paso anterior.
Tras invocar este lo cual le aparecerá la pantalla de la máquina virtual en una ventana, puede salir de la pantalla al pulsar sobre "File -> Quit".
Para volver acceder a la pantalla de la máquina virtual en cualquier momento, puede hacer:
virt-viewer mi-mvPara parar la máquina virtual:
virsh shutdown mi-mvPara listar las máquinas virtuales existentes y comprobar su estado:
virsh list --allPuede usar grep para localizar su máquina virtual y mostrar el estado en el que está.
virsh list --all | grep mi-mvPara lanzar una máquina virtual apagada, puede usar:
virsh start mi-mvSi necesita borrar una máquina virtual completamente (previamente apagada), puede hacerlo con:
virsh undefine mi-mvtras los cual ya no aparecerá en el listado de virsh list --all.
Nota: El teclado de la imagen de Ubuntu cloud que corre en la máquina virtual está en inglés, puedes cambiarlo con la siguiente orden:
apt install kbdY seleccione el teclado "Spanish".
Además, es conveniente desactivar el siguiente servicio:
systemctl disable systemd-networkd-wait-oneline.servicepues ralentiza el arranque de la máquina virtual en 2 minutos, como se puede ver en:
systemd-analyze blameque sirve para obtener los tiempos de arranque del kernel de Linux y de los servicios lanzados por systemd en tiempo de arranque.
Paso 4: Configuración de la red en libvirt
Antes de ver los detalles de red, vamos a hacer una pequeña diferencia entre las dos ventanas que tenemos abiertas, virt-manager principal y virt-manager máquina virtual ejecutándose. En la primera tendremos las configuraciones generales y en la segunda tendremos las configuraciones de una máquina virtual concreta, en nuestro caso, la configuración de la máquina virtual.
Con esto, veremos dos formas de saber la IP de nuestra máquina virtual:
- En la ventana de nuestra máquina virtual, vamos a cambiar la vista y ver los detalles de nuestra máquina. Vista --> Detalles. Aquí tenemos toda la configuración de nuestra máquina, pero solo vamos a centrarnos en la Interfaz de red virtual, que es donde podremos ver cual es pa IP que tiene asiganada nuestra máquina y cual es la fuente de red que se está utilizando.
- La otra opción es utilizando comandos, podemos utilizar ip address en la consola de nuestra máquina virtual.
$ sudo ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 3d:f0:ee:49:aa:22 brd ff:ff:ff:ff:ff:ff
inet 192.168.100.168/24 brd 192.168.2.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::3e97:eff:fe39:dd20/64 scope link
valid_lft forever preferred_lft foreverQue nos permite comprobar que estamos utilizando la dirección IP 192.168.100.168.
Si la interfaz no muestra una dirección IP, puedes forzar la obtención de una dirección IP desde la máquina virtual para la interfaz ens3 con la orden:
dhcpcd ens3Vamos a comprobar ahora desde un terminal en el anfitrión que alcanzamos a nuestra máquina virtual.
ping 9.9.9.9Deberíamos de ver una salida similar a la siguiente:
PING 192.168.100.168 (192.168.100.168) 56(84) bytes of data.
64 bytes from 192.168.100.168: icmp_seq=1 ttl=64 time=0.397 ms
64 bytes from 192.168.100.168: icmp_seq=2 ttl=64 time=0.409 ms
64 bytes from 192.168.100.168: icmp_seq=3 ttl=64 time=0.321 msSi hubiere algún problema de conectividad la salida sería de este tipo:
PING 192.168.100.168 (192.168.100.168) 56(84) bytes of data.
From 192.168.100.1 icmp_seq=1 Destination Host Unreachable
From 192.168.100.1 icmp_seq=2 Destination Host Unreachable
From 192.168.100.1 icmp_seq=3 Destination Host UnreachableEn dicho caso, puedes forzar la obtención de una dirección IP con la orden:
dhcpcd ens3Esto quiere decir que la configuración de red es incorrecta, o quizás que la dirección IP de tu máquina virtual no es 192.168.100.168 :-).
Puedes configurar para que la máquina virtual obtenga IP por DHCP con la siguiente configuración en /etc/netplan/ens3.yaml al arrancar.
network:
version: 2
renderer: networkd
ethernets:
ens3:
dhcp4: truePara evitar un mensaje de WARNING se hace:
chmod 600 /etc/netplan/ens3.yamltras crear este fichero, puedes aplicar los cambios con:
sudo netplan applyDispones de más información suplementaria sobre la configuración de red en libvirt.
Paso 5: Clonado de máquinas virtuales
Vamos a reutilizar la configuración y la máquina virtual creada, para crear varias iguales. Empecemos:
- Apagamos la máquina virtual si la tenemos encendida, para que nos permita hacer un clonado. Máquina virtual --> Apagar --> Apagar
- En la ventana principal, pulsar botón derecho encima de la máquina virtual que queramos clonar, y pulsar Clonar ...
- En la ventana que nos aparece, por defecto seleccionará la misma red y creará una MAC diferente para la nueva máquina y clonará la imagen que usamos de almacenamiento. Le damos un nuevo nombre a nuestra máquina, y pulsamos en Clonar.
- Repetimos este paso hasta que tengamos toda las máquinas virtuales deseadas, en nuestro caso, solo crearemos una para probar los detalles de red.
Ahora arrancaremos la máquina original y la clonada, y vamos a comprobar que ambas están en la misma red y que pueden verse entre ellas. Como comentamos en el paso anterior, comprobaremos la IP de la máquina virtual original y de la clonada, y haremos ping desde dentro de las máquinas para comprobar que se ven.
Es posible clonar una máquina virtual desde el intérprete de órdenes:
virt-clone --original mi-mv --name mi-mv-clone --auto-cloneEjemplo:
- Máquina original tiene IP 192.168.100.168
- Máquina clonada tiene IP 192.168.100.169
- Desde la máquina original haremos un ping 192.168.100.169
- Desde la máquina clonada haremos un ping 192.168.100.168
- Desde ambas máquinas, comprobaremos que la puerta de enlace es la misma, haciendo un ip route.
- Desde la máquina host, deberíamos de obtener ping hacía las dos máquinas
Paso 6: Instantáneas de máquinas virtuales
Las instantáneas nos permiten almacenar una captura del estado de la ejecución de una máquina virtual en un cierto instante tiempo que podremos restaurar cuando sea necesario. Las instantáneas te serán útiles si tienes trabajo a medio hacer en la máquina virtual, de manera que quieras guardar lo que has hecho para restaurarlo posteriormente.
Para crear una instantánea, accedemos a la máquina virtual en ejecución, podemos hacerlo con:
virsh snapshot-create-as --domain mimv --name snapshot-mimv-131125 --description "mi snapshot de prueba"La creación de instantáneas toma algo de tiempo, sé paciente.
Puedes listar los snapshots disponibles para una máquina virtual en:
virsh snapshot-list mimvPuedes resturar un snapshot mediante:
virsh snapshot-revert mimv snapshot-mimv-131125Puedes almacenar tantas instantáneas como quieras. El nombre Captura de pantalla es una traducción poco afortunada del inglés snapshot que se refiere al término instantánea.
Material complementario
Además, existe material complementario sobre libvirt que no es parte del contenido del examen pero que podría ser de su interés.
