NFS服務(wù)器的架構(gòu)和優(yōu)化
在對(duì)NFS服務(wù)進(jìn)行建設(shè)的時(shí)候,我們知道,打造一個(gè)NFS服務(wù)器需要有一個(gè)客戶端和一個(gè)服務(wù)端,然后兩者才能夠相連進(jìn)行通信使用。這里我們就來了解一下客戶端以及服務(wù)器端的一些設(shè)置,然后再進(jìn)行一下優(yōu)化的講解。
CLIENT 和SERVER的具體操作和設(shè)置
在講NFS SERVER的運(yùn)作之前先來看一些與NFS SERVER有關(guān)的東西:
RPC(Remote Procedure Call)
NFS本身是沒有提供信息傳輸?shù)膮f(xié)議和功能的,但NFS卻能讓我們通過網(wǎng)絡(luò)進(jìn)行資料的分享,這是因?yàn)镹FS使用了一些其它的傳輸協(xié)議.而這些傳輸協(xié)議勇士用到這個(gè)RPC功能的.可以說NFS本身就是使用RPC的一個(gè)程序.或者說NFS也是一個(gè)RPC SERVER.所以只要用到NFS的地方都要啟動(dòng)RPC服務(wù),不論是NFS SERVER或者NFS CLIENT.這樣SERVER和CLIENT才能通過RPC來實(shí)現(xiàn)PROGRAM PORT的對(duì)應(yīng).可以這么理解RPC和NFS的關(guān)系:NFS是一個(gè)文件系統(tǒng),而RPC是負(fù)責(zé)負(fù)責(zé)信息的傳輸.
NFS服務(wù)器需要啟動(dòng)的DAEMONS
pc.nfsd:主要復(fù)雜登陸權(quán)限檢測等.
rpc.mountd:負(fù)責(zé)NFS的檔案系統(tǒng),當(dāng)CLIENT端通過rpc.nfsd登陸SERVER后,對(duì)clinet存取server的文件進(jìn)行一系列的管理
NFS SERVER在REDHAT LINUX平臺(tái)下一共需要兩個(gè)套件:nfs-utils和PORTMAP
nfs-utils:提供rpc.nfsd 及 rpc.mountd這兩個(gè) NFS DAEMONS的套件
portmap:NFS其實(shí)可以被看作是一個(gè)RPC SERVER PROGRAM,而要啟動(dòng)一個(gè) RPC SERVER PROGRAM,都要做好PORT的對(duì)應(yīng)工作,而且這樣的任務(wù)就是由PORTMAP來完成的.通俗的說PortMap就是用來做 PORT的mapping的.
NFS服務(wù)器調(diào)優(yōu)
調(diào)優(yōu)的步驟:
1、測量當(dāng)前網(wǎng)絡(luò)、服務(wù)器和每個(gè)客戶端的執(zhí)行效率.
2、分析收集來的數(shù)據(jù)并畫出圖表.查找出特殊情況,例如很高的磁盤和CPU占用、已經(jīng)高的磁盤使用時(shí)間
3、調(diào)整服務(wù)器
4、重復(fù)第一到第三步直到達(dá)到你渴望的性能
與 NFS性能有關(guān)的問題有很多,通??梢砸紤]的有以下這些選擇:
WSIZE,RSIZE參數(shù)來優(yōu)化NFS的執(zhí)行效能
WSIZE、 RSIZE對(duì)于NFS的效能有很大的影響.
wsize和rsize設(shè)定了SERVER和CLIENT之間往來數(shù)據(jù)塊的大小,這兩個(gè)參數(shù)的合理設(shè)定與很多方面有關(guān),不僅是軟件方面也有硬件方面的因素會(huì)影響這兩個(gè)參數(shù)的設(shè)定(例如LINUX KERNEL、網(wǎng)卡,交換機(jī)等等).
下面這個(gè)命令可以測試NFS的執(zhí)行效能,讀和寫的效能可以分別測試,分別找到合適的參數(shù).對(duì)于要測試分散的大量的數(shù)據(jù)的讀寫可以通過編寫腳本來進(jìn)行測試.在每次測試的時(shí)候最好能重復(fù)的執(zhí)行一次MOUNT和unmount.
time dd if=/dev/zero of=/mnt/home/testfile bs=16k count=16384
用于測試的WSIZE,RSIZE最好是1024的倍數(shù),對(duì)于NFS V2來說8192是RSIZE和WSIZE的最大數(shù)值,如果使用的是 NFS V3則可以嘗試的最大數(shù)值是32768.
如果設(shè)置的值比較大的時(shí)候,應(yīng)該最好在CLIENT上進(jìn)入mount上的目錄中,進(jìn)行一些常規(guī)操作(LS,VI等等),看看有沒有錯(cuò)誤信息出現(xiàn).有可能出現(xiàn)的典型問題有LS的時(shí)候文件不能完整的列出或者是出現(xiàn)錯(cuò)誤信息,不同的操作系統(tǒng)有不同的最佳數(shù)值,所以對(duì)于不同的操作系統(tǒng)都要進(jìn)行測試.
設(shè)定最佳的NFSD的COPY數(shù)目.
linux中的NFSD的COPY數(shù)目是在/etc/rc.d/init.d/nfs這個(gè)啟動(dòng)文件中設(shè)置的,默認(rèn)是8個(gè)NFSD,對(duì)于這個(gè)參數(shù)的設(shè)置一般是要根據(jù)可能的CLIENT數(shù)目來進(jìn)行設(shè)定的,和WSIZE、RSIZE一樣也是要通過測試來找到最近的數(shù)值.
UDP and TCP
可以手動(dòng)進(jìn)行設(shè)置,也可以自動(dòng)進(jìn)行選擇.
mount -t nfs -o sync,tcp,noatime,rsize=1024,wsize=1024 EXPORT_MACHINE:/EXPORTED_DIR /DIR
UDP有著傳輸速度快,非連接傳輸?shù)谋憬萏匦?但是UDP在傳輸上沒有TCP來的穩(wěn)定,當(dāng)網(wǎng)絡(luò)不穩(wěn)定或者黑客入侵的時(shí)候很容易使NFS服務(wù)器的 Performance 大幅降低甚至使網(wǎng)絡(luò)癱瘓.所以對(duì)于不同情況的網(wǎng)絡(luò)要有針對(duì)的選擇傳輸協(xié)議.nfs over tcp比較穩(wěn)定,nfs over udp速度較快.在機(jī)器較少網(wǎng)絡(luò)狀況較好的情況下使用UDP協(xié)議能帶來較好的性能,當(dāng)機(jī)器較多,網(wǎng)絡(luò)情況復(fù)雜時(shí)推薦使用TCP協(xié)議(V2只支持UDP協(xié)議).在局域網(wǎng)中使用UDP協(xié)議較好,因?yàn)榫钟蚓W(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 ;