inotify nécessite la prise en charge du noyau de travailler. Lorsqu'une application utilise un répertoire, il demande au noyau de l'informer lorsque ces changements se produisent. Lorsque le changement se produit, en plus de l'écriture de ces changements sur le disque, le noyau informe également sur l'observation des processus.
Sur un NFS distant de la machine, le changement n'est pas visible pour le noyau; il arrive entièrement à distance. NFS est antérieure à inotify et il n'y a pas de réseau de soutien de niveau dans NFS, ou quelque chose d'équivalent.
Si vous voulez contourner ce problème, Vous pouvez exécuter un service sur le serveur de stockage (depuis le noyau va toujours voir les changements du système de fichiers) que les courtiers inotify demandes pour des machines à distance, et de transmettre les données pour les clients distants.
Edit: Il me semble étrange que NFS doit être mise en cause pour son manque de soutien pour inotify.
NFS (Network File System) est un système de fichiers distribués protocole développé à l'origine par Sun Microsystems en 1984, article de wikipédia
Cependant:
Inotify (inode notifier) est un sous-système du noyau Linux qui sert à étendre les systèmes de fichiers à remarquer des changements au système de fichiers. [...] Il a été inclus dans le réseau principal au noyau Linux depuis la version 2.6.13 (18 juin 2005 ) [...]. article de wikipedia
Il est difficile de s'attendre à un portable protocole réseau/application pour un noyau de la fonction mise au point d'un système d'exploitation différent et qui semblait de plus de vingt ans plus tard. Même si elle n'a inclure des extensions pour elle, ils ne seraient pas disponibles ou utile sur d'autres systèmes d'exploitation.
*accent mis la mienne en tous les cas
Un autre problème avec ce; Permet de supposer que nous ne sommes pas à l'aide d'un réseau à tous, mais plutôt un système de fichiers local avec une bonne inotify support: ext3 (à supposer que sa montée en /mnt/foo
). Mais au lieu d'un vrai disque, le système de fichiers est monté à partir d'un périphérique de bouclage ; et le fichier sous-jacent est accessible à un emplacement différent dans la vfs (par exemple, /var/images/foo.img
).
Maintenant, vous n'êtes pas censé modifier monté les systèmes de fichiers ext3, Mais il est encore raisonnable de le faire si le changement est pour le contenu du fichier de métadonnées.
Supposons donc que d'un savant de l'utilisateur modifie le système de fichier de l'image (/var/images/foo.img
) dans un éditeur hexadécimal, le remplacement d'un fichier de contenu avec quelques autres données, tandis que dans le même temps, un inotify montre est en observant le même fichier sur le système de fichiers monté.
Il n'y a aucun moyen raisonnable on peut l'arranger pour inotify à toujours informer l'observation des processus de ce genre de changement. Bien qu'il existe probablement des fluctuations qui pourraient être prises pour faire ext3 avis et l'honneur de le changer, rien de cela ne s'appliquerait, par exemple, le xfs drtiver, qui est par ailleurs tout à fait similaire.
Ni devrait il. Tu triches!. inotify ne peut vous informer des changements qui se sont produits à travers le vfs au point d'être regardé. Si les changements survenus à l'extérieur que VFS, en raison d'une modification des données sous-jacentes, inotify ne peux pas vous aider, vous et n'est pas conçu pour résoudre ce problème.
Avez-vous envisagé d'utiliser une file d'attente de messages de notification de réseau?