解决NFS client配置rszie和wsize不生效的问题

基础环境信息:

[root@m01 /]# cat /etc/redhat-release 
CentOS release 6.7 (Final)
[root@m01 /]# uname -r
2.6.32-573.el6.x86_64
[root@m01 /]#

默认挂载属性为:

[root@m01 /]# showmount -e nfs01
Export list for nfs01:
/data 172.16.1.0/24
[root@m01 /]# mount -t nfs nfs01:/data /mnt
[root@m01 /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 6.9G 1.8G 4.7G 28% /
tmpfs 238M 4.0K 238M 1% /dev/shm
/dev/sda1 190M 36M 145M 20% /boot
nfs01:/data 6.9G 1.7G 4.8G 27% /mnt
[root@m01 /]# grep mnt /proc/mounts
nfs01:/data/ /mnt nfs4 rw,sync,relatime,vers=4,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=172.16.1.61,minorversion=0,local_lock=none,addr=172.16.1.31 0 0
[root@m01 /]# ##tcp协议默认的rszie和wsize为65536

修改rsize和wsize:

[root@m01 nfsd]# umount /mnt
[root@m01 nfsd]# mount -t nfs -o rsize=131072,wsize=131072 nfs01:/data /mnt 
[root@m01 nfsd]# grep mnt /proc/mounts
nfs01:/data/ /mnt nfs4 rw,relatime,vers=4,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=172.16.1.61,minorversion=0,local_lock=none,addr=172.16.1.31 0 0
[root@m01 nfsd]# ##可以看到修改后并没有生效

使用tcpdump命令抓包查看过程:

[root@nfs01 ~]# tcpdump -nn -i eth1 -w wireshark.cap -s 0

使用wireshark对包进行分析

发现rsize和wsize是和服务端协商,并由服务端答复而来的(NFS V4 compound reply包)。

查阅相关资料得知: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.

查看服务端该文件的大小:

[root@nfs01 ~]# cat /proc/fs/nfsd/max_block_size 
65536
[root@nfs01 ~]#

 

找到问题的所在了!然后我做了如下的修改
1、停止nfs服务

[root@nfs01 ~]# /etc/init.d/nfs stop
Shutting down NFS daemon: [ OK ]
Shutting down NFS mountd: [ OK ]
Shutting down NFS quotas: [ OK ]
Shutting down NFS services: [ OK ]
Shutting down RPC idmapd: [ OK ]
[root@nfs01 ~]#

2、修改max_block_size

[root@nfs01 ~]# echo 1048576 > /proc/fs/nfsd/max_block_size 
[root@nfs01 ~]# cat /proc/fs/nfsd/max_block_size
1048576
[root@nfs01 ~]# ##直接改为最大1M。

3、启动nfs服务

[root@nfs01 ~]# /etc/init.d/nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
Starting RPC idmapd: [ OK ]
[root@nfs01 ~]#

4、客户端进行挂载

[root@m01 nfsd]# mount -t nfs -o rsize=131072,wsize=131072 nfs01:/data /mnt
[root@m01 nfsd]# grep mnt /proc/mounts
nfs01:/data/ /mnt nfs4 rw,relatime,vers=4,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=172.16.1.61,minorversion=0,local_lock=none,addr=172.16.1.31 0 0
[root@m01 nfsd]# ##修改成功!

问题解决!

转载于:https://www.cnblogs.com/dachenzi/articles/6078298.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值