如果按mount -o nolock 192.168.1.220(假設為宿主機ip):/mnt/nfs /mnt/nfs_t 來mount ,傳輸速度可能很慢, 只有幾K到幾十K左右,所以想要獲得較快的速度就要對nfs進行優(yōu)化。 nfs優(yōu)化篇 1.設置塊大小 mount命令的risize和wsize指定了server端和client端的傳輸的塊大小。如果沒有指定,那么,系統(tǒng)根據nfs的版本來設置缺省的risize和wsize大小。大多數情況是4K(4096bytes),對于nfs v2,最大是8K,對于v3,在server端設置risize和wsize的限制,最大塊大小在kernel的常量 NFSSVC_MAXBLKSIZE,該常量在usr/src/linux2.4/include/linux/nfsd/const.h.所有的2.4 的的client都支持最大32K的傳輸塊。系統(tǒng)缺省的塊可能會太大或者太小,這主要取決于你的kernel和你的網卡,太大或者太小都有可能導致nfs 速度很慢。具體的可以使用Bonnie,Bonnie ,iozone等benchmark來測試不同risize和wsize下nfs的速度。當然,也可以使用dd來測試。 ?。ime dd if=/dev/zero of=/testfs/testfile bs=8k count=1024這是來測試nfs寫 ?。ime dd if=/testfs/testfile of=/dev/null bs=8k 這是測試nfs讀 測試時文件的大小至少時系統(tǒng)RAM的兩倍,每次測試都使用umount 和mount對/testfs進行掛載,通過比較不同的塊大小,得到優(yōu)化的塊大小。 2.網絡傳輸包的大小 網 絡在包傳輸過程,對包要進行分組,過大或者過小都不能很好的利用網絡的帶寬,所以對網絡要進行測試和調優(yōu)??梢允褂胮ing -s 2048 -f hostname進行 ping,嘗試不同的package size,這樣可以看到包的丟失情況。同時,可以使用nfsstat -o net 測試nfs使用udp傳輸時丟包的多少。 因為統(tǒng)計不能清零,所以要先運行此命令記住該值,然后可以再次運行統(tǒng)計。如果,經過上面的統(tǒng)計丟包很多。那么可以看看網絡傳輸包的大小。使用下面的命令: #tracepath node1/端口號 #ifconfig eth0 比較網卡的mtu和剛剛的pmtu,使用#ifconfig eth0 mtu 16436設置網卡的mtu和測試的一致。 當然如果risize和wsize比mtu的值大,那么的話,server端的包傳到client端就要進行重組,這是要消耗client端的cpu資源。此外,包重組可能導致網絡的不可信和丟包,任何的丟包都會是的rpc請求重新傳輸,rpc請求的重傳有會導致超時,嚴重降低nfs的性能。可以通過查看 /proc/sys/net/ipv4/ipfrag_high_thresh和/proc/sys/net/ipv4 /ipfrag_low_thresh了解系統(tǒng)可以處理的包的數目,如果網絡包到達了ipfrag_high_thresh,那么系統(tǒng)就會開始丟包,直到包的數目到達ipfrag_low_thresh。 3.nfs掛載的優(yōu)化 timeo:如果超時,客戶端等待的時間,以十分之一秒計算。 retrans:超時嘗試的次數。 bg:后臺掛載,很有用 hard:如果server端沒有響應,那么客戶端一直嘗試掛載。 wsize:寫塊大小 rsize:讀塊大小 intr:可以中斷不成功的掛載 noatime:不更新文件的inode訪問時間,可以提高速度。 async:異步讀寫。
缺省的系統(tǒng)在啟動時,有8個nfsd進程。 #ps -efl|grep nfsd 通過查看/proc/net/rpc/nfsd文件的th行,第一個是nfsd的個數,后十個是線程是用的時間數,第二個到第四個值如果很大,那么就需要增加nfsd的個數。 具體如下: #vi /etc/init.d/nfs 找到RPCNFSDCOUNT,修改該值,一般和client端數目一致。 然后,重啟服務。 #service nfs restart #mount -a
5.nfsd的隊列長度 對 于8個nfsd進程,系統(tǒng)的nfsd隊列長度是64k大小,如果是多于8個,就要相應的增加相應的隊列大小,具體的在/proc/sys/net /core/【rw】mem_default和/proc/sys/net/core/【rw】mem_max。隊列的長度最好是每一個nfsd有8k的大小。這樣,server端就可以對client的請求作排隊處理。如果要永久更改此值#vi /etc/sysctl.conf 加入 net.core.【rw】mem_max=數目 net.core.【rw】mem_default=數目 #service nfs restart NFS:網絡文件系統(tǒng) ?。∟FS:Network File System) 網絡文件系統(tǒng)(NFS),起初由 Sun 微系統(tǒng)公司進行開發(fā),后經 IETF 擴展,現(xiàn)在能夠支持在不同類型的系統(tǒng)之間通過網絡進行文件共享。換言之,NFS 可用于不同類型計算機、操作系統(tǒng)、網絡架構和傳輸協(xié)議運行環(huán)境中的網絡文件遠程訪問和共享。 NFS 使用客戶端/服務器架構,并由一個客戶端程序和服務器程序組成。服務器程序向其它計算機提供對文件系統(tǒng)的訪問,其過程就叫做“輸出”。NFS 客戶端程序對共享文件系統(tǒng)進行訪問時,把它們從 NFS 服務器中“輸送”出來。NFS 傳輸協(xié)議用于服務器和客戶機之間文件訪問和共享的通信,該協(xié)議還支持服務器通過輸出控制向一組受到限制的客戶計算機分配遠程訪問特權。 NFS 版本2,是 NFS 最早被廣泛應用的版本,起初完全運行于 UDP 協(xié)議之上,并且不保留狀態(tài)。幾大廠商擴展了 NSF 版本2,使之支持 TCP 傳輸。NFS 版本3整合了 TCP 傳輸。使用了 TCP 傳輸后,使得廣域網中的 NFS 應用更為靈活。在繼承了以前版本優(yōu)點的基礎之上,目前,NFS 版本4在功能上有如下的改進: * 提高了經由 Internet 進行訪問的性能。本協(xié)議能夠很容易地通過防火墻;在等待時間較長時帶寬較小的情況下,其性能優(yōu)越;且每臺服務器所連接用戶的數目可擴展到相當大的數目。 * 將許可條款內置到協(xié)議之中,安全性得到了極大的加強。在對遠程過程調用(RPC) PRCSEC_GSB 協(xié)議的支持上,本協(xié)議則建立在 ONCRPC 工作組的工作之上。另外,NFS 版本4支持客戶機與服務器之間的安全對話,并要求客戶機和服務器支持最簡單的安全計劃。 * 支持擴展協(xié)議。本協(xié)議接受所支持協(xié)議的標準擴展,而不是打折的向后兼容。 NFS 與 UNIX 系統(tǒng)息息相關,盡管它可以用于任何平臺中,如 Macintosh 和 Microsoft Windows 操作系統(tǒng)。服務器消息塊協(xié)議(SMB)和國際互聯(lián)網普通文件系統(tǒng)(CIFS)是 NFS 的類似協(xié)議,在 Microsoft Windows 平臺中,擁有著對等的網絡文件系統(tǒng)應用。 其實就是改為mount 192.168.1.220:/mnt/nfs /mnt/nfs_t -o nolock, rsize=1024,wsize=1024,timeo=15 就能獲得較快的傳輸速度。。。 |
|