Crear un grupo de almacenamiento local de virt-manager

Crear un grupo de almacenamiento local de virt-manager

quiero crear ungrupo de almacenamientopara imágenes qcow2 de virt-manageren mi directorio personalpero me sale un error extraño:

Error creating pool: Could not define storage pool: XML error: name /home/matthias/virtual-guests/virt-manager cannot contain '/'

Error al crear el grupo

preguntas

  • ¿Es posible siquiera tener el grupo de almacenamiento en mi directorio de inicio?
  • ¿Necesito permisos especiales para que virt-manager acceda al directorio?

rastreo completo de errores

Traceback (most recent call last): File "/usr/share/virt-manager/virtManager/asyncjob.py", line 89, in cb_wrapper callback(asyncjob, *args, **kwargs) File "/usr/share/virt-manager/virtManager/createpool.py", line 442, in _async_pool_create poolobj = self._pool.install(create=True, meter=meter, build=build) File "/usr/share/virt-manager/virtinst/storage.py", line 531, in install raise RuntimeError(_("Could not define storage pool: %s") % str(e)) RuntimeErError creating pool: Could not define storage poror: Could not define storage pool: XML error: name /home/matthias/virtual-guests/virt-manager cannot contain '/'

Respuesta1

Puedes crear grupos, pero hay algunas cosas a considerar.

  1. El "nombre" realmente no debe tener ningún conjunto de caracteres especiales, como '/'. Si desea crear un grupo /tmp/test, puede nombrarlo "prueba" (en el paso 1 de 2) y dale el camino "/tmp/prueba" (en el paso 2 de 2) y funcionará.

  2. apparmor te detendrá si vas demasiado poco común. Hay un conjunto limitado de rutas que están permitidas de forma predeterminada, si sales de ellas en algún momento.ayudante-virt-aaya no podrá acceder a los archivos. Pero eso sería necesario para permitir el acceso al perfil personalizado por huésped. Consulte las reglas existentes /etc/apparmor.d/usr.lib.libvirt.virt-aa-helpery agregue reglas personalizadas a través de /etc/apparmor.d/local/usr.lib.libvirt.virt-aa-helper Consulte /etc/apparmor.d/local/README para obtener más información al respecto.

  3. Apparmor aún no puede gestionar algunos tipos de grupos. El tipo de grupo predeterminado de virt-manager será "directorio" y eso estará bien. Pero hay tipos más avanzados como "grupos lvm", para esos tipos las reglas de apariencia no se pueden crear para el huésped sobre la marcha (ver error en esto), en estos casos deberá permitir las rutas adicionales que necesita cambiando /etc/apparmor.d/abstractions/libvirt-qemu.

Respuesta2

Sí, puede crear un grupo para su directorio de inicio. Probablemente haya intentado crear un grupo llamado "/home/matthias/virtual-guests/virt-manager" que contenga los símbolos "/". En el futuro, cuando cree un grupo, ingrese un nombre sin el símbolo "/".

Es posible que necesite crear un archivo QCOW2 (archivo de imagen de disco) en otra partición en el futuro; consulte los PASOS de esteGUÍA.
También te puede resultar útil estoGUÍA.

Respuesta3

Crear un archivo de imagen de disco qcow2 en otra partición

Esta guía fue probada en Ubuntu 22.04 LTS, 22.10, 23.04, 23.10.

Vincular automáticamente un directorio a un bloque (montaje automático de particiones)

1. Crea nuevos directorios

$ sudo mkdir /media/username
$ sudo mkdir /media/username/Shared
$ sudo mkdir /media/username/Shared/kvm

¡Importante!Nombre del directorio kvm con letras minúsculas.

2. Ejecute el comando blkid para mostrar información sobre los dispositivos de bloque disponibles. Necesitará un identificador único universal (UUID)

$ sudo blkid

El resultado debería verse así:

