環境:CentOS 6.5 64bit
在一台用戶端機上執行mount指令挂載nfs,結果報如下錯誤:
<code>mount</code><code>: wrong fs </code><code>type</code><code>, bad option, bad superblock on 192.168.0.10:</code><code>/bak</code><code>,</code>
<code> </code><code>missing codepage or helper program, or other error</code>
<code> </code><code>(</code><code>for</code> <code>several filesystems (e.g. nfs, cifs) you might</code>
<code> </code><code>need a </code><code>/sbin/mount</code><code>.<</code><code>type</code><code>> helper program)</code>
<code> </code><code>In some cases useful info is found </code><code>in</code> <code>syslog - try</code>
<code> </code><code>dmesg | </code><code>tail</code> <code>or so</code>
是因為我的用戶端機器沒有安裝nfs-utils,執行如下指令:
<code>yum -y </code><code>install</code> <code>nfs-utils</code>
之後再挂載,正常。
在用戶端和服務端使用指令:showmount -e 10.10.209.148 報錯
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
解決方法:
被通路的NFS伺服器上的防火牆沒有添加規則,向iptables裡面添加以下檢視的所有端口即可(目前解決的方法,當然你也可以關閉防火牆,不過這樣是比較不安全的,如果你的nfs作用不大,建議你另選别的應用來替代吧!畢竟開那麼多的端口,比較不安全呀!)
#vim /etc/sysconfig/iptables
#service iptables stop //關閉防火牆
通過#rpcinfo -p 10.10.209.148
[root@rh01 /]# rpcinfo -p 10.10.209.148
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 52943 status
100024 1 tcp 37706 status
100011 1 udp 875 rquotad
100011 2 udp 875 rquotad
100011 1 tcp 875 rquotad
100011 2 tcp 875 rquotad
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 2 tcp 2049 nfs_acl
100227 3 tcp 2049 nfs_acl
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 2 udp 2049 nfs_acl
100227 3 udp 2049 nfs_acl
100021 1 udp 37438 nlockmgr
100021 3 udp 37438 nlockmgr
100021 4 udp 37438 nlockmgr
100021 1 tcp 46331 nlockmgr
100021 3 tcp 46331 nlockmgr
100021 4 tcp 46331 nlockmgr
100005 1 udp 57177 mountd
100005 1 tcp 43147 mountd
100005 2 udp 49154 mountd
100005 2 tcp 54810 mountd
100005 3 udp 55707 mountd
100005 3 tcp 58309 mountd
2015-3-12
伺服器端安裝yum install nfs-utils
修改nfs共享權限:
NFS服務的配置
隻需要在NFS的主配置檔案/etc/exports中進行設定就行,然後啟動NFS服務。
/nfs/public 192.168.14.0/24(rw,async) *(ro)——*[注意] 一個共享檔案夾目錄
/home/data/ 10.124.177.249(ro,async,no_root_squash)
NFS的設定選項:
通路權限選項
說明
ro
設定輸出共享目錄為隻讀
rw
設定輸出共享目錄為可讀寫
使用者映射選項
說明
all_squash
将遠端通路的所有普通使用者及所屬使用者都映射為匿名使用者或使用者組(一般均為nfsnobody)
no_all_squash
不将遠端通路的所有普通使用者及所屬使用者都映射為匿名使用者或使用者組(預設設定)
root_squash
将root使用者及所屬使用者組都映射為匿名使用者或使用者組(預設設定)
no_root_squash
不将root使用者及所屬使用者組都映射為匿名使用者或使用者組
anonuid=xxx
将遠端通路的所有使用者都映射為匿名使用者,并指定該匿名使用者賬戶為本地使用者賬戶(UID=xxx)
anongid=xxx
将遠端通路的所有使用者組都映射為匿名使用者組賬戶,
并指定該匿名使用者組賬戶為本地使用者組賬戶(GID=xxx)
其它選項
secure
限制用戶端隻能從小于1024的TCP/IP端口連接配接NFS伺服器(預設設定)
insecure
允許用戶端從大于1024的TCP/IP端口接連NFS伺服器
sync
将資料同步寫入記憶體緩沖區與磁盤中,雖然這樣做效率較低,但可以保證資料的一緻性
async
将資料先儲存在記憶體緩沖區,必要時才寫入磁盤
wdelay
檢查是否有相關的寫操作,如果有,則将這些寫操作一起執行,這樣可以提高效率(預設設定)
no_wdelay
若有寫操作則立即執行,應與sync配合使用
subtree_check
若輸出共享目錄是一個子目錄,則NFS伺服器将檢查其父目錄的權限(預設設定)
no_subtree_check
即使輸出目錄是一個子目錄,NFS伺服器也不檢查其父目錄的權限,這樣做可提高效率
服務啟動順序:
service rpcbind start
service nfslock start
service nfs start
服務停止順序:
service nfslock stop
service nfs stop
service rpcbind stop
2015-12-11
nfs修改共享權限後,使之生效!
service nfs reload
2016-03-02
nfs性能調優
<a href="http://blog.csdn.net/anghlq/article/details/8532312" target="_blank">http://blog.csdn.net/anghlq/article/details/8532312</a>
<a href="http://blog.csdn.net/yangzhongxuan/article/details/7918884" target="_blank">http://blog.csdn.net/yangzhongxuan/article/details/7918884</a>
linux中的NFSD的COPY數目是在/etc/rc.d/init.d/nfs這個啟動檔案中設定的,預設是8個NFSD,對于這個參數的設定一般是要根據可能的CLIENT數目來進行設定的,和WSIZE、RSIZE一樣也是要通過測試來找到最近的數值。
[root@localhost /]# umount /data/
umount.nfs: /data: device is busy
通過這條指令檢視:
[root@localhost /]# fuser -m -v /data/
使用者 程序号 權限 指令
/data/: root 2798 ..c.. bash
root 2996 ..c.. su
如上所示,有兩個程序占用了,将其kill掉,再重新取消挂載。
[root@localhost /]# kill -9 2798
[root@localhost /]# kill -9 2996
[root@localhost /]#
本文轉自 南非波波 51CTO部落格,原文連結:http://blog.51cto.com/nanfeibobo/1603687,如需轉載請自行聯系原作者