NFS优化分为server端和client端
server:
#mount参数设置noatime
#修改 tcp_slot_table_entries=128
client:
timeo
测试tool:
nmon
nfsstat
nfsiostat
iostat
mountstats
Server端
mount $i:/home/fxbox/arfiles /mnt/$i \
-o ro,fg,retry=1,retrans=1,intr,timeo=10,nolock,\
nocto,noacl,async,soft,ac,actimeo=600
#shows the list of nfs mounts
nfsstat -m
# 查看所有挂载,包括网络的
cat /proc/mounts
# 查看本机有哪些mount
#exportfs命令
#常用选项
#-a 全部挂载或者全部卸载
#-r 重新挂载
#-u 卸载某一个目录
#-v 显示共享目录
exportfs -arv
# 查看从某台服务器挂载的目录:
showmount -e 172.16.22.247
/etc/fstab 文件包含了如下字段,通过空格或 Tab 分隔:
<file system> <dir> <type> <options> <dump> <pass>
- <file systems> - 要挂载的分区或存储设备.
- <dir> - <file systems>的挂载位置。
- <type> - 要挂载设备或是分区的文件系统类型,支持许多种不同的文件系统:ext2,ext3, ext4, reiserfs,xfs, jfs, smbfs,iso9660, vfat, ntfs,swap 及 auto。 设置成auto类型,mount 命令会猜测使用的文件系统类型,对 CDROM 和 DVD 等移动设备是非常有用的。
- <options> - 挂载时使用的参数,注意有些mount 参数是特定文件系统才有的。一些比较常用的参数有:
- auto - 在启动时或键入了mount -a 命令时自动挂载。
- noauto - 只在你的命令下被挂载。
- exec - 允许执行此分区的二进制文件。
- noexec - 不允许执行此文件系统上的二进制文件。
- ro - 以只读模式挂载文件系统。
- rw - 以读写模式挂载文件系统。
- user - 允许任意用户挂载此文件系统,若无显示定义,隐含启用noexec, nosuid, nodev 参数。
- users - 允许所有 users 组中的用户挂载文件系统.
- nouser - 只能被 root 挂载。
- owner - 允许设备所有者挂载.
- sync - I/O 同步进行。
- async - I/O 异步进行。
- dev - 解析文件系统上的块特殊设备。
- nodev - 不解析文件系统上的块特殊设备。
- suid - 允许 suid 操作和设定 sgid 位。这一参数通常用于一些特殊任务,使一般用户运行程序时临时提升权限。
- nosuid - 禁止 suid 操作和设定 sgid 位。
- noatime - 不更新文件系统上 inode 访问记录,可以提升性能(参见 atime 参数)。
- nodiratime - 不更新文件系统上的目录 inode 访问记录,可以提升性能(参见 atime 参数)。
- relatime - 实时更新 inode access 记录。只有在记录中的访问时间早于当前访问才会被更新。(与 noatime 相似,但不会打断如 mutt 或其它程序探测文件在上次访问后是否被修改的进程。),可以提升性能(参见 atime 参数)。
- flush - vfat 的选项,更频繁的刷新数据,复制对话框或进度条在全部数据都写入后才消失。
- defaults - 使用文件系统的默认挂载参数,例如ext4 的默认参数为:rw,suid, dev, exec, auto, nouser,async.
- <dump> dump 工具通过它决定何时作备份. dump 会检查其内容,并用数字来决定是否对这个文件系统进行备份。 允许的数字是 0 和 1 。0 表示忽略, 1 则进行备份。大部分的用户是没有安装 dump 的 ,对他们而言 <dump> 应设为 0。
- <pass> fsck 读取 <pass> 的数值来决定需要检查的文件系统的检查顺序。允许的数字是0, 1, 和2。 根目录应当获得最高的优先权 1, 其它所有需要被检查的设备设置为 2. 0 表示设备不会被 fsck 所检查。
soft :使用软挂载的方式挂载系统,若Client的请求得不到回应,则重新请求并传回错误信息。
noatime :不更新文件的访问时间。传输性能相较于不加noatime参数有明显提升。
timeo=n:客户端重传请求前等待时间。基于TCP的NFS服务(v4 版本默认使用TCP协议进行传输),默认等待重传时间为60s,每次重传超时后timeo时间会持续增加直到最大值600s
retrans=n:客户端返回错误前的重传次数。默认重传次数3次,最大重传次数7000次,retrans与soft参数一起使用时才有效。
【使用建议】timeo、retrans这两个参数选择主要取决于网络性能。对于网络吞吐量小,延时高,抖动高,丢包率大的情况,建议将timeo,retrans两个参数值设置大一些。对于网络吞吐量大,延时低,抖动低,丢包率小的情况,建议将timeo,retrans两个参数值设置小一些。具体设置值因网络状况而定。
客户端clinet
- NFS 服务器在决定默认的最大读写块大小时考虑到内存占用情况,每个 NFS 内核线程最多只使用 1/4096 的物理内存大小,对于 UDP 来说,由于一个 UDP 包最大才 64KB,因此使用 UDP 协议的 NFS 读写块大小最大不超过 48KB,而 kernel 中则直接限制为 32KB 了;而使用 TCP 协议的 NFS 由于没有这个限制允许更大的读写块大小,但 Linux kernel 还是将其限制为 1MB 了。对于物理内存超过 4GB 的机器才使用最大的 1MB 读写块大小。记录这个大小的文件为/proc/fs/nfsd/max_block_size.
- noatime在客户端参数里无用