一. NFS各版本通用参数

soft/hard

【参数说明】软挂载方式挂载系统,若NFS请求超时,则客户端向调用程序返回错误;如果使用硬连接方式则客户端一直重新请求直至成功。默认为hard。

【使用建议】对于关键数据业务,不希望业务由于网络延迟或服务器服务重启或短暂的过载等情况而中断,建议挂载时使用hard参数;对于非关键数据业务,希望客户端程序能尽快响应,可以使用soft参数。

 timeo=n

【参数说明】客户端重传请求前等待时间。对于基于TCP的NFS服务,默认等待重传时间为60s。使用TCP协议时,NFS Client不执行任何超时backoff。对于UDP协议,client使用一个合适的算法,为常用的请求类型estimate合适的超时时间。但对不常用的请求类型使用timeo设置。如果timeo没有设置,不常用的请求类型1.1秒以后重试。在每次重发后,NFS Client会将timeout时间加倍,直到最大的60秒。

retrans=n:客户端返回错误前的重传次数。默认为重传3次。retrans与soft参数一起使用时才有效。

【使用建议】timeo、retrans这两个参数选择主要取决于网络性能。对于网络吞吐量小,延时高,抖动高,丢包率大的情况,建议将timeo,retrans两个参数值设置大一些。对于网络吞吐量大,延时低,抖动低,丢包率小的情况,建议将timeo,retrans两个参数值设置小一些。具体设置值因网络状况而定。

resize=n

【参数说明】每个READ命令字向服务器读取文件的最大字节数。实际数据小于或等于此值。resize必须是1024倍数的正整数,小于1024时自动设为4096,大于1048576时自动设为1048576。默认时,服务器和客户端进行协商后设置。

【使用建议】通常使用默认值,由客户端和服务器协商设置。对于拥塞的低速网络,可以将该值调小,向服务器发送较短的请求包来提高NFS性能。对于高速网络,可以将该值增大,减少向服务器发送的请求包,获得性能的提升。

wsize=n

【参数说明】每个WRITE命令字向服务器写入文件的最大字节数。实际数据小于或等于此值。resize必须是1024倍数的正整数,小于1024时自动设为4096,大于1048576时自动设为1048576。默认时,服务器和客户端进行协商后设置。

【使用建议】通常使用默认值,由客户端和服务器协商设置。对于拥塞的低速网络,可以将该值调小,向服务器发送较小的请求包来提高NFS性能。对于高速网络,可以将该值增大,减少向服务器发送的请求包,获得性能的提升。

async/sync

【参数说明】同步、异步挂载,客户端默认异步(async)。对于异步挂载,客户端下发的写数据会先缓存在内存中,达到一定大小或者其他条件(与客户端设置,状态有关),再一起发往服务端。而同步挂载,每次下发的写数据马上发到服务端。

【使用建议】建议用默认的异步挂载,可以提高业务性能。对于客户端应用层来说,完全感知不到数据是否发往服务端,只能感知数据已经写成功。同步挂载要求每个请求立即发到服务端,增加了请求连接、发送次数,对于小io场景性能差异很明显(io越小,差异越大,一般都能达到几倍甚至更大的差异)。

注:对于异步挂载,可能在查看io性能显现为性能波动。在客户端写入缓存期间iops可能就低,因为数据还未发到服务端。但是性能是完全正常的,应该说比同步更好。如果是要要追求界面上的平稳,那就建议改为同步挂载。(补充:追求一次小io的数据全部刷到服务端稳定存储时间小,不仅要求客户端同步挂载,还需要服务端共享也是同步导出,否则需要加上手动commit刷盘——flush)。

 acregmin/acregmax

【参数说明】设置NFS客户端缓存普通文件属性的最短时间和最长时间,单位为秒。超过此时间后对其进行更新。默认最短时间是3s,最长时间是60s。

 acdirmin/acdirmax

【参数说明】设置NFS客户端缓存目录属性的最短时间和最长时间,单位为秒。超过此时间后对其进行更新。默认最短时间是3s,最长时间是60s。

 ac/noac

【参数说明】设置是否缓存文件属性。为了提高性能,NFS客户端缓存文件属性(默认ac),然后每隔一段时间去检查文件属性后更新。在缓存有效期内,客户端不检测服务器上文件属性是否改变。默认为ac。

【使用建议】当服务器上共享文件的属性频繁地被多个客户端改变时,建议使用noac选项,或者使用ac并配合使用较小的acregmin/acregmax/acdirmin/acdirmax设置,这样就能获得较好的属性一致性。当服务器上共享文件的属性不会被频繁改变时,例如文件共享为只读,或者网络性能较好,建议使用默认的ac选项,然后根据实际的网络状况来调整acregmin/acregmax/acdirmin/acdirmax设置。

 Actimeo

