Qu'est-ce qui se passe dans NFS si 2 ou plusieurs serveurs tentent d'écrire simultanément le même fichier?

StackOverflow https://stackoverflow.com/questions/3832646

  •  26-09-2019
  •  | 
  •  

Question

Je travaille sur une webapp PHP qui fait le redimensionnement automatique des images et je pense à stocker les copies mises en cache sur le NFS monté NAS il est donc facile pour moi de vider le cache lorsque les images sont mises à jour.

La seule chose que je me inquiète est ce qui se passe en général avec NFS si 2 ou plusieurs des serveurs du cluster tentent de créer le même fichier cache d'image en même temps?

Il y a une assez bonne chance que lorsque le cache est vidé pour les mises à jour de contenu qu'ils pourraient entrer en collision comme ça, mais je ne dispose pas d'un excellent moyen de tester ce scénario dans le développement parce que je ne travaille sur une seule boîte.

Toute personne ayant de l'expérience à ce sujet?

Était-ce utile?

La solution

Cela dépend de la façon dont vous ouvrez le fichier. Si vous ouvrez le fichier dans « append mode » alors Unix / Linux en fait écrire le contenu dans un cache jusqu'à ce que vous créez un caractère de nouvelle ligne, puis il colle la nouvelle ligne à la fin du fichier (sur l'écriture du " fin de fichier » motif d'octets) et écrit une nouvelle « fin de fichier ». Dans ce cas, si deux personnes tentent d'écrire dans le même fichier simultanément, puis les deux lignes d'écriture passera par, se fixer une ligne à la fois dans l'ordre où ils ont été reçus. Ainsi, vous pouvez vous attendre quelque chose comme:

This was the old contents
of the file
The first script added
The second script added
this line (script 1)
this line (script 2)

Dans la chance rare que deux commandes « d'écriture » arrivent à la même heure (jusqu'à la précision de la nanoseconde), le système d'exploitation crée en fait un état d'interruption. Il est à l'OS comment il gère cela, mais la plupart simplement générer deux nombres aléatoires pour décider qui commence.

Si vous ouvrez le fichier en mode « écriture » (dites que vous vouliez ajouter du contenu au milieu), alors vous avez réellement pour verrouiller le fichier pour le faire. Le second script PHP renvoie une erreur en disant qu'il ne pouvait pas ouvrir le fichier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top