/dev/sda1: LABEL="Ubuntu" UUID="azazazaz-azaz-azaz-azaz-azazazazazaz" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Ubuntu" PARTUUID="a1a1a1a1-a1a1-a1a1-a1a1-a1a1a1a1a1a1"
/dev/sda2: LABEL="Shared" UUID="abababab-abab-abab-abab-abababababab" BLOCK_SIZE="4096" TYPE="ext4" PARTLABEL="Shared" PARTUUID="a2a2a2a2-a2a2-a2a2-a2a2-a2a2a2a2a2a2"

3. Edite el archivo fstab.

$ sudo nano /etc/fstab

Agregue las dos líneas siguientes con el UUID correcto en el archivo fstab:

# Shared
UUID=abababab-abab-abab-abab-abababababab       /media/username/Shared        ext4    defaults        0       2

El resultado final debería verse así:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/nvme0n1p3 during installation
UUID=azazazaz-azaz-azaz-azaz-azazazazazaz /               ext4    errors=remount-ro 0       1
# Shared
UUID=abababab-abab-abab-abab-abababababab       /media/username/Shared        ext4    defaults        0       2

4. Ejecutar mount -acomando

$ sudo mount -a

Posibles problemas:

  1. Es posible que el emulador no tenga permisos de búsqueda para la ruta '/media/username/Shared/kvm/Disk.qcow2'
  2. Error al iniciar el dominio: no se puede acceder al archivo de almacenamiento '/media/username/Shared/kvm/Disk.qcow2' (como uid:10101, gid:101): permiso denegado

5. Solucionar problemas de permisos

$ sudo chown root:root '/media'
$ sudo chmod 775 '/media'

$ sudo chown root:root '/media/username'
$ sudo chmod 775 '/media/username'

$ sudo chown username:username '/media/username/Shared'
$ sudo chmod 775 '/media/username/Shared'

$ sudo chown username:username '/media/username/Shared/kvm'
$ sudo chmod 777 '/media/username/Shared/kvm'

Cambiar el grupo de almacenamiento predeterminado para libvirt

6. Enumere los grupos actuales

$ virsh pool-list

Debería recibir el siguiente texto:

Name                 State      Autostart 
-------------------------------------------
default              active     yes 

7. Destruya el grupo predeterminado.

$ virsh pool-destroy default

Debería aparecer el siguiente texto: Valor predeterminado del grupo destruido

8. Desdefinir el grupo

$ virsh pool-undefine default

Debería aparecer el siguiente texto: El valor predeterminado del grupo no ha sido definido

9. Defina un nuevo grupo llamado "predeterminado"

$ virsh pool-define-as --name default --type dir --target /media/username/Shared/kvm

Debería aparecer el siguiente texto: Grupo predeterminado definido

10. Configure el grupo para que se inicie cuando se inicien los demonios libvirt.

$ virsh pool-autostart default

Debería aparecer el siguiente texto: Grupo predeterminado marcado como iniciado automáticamente

11. Iniciar la piscina

$ virsh pool-start default

Debería aparecer el siguiente texto: Pool predeterminado iniciado

12. Comprueba el estado de la piscina.

$ virsh pool-list

Debería recibir el siguiente texto:

Name                 State      Autostart 
-------------------------------------------
default              active     yes 

Ahora, al crear máquinas virtuales, Virtual Machine Manager guardará los archivos qcow2 en el directorio /media/username/Shared/kvm.

Crear una nueva máquina invitada o un archivo qcow2

13. Ejecute virt-manager

$ virt-manager

14. Cree una imagen de disco para la máquina virtual o cree una nueva máquina.

Respuesta4

En mi caso fue un error, no particularmente obvio. Estaba intentando crear un grupo de almacenamiento en el directorio, así quedir:Filesystem Directory

Hay 2 pasos:

  1. Usted especifica typey name, pero aquíname no es camino. Ejemplo:test
  2. El siguiente paso Target Pathle dará la ruta sugerida /var/lib/libvirt/images/**test**. Simple **change**/var/lib/libvirt/images to whatever you want. Example:/libvirt-images-pool2/ (which will result in/libvirt-images-pool2/test```

Nota: es posible que tengas que jugar con la propiedad y el permiso, pero creo que libvirt los soluciona una vez que haces clic en finalizar.

Espero que ayude a alguien.

información relacionada