{{tag>Brouillon Réseaux FS}}
= Notes NFS
Voir :
* [[NFS - Exécuter NFSv3 derrière un pare-feu]]
* GPFS
findmnt --fstab -t nfs
== Serveur
Voir :
* ''rclone serv''
Si SNMP
skipNFSInHostResources 1
Disable NFS4 delegations
# On the NFS server
echo 0 > /proc/sys/fs/leases-enable
sysctl -w fs.leases-enable=0
== Client NFS
Mapper un utilisateur - monter le FS pour un utilisateur précis
all_squash,anonuid=1010,anongid=1010
l'option **no_root_squash** spécifie que le root de la machine sur laquelle le répertoire est monté a les droits de root sur le répertoire). L'option **root_squash** est l'option par défaut
=== NFS3
Dans les logs Oracle
WARNING:NFS file system /import/oracle/plop mounted with incorrect options(rw,sync,vers=3,rsize=32768,wsize=32768,acregmin=0,acregmax=0,acdirmin=0,acdirmax=0,hard,noac,proto=tcp,timeo=600,retrans=2,sec=sys,addr=sicile)
WARNING:Expected NFS mount options for ADR directory: rsize>=4096,wsize>=4096,hard
WARNING:Expected NFS mount options for ADR directory: The 'noac' option should not be set
WARNING: The directory specified for the diagnostic_dest location has
WARNING: incorrect mount options. [/app/oracle/oradata/plop/dump]
NFSv3
hard,bg,intr,vers=3,proto=tcp, rsize=32768, wsize=32768,…
rsize/wsize. Determines the NFS request size for reads/writes. The values of these parameters should match the values for nfs.tcp.xfersize on the NetApp system. A value of 32,768 (32kB) has been shown to maximize database performance in the environment of NetApp and Solaris. In all circumstances, the NFS read/write size should be the same as or greater than the Oracle block size. For example, specifying a DB_FILE_MULTIBLOCK_READ_COUNT of 4 multiplied by a database block size of 8kB results in a read buffer size (rsize) of 32kB.
NetApp recommended mount options for Oracle single-instance database on Solaris:
rw,bg,vers=3,proto=tcp,hard,intr,rsize=32768,wsize=32768,forcedirectio
NetApp recommended mount options for Oracle9i RAC on Solaris:
rw,bg,vers=3,proto=tcp,hard,intr,rsize=32768,wsize=32768,forcedirectio,noac
nas1:/shared_config /u01/shared_config nfs rw,bg,hard,nointr,tcp,vers=3,timeo=600,rsize=32768,wsize=32768,actimeo=0 0 0
nas1:/shared_grid /u01/app/11.2.0/grid nfs rw,bg,hard,nointr,tcp,vers=3,timeo=600,rsize=32768,wsize=32768,actimeo=0 0 0
nas1:/shared_home /u01/app/oracle/product/11.2.0/db_1 nfs rw,bg,hard,nointr,tcp,vers=3,timeo=600,rsize=32768,wsize=32768,actimeo=0 0 0
nas1:/shared_data /u01/oradata nfs rw,bg,hard,nointr,tcp,vers=3,timeo=600,rsize=32768,wsize=32768,actimeo=0 0 0
NFS4
el01sn01:/export/common/patches /u01/common/patches nfs4 rw,bg,hard,nointr,rsize=131072,wsize=131072,proto=tcp
NFS performance can come close to FC
Requires
Network topology be clean
no routers, fast switches
Mount options correct :
Rsize / wsize at maximum
* Avoid actimeo=0 and noac
* TCP configuration :MTU 9000 (tricky)
Exemple AWS EFS (NFS)
yum install -y nfs-utils
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 MOUNT_TARGET_IP:/ efs
The Amazon EFS client uses the following mount options that are optimized for Amazon EFS:
* _netdev
* nfsvers=4.1 – used when mounting on EC2 Linux instances
* rsize=1048576
* wsize=1048576
* hard
* timeo=600
* retrans=2
* noresvport
#rpm -ql nfs-utils
rpm -q --filesbypkg nfs-utils |grep bin
nfs-utils /sbin/mount.nfs
nfs-utils /sbin/mount.nfs4
nfs-utils /sbin/nfs_cache_getent
nfs-utils /sbin/rpc.statd
nfs-utils /sbin/umount.nfs
nfs-utils /sbin/umount.nfs4
nfs-utils /usr/sbin/exportfs
nfs-utils /usr/sbin/mountstats
nfs-utils /usr/sbin/nfsidmap
nfs-utils /usr/sbin/nfsiostat
nfs-utils /usr/sbin/nfsstat
nfs-utils /usr/sbin/rpc.gssd
nfs-utils /usr/sbin/rpc.idmapd
nfs-utils /usr/sbin/rpc.mountd
nfs-utils /usr/sbin/rpc.nfsd
nfs-utils /usr/sbin/rpc.svcgssd
nfs-utils /usr/sbin/rpcdebug
nfs-utils /usr/sbin/showmount
nfs-utils /usr/sbin/sm-notify
nfs-utils /usr/sbin/start-statd
== Selinux
#mount -t nfs -o vers=3,context="system_u:object_r:container_file_t:s0" :/shared_folder /opt/ufm/files
mount -t nfs4 -o context="system_u:object_r:container_file_t:s0" :/shared_folder /opt/ufm/files
== Diag
Diag
tshark -Y 'tcp.port == 2049' -r tcpdump.pcap > tcpdump.txt
== Pb
=== Pb avec la commande ''df''
A la place il est possible d'utiliser la commande ''df -l''
sudo umount -a -t nfs -l
sudo umount -a -t nfs4 -l
sudo umount -a -t autofs -l
=== Err access denied by server while mounting
# mount -t nfs 127.0.0.1:/exports/plop1 /mnt/nfs
mount.nfs: access denied by server while mounting 127.0.0.1:/exports/plop1
# chmod 1777 /exports/plop1
# chmod 1777 /exports
# mount -t nfs 127.0.0.1:/exports/plop1 /mnt/nfs
=== Err Read-only file system
#specific IP addresses to appear first, IP ranges after.
#/exports/plop1 192.168.56.0/24(ro,sync,no_subtree_check)
#/exports/plop1 192.168.56.101(rw,sync,no_subtree_check)
/exports/plop1 192.168.56.101(rw,sync,no_subtree_check)
/exports/plop1 192.168.56.0/24(ro,sync,no_subtree_check)
=== Pb tail latency
How do I use the noac option
Source https://partners-intl.aliyun.com/help/en/nas/latest/67dca4
==== Problem
A user mounts the same network file system on two ECS servers (ESC-A and ESC-B). The user writes data in append mode on ECS-A, and monitors file content changes with the ''tail -f'' command on ECS-B.
After data is written on ECS-A, the file content changes on ECS-B may experience latency of up to 30 seconds.
However, if a file is directly opened (such as using ''vi'') on ECS-B under the same conditions, the updated content is visible immediately.
==== Analysis
This is related to the mount option and the ''tail -f'' implementation.
The user uses the following mount command : ''mount -t nfs4 /mnt/''
For file systems mounted on ECS-B using the NFS protocol, the kernel maintains a copy of metadata cache for the file and directory attributes. The cached file and directory attributes (including permission, size, and time stamp) are used to reduce the ''NFSPROC_GETATTR RPC'' requests.
The ''tail -f'' command uses ''sleep+fstat'' to monitor changes to the file attributes (primarily the file size), read files, and then output the results. However, file content output by using the ''tail -f'' command is dependent on the ''fstat'' result. Due to the metadata cache, the ''fstat'' command may not be monitoring real-time file attributes. Therefore, even if the file has been updated on the NFS server, the ''tail -f'' command cannot detect in real time whether the file has been changed or not, resulting in the latency.
==== Solution
Use the ''noac'' option of the ''mount'' command to disable the caching of file and directory attributes. The command is as follows:
mount -t nfs4 -o noac /mnt/
== Autres
Cluster multi DC (NFS4 RH8)
rw, sync, noac, actime=0, _netdev
Option exports : ''rw, sync''