【参数说明】将acregmin/acregmax/acdirmin/acdirmax四个参数设置为相同时间,单位为秒。

 bg/fg

【参数说明】设置挂载失败后的行为方式。默认的fg方式将立刻退出返回错误状态,bg方式是退出前将产生一个子进程在后台继续尝试挂载。

sharecache/nosharecache

【参数说明】设置客户端并发挂载同一文件系统时数据缓存和属性缓存的共享方式。设置为sharecache时,多个挂载共享共享同一缓存。设为nosharecache时,每个挂载各有一个缓存。默认为sharecache。

使用建议:该参数用于客户端多次挂载同一共享目录的情况,建议使用默认的sharecache选项。

 resvport/noresvport

【参数说明】设置连接服务器是否使用保密源端口。默认的resvport设置保密端口,noresvport设置为非保密端口。内核2.6.28及以后版本支持。

 lookupcache=mode

【参数说明】设置内核管理给定挂载点的目录项缓存方式。其中包括all/none/pos几种方式。客户端缓存LOOKUP命令字请求结果。如果请求的目录项在服务器上,则返回结果为正,否则为负。all的管理方式是在父目录缓存的属性失效前客户端缓存这两种目录项;pos是在父目录缓存的属性失效前客户端缓存结果为正的查询结果,总是重新验证结果为负的查询结果。none总是重新验证目录缓存项。默认为all管理方式,内核2.6.28及以后版本支持。

【使用建议】LOOKUP命令字的作用是将文件名转换文件句柄。对于多个客户端经常创建或删除文件的情况,建议使用none。其它情况选用all或者pos。

 intr/nointr

【参数说明】设置是否允许信号中断挂载点的文件操作。如果指定intr,当NFS操作被信号中断时系统返回EINTR。指定nointr,信号不会中断NFS文件操作。默认为nointr。指定intr时,通常同时使用soft选项,防止数据损坏。内核2.6.25及以后不再支持。

cto/nocto

【参数说明】设置是否使用“关闭打开”缓存一致的特性。通常客户端打开文件时检查是否存在以及是否有权限,当关闭文件时刷新更改。当设置为nocto时,客户端使用非标准的试探来检查服务器上文件是否改变,对于只读和文件更改较少时情形有助于提高性能。

【使用建议】对于文件内容改变很少的情况,如服务器提供只读共享权限(文件系统以RO权限导出)给客户使用,建议使用nocto选项,这样可以提高性能。对于文件内容经常改变,客户端对文件缓存一致性要求较高,建议使用cto参数。

2 对NFS(NFS2/NFS3)有效的选项:

 proto=transport

【参数说明】客户端向服务器发起传输请求使用的协议,可以为UDP或者TCP。未指定时,mount命令选择服务器支持的协议。

tcp/udp

【参数说明】等价于proto=tcp和proto=udp选项。

【使用建议】在不稳定的复杂网络环境中建议使用tcp参数,在稳定的网络下可以使用udp参数。NFSv3/NFSv4支持tcp/udp,NFSv2只支持udp。

port=n

【参数说明】指定服务器NFS服务端口。如果NFS服务端口不在port上,则mount请求失败。未指定或设为0,mount命令根据服务器的rpcbind服务选择服务端口。

mountport=n

【参数说明】指定服务器上mountd的端口。如果mountd服务端口不在port上,则mount请求失败。未指定或设为0,mount命令根据服务器的rpcbind服务选择服务端口。该参数用于即使防火墙屏蔽rpcbind协议也能正常mount到服务器。

 mountproto=transport

【参数说明】客户端向服务器发起MNT请求时和UMNT使用的协议,可以为udp或者tcp。该参数用于防火墙屏蔽特定的协议也能正常mount到服务器。

 mounthost=name

【参数说明】设置开启mountd主机名。未指定时,mount命令认为mountd服务和NFS服务在同一主机上。

 mountvers=n

【参数说明】设置连接服务器mountd时的RPC版本号。未指定时使用与请求的NFS版本相适应的版本号。该参数用于多个NFS服务运行于同一远程主机上。

namlen=n

【参数说明】设置挂载路径名的最大长度。未指定时,通过与服务器协商设定。大多数情况为255字节。

nfsvers/vers=n

【参数说明】设置使用NFS服务的NFS协议版本号。当文件系统为nfs时,Linux客户端支持NFS2和NFS3。如果不支持请求的版本,mount失败。未指定时,客户端先尝试使用NFS3,若失败再与服务器进行协商。

lock/nolock

