NFS指定端口,NFS緩存


nfs服務端:

#編輯/etc/nfsmount.conf,在末尾添加:

#RQUOTAD_PORT=30001
#LOCKD_TCPPORT=30002
#LOCKD_UDPPORT=30002
#MOUNTD_PORT=30003
#STATD_PORT=30004

 

cat /etc/sysconfig/nfs|grep -v "^#"
RQUOTAD_PORT=10001
LOCKD_TCPPORT=10002
LOCKD_UDPPORT=10002
MOUNTD_PORT=10003
STATD_PORT=10004

 

iptables  -P INPUT DROP

iptables  -P OUTPUT ACCEPT

 

nfs客戶端防火牆:

iptables -A INPUT -s (服務端IP) -p tcp -m multiport --dport 111,2049,30001:30004 -j ACCEPT

 

nfs服務端防火牆:

iptables -A INPUT -s (客戶端IP) -p tcp -m multiport  --dport 111,2049,30001:30004 -j ACCEPT

 測試:服務端telnet 客戶端IP 端口

 

服務端exports文件,多個IP用空格隔開:

/data/web_log/  10.46.121.240 10.46.121.182(ro,anonuid=65534,anongid=65534,sync)

 

 

 

如下報錯:
mount: no type was given - I'll assume nfs because of the colon
mount.nfs: timeout set for Fri Apr 21 10:07:26 2017
mount.nfs: trying text-based options 'vers=4,addr=10.46.121.222,clientaddr=10.46.121.240'
mount.nfs: mount(2): No such file or directory
mount.nfs: trying text-based options 'addr=10.46.121.222'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 10.46.121.222 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 10.46.121.222 prog 100005 vers 3 prot UDP port 47203
解決:逐級輸出目錄,客戶端逐級掛載(在nfs服務器端exports文件如下)
/data/web_log/ 10.46.121.240(ro,anonuid=65534,anongid=65534,sync)
/data/apache-tomcat/tomcat-cms-web-1031/logs 10.46.121.240(ro,sync,no_root_squash,no_all_squash)

 

 

NFS掛載的客戶端緩存以及如何使用noac選項

現象:

用戶兩台ECS掛載同一個NFS文件系統,在ECS-A上append寫文件,在ECS-B用tail -f觀察文件內容的變化。在ECS-A寫完之后,在ECS-B看到文件內容變化會有10-30秒的延時。然而相同的場景下,如果直接在ECS-B上打開文件(比如vi)卻是立即可以看到更新的內容的。

 

原因:跟mount的選項以及tail -f實現相關。

 

用戶使用的mount命令:mount -t nfs4 /mnt/

對於在ECS-B上以這一方式NFS mount的文件系統,默認情況下kernel對文件和目錄的屬性維護了一份metadata緩存,文件和目錄屬性(包括許可權、大小、和時間戳記)緩存的目的是減少 NFSPROC_GETATTR 遠程過程調用(RPC)的需求。

tail -f 的實現是sleep+fstat來觀察文件屬性(主要是文件大小)的變化,然后讀入文件並輸出。可見,tail -f是否能實時輸出文件內容,主要取決於fstat的結果,由於前面描述得metadata cache的存在,fstat輪詢到的並不是實時的文件屬性,因此,即使在NFS服務器端文件已經更新了,但tail -f卻沒法知道文件已經改動了,於是輸出就會有一個延時。

 

解決辦法:使用mount 的noac選項可以disable文件和目錄屬性的緩存。

mount -t nfs4 -o noac /mnt/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM