Esta guía explica qué son los grupos de almacenamiento y los volúmenes en Libvirt y cómo cambiar la ubicación predeterminada del grupo de almacenamiento de KVM libvirt usando Virsh programa, Virt-manager y cabina en Linux.
Grupos de almacenamiento y volúmenes en Libvirt
Libvirt proporciona administración de almacenamiento en un sistema host KVM a través de grupos y volúmenes de almacenamiento.
Un grupo de almacenamiento es una cantidad de almacenamiento asignado en el host KVM para que lo utilicen las máquinas virtuales. Un grupo de almacenamiento se divide en volúmenes de almacenamiento y se asigna a las máquinas virtuales como dispositivos de bloque.
En otras palabras, un grupo de almacenamiento es un recurso de almacenamiento en el sistema host KVM que se puede usar para almacenar volúmenes. Y el volumen de almacenamiento es un dispositivo de almacenamiento que se puede asignar a una máquina virtual.
Un volumen de almacenamiento puede ser un dispositivo de bloque, por ejemplo, una partición, un volumen lógico o un archivo. Los discos duros virtuales, los dispositivos de cd/dvd/floppy y las imágenes ISO adjuntas a las máquinas invitadas son ejemplos de volúmenes de almacenamiento.
No puede tener un volumen de almacenamiento sin un grupo de almacenamiento. Primero, debe crear un grupo de almacenamiento y luego crear los volúmenes de almacenamiento dentro del grupo.
De forma predeterminada, todas las máquinas virtuales creadas con libvirt se almacenan en /var/lib/libvirt/images/
localización. Este es el grupo de almacenamiento predeterminado para las imágenes de VM de Libvirt.
Tipos de grupos de almacenamiento
Un grupo de almacenamiento puede ser uno de los siguientes tipos:
- Grupo de directorios:use un directorio como un grupo para alojar archivos de imagen. Los archivos pueden tener uno de los tipos de formato de volumen válidos, como raw, qcow, qcow2, dmg, vmdk, vpc o imágenes ISO.
- Grupo de sistemas de archivos:use un dispositivo de bloque (por ejemplo, partición o grupo LVM) como grupo en lugar de un directorio de uso en un sistema de archivos montado existente.
- Grupo de sistemas de archivos de red:utilice un sistema de archivos de red (p. ej.,
cifs
,glusterfs
,nfs
etc.) como un grupo para almacenar volúmenes de almacenamiento. En lugar de un directorio o un dispositivo de bloque, requiere un host de red y la ruta de un directorio compartido. - Grupo de volúmenes lógicos:use un grupo de volúmenes LVM como un grupo para almacenar volúmenes.
- Grupo de discos:utilice un disco físico como grupo. Los volúmenes se pueden crear agregando particiones al disco.
- Grupo iSCSI:use un objetivo iSCSI para almacenar volúmenes. Todos los volúmenes deben asignarse previamente en el servidor iSCSI.
- Grupo directo iSCSI:esta es una variante del grupo iSCSI. En lugar de usar iscsiadm, usa
libiscsi
. Requiere un host, una ruta que es el IQN de destino y un IQN de iniciador. - Grupo SCSI:use un adaptador de bus de host SCSI casi de la misma manera que un objetivo iSCSI.
- Grupo de rutas múltiples:en la actualidad, las rutas múltiples no son compatibles.
- Grupo RBD:este controlador de almacenamiento proporciona un conjunto que contiene todas las imágenes RBD en un conjunto RADOS. RBD (RADOS Block Device) es parte del proyecto de almacenamiento distribuido Ceph.
- Grupo de Sheepdog:use el clúster de Sheepdog como un grupo para almacenar volúmenes.
- Gluster pool:utilice el sistema de archivos distribuidos de Gluster como un pool.
- Grupo ZFS:use el sistema de archivos ZFS como un grupo.
- Grupo de almacenamiento:utilice el almacenamiento definido por software distribuido de Virtuozzo como un grupo.
A los efectos de esta guía, utilizaremos Directory pool
.
1. Cambiar la ubicación del grupo de almacenamiento predeterminado de KVM Libvirt
Como ya se indicó, todas las imágenes KVM/Libvirt se almacenan en /var/lib/libvirt/images/
ubicación por defecto. Dado que esta ubicación reside en rootfs
partición, es posible que desee moverla a otra ubicación, por ejemplo, $HOME
directorio.
Podemos cambiar la ubicación predeterminada de las imágenes KVM Libvirt VM usando virsh
programa de línea de comandos y su interfaz gráfica llamada Virt-manager , y también Cabina consola web.
Primero, veremos cómo cambiar la ruta del grupo de almacenamiento predeterminado de Libvirt usando virsh
programa.
1.1. Cambie la ubicación del grupo de almacenamiento predeterminado de KVM Libvirt usando el programa virsh
Para encontrar la lista de máquinas virtuales en ejecución, simplemente haga lo siguiente:
$ virsh list --all
Apague si hay alguna VM en ejecución.
$ virsh apagado
$ virsh pool-list
Salida de muestra:
Name State Autostart default active no
Como puede ver, solo tengo un grupo de almacenamiento, que es el default
. Se crea automáticamente cuando instalamos kvm/libvirt
.
$ virsh pool-info default
Salida de muestra:
Name: default UUID: 76f47a3c-7656-4c34-9ab5-c87e5136d532 State: running Persistent: yes Autostart: no Capacity: 369.22 GiB Allocation: 65.60 GiB Available: 303.62 GiB
El resultado anterior enumera detalles como el nombre del grupo de almacenamiento, UUID, estado, persistente, inicio automático, capacidad, espacio asignado del grupo de almacenamiento y el espacio disponible restante.
Dado que vamos a cambiar la ruta del grupo de almacenamiento, también debemos encontrarlo.
virsh
como a continuación:
$ virsh pool-dumpxml default | grep -i path
Salida de muestra:
<path>/var/lib/libvirt/images</path>
Como puede ver en el resultado anterior, el grupo de almacenamiento predeterminado es /var/lib/libvirt/images/
. Vamos a cambiarlo en los pasos siguientes.
virsh
como a continuación:
$ virsh vol-list default | grep "/var/lib/libvirt/images/"
Salida de muestra:
archlinux.img /var/lib/libvirt/images/archlinux.img
Tengo una imagen de máquina virtual Arch Linux en el grupo de almacenamiento predeterminado.
$ virsh pool-destroy default
$ virsh pool-undefine default
$ virsh pool-edit default
Esto abrirá el archivo XML de la máquina virtual en su editor predeterminado.
Encuentra la línea que dice "<path>/var/lib/libvirt/images</path>"
bajo el target
directiva y cámbiela a una nueva ruta de su elección.
En mi caso, he cambiado el <path>
elemento de /var/lib/libvirt/images
a /home/sk/.local/share/libvirt/images
.
<pool type='dir'> <name>default</name> <uuid>76f47a3c-7656-4c34-9ab5-c87e5136d532</uuid> <capacity unit='bytes'>396452147200</capacity> <allocation unit='bytes'>71178977280</allocation> <available unit='bytes'>325273169920</available> <source> </source> <target> <path>/home/sk/.local/share/libvirt/images</path> <permissions> <mode>0755</mode> <owner>1000</owner> <group>1000</group> <label>unconfined_u:object_r:svirt_home_t:s0</label> </permissions> </target> </pool>
Solo asegúrese de que exista la nueva ruta. Si existe, simplemente créelo y asigne suficientes permisos al nuevo directorio de ruta. Guarde el archivo y ciérrelo.
CONSEJO:
Si no existe un grupo de almacenamiento predeterminado por algún motivo, puede crear uno como el siguiente:
$ virsh pool-define-as --name default --type dir --target /home/sk/.local/share/libvirt/images/
Reemplace la ruta de almacenamiento con la suya propia.
$ virsh pool-start default
$ virsh pool-autostart default
$ virsh pool-dumpxml default | grep -i path
Ahora debería ver la nueva ruta.
/home/sk/.local/share/libvirt/images
A partir de ahora, las imágenes virtuales se guardarán en el nuevo grupo de almacenamiento.
$ virsh pool-list Name State Autostart ------------------------------- default active yes
$ sudo systemctl restart libvirtd
$ sudo mv /var/lib/libvirt/images/archlinux.qcow2 /home/sk/.local/share/libvirt/images/
¡Todo listo!
Así es como cambiamos la ubicación del grupo de almacenamiento predeterminado de KVM Libivrt a una nueva desde la línea de comandos usando Virsh
programa. Como puede ver, ¡cambiar la ruta de almacenamiento predeterminada para invitados KVM/Libvirt es bastante fácil!
Ahora veamos cómo cambiar la ruta del grupo de almacenamiento predeterminado de Libvirt usando una aplicación gráfica llamada Virt-manager
.
1.2. Cambie la ubicación del grupo de almacenamiento predeterminado de KVM Libvirt usando Virt-manager
Director virtual , abreviatura de Virtual Machine Manager, es una aplicación de interfaz gráfica de usuario utilizada para administrar máquinas virtuales a través de libvirt
. Para poner esto en otras palabras, Virt-manager es solo una interfaz gráfica para libvirt
.
También puede hacer clic en Editar-> Detalles de conexión desde la interfaz de Virt-manager.
Esto desactivará y eliminará el grupo predeterminado.
Introduzca el nombre del grupo de almacenamiento (por ejemplo, default
en mi caso). Elige el tipo de piscina. En nuestro caso, he seleccionado Directorio del sistema de archivos . Especifique la ubicación de destino y haga clic en Finalizar.
$ sudo mv /var/lib/libvirt/images/archlinux.qcow2 /home/sk/.local/share/libvirt/images/
$ sudo systemctl restart libvirtd
1.3. Cambie la ubicación del grupo de almacenamiento predeterminado de KVM Libvirt usando Cockpit
Cabina es una herramienta gratuita de administración de servidores basada en web para monitorear y administrar servidores Linux a través de un navegador web.
/var/lib/libvirt/images
.
$ sudo mv /var/lib/libvirt/images/archlinux.qcow2 /home/sk/.local/share/libvirt/images/
$ sudo systemctl restart libvirtd
Resolución de problemas
Después de cambiar la ruta del grupo de almacenamiento, probablemente encontrará el siguiente error al iniciar una VM:
Failed to start domain 'Archlinux_default' error: Cannot access storage file '/home/sk/.local/share/libvirt/images/Archlinux_default.img' (as uid:107, gid:107): Permission denied.
Esto se debe a que el qemu
Es posible que el usuario no tenga permiso de lectura en el directorio de almacenamiento. Para solucionarlo, consulte el siguiente enlace:
- [Resuelto] No se puede acceder al archivo de almacenamiento, Permiso denegado Error en KVM Libvirt
Conclusión
En esta guía, discutimos un tema importante de KVM/Libvirt:Grupos de almacenamiento . Aprendimos qué son los grupos de almacenamiento y los volúmenes, y luego cómo cambiar la ubicación predeterminada del grupo de almacenamiento de kvm libvirt usando tres programas, a saber, VIrsh, Virt-manager y Cockpit. Espero que encuentres esto útil.