Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

465
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!