關(guān)于AIX掛載NFS寫(xiě)入效率低效的解決方法
NFS提供的服務(wù)
Mount: 通過(guò)在服務(wù)端啟用/usr/sbin/rpc.mountd伺服進(jìn)程,在客戶端使用mount命令,mounted伺服進(jìn)程是一個(gè)RPC來(lái)回應(yīng)客戶端的請(qǐng)求
Remote File access:通過(guò)在服務(wù)端啟用/usr/sbin/nfsd和在客戶端啟用/usr/sbin/biod,來(lái)出來(lái)客戶端對(duì)文件的請(qǐng)求。但客戶端一個(gè)用戶要來(lái)讀或?qū)懸粋€(gè)在服務(wù)器端的文件時(shí),biod伺服進(jìn)程發(fā)送這個(gè)請(qǐng)求到服務(wù)端。
Boot parameters: 通過(guò)在服務(wù)端啟用/usr/sbin/rpc.bootparamd伺服進(jìn)程來(lái)提供無(wú)盤(pán)SunOS客戶端的啟動(dòng)參數(shù)。
PC authentication: 通過(guò)在服務(wù)端啟動(dòng)/usr/sbin/rpc.pcnfsd來(lái)提供PC-NFS的用戶認(rèn)證服務(wù)
一個(gè)NFS服務(wù)是無(wú)狀態(tài)的(stateless),也就是說(shuō),NFS的傳輸是原子級(jí)的,一個(gè)單一的NFS傳輸對(duì)應(yīng)了一個(gè)單一完整的文件操作。
背景:
Linux是NFS的Server端,AIX是NFS的Client端(此外,有一個(gè)Linux也作為Client端對(duì)比測(cè)試)。
1.NFS對(duì)應(yīng)的底層設(shè)備是閃存卡,本地測(cè)試I/O寫(xiě)性能可達(dá)2GB/s;
2.服務(wù)器是千兆網(wǎng)卡,F(xiàn)TP測(cè)試傳輸可達(dá)到100MB/s;
3.AIX成功掛載NFS,dd測(cè)試寫(xiě)入速度只有10MB/s;
4.Linux成功掛載NFS,同樣dd測(cè)試寫(xiě)入速度可達(dá)到100MB/s;
說(shuō)明:以上速度主要是體現(xiàn)數(shù)量級(jí)的差異,實(shí)際測(cè)試會(huì)有少許偏差。
具體環(huán)境:
- NFS Server:RHEL 6.8
- NFS Client:AIX 6.1、RHEL 6.8
掛載參數(shù)均依據(jù)MOS文檔配置:
Mount Options for Oracle files for RAC databases and Clusterware when used with NFS on NAS devices (文檔 ID 359515.1)
根據(jù)本次實(shí)際需求,提煉一下需要配置的參數(shù):
--MOS建議(AIX):
cio,rw,bg,hard,nointr,rsize=32768,
wsize=32768,proto=tcp,noac,
vers=3,timeo=600--MOS建議(Linux):
rw,bg,hard,nointr,rsize=32768,
wsize=32768,tcp,actimeo=0,
vers=3,timeo=600
AIX NFS的掛載參數(shù):
mount -o cio,rw,bg,hard,nointr,rsize=32768,wsize=32768,proto=tcp,noac,vers=3,timeo=600 10.xx.xx.212:/xtts /xtts
直接掛載提示如下錯(cuò)誤:
# mount -o cio,rw,bg,hard,nointr,rsize=32768,wsize=32768,proto=tcp,noac,vers=3,timeo=600 10.xx.xx.212:/xtts /xtts mount: 1831-008 giving up on: 10.xx.xx.212:/xtts vmount: Operation not permitted.
查資料確認(rèn)AIX需要額外設(shè)置網(wǎng)絡(luò)參數(shù):
# nfso -p -o nfs_use_reserved_ports=1
再次嘗試掛載成功:
mount -o cio,rw,bg,hard,nointr,rsize=32768,wsize=32768,proto=tcp,noac,vers=3,timeo=600 10.xx.xx.212:/xtts /xtts
可dd測(cè)試的速度非常不理想,只有10MB/s:
--test performance; AIX NFS # time dd if=/dev/zero of=/xtts/test-write bs=8192 count=102400 102400+0 records in. 102400+0 records out. real 0m43.20s user 0m0.79s sys 0m5.28s # time dd if=/xtts/test-write of=/dev/null bs=8192 count=102400 102400+0 records in. 102400+0 records out. real 0m30.86s user 0m0.84s sys 0m5.88s
所有參數(shù)都是根據(jù)實(shí)際需求,按照MOS的建議設(shè)置的。有什么問(wèn)題嗎?
- 嘗試去掉cio參數(shù)測(cè)試,發(fā)現(xiàn)結(jié)果幾乎沒(méi)變化;
- 嘗試去掉hard參數(shù)測(cè)試,發(fā)現(xiàn)結(jié)果幾乎沒(méi)變化;
- 嘗試協(xié)議從tcp改為udp測(cè)試,發(fā)現(xiàn)結(jié)果幾乎沒(méi)變化;
幾乎能試的參數(shù)都試了,結(jié)果都不理想,馬上都準(zhǔn)備協(xié)調(diào)資源找主機(jī)工程師定位了。
此時(shí),靈感乍現(xiàn),突然想到一個(gè)可能性。有沒(méi)有可能AIX上的NFS限制了單個(gè)進(jìn)程的I/O吞吐能力?帶著這個(gè)猜測(cè),進(jìn)行并行測(cè)試:
開(kāi)5個(gè)窗口同時(shí)開(kāi)始dd:
time dd if=/dev/zero of=/xtts/test-write1 bs=8192 count=102400 time dd if=/dev/zero of=/xtts/test-write2 bs=8192 count=102400 time dd if=/dev/zero of=/xtts/test-write3 bs=8192 count=102400 time dd if=/dev/zero of=/xtts/test-write4 bs=8192 count=102400 time dd if=/dev/zero of=/xtts/test-write5 bs=8192 count=102400
驚喜的發(fā)現(xiàn)5個(gè)窗口都在55s同時(shí)完成,這相當(dāng)于800M*5=4000M,都在55s完成,每秒達(dá)到72MB/s,通過(guò)這種并行的方式已滿足提升效率的需求。
而且看起來(lái)只要繼續(xù)嘗試多開(kāi)窗口測(cè)試,基本也能達(dá)到網(wǎng)絡(luò)上限100MB/s(千兆網(wǎng)卡限制)。
附:測(cè)試同樣的NFS掛載到另一臺(tái)Linux服務(wù)器上,無(wú)需并行,dd寫(xiě)入速度就可達(dá)100MB/s,這也是之前影響自己思考的因素。
Linux NFS的掛載參數(shù):
# mount -o rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,actimeo=0,vers=3,timeo=600 10.xx.xx.212:/xtts /xtts
Linux NFS的測(cè)試結(jié)果:
--test performance; Linux NFS # dd if=/dev/zero of=/xtts/test-write bs=8192 count=102400 102400+0 records in 102400+0 records out 838860800 bytes (839 MB) copied, 6.02451 s, 139 MB/s # dd if=/xtts/test-write of=/dev/null bs=8192 count=102400 102400+0 records in 102400+0 records out 838860800 bytes (839 MB) copied, 8.55925 s, 98.0 MB/s
對(duì)AIX不熟悉,沒(méi)有進(jìn)一步深究底層原理。開(kāi)始解決問(wèn)題過(guò)程中的主要困惑在于,為何Linux作為client時(shí),無(wú)需并行就可以dd測(cè)試達(dá)到100MB/s的速度,使自己陷入了固有思維中。從這件事情得到的思考是:有些時(shí)候,要跳出常規(guī)思維去思考方可有所突破。
最后把NFS Server端本地測(cè)試的結(jié)果也貼出來(lái),感嘆下閃存卡的I/O能力:
# dd if=/dev/zero of=/dev/test-write2 bs=8192 count=1024000 1024000+0 records in 1024000+0 records out 8388608000 bytes (8.4 GB) copied, 4.19912 s, 2.0 GB/s
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
winxp apache用php建本地虛擬主機(jī)的方法
windows xp用php建本地虛擬主機(jī)的方法(注:以下目錄是筆者系統(tǒng)目錄)2009-07-07
如何配置apache虛擬主機(jī)的實(shí)例小結(jié)
如果你是第一次配置apache虛擬主機(jī),那么通過(guò)閱讀這篇文章你將會(huì)了解到如何實(shí)現(xiàn)apache虛擬主機(jī)配置。其實(shí)要配置好一臺(tái)虛擬主機(jī)沒(méi)有想象中那么難2014-01-01
Linux系統(tǒng)安裝Tomcat并配置Service啟動(dòng)關(guān)閉
這篇文章主要介紹了Linux系統(tǒng)安裝Tomcat并配置Service啟動(dòng)關(guān)閉,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
apache簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
本篇文章主要介紹apache簡(jiǎn)介,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08

