解決NFS client配置rszie和wsize不生效

基礎環境信息:html

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


默認掛載屬性爲:bash

[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命令抓包查看過程:tcp

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


使用wireshark對包進行分析ide

wKioL1ci4mrwA_umAAEXk_qKlgQ088.png

發現rsize和wsize是和服務端協商,並由服務端答覆而來的(NFS V4 compound reply包)。
spa


查閱相關資料得知: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.線程


查看服務端該文件的大小:htm

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


找到問題的所在了!而後我作了以下的修改blog

一、中止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 ~]#


二、修改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。


三、啓動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 ~]#


四、客戶端進行掛載

[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]#   ##修改爲功!


問題解決!

相關文章
相關標籤/搜索