qemu no inicia la misión con una imagen de disco en tmpfs

qemu no inicia la misión con una imagen de disco en tmpfs

Tengo un invitado Windows 2k3r3 de 32 bits (servidor de terminal) con 4 GB de RAM invitado e intercambio.

Creé una imagen de disco separada para el intercambio de invitados y los directorios temporales del usuario.

Tengo suficiente RAM en el sistema host y quiero guardar la E/S del disco moviendo esta imagen a tmpfs, pero el invitado no comienza con este mensaje de error:

qemu-kvm: -drive file=/mnt/tmpfs/vh1-tmp.qcow2,if=none,id=drive-ide0-1-1,format=qcow2,cache=none: no se pudo abrir la imagen del disco│ 4098 qemu 20 0 4949M 4146M 5496 S 28.5 17.2 1h00:31 /usr/bin/qemu-kvm -name vh1 -S -M pc-1.3 -cpu kvm64 -enable- e /mnt/tmpfs/vh1-tmp.qcow2: argumento no válido

Sistema anfitrión:

#nombre-a
Linux srv-vh1.su.local 3.7.10-1.16-default #1 SMP Viernes 31 de mayo 20:21:23 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

srv-vh1:/mnt/tmpfs # versión virsh
Compilado contra la biblioteca: libvirt 1.0.2
Usando la biblioteca: libvirt 1.0.2
Usando API: QEMU 1.0.2
Hipervisor en ejecución: QEMU 1.3.0

srv-vh1:/mnt/tmpfs # gratis
             total de buffers compartidos gratuitos utilizados en caché
Memoria: 24627548 5084724 19542824 0 60640 138792
-/+ buffers/caché: 4885292 19742256
Permuta: 8384444 0 8384444

srv-vh1:/mnt/tmpfs # gato /etc/mtab | greptmpfs
devtmpfs /dev devtmpfs rw,relatime,size=12296608k,nr_inodes=3074152,mode=755 0 0
tmpfs /dev/shm tmpfs rw,relatime 0 0
tmpfs /ejecutar tmpfs rw,nosuid,nodev,relatime,mode=755 0 0
tmpfs /sys/fs/cgroup tmpfs rw,nosuid,nodev,noexec,mode=755 0 0
tmpfs /mnt/tmpfs tmpfs rw,relatime 0 0
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tmpfs /tmp tmpfs rw,relatime 0 0
tmpfs /var/lock tmpfs rw,nosuid,nodev,relatime,mode=755 0 0
tmpfs /var/run tmpfs rw,nosuid,nodev,relatime,mode=755 0 0

srv-vh1:/mnt/tmpfs # df
Sistema de archivos 1K bloques usados ​​Disponible% usado Punto de montaje
devtmpfs 12296608 68 12296540 1% /desarrollo
tmpfs 12313772 0 12313772 0% /dev/shm
tmpfs 12313772 6772 12307000 1% /ejecución
/dev/md1 454131992 218835836 212227596 51% /
tmpfs 12313772 0 12313772 0% /sys/fs/cgrupo
tmpfs 12313772 192 12313580 1% /mnt/tmpfs
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tmpfs 12313772 20 12313752 1% /tmp
tmpfs 12313772 6772 12307000 1% /var/bloqueo
tmpfs 12313772 6772 12307000 1% /var/ejecutar

srv-vh1:/mnt/tmpfs # virsh pool-info tmpfs
Nombre: tmpfs
UUID: 6287028a-9faf-f762-20de-d36d63657be3
Estado: trabajando
Persistente: si
Inicio automático: sí
Capacidad: 11,74 GiB
Valor: 0,00
Disponible: 11,74 GiB

srv-vh1:/mnt/tmpfs # ls -la
total 196
drwxrwxrwt 2 raíz raíz 60 septiembre 9 11:42.
drwxrwxr-x 4 qemu qemu 4096 сен 8 19:39 ..
-rw-rw-rw- 1 raíz raíz 197120 9 de septiembre 11:42 tserver-tmp.qcow2

Qué estoy haciendo mal ?

Respuesta1

Aparentemente, si configura cache=NONE para un archivo de imagen de disco en cualquier sistema de archivos host que no admita Direct IO, Virt-Manager actualmente mostrará un mensaje de error no muy útil que dice "Algo... Argumento no válido" y se negará a iniciar la máquina virtual invitada.

Un ejemplo de un sistema de archivos de este tipo, que no admite Direct IO, es tmpfs. Otro sistema de archivos de este tipo en el que tal vez puedas deshabilitar opcionalmente Direct IO es GlusterFS (del que no había oído hablar antes, también tuve el mismo problema que Sergei y estaba investigando el error). Para tmpfs, no admitir Direct IO parece ser una limitación técnica. o conflicto de diseño en la actualidad y no sé si podrá o podrá rectificarse en el futuro.

En mi caso, puse un disco RAM de 3,6 GB para una máquina virtual invitada Win7Pro que se ejecuta en CentOS7 y configuré cache=NONE para el disco RAM en Virt-Manager. Las otras opciones que utilizó tmpfs img fueron virtio y raw. La máquina virtual se negaría a comenzar con el mismo error o similar diciendo "... Argumento no válido".

Para obtener detalles técnicos y notas directamente del ingeniero y desarrollador de Redhat que codificó el parche para la función cache=NONE y mantiene (?) Virt-Manager (Daniel Berrange), consulte la discusión en el siguiente enlace:

https://bugs.launchpad.net/nova/+bug/959637

Para citar a Daniel de la URL anterior: " > no se pudo abrir la imagen del disco /mnt/vmstore/instances/instance-0000001a/disk: argumento no válido

Probablemente signifique que el sistema de archivos no admite Direct IO. AFAIK, todos los sistemas de archivos excepto tmpfs deberían admitir esto..."

Además, Daniel continúa: "- Entonces, lo que queremos hacer es [....] verificar si el volumen de almacenamiento admite Direct IO. Si es así, use cache=none; de ​​lo contrario, recurra a cache= escritura a través de la cual no utiliza E/S directa, pero aún así es a prueba de fallos."

En mi caso, pude verificar que la configuración cache=NONE para el archivo tmpfs img NO estaba iniciando la VM y mostró el error como se explicó. Pudo iniciar con éxito la máquina virtual si el caché estaba configurado en "Predeterminado" o explícitamente en "Escritura simultánea". No tiene sentido optar por "Reescritura", ya que este sistema de archivos es prescindible y de todos modos estaba completamente en la RAM, por lo que obviamente no usé la Reescritura.

¡Espero que ayude!

Respuesta2

¿Por qué no darle más RAM al invitado para que no sea necesario cambiarlo?

srv-vh1:/mnt/tmpfs # ls -la
total 196
drwxrwxrwt 2 root root     60 сен  9 11:42 .
drwxrwxr-x 4 qemu qemu   4096 сен  8 19:39 ..
-rw-rw-rw- 1 root root 197120 сен  9 11:42 tserver-tmp.qcow2

Noté que tienes el propietario de la carpeta configurado en qemu:qemu. Si estás ejecutando qemu como un usuario diferente, es posible que desees cambiar el propietario del archivo de imagen de raíz a qemu.

Respuesta3

Es un error. tmpfs no es compatible cache=none.

información relacionada