Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

463
Vistas
Vagrant, carpeta compartida: aproveche inotify sobre NFS

Nuestra aplicación web Symfony2 utiliza el observador Assetic en modo de desarrollo para volver a compilar activos sobre la marcha.

La aplicación web se ejecuta en un contenedor Docker que se ejecuta en una máquina virtual Vagrant (Ubuntu 12.04 Precise). El host es OSX 10.9 Mavericks y comparte la carpeta de código con la VM a través de un recurso compartido NFS (v3) y el código se monta en el contenedor a través de un volumen de host/invitado en Docker.

Dado que inotify parece no ser capaz de detectar modificaciones de archivos a través de NFSv3, el observador funciona en modo de sondeo, que puede ser muy lento (~1/2 minuto para detectar la modificación).

He leído que NFSv4 es compatible con inotify pero no encontré ningún buen recurso al respecto.

¿Hay alguna manera de hacer que NFS/inotify funcionen juntos?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Desafortunadamente, inotify no puede funcionar en NFS. inotify funciona enganchándose a sí mismo en la capa VFS (sistema de archivos virtual), en el kernel. Cada vez que ocurre una modificación, inotify lo sabe, porque la modificación ocurre en la misma máquina, por lo tanto, en el mismo núcleo, lo que hace que todo sea posible.

Con NFS, las modificaciones ocurren en el servidor y se esperan notificaciones en el cliente. Pero el NFS no notifica a los clientes cuando se realiza un cambio. De lo contrario, no escalaría. NFS ha sido diseñado (y operado) para tener miles de clientes en un solo servidor. ¡Imagínese si hace un pequeño cambio y el servidor tiene que enviarlo a todos los clientes!

Por supuesto, podría decir "oye, debería haber un mecanismo de suscripción en el protocolo NFS, para que los clientes puedan decirle al servidor que quieren saber sobre los cambios que ocurren en una ubicación específica". Bueno, NFS fue diseñado hace 30 años, así que perdónalos por no incluir este sistema de suscripción/notificación :-)

No estoy familiarizado con Assetic, pero tal vez podría tener un script personalizado para observar los cambios manualmente y volver a compilar los activos cada vez que detecte un cambio. Simplemente recorra el directorio que contiene el origen de los activos, realice un seguimiento del mtime de cada archivo en una matriz asociativa y, cada vez que detecte un nuevo archivo (o un nuevo mtime), vuelva a compilar. ¡Auge!

Consulte también esta otra pregunta SO sobre inotify y NFS .

over 4 years ago · Santiago Trujillo Denunciar

0

Aquí hay un complemento que tiene como objetivo resolver esto: https://github.com/mhallin/vagrant-notify-forwarder

Simplemente instálelo y vuelva a cargar sus cajas para que las notificaciones de notificación se reenvíen a la máquina de sus invitados:

 vagrant plugin install vagrant-notify-forwarder
over 4 years ago · Santiago Trujillo Denunciar

0

Es posible que le interese esta herramienta llamada Guard, que escucha los cambios de archivos realizados en el sistema operativo host y, luego, en Guest, los extrae y los actualiza. Esto funcionó para mí, y ahora mis activos se actualizan casi instantáneamente.

https://serverfault.com/questions/453826/vagrant-shared-folder-and-file-change-events

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda