8 votes

/etc/exports & option de montage

Dans mon serveur Linux, j'ai les options suivantes dans /etc/exports

/home *(rw,sync,no_subtree_check,no_root_squash)

Et je monte à partir d'un Mac en utilisant

mount -t nfs -o resvport,rw,noatime,soft,intr,rsize=32768,wsize=32768,timeo=900,retrans=3,proto=tcp,vers=3,async 192.168.1.121:/home /Volumes/home

Comme vous pouvez le voir, le serveur spécifie le paramètre sync mais mon option de montage consiste à utiliser async Lequel sera donc utilisé ?

23voto

Matthew Ife Points 22370

sync y async ont des significations différentes pour les deux situations.

sync dans le contexte du client fait que toutes les écritures dans le fichier sont validées par le serveur. async entraîne l'écriture de toutes les données dans le fichier no être transmis au serveur immédiatement, en général seulement lorsque le fichier est fermé. Ainsi, un autre hôte ouvrant le même fichier ne verra pas les modifications apportées par le premier hôte.

Notez que NFS offre une cohérence "proche de l'ouverture", ce qui signifie que d'autres clients ne peuvent pas se connecter. Quoi qu'il en soit supposer que les données d'un fichier ouvert par d'autres sont cohérentes (ou franchement, qu'elles sont cohérentes du tout si vous n'utilisez pas la fonction nfslock pour ajouter une forme de synchronisation entre les clients).

sync dans le contexte du serveur (par défaut) fait que le serveur ne répond pour dire que les données ont été écrites que lorsque le backend de stockage l'informe effectivement que les données ont été écrites. était écrit. async dans le contexte du serveur permet à ce dernier de répondre simplement comme si le fichier avait été écrit sur le serveur, sans tenir compte du fait qu'il l'a effectivement écrit. C'est beaucoup plus rapide, mais aussi très dangereux, car les données peuvent avoir du mal à être validées !

Dans la plupart des cas, async du côté du client et sync du côté du serveur. Cela permet d'obtenir un comportement assez cohérent par rapport à la manière dont NFS est censé fonctionner.

1voto

ckujau Points 613

En gros, ce que MIfe a dit ; ces options sont sensibles au contexte. Les éléments importants se trouvent dans les pages de manuel :

exports(5)
async   This option allows the NFS server to violate the NFS protocol and reply to
        requests before any changes made by that request have been committed to 
        stable storage  (e.g. disc drive).

et sur le client (Mac) :

mount_nfs(8)
async   Assume that unstable write requests have actually been committed to stable
        storage on the server, and thus will not require resending in the event
        that the server crashes.

Note : sur un Mac, mount_nfs(8) stipule que le async ne sera honorée que si l'option nfs.client.allow_async dans l'option nfs.conf(5) est également activée (peut également être réglée via sysctl(8) )

Vous pouvez donc demander async sur le client et les requêtes d'écriture supposeront simplement qu'elles ont atteint le serveur. Puisque vous avez spécifié sync sur le serveur, il répondra aux demandes du client lorsque les données auront été écrites sur le disque. (Bien sûr, vos systèmes de fichiers locaux sur le serveur peuvent également être montés avec "sync", bien que "async" semble être la valeur par défaut).

Un mot sur vos options de montage sur le client : * rsize & wsize sont fixés à 32768 par défaut pour les montages TCP. * proto=tcp est la valeur par défaut, et sera remplacé par udp si le serveur ne le supporte pas. * vers=3 est la valeur par défaut, il sera remplacé par 2 si le serveur ne le supporte pas.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X