rename () À propos de l'atomarité NFS

J'ai un processus qui:

Enregistre un nouveau fichier .tmp.

Les usages

rename()

Appel du système pour remplacer un fichier existant.

L'accès à ce fichier est effectué par un client distant. NFS.

Nous le faisons parce que nous avons besoin de mises à jour des fichiers atomiques et
http://man7.org/linux/man-pages/man2/rename.2.html
spec Il parle:

Si un newpath existe déjà, il sera remplacé atomiquement, il n'y aura donc pas de point dans lequel un autre processus tente d'accéder newpath, Détecter qu'il manque. Cependant, ce sera probablement une fenêtre dans laquelle oldpath, et newpath Reportez-vous à un fichier renommé.

Nous comptons sur un tel comportement.

Mais voici un accroc - Plus récemment, après la transition vers la nouvelle NetApp (Mode de cluster de MODE 7), Nous avons eu un processus qui tombe parfois avec

ENOENT

- Aucun fichier ou répertoire de ce nom.

Sous le "très rare" je veux dire - 4 ou 5 une fois au cours des dernières semaines, le processus que chaque 5 minutes environ.

Je découvre du fournisseur si cela peut être une erreur sur leur serveur NFS.

Mais en fait, j'essaie de déterminer si cette garantie d'atomicité est applicable à NFS. Quelqu'un peut me clarifier si

rename()

La garantie d'atomicité s'applique aux scénarios à plusieurs étages NFS? Je ne suis pas sûr que cette fonctionnalité fonctionnait, mais jamais

garanti

D'abord.

De:
https://tools.ietf.org/html/rfc1813#section-3.3.14
Procédure RENAME renomme le fichier spécifié dans from.name dans le catalogue from.dir, dans to.name dans le catalogue to.dir. L'opération doit être atomique pour le client.

Si cela est pertinent, nous avons des clients SL 6.5, Quel attrait aux entrepôts de données NFS sur ONTAP-CDOT 8.3.
Invité:

Babette

Confirmation de:

Éviter les conditions de la course dans NFS

C'est toujours une tâche fascinante et le seul moyen de contourner l'application sans réécrire les applications - Ceci est monté une ressource partagée avec des options.

sync

Et changer le serveur NFS Pour utilisation

no_wdelay

. Je ne me souviens pas comment installer no_wdelay dans NetApp.

Le côté inversé de cette méthode est que si vous avez de nombreuses opérations d'enregistrement simultanées dans cette ressource partagée, elles travailleront de manière exponentielle. vous pouvez demander NetApp, Comment installer no_wdelay Sur cette ressource, ou simplement les décrire le problème. Ils peuvent avoir de meilleures idées. Je n'ai pas touché NetApp moins 8 années.

Pour répondre aux questions, connectez-vous ou registre