• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 對nfs如何優化

    發表于:2007-07-04來源:作者:點擊數: 標簽:
    (轉載)在一個很不顯眼的看見這個文章,感覺很有用,存在這兒仔細看看。 nfs優化篇 1.設置塊大小 mount命令的risize和wsize指定了server端和client端的傳輸的塊大
    (轉載)在一個很不顯眼的看見這個文章,感覺很有用,存在這兒仔細看看。

    nfs優化篇

    1.設置塊大小
    mount命令的risize和wsize指定了server端和client端的傳輸的塊大小。如果沒有指定,那么,系統根據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的傳輸塊。系統缺省的塊可能會太大或者太小,這主要取決于你的kernel和你的網卡,太大或者太小都有可能導致nfs速度很慢。具體的可以使用Bonnie,Bonnie++,iozone等benchmark來測試不同risize和wsize下nfs的速度。當然,也可以使用dd來測試。
     #time dd if=/dev/zero of=/testfs/testfile bs=8k count=1024這是來測試nfs寫
     #time dd if=/testfs/testfile of=/dev/null bs=8k 這是測試nfs讀
    測試時文件的大小至少時系統RAM的兩倍,每次測試都使用umount 和mount對/testfs進行掛載,通過比較不同的塊大小,得到優化的塊大小。

    2.網絡傳輸包的大小
    網絡在包傳輸過程,對包要進行分組,過大或者過小都不能很好的利用網絡的帶寬,所以對網絡要進行測試和調優??梢允褂胮ing -s 2048 -f hostname進行 ping,嘗試不同的package size,這樣可以看到包的丟失情況。同時,可以使用nfsstat -o net 測試nfs使用udp傳輸時丟包的多少。

    因為統計不能清零,所以要先運行此命令記住該值,然后可以再次運行統計。如果,經過上面的統計丟包很多。那么可以看看網絡傳輸包的大小。使用下面的命令:
    #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了解系統可以處理的包的數目,如果網絡包到達了ipfrag_high_thresh,那么系統就會開始丟包,直到包的數目到達ipfrag_low_thresh。

    3.nfs掛載的優化
     
    timeo:如果超時,客戶端等待的時間,以十分之一秒計算。
    retrans:超時嘗試的次數。
    bg:后臺掛載,很有用
    hard:如果server端沒有響應,那么客戶端一直嘗試掛載。
    wsize:寫塊大小
    rsize:讀塊大小
    intr:可以中斷不成功的掛載
    noatime:不更新文件的inode訪問時間,可以提高速度。
    async:異步讀寫。
    4.nfsd的個數
    缺省的系統在啟動時,有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進程,系統的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


    javascript:window.open(this.src);" style="CURSOR: pointer" onload="return imgzoom(this,550)">NFS:網絡文件系統
     (NFS:Network File System)

      網絡文件系統(NFS),起初由 Sun 微系統公司進行開發,后經 IETF 擴展,現在能夠支持在不同類型的系統之間通過網絡進行文件共享。換言之,NFS 可用于不同類型計算機、操作系統、網絡架構和傳輸協議運行環境中的網絡文件遠程訪問和共享。

      NFS 使用客戶端/服務器架構,并由一個客戶端程序和服務器程序組成。服務器程序向其它計算機提供對文件系統的訪問,其過程就叫做“輸出”。NFS 客戶端程序對共享文件系統進行訪問時,把它們從 NFS 服務器中“輸送”出來。NFS 傳輸協議用于服務器和客戶機之間文件訪問和共享的通信,該協議還支持服務器通過輸出控制向一組受到限制的客戶計算機分配遠程訪問特權。

      NFS 版本2,是 NFS 最早被廣泛應用的版本,起初完全運行于 UDP 協議之上,并且不保留狀態。幾大廠商擴展了 NSF 版本2,使之支持 TCP 傳輸。NFS 版本3整合了 TCP 傳輸。使用了 TCP 傳輸后,使得廣域網中的 NFS 應用更為靈活。在繼承了以前版本優點的基礎之上,目前,NFS 版本4在功能上有如下的改進:

    • 提高了經由 Internet 進行訪問的性能。本協議能夠很容易地通過防火墻;在等待時間較長時帶寬較小的情況下,其性能優越;且每臺服務器所連接用戶的數目可擴展到相當大的數目。
    • 將許可條款內置到協議之中,安全性得到了極大的加強。在對遠程過程調用(RPC) PRCSEC_GSB 協議的支持上,本協議則建立在 ONCRPC 工作組的工作之上。另外,NFS 版本4支持客戶機與服務器之間的安全對話,并要求客戶機和服務器支持最簡單的安全計劃。
    • 支持擴展協議。本協議接受所支持協議的標準擴展,而不是打折的向后兼容。

      NFS 與 UNIX 系統息息相關,盡管它可以用于任何平臺中,如 Macintosh 和 Microsoft Windows 操作系統。服務器消息塊協議(SMB)和國際互聯網普通文件系統(CIFS)是 NFS 的類似協議,在 Microsoft Windows 平臺中,擁有著對等的網絡文件系統應用。


    協議結構

       NFS 協議支持許多基本數據類型的文件。另外,NFS 協議支持如下的結構化數據類型:

    名稱

    結構

    注釋

    nfstime4

    struct nfstime4 {
    int64_t seconds;
    uint32_t nseconds;
    }

    nfstime4 結構類型的數據給出了從通用協議時間(UTC)的1970年1月1日0時計起的秒鐘或納秒的數目。這種數據類型用于計算時間和日期的流逝信息。

    time_how4

    enum time_how4 {
    SET_TO_SERVER_TIME4 = 0,
    SET_TO_CLIENT_TIME4 = 1
    };

    正如屬性說明的內容那樣,它可用于確定時間數值。

    settime4

    union settime4 switch {
    case SET_TO_CLIENT_TIME4:
    nfstime4 time;
    default:
    void;
    };

    正如屬性說明的內容那樣,它可用于確定時間數值。

    specdata4

    struct specdata4 {
    uint32_t specdata1;
    uint32_t specdata2;
    };

    本數據類型表示設備文件類型 NF4CHR 和 NF4BLK 的其它信息。

    fsid4

    struct fsid4 {
    uint64_t major;
    uint64_t minor;
    };

    本類型數據是文件系統的標識符,可當作強制型屬性使用。

    fs_location4

    struct fs_location4 {
    utf8str_cis server<>;
    pathname4 rootpath;
    };

    用于推薦屬性 fs_locations,它用于對移植和復制的支持。

    fs_locations4

    struct fs_locations4 {
    pathname4 fs_root;
    fs_location4 locations<>;
    };

    用于推薦屬性 fs_locations,它用于對移植和復制的支持。

    fattr4

     

    struct fattr4 {
    bitmap4 attrmask;
    attrlist4 attr_vals;
    };

    fattr4 結構類型的數據用于表示文件和目錄的屬性。

    change_info4

     

    struct change_info4 {
    bool atomic;
    changeid4 before;
    changeid4 after;
    };

    本結構類型 CREATE、LINK、REMOVE、RENAME 等運算配合使用,可向用戶反映目標文件系統對象所在目錄屬性的變化。

    clientaddr4

    struct clientaddr4 {
    string r_netid<>;
    string r_addr<>;
    };

    它作為 SETCLIENTID 運算的一部分,可以指定正占用一個 clientid 的客戶計算機的地址,也可以作為 callback registration 的一部分。

    cb_client4

    struct cb_client4 {
    unsigned int cb_program;
    clientaddr4 cb_location;
    };

    客戶計算機使用本結構類型的數據來通知服務器回呼地址;包括程序號和客戶計算機地址。

    nfs_client_id4

    struct nfs_client_id4 {
    verifier4 verifier;
    opaque id<NFS4_OPAQUE_LIMIT>;
    };

    本結構類型的數據是 SETCLIENTID operation 對話的一部分。

    open_owner4

    Struct open_owner4 {
    clientid4 clientid;
    opaque wner<NFS4_OPAQUE_LIMIT>;
    };

    本結構類型的數據用于識別開放狀態的用戶。

    lock_owner4

    struct lock_owner4 {
    clientid4 clientid;
    opaque owner<NFS4_OPAQUE_LIMIT>;
    };

    本結構類型的數據用于識別文件鎖定狀態的用戶。

    open_to_lock_owner4

    struct open_to_lock_owner4 {
    seqid4 open_seqid;
    stateid4 open_stateid;
    seqid4 lock_seqid;
    lock_owner4 lock_owner;
    };

    本結構類型的數據用于 open_owner4 的第一次完成的鎖定操作。它提供 open_stateid 和 lock_owner ,以便于從一個有效的 open_stateid sequence 向一個新的 lock_stateid sequence 開始一次傳輸。

    stateid4

     

    struct stateid4 {
    uint32_t seqid;
    opaque other[12];
    };

    本結構類型的數據用于客戶計算機與服務器之間各種不同的共享機制。


    協議結構SMB、CIFS、RPC、TCP、UDP
    組織來源NFS 最初由 Sun 微系統公司開發,現在為 IETF 協議。
    相關協議

    http://www.javvin.com/protocol/rfc3530.pdf : NFS 版本 4 協議規范
    http://www.javvin.com/protocol/rfc1813.pdf : NFS 版本 3 協議規范
    http://www.javvin.com/protocol/rfc1094.pdf : NFS 版本 2 協議規范


    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>