日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

nfs優(yōu)化

 richsky 2012-05-07

nfs優(yōu)化

(2012-02-03 10:06:32)
標(biāo)簽:

雜談

分類: Linux應(yīng)用服務(wù)器篇

NFS中的rsize、wsize

rsize、wsize對于NFS的效能有很大的影響.wsize和rsize設(shè)定了SERVER和CLIENT之間往來數(shù)據(jù)塊的大小,這兩個參數(shù) 的合理設(shè)定與很多方面有關(guān),不僅是軟件方面也有硬件方面的因素會影響這兩個參數(shù)的設(shè)定(例如LINUX KERNEL、網(wǎng)卡,交換機(jī)等等).
下面這個命令可以簡單測試NFS的執(zhí)行效能,讀和寫的效能可以分別測試,分別找到合適的參數(shù).對于要測試分散的大量的數(shù)據(jù)的讀寫可以通過編寫腳本來進(jìn)行測試.在每次測試的時候最好能重復(fù)的執(zhí)行一次MOUNT和unmount.
time dd if=/dev/zero of=/mnt/home/testfile bs=16k count=16384
用于測試的wsize,rsize最好是1024的倍數(shù),大多的時候,默認(rèn)是4K(4096),對于NFS V2來說8192是rsize和wsize的最大數(shù)值,如果使用的是NFS V3則可以嘗試的最大數(shù)值是32768.
我測試過,在內(nèi)網(wǎng)比較合理的每個客戶機(jī)應(yīng)該用 rsize=32768,wsize=32768,intr,noatime 掛裝遠(yuǎn)程文件系統(tǒng),從而確保速度:

    * 使用大的讀/寫塊(數(shù)字指定最大塊大小,在這個示例中是 32KB).
    * 在掛起時 NFS 操作可以被中斷.
    * 不持續(xù)更新 atime.

可以將這些設(shè)置放在 /etc/fstab 中.

注意,在測試rsize和wsize比mtu值大時,server的包發(fā)送到client要進(jìn)行重組,會要浪費二者的cpu.另外重組也會導(dǎo)致 nfs不穩(wěn)定,因為丟包會讓rpc重傳,重傳象tcp一樣,會導(dǎo)致超時,可以通過查看/proc/sys/net/ipv4 /ipfrag_high_thresh和/proc/sys/net/ipv4/ipfrag_low_thresh了解系統(tǒng)處理包的數(shù)量,如果包到了 ipfrag_high_thresh就會開始丟包.真到數(shù)目達(dá)到ipfrag_low_thresh.

NFS客戶端的數(shù)目
在服務(wù)器端,一定要確保有足夠的 NFS 內(nèi)核線程來處理所有客戶機(jī).在默認(rèn)情況Red Hat系統(tǒng)會啟動8個線程.對于繁忙的 NFS 服務(wù)器,應(yīng)該提高這個數(shù)字,比如32或64.可以用 nfsstat -rc 命令評估客戶機(jī),了解是否有阻塞的現(xiàn)象,這個命令顯示客戶機(jī)遠(yuǎn)程過程調(diào)用(RPC)統(tǒng)計數(shù)據(jù).
例:
# nfsstat -rc
Client rpc stats:
calls      retrans    authrefrsh
95374234   3432       0

第二列retrans是3432,這表示從上一次系統(tǒng)啟動以來出現(xiàn)了3432次重新傳輸?shù)那闆r.這個數(shù)字比較大,就應(yīng)該考慮增加NFS線程.
設(shè)置方法是將所需的線程數(shù)量設(shè)置到nfs,比如設(shè)置128 會啟動 128 個線程.任何時候都可以進(jìn)行這種設(shè)置.線程會根據(jù)需要啟動或銷毀.同樣,這個設(shè)置應(yīng)該放在啟動腳本中,尤其是在系統(tǒng)上啟用 NFS 的腳本.

如RedHat和Centos
vim /etc/init.d/nfs

找到下面這行修改
[ -z "$RPCNFSDCOUNT" ] && RPCNFSDCOUNT=32 

如上,我修改的是啟動32個.隨著nfsd數(shù)目的增加,平均負(fù)載會上升(可用uptime查看),就應(yīng)減少nfsd數(shù)目.平時測試和客戶端的數(shù)量一樣多就行.

NFS的版本
關(guān)于 NFS,需要注意一點:避免使用 NFSv2,因為 NFSv2 的性能比 v3 和 v4 差得多.當(dāng)前的Linux 發(fā)行版中這應(yīng)該不是問題,我們可以在nfs的服務(wù)器上檢查nfsstat 的輸出,了解是否有任何 NFSv2 調(diào)用.

Client nfs v3:
null         getattr      setattr      lookup       access       readlink    
        0% 13536     0% 1         0% 14150     0% 26160     0% 0         0%
read         write        create       mkdir        symlink      mknod       
95313570 99% 70        0% 1         0% 0         0% 0         0% 0         0%
remove       rmdir        rename       link         readdir      readdirplus 
        0% 0         0% 0         0% 0         0% 56        0% 6650      0%
fsstat       fsinfo       pathconf     commit      
15        0% 8         0% 0         0% 15        0%

