Impedir que el sistema de archivos se bloquee cuando desaparece el montaje de NFS de la VM que se monta automáticamente.

0

Realizo mucho desarrollo de aplicaciones web y ejecuto una máquina virtual de Fedora en mi Mac para simular el entorno del servidor. Mientras tanto, ejecuto el IDE en el lado de Mac, y requiere un sistema de archivos local para realizar cambios. Hm.

Resolví este problema exportando los directorios de mi código en Fedora a través de NFS y utilizando el montaje automático en el lado de Mac para montar automáticamente los recursos compartidos según sea necesario:

# fedora:/etc/exports
/var/vhosts/ 192.168.182.1(rw,insecure,all_squash,anonuid=1000,anongid=1000)

# mac:/etc/auto_master
...
/vhosts auto_vhosts

# mac:/etc/auto_vhosts
* fedora:/var/vhosts/&

Me encanta esta configuración porque solo funciona y no requiere mantenimiento ... siempre y cuando mi máquina virtual esté funcionando.

Sin embargo, si suspendo o apago mi VM, todo se vuelve loco. Todas las operaciones relacionadas con el sistema de archivos tardan una eternidad (incluso acciones aparentemente no relacionadas, como lanzar iTunes o apagar mi sistema), y la Consola llena muchos mensajes de KernelEventAgent sobre la montura que no responde.

El problema persiste hasta que recupero el estado de mi máquina virtual.

Una forma de solucionar este problema es dejar siempre en funcionamiento mi VM, pero eso consume una tonelada de RAM, y prefiero poder suspender mi VM, por ejemplo, juegos u otras aplicaciones que requieren un uso intensivo de recursos. Puede que quiera correr.

¿Hay alguna manera de mantener la configuración de mi montaje automático existente, pero tener la flexibilidad de suspender mi VM y hacer que mi Mac deje de bloquear las operaciones del sistema de archivos a la espera de que se agote el tiempo de espera de la conexión de NFS?     

pregunta 30.04.2013 - 17:30

2 respuestas

1

Descubrí que umount -ing el recurso compartido también resolverá el problema cada vez que suspenda mi VM.

No es una solución perfecta, ya que tiene que hacerse manualmente, pero funciona.

Por ejemplo:

  1. sudo umount /vhosts
  2. (suspender VM)
  3. sudo automount -vc

No he probado si el paso 3 es necesario, pero me imagino que no podría doler.

    
respondido por el user5118 28.12.2013 - 19:38
0

Debes agregar "intr" a tus opciones de montaje. Consulte la página del manual de mount_nfs para obtener más información:

man mount_nfs
...
intr    Make the mount interruptible, which implies that file system calls that 
        are delayed due to an unresponsive server will fail with EINTR when a
        termination signal is posted for the process.
    
respondido por el Tim B 30.04.2013 - 19:11

Lea otras preguntas en las etiquetas