查看客户端挂载的参数
强制卸载
高并发情况下, 可以通过明确加上 noatime, 以达到提升优化 I/O 性能
ro: 以只读方式挂载一个文件系统
rw: 以可写的方式挂载一个文件系统
defaults(默认): 这是 fstab 里的默认值, 包括 rwsuiddevexecautonouserand async
默认情况下, 都用的默认
mount 挂载性能优化参数选项
1 禁止更新目录及文件时间戳挂载:
mount -t nfs -o noatime,nodiratime 172.16.1.31:/data /mnt
2 安全加优化的挂载方式
mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,intr,rsize=131072,wsize=131072 172.16.1.31:/data /mnt
3 默认挂载
mount -t nfs 172.16.1.31:/data /mnt
如果是本地文件系统
mount /dev/sdb1 /mnt -o defaults,async,noatime,data=writeback,barrier=0
一般 6.6 系统可使用如下参数
mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime, rsize=131072,wsize=131072 172.16.1.31:/data /mnt
不过 CentOS6.6 默认的挂载参数性能还不错
具体的要根据业务需要来设定
NFS 内核优化建议 (服务器端):
NFS 内核调优; 调整接收 / 发送套接字缓冲区大小
cat /proc/sys/net/core/rmem_default 默认
cat /proc/sys/net/core/rmem_max 最大
cat /proc/sys/net/core/wmem_default 默认
cat /proc/sys/net/core/wmem_max 最大
上述文件对应命令如下:
- cat >>/etc/sysctl.conf<<EOF
- net.core.wmem_default = 8388608
- net.core.rmem_default = 8388608
- net.core.wmem_max = 16777216
- net.core.rmem_max = 16777216
- EOF
执行 sysctl -p 生效
企业场景 NFS 共享存储优化:
1ssd, 多块, raid5/raid10 网卡至少千兆 (多块 bond)
2 配置文件:
all_squash 不论登入 NFS 的使用者身份为何, 他的身份都会被压缩成为匿名使用者, 通常也就是 nobody
anonuid 可以自行设定这个 UID 的值, 这个 UID 必需要存在于你的 / etc/passwd 当中
anongid 同 anonuid, 但是变成 groupID 就是了
sync 资料同步写入到内存与硬盘当中
async 资料会先暂存于内存当中, 而非直接写入硬盘
3 客户端挂载优化配置命令:
mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime, rsize=131072,wsize=131072 172.16.1.31:/data /mnt
兼顾性能安全
NFS 优点:
简单, 容易上手
NFS 文件系统内数据是在文件系统之上的, 也就是说数据是能看得见的
部署快速, 维护简单方便, 可控
可靠, 从软件层面上看, 数据可靠性高
服务非常稳定
NFS 局限:
存在单点故障, 如果 NFS Server 宕机了, 都不能访问 (可通过高可用弥补)
大数据高并发场合, 性能有限 (2 千万 / 日以下 PV 的网站不是瓶颈)
客户端认证是基于 ip 和主机名, 权限要根据 ID 识别, 安全性一般 (用于内网则问题不大)
NFS 数据是明文的, NFS 本身不对数据完整性作验证
多台客户机挂载一个 NFS 服务器时, 连接管理维护麻烦 (耦合度高), 尤其 NFS 服务端出问题后,
所有客户端都处于挂掉状态 (测试环境可用 autofs 自动挂载解决, 正式环境可修复 NFS 或强制卸载)
生产场景应该多把数据的访问往前推, 尽量把静态存储里的资源通过 CDN 或缓存服务器提供服务
showmount 一般用于从 NFS 客户端检查 NFS 服务器共享目录的情况, 其常用参数如下
-e 显示 NFS 服务器输出的目录列表
-d 显示 NFS 服务器提供的共享目录
exportfs 命令
exportfs -rv 命令相当于 / etc/init.d/nfs reload
exportfs -o rw,sync,all_squash,anonuid=888,anongid=888 10.0.0.0/24:/data
有啥卵用???
防火墙控制
一般内网环境, 不需要, 如果要配置的话, 两选一
这个源比较特殊
inotify 可以监视的文件系统常见事件包括:
IN_ACCESS: 文件被访问
IN_MODIFY: 文件被修改
IN_ATTRIB, 文件属性被修改
IN_CLOSE_WRITE, 以可写方式打开的文件被关闭
IN_CLOSE_NOWRITE, 以不可写方式打开的文件被关闭
IN_OPEN, 文件被打开
IN_MOVED_FROM, 文件被移出监控的目录
IN_MOVED_TO, 文件被移入监控着的目录
IN_CREATE, 在监控的目录中新建文件或子目录
IN_DELETE, 文件或目录被删除
IN_DELETE_SELF, 自删除, 即一个可执行文件在执行时删除自己
IN_MOVE_SELF, 自移动, 即一个可执行文件在执行时移动自己
测试创建
测试删除
测试关闭 - 写
测试关闭 - 写时, 创建也能监测
简化输出
有时重启会失效, 所以放 rc.local 里
Linux NFS 挂载优化, inotify+rsync 实时备份
来源: http://www.bubuko.com/infodetail-2491813.html