Client nfs v4:
null         read         write        commit       open         open_conf   
        0% 0         0% 0         0% 0         0% 0         0% 0         0%
open_noat    open_dgrd    close        setattr      fsinfo       renew       
        0% 0         0% 0         0% 0         0% 0         0% 0         0%
setclntid    confirm      lock         lockt        locku        access      
        0% 0         0% 0         0% 0         0% 0         0% 0         0%
getattr      lookup       lookup_root  remove       rename       link        
        0% 0         0% 0         0% 0         0% 0         0% 0         0%
symlink      create       pathconf     statfs       readlink     readdir     
        0% 0         0% 0         0% 0         0% 0         0% 0         0%
server_caps  delegreturn 
        0% 0         0%

如上,都是v3和v4的.

啟動了NFS之后又修改了/etc/exports,是不用重新啟動nfs呢?這個時候我們就可以用exportfs命令來使改動立刻生效,該命令格式如下:
exportfs [-aruv]
-a :全部mount或者unmount /etc/exports中的內(nèi)容
-r :重新mount /etc/exports中分享出來的目錄
-u :umount 目錄
-v :將詳細(xì)的信息輸出到屏幕上.

mountd 與 nfsd 共享一個訪問控制數(shù)據(jù)庫,除了內(nèi)核內(nèi)部的表之外,這個數(shù)據(jù)庫的運(yùn)行副本通常還保存在一個稱為 /var/lib/nfs/xtab 的文件中.
因為xtab并不是供人閱讀的,所以要使用另外的命令來添加和修改其中的項,就是用exportfs

# nfsstat -s //顯示NFS服務(wù)器進(jìn)程的統(tǒng)計信息
# nfsstat -c //顯示與客戶端操作相關(guān)的信息

NFS傳送的方式UDP and TCP
可以手動進(jìn)行設(shè)置,也可以自動進(jìn)行選擇.
mount -t nfs -o sync,tcp,noatime,rsize=1024,wsize=1024,tcp EXPORT_MACHINE:/EXPORTED_DIR /DIR
UDP 有著傳輸速度快,非連接傳輸?shù)谋憬萏匦?但是UDP在傳輸上沒有TCP來的穩(wěn)定,當(dāng)網(wǎng)絡(luò)不穩(wěn)定或者黑客入侵的時候很容易使NFS的 Performance 大幅降低甚至使網(wǎng)絡(luò)癱瘓.所以對于不同情況的網(wǎng)絡(luò)要有針對的選擇傳輸協(xié)議.nfs over tcp比較穩(wěn)定,nfs over udp速度較快.在機(jī)器較少網(wǎng)絡(luò)狀況較好的情況下使用UDP協(xié)議能帶來較好的性能,當(dāng)機(jī)器較多,網(wǎng)絡(luò)情況復(fù)雜時推薦使用TCP協(xié)議(V2只支持UDP協(xié) 議).在局域網(wǎng)中使用UDP協(xié)議較好,因為局域網(wǎng)有比較穩(wěn)定的網(wǎng)絡(luò)保證,使用UDP可以帶來更好的性能,在廣域網(wǎng)中推薦使用TCP協(xié)議,TCP協(xié)議能讓 NFS在復(fù)雜的網(wǎng)絡(luò)環(huán)境中保持最好的傳輸穩(wěn)定性.可以參考這篇文章:http: //www.hp.com.tw/ssn/unix/0212/unix021204.asp.
根據(jù)原理,有時TCP在內(nèi)網(wǎng)不會丟失包的情況下,也可能會性能好很多,所以,最好也測試一下.
補(bǔ)充:
UDP套接口溢出:在帶有許多UDP客戶機(jī)的一臺NFS服務(wù)器上,當(dāng)所有nfsd線程都在使用,而此時又有請求到達(dá)的時候,就會發(fā)生UDP套接口溢出.可 使用netstat -s命令監(jiān)測溢出數(shù)目,增加更多的nfsd直到UDP套接口溢出數(shù)目降為0.溢出表明服務(wù)器提供的守護(hù)進(jìn)程數(shù)量不足,所以增加的nfsd要比通過這種方法 測量出來的數(shù)目多幾個.

NFS的隊列大小
在linux 2.2和2.4內(nèi)核里,默認(rèn)的8個nfsd的輸入隊列大小是64K,2.6內(nèi)核是108K.下面將設(shè)置為較合理的值256K
# echo 262144 > /proc/sys/net/core/rmem_default
# echo 262144 > /proc/sys/net/core/rmem_max
# echo 262144 > /proc/sys/net/core/wmmen_default
# echo 262144 > /proc/sys/net/core/wmmen_max

 

網(wǎng)絡(luò)傳輸包的大小

在不同的網(wǎng)絡(luò)當(dāng)中,因為tcp/ip需要給文件分成一個個的數(shù)據(jù)包,過大和過小都會影響很大,所以需要對網(wǎng)絡(luò)包大小進(jìn)行不同的package測試. 常用的方法ping -s 2048 -f hostname進(jìn)行ping.來測試不同的網(wǎng)絡(luò)傳送包的大小.這樣可以了解不同的包大小的包丟失情況.同時,還可以使用nfsstat -o net 測試nfs使用udp傳送時的丟包率.

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多