<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>linux on panda power!</title>
    <link>https://blog.kkatex.com/tags/linux/</link>
    <description>Recent content in linux on panda power!</description>
    <generator>Hugo -- gohugo.io</generator>
    <lastBuildDate>Sun, 17 Nov 2019 16:36:46 +0800</lastBuildDate>
    
	<atom:link href="https://blog.kkatex.com/tags/linux/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>NFS</title>
      <link>https://blog.kkatex.com/post/nfs-optimize/</link>
      <pubDate>Sun, 17 Nov 2019 16:36:46 +0800</pubDate>
      
      <guid>https://blog.kkatex.com/post/nfs-optimize/</guid>
      <description>一、nfs挂载优化 对nfs读写性能影响较大的主要是size数据块大小设置及是否需要同步写入磁盘
  在以太网环境中一般MTU为1500字节，size直接采用最大1M即可
  同步磁盘根据需求设定，若客户端间同步要求高或是对文件一致性、安全性要求较高，建议设置sync同步写入磁盘并设置noac关闭文件属性缓存
  其余建议在挂载时加上的参数：nodev/noexec/nosuid/nolock
1.1. rsize和wsize 默认rsize和wsize与服务器max_block_size相同
客户端挂载时可以指定rsize和wsize，该参数决定网络交互中数据块的大小，一般以太网MTU1500的情况下，采用最大1M即可
最大rsize和wsize根据/proc/fs/nfsd/max_block_size而定，nfsv3和nfsv4最大支持1M（设置超过1M不生效），不建议使用nfsv2。修改此值需要先停止nfs服务
1.1.1. 测试rsize和wsize性能影响 设置size为8K和16K写入
设置size为32K和64K写入
设置size为256K和1M的写入
1.2. sync和async 默认采用async
sync将数据同步写入内存缓冲区与磁盘中，效率低，但可以保证数据的一致性；async将数据先保存在内存缓冲区中，必要时才写入磁盘
生产环境中建议使用sync，保证数据安全
1.2.1. 测试sync和async性能影响 在size为1M下的写入对比
在size为256K下的写入对比
1.3. ac和noac 默认采用ac
客户端可以默认设置文件属性缓存，即开启ac。当客户端之间同步要求较高时，需要使用noac取消客户端文件缓存，同时与sync搭配使用
acregmin和acreginmax这2个参数指定缓存的有效时间
1.4. tcp和udp 默认采用tcp
使用nfs over tcp 有助于提高慢速网络和广域网的性能。TCP 还提供拥塞控制和错误恢复功能
生产环境建议使用tcp
1.5. lock和nolock 默认采用lock
nfs采取文件锁来保持文件同步，nfsv3采用NLM协议实现，nfsv4由自身实现文件锁
nfs中的文件锁可以加在客户端和服务端。lock在服务端加锁，所有客户端访问同一文件时都不会冲突；nolock仅在客户端本地加锁，本地多个进程同时访问同一文件时可以保证不冲突，但仍会以其他客户端产生冲突
1.6. atime和noatime 默认采用atime
linux下访问文件会更新inode中atime，挂载时通过指定noatime可以禁止更新inode中的时间戳，以此提高性能（实测效果不大）
1.7. nodev/noexec/nosuid 推荐客户端挂载时指定的几个参数
nodev设置不读取文件系统上的字符和块设备
nosuid取消挂载的文件系统上的suid设置
noexec设置挂载的文件系统上不具有可执行权限
1.8. 套接字缓冲区 通过设置一个远大于nfs block size的tcp窗口大小，可以优化传输（实测影响有限）
/proc/sys/net/core/rmem_max最大接收窗口大小
/proc/sys/net/core/rmem_default默认接收窗口大小
/proc/sys/net/core/wmem_max最大发送窗口大小
/proc/sys/net/core/wmem_default默认发送窗口大小
1.8.1. 测试缓冲区大小性能影响 设置mem_default为64K，mem_max为64K，size为256K下的写入</description>
    </item>
    
  </channel>
</rss>