【参数说明】选择是否使用NLM协议在服务器上锁文件。当选择nolock选项时,锁对于同一主机的应用有效,对不同主机不受锁的影响。默认为lock。

acl/noacl

【参数说明】设置是否在挂载时使用NFSACL协议。NFSACL协议不属于标准NFS协议,而是Solaris上的实现。未指定时,客户端与服务器协商检查服务器是否支持,如果支持则使用NFSACL。

 rdirplus/nordirplus

【参数说明】设置是否使用NFS3的REAADDIRPLUS请求。默认为readdirplus。

对NFS4有效的选项:

proto=transpro

【参数说明】客户端向服务器发起传输请求使用的协议,可以为UDP或者TCP。未指定时,选用TCP。

port=n

【参数说明】指定服务器NFS服务端口。如果NFS服务端口不在port上,则mount请求失败。未指定时,客户端使用NFS标准的2049号端口。指定为0时,客户端选用服务器rpcbind服务支持的端口。

 clientaddr=n.n.n.n

【参数说明】指定一个IPv4的主机地址使服务器能执行NFS4的回调请求。未指定时,mount命令尝试自己发现一个合适的回调地址。

——注1:所有的参数说明都可以在linux系统用man nfs参看含义,对于有差异的客户端,请用此确认。

——注2:为了描述简单明了,可能转义有差异,具体参见系统标准描述。

——注3:没有“使用建议”的参数推荐使用默认参数。

二.基本用法及概述

Network File System,

网络文件系统用途:为客户机提供共享使用的文件夹

协议:NFS(2049)、RPC(111)

所需软件包:nfs-utils

配置文件: /etc/expoprts

刷新配置:exportfs -r

systemctl restrat nf-server

2.访问NFS共享目录

1)列出所有NFS共享资源

showmount -e 服务器地址(本地则忽略)

2)挂载

手动挂载NFS共享

mount 服务器地址:文件路径 挂载点

开机挂在配置

服务器地址:文件夹地址 挂载点 nfs _netdev 0 0

系统服务:nfs-server/etc/exports文件夹路径客户机地址(权限)/public*(ro)#允许所有客户端进行只读访问

/etc/exports
文件夹路径   客户机地址(权限)
/public   *(ro)    #只读
#允许所有客户端进行只读访问
其他权限写法
(rw)读写 

3.示例

1.装包rpm-qnfs-utilsnfs-utils-1.3.0-0.54.el7.x86_64

2.创建共享目录mkdir/public

3.写入echohaha>/public/h.txtechoxixi>/public/x.txt

4.查看ls /punlic

5.写配置文件/etc/exports文件夹路径客户机地址(权限)如:/public*(ro)#允许所有客户端进行只读访问

6.客户端显示服务端的共享文件

showmount -e‘服务端ip’

7.客户端创建nfs挂载点然后挂载mount服务端ip:共享目录挂载点8实现开机自动挂载_netdev:声明网络设备,系统在具备网络参数后,再进行挂载本设备写法例子:

192.168.4.7:/public/mnt/mynfs  nfs _netdev 0 0

三.特殊权限写法及挂载

配置示例1:

/mount/www  10.1.8.0/24(rw,all_squash,anonuid=500,anongid=500)
/mount/www  10.1.8.0/24(rw)

常见的选项:

ro:默认选项,以只读的方式共享。

rw:以读写的方式共享。

root_squash:将客户端使用的是root用户时,则映射到NFS服务器的用户为NFS的匿名用户(nfsnobody)。

no_root_squash:将客户端使用的是root用户时,则映射到FNS服务器的用户依然为root用户。

all_squash:默认选项,将所有访问NFS服务器的客户端的用户都映射为匿名用户,不管客户端使用的是什么用户。

anonuid:设置映射到本地的匿名用户的UID

anongid:设置映射到本地的匿名用户的GID

sync:默认选项,保持数据同步,数据同步写入到内存和硬盘。

async:异步,先将数据写入到内存,在将数据写入到硬盘。

secure:NFS客户端必须使用NFS保留端口(通常是1024以下的端口),默认选项。

insecure:允许NFS客户端不使用NFS保留端口(通常是1024以上的端口)。

配置示例2

当 mount -o noresvport <nfs 服务> 时,会碰到 Operation not permitted 问题,因为 nfs 默认配置选项是 secure,不允许客户端通过非特权端口访问。

如果客户端必须要 mount -o noresvport 访问,那么就需要 nfs 服务器配置允许非特权端口访问。需要修改 /etc/exports,设置 insecure 选项。

/etc/exports

/etc/exports 是 nfs 服务端的配置。nfs 客户端不读这个配置文件。

exportfs -s 查看 nfs 服务已加载的配置情况。

修改 /etc/exports 文件不会自动应用到当前 nfs,需要通过 exportfs -rv 重载。

cat /etc/exports
/keke *(rw,insecure)
exportfs -r
mount -t nfs -o vers=4.0,noresvport,lookupcache=pos 192.168.1.1:/keke /mnt/nfs

nfs参数介绍与写法示例及报错( Operation not permitted)相关推荐

  1. docker strace ptrace 报错 Operation not permitted 解决方法

    docker中gdb在进行进程debug时,会报错: (gdb) attach 30721 Attaching to process 30721 ptrace: Operation not permi ...

  2. 【node】windows使用 npm i -g报错operation not permitted解决方法

    前言 公司电脑被装了安全控制软件后导致npm -g 安装很多东西提示operation not permitted,后来研究了下怎么解决该问题. 解决方式 首先打开不允许操作的路径,比如我这个报错: ...

  3. chmod 报错Operation not permitted

    使用 命令:chmod -r 777 hosts 修改文件权限时报了下面的这个错误: chmod: Unable to change file mode on hosts: Operation not ...

  4. npm报错 operation not permitted, open...

    这个错误是在使用npm下载依赖时发生的,错误如下 npm ERR! code EPERM npm ERR! syscall open npm ERR! path E:\nodejs\npm_cache ...

  5. 方法参数是结构体指针,报错信息是空指针怎么办

    方法参数是结构体指针,报错信息是空指针怎么办 如果是函数方法需要使用前面定义的结构体指针,但这时候指针为空,编译器报错指针为空,这时候只需要在我们需要指针的地方加上 if(T){}; 确保它不为空就行 ...

  6. HBase hmaster无法正常启动,日志报错Operation category READ is not supported in state standby.hdfs ha hbase配置修改

    E2:HBase hmaster无法正常启动,日志报错Operation category READ is not supported in state standby. hdfs配置了ha,hbas ...

  7. 【错误记录】Tinker 热修复示例运行报错 ( Execution failed for task ‘:app:tinkerProcessD‘ . tinkerId is not set!!! )

    文章目录 一.报错信息 二.问题分析 三.解决方案 1.解决方案 1 2.解决方案 2 一.报错信息 运行 tinker 官方示例 https://github.com/Tencent/tinker/ ...

  8. fastadmin使用fast\Http 发送post/get/patch等请求,参数为二维数组时候报错,怎么解决?

    之前受邀回答了这么一个问题: 在后端发请求时,如果参数里面是数组,就会报错"Array to string conversion",大概意思就是数组转字符串的时候出错了. 先说解决 ...

  9. 通过props从父组件传递参数到子组件爆红报错

    错误总结:props传参报错问题 通过props从父组件传递参数到子组件出现爆红报错: 查阅资料显示这是因为v-for循环遍历的data.slice(0,1)为空导致的,因为没有调取到data数据,所 ...

最新文章

  1. OpenCV识别形状
  2. micronet 测试2
  3. Python 动态添加类方法
  4. Dubbo中负载均衡的应用
  5. 条件随机场 python_如何直观地理解条件随机场,并通过PyTorch简单地实现
  6. 从零写一个编译器(一):输入系统和词法分析
  7. 本地计算机用plsql访问虚拟机中的oracle数据库
  8. DBA遇到问题时的30 个反应,你是哪一种?
  9. 电脑怎么卸载软件干净_极客卸载,还你干净电脑
  10. nlp中region_百度5年深耕NLP 他把聊天机器人变成你的“全科医生”
  11. 硬盘的接口,总线,协议知识点总结
  12. 3*3旋转矩阵得到旋转角(c++代码)
  13. Fiddler基本使用
  14. 已然神话的区块链的应用了解一下-MGCEX
  15. javax.el.PropertyNotFoundException
  16. 微信40029 code解决办法
  17. mean shift:从图像分割到特征空间分析
  18. 在M文件中使用模糊工具箱fis文件
  19. CSS - 响应式布局(二)响应式栅格系统
  20. HaaS-Python实现智能水族生态控制器

热门文章

  1. Latex:表格制作全攻略
  2. 开源图像检索工具:CaliphEmir使用方法
  3. 第三日:继续恢复网站
  4. 2017-2018-2 『网络对抗技术』Exp1:PC平台逆向破解 20165335
  5. Mybatis的第三章动态sql总结
  6. Java LinkedHashMap类源码解析
  7. Stack View 自定义间隙
  8. 阿里云自定义监控tomcat进程数
  9. shell+飞信实现网站监控
  10. JavaScript知识点总结(二)