⑴ linux 中nfs 出現問題permission denied
如果你以前沒有裝過nfs服務的話那麼首先要下載幾個包:
#apt-get install nfs-kernel-server
#apt-get install nfs-common //可選
安裝nfs-kernel-server的時候系統會自動下載另外一個包portmap;
安裝結束後,配置文件是/etc/exports,主要是設置伺服器的共享目錄以及許可權的,
在後面加上你的共享目錄即可。我的配置文件如下:
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync) hostname2(ro,sync)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt)
# /srv/nfs4/homes gss/krb5i(rw,sync)
#
/arm9test 127.0.0.3(rw,sync,no_root_squash)
/arm9test 127.0.0.2(rw,sync,no_root_squash)
其中/arm9test表示伺服器要共享的目錄,把這個改成你要共享的目錄就可以了,127.0.0.1和127.0.0.2都是伺服器所允許訪問的主機 名,就是說你可以設置哪台主機可以訪問你的共享目錄,如果用一個「*」來代替這個ip地址的話就是允許所有的主機訪問你的共享目錄,後面的幾個參數就不說 了。
設置好配置文件後,保存退出,執行
#sudo exportfs -r 更新exportfs
執行這個命令的時候可能會提示一些錯誤,如下:
lmz@lmz-desktop:~/arm9$ sudo exportfs -r
exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "218.192.161.80:/arm9test".
Assuming default behaviour ('no_subtree_check').
NOTE: this default has changed since nfs-utils version 1.0.x
exportfs: /etc/exports [2]: Neither 'subtree_check' or 'no_subtree_check' specified for export "218.192.161.65:/arm9test".
Assuming default behaviour ('no_subtree_check').
NOTE: this default has changed since nfs-utils version 1.0.x
這些問題並不影響後面的使用;
然後重啟nfs服務,執行下面命令
#sudo /etc/init.d/portmap restart
#sudo /etc/init.d/nfs-kernel-server restart
成功啟動後,執行
#showmount -e
查看NFS server的export list.
我的機器上的輸出是:
lmz@lmz-desktop:~/arm9$ showmount -e
Export list for lmz-desktop:
/arm9test 127.0.0.3,127.0.0.2
至此,可以在自己的機子上測試一下nfs服務了,具體過程如下:
#mount serverip:/arm9test /mnt
其中serverip實際上就是伺服器的ip,千萬不要少了serverip後面的那個「:」哦,會出錯的
如果掛載成功的話進到/mnt是可以看到/arm9test下面的文件的,如果出錯的話就要查找一下原因了。
在自己電腦上測試通過以後就要把宿主機的共享目錄掛載到目標板上了,這樣調試程序非常方便,不用把程序傳過去就可以直接調試了。掛載過程如下:
首先開機啟動2410,進入linux,進入shell,配置板子的ip地址,
#ifconfig eth0 ipaddr
ipaddr就是上面所設置的允許訪問共享目錄的ip,在這里可以設為127.0.0.2,然後執行嗯命令:
#mount -t nfs -o intr,nolock,rsize=1024,wsize=1024 serverip:/arm9test /mnt/ext1
把serverip改為你自己的主機的ip就可以了,這個時候要確認你的主機的nfs服務已經啟動,並且網線已經連接好,正常情況下等一下就可以完成掛載 了
⑵ linux配置nfs步驟
NFS的配置過程很簡單。在伺服器端中編輯 /etc/exports 文件,添加如下內容: /home/nfs-share 192.168.1.122 (rw,sync)
第一項是要共享的目錄,後者為共享的配置參數一般為: (rw,sync,no_root_squash,no_all_squash,no_subtree_check)
然後開啟NFS和portmap服務:
/etc/init.d/nfs start //用service nfs start也可以 /etc/init.d/portmap start //用service portmap stasrt也可以
在centos6.5中portmap已經改為rpcbind 在客戶端,用mount –t nfs 192.168.123:/home/nfs-share /home/remote_file掛載伺服器端的共享目錄到本地的/home/remote-file掛載點,然後我們就可以在客戶端上應用到遠程主機上的/home/nfs-share目錄了。想要系統在開機時自動掛載,修改/etc/fstab文件,把NFS伺服器的共享目錄添加進去就可以了,這個不用多說。
如何知道遠程主機上的共享目錄情況呢?使用showmount命令,這個命令需要root許可權。它有三個選項(記住這三個選項代表的含義: showmount –a IP 顯示指定NFS伺服器的客戶端以及伺服器端在客戶端的掛載點 showmount –d IP 顯示指定NFS伺服器在客戶端的掛載點 showmount –e IP 顯示指定NFS伺服器上的共享目錄列表(或者叫輸出列表) 我們輸入命令showmount –a 192.168.1.123:
圖片客戶端中出現的mount clntudp_create: RPC: Program not registered錯誤是怎麼回事?噢,我剛才重啟了一下伺服器端,重啟後NFS服務沒有開啟。 我們開啟伺服器端的NFS服務,再從客戶端上查看一下NFS伺服器的情況:
Showmount –a顯示出NFS伺服器192.168.1.123的共享目錄被客戶端192.168.122掛載到/home中;
在showmount -e IP,出現clnt_create: RPC: Port mapper failure - Timed out報錯
解決方案:
被訪問的NFS伺服器上的防火牆沒有添加規則,向iptables裡面添加以下查看的所有埠即可(目前解決的方法,當然你也可以關閉防火牆,不過這樣是比較不安全的,如果你的nfs作用不大,建議你另選別的應用來替代吧!畢竟開那麼多的埠,比較不安全呀!)
通過#rpcinfo -p 10.10.209.148
[root@rh01 /]# rpcinfo -p 10.10.209.148program vers proto port service100000 4 tcp 111 portmapper100000 3 tcp 111 portmapper100000 2 tcp 111 portmapper100000 4 udp 111 portmapper100000 3 udp 111 portmapper100000 2 udp 111 portmapper100024 1 udp 52943 status100024 1 tcp 37706 status100011 1 udp 875 rquotad100011 2 udp 875 rquotad100011 1 tcp 875 rquotad100011 2 tcp 875 rquotad100003 2 tcp 2049 nfs100003 3 tcp 2049 nfs100003 4 tcp 2049 nfs100227 2 tcp 2049 nfs_acl100227 3 tcp 2049 nfs_acl100003 2 udp 2049 nfs100003 3 udp 2049 nfs100003 4 udp 2049 nfs100227 2 udp 2049 nfs_acl100227 3 udp 2049 nfs_acl100021 1 udp 37438 nlockmgr100021 3 udp 37438 nlockmgr100021 4 udp 37438 nlockmgr100021 1 tcp 46331 nlockmgr100021 3 tcp 46331 nlockmgr100021 4 tcp 46331 nlockmgr100005 1 udp 57177 mountd100005 1 tcp 43147 mountd100005 2 udp 49154 mountd100005 2 tcp 54810 mountd100005 3 udp 55707 mountd100005 3 tcp 58309 mountd
[root@rh01 /]#
剛才在重啟NFS服務的時候,細心的話可以注意到,我們在輸入命令/etc/init.d/nfs start開啟nfs服務時,系統還自作主張地開啟了NFS quotas等其它3個服務。
怎麼回事?我們只輸入了一條啟動NFS服務的命令,它怎麼額外的啟動了3個服務?後面的啟動portmap服務又是怎麼回事? 我們首先要了解一點:NFS文件系統要提供服務單靠本身的NFS服務是不夠的,還需要調用其它服務,這個其它服務就是RPC(remote procere call,遠程過程調用)服務和portmap服務。由於NFS服務本身不提供文件傳輸功能,我們要遠程使用NFS文件系統就需要RPC服務的支持;而portmap服務用來為RPC服務進行動態埠分配和映射,所以portmap服務也是NFS服務所必須的。
我們查看一下服務的啟動情況:
所遇錯誤:
/etc/init.d/nfs-kernel-server: 沒有那個文件或目錄
解決方案:
沒有配置、安裝NFS
Linux 下配置NFS服務
1、安裝
2、配置
3、客戶端
所遇問題:centos6.5
portmap: 未被識別的服務
解決方案:
由於在6系列裡面,portmap已經改名了 ,6系列需要使用 service rpcbind start啟動[root@unix-big-bang ~]# service portmap start
portmap: 未被識別的服務
[root@unix-big-bang ~]# service rpcbind status
rpcbind (pid 1312) is running...
[root@unix-big-bang ~]#
好文共賞:
linux nfs文件共享
◆一、概念
NFS是網路文件系統(Network File System)的簡稱,是分布式計算機系統的一個組成部分,可實現在異構網路上共享和裝配遠程文件系統。
NFS由SUN公司開發,目前已成為文件服務的一種標准(RFC1904,RFC1813)。其最大的功能就是可以通過網路,讓不同 操作系統 的計算機可以共享數據,所以也可以看作是一個文件伺服器。NFS是除了SAMBA之外Windows與Linux及Unix與Linux之間通信的方法。
理想條件下的NFS 網路拓撲結構
1、設置Linux系統之間的文件共享(Linux與Windows中間文件共享採用SAMBA服務);
2、NFS只是一種文件系統,本身沒有傳輸功能,是基於RPC協議實現的,才能達到兩個Linux系統之間的文件目錄共享;
3、NFS為C/S 架構 ;
◆二、伺服器配置
1、配置文件
主要配置文件為:/etc/exports
格式為: 共享目錄 可mount主機IP(參數1,參數2,……)
如:/var/nfs 172.20. . (rw,sync,no_rootl_squash)
說明:必須注意nfs/目錄的訪問許可權,必須設置成777許可權;父目錄/var許可權無要求,普通的755即可;
2、啟動相關服務
然後依次啟動相關服務:portmap,nfslock,nfs
service portmap start
service nfslock start
service nfs start
關閉順序相反。
3、檢查共享目錄
隨後可以採用showmount –e查看一下,看看共享的目錄情況:
[root@ns var]# showmount -e
Export list for ns.osserver:
/var/nfs 172.20. .
OK,到此為止,NFS伺服器搭建完畢;
◆三、客戶端配置
1、確保portmap運行
客戶端必須確保RPC協議相應的portmap正常運行,否則mount將失敗;
2、掛載/var/nfs目錄(本地掛載點為/mnt/nfs)
mount -t nfs 172.20.65.16:/var/nfs /mnt/nfs
成功mount以後,即可同本地目錄一樣隨意操作;
◆四、其它相關命令
1、當修改了/etc/exports文件後,可以不用重新啟動nfs服務,直接採用exports –rv 即可重新導出共享目錄;
該命令格式如下:
exportfs [-aruv]
-a :全部mount或者unmount /etc/exports中的內容
-r :重新mount /etc/exports中分享出來的目錄
-u :umount 目錄
-v :在 export 的時候,將詳細的信息輸出到屏幕上。
具體例子:
[root@ns var]# showmount -e
Export list for ns.osserver:
/var/nfs 172.20. .
[root@ns var]# exportfs –au #全部卸載
[root@ns var]# showmount -e
Export list for ns.osserver:
[root@ns var]# exportfs –rv #全部重新 export 一次
exporting 172.20. . :/var/nfs
[root@ns var]#
2、showmout命令對於NFS的操作和查錯有很大的幫助,所以我們先來看一下showmount的用法
showmout
-a :這個參數是一般在NFS SERVER上使用,是用來顯示已經mount上本機nfs目錄的cline機器。
-e :顯示指定的NFS SERVER上export出來的目錄。
例如:
[root@localhost ~]# showmount -e 172.20.16.139
Export list for 172.20.16.139 :/root/share 172.20.16.137
[root@ns var]# showmount -a
All mount points on localhost.localdomain: :/root/share,172.20. . :/root/share,172.20.16. :/root/share,172.20.16.139:/nfsshare,172.20.16.139:/root/share172.20.16.137: 172.20.16.137:,172.20. . 172.20.16.137:,172.20.16. 172.20.16.137:/root/share172.20.16.139: 172.20.16.139:,172.20. . 172.20.16.139:,172.20.16. 172.20.16.139:,172.20.16.139172.20.16.139:DEFAULT
◆五、常見問題解答
1、提示:mount to NFS server 餄.20.67.203' failed: server is down.
解決方案:可能是NFS伺服器的防火牆有問題;
2、提示:mount: RPC: Timed out
解決方案:由於RPC協議沒運行;啟動portmap服務;
也有可能是防火牆問題;Server/Client均有可能。
⑶ LINUX怎樣安裝和使用NFS服務
LINUX NFS安裝和使用,具體步驟如下:
1 安裝
需要安裝 portmap和nfs-utils這兩個包,下載rpm包後用rpm安裝或者直接用yum安裝都可以。
rpm -ivh portmap-4.0-65.2.2.1.i386.rpm
rpm -ivh nfs-utils-1.0.9-50.el5.i386.rpm
2 配置
配置文件是/etc/exports,如果不存在需要自己創建。
/etc/exports文件內容格式:
<輸出目錄> [客戶端1域名/IP(選項(訪問許可權,用戶映射,其他))] [客戶端2域名/IP 選項(訪問許可權,用戶映射,其他)]
NFS主要的選項有3類:
A 訪問許可權選項
設置輸出目錄只讀:ro
設置輸出目錄讀寫:rw
B 用戶映射選項
all_squash:將遠程訪問的所有普通用戶及所屬組都映射為匿名用戶或用戶組(nfsnobody);
no_all_squash:與all_squash相反(默認設置);
root_squash:將root用戶及所屬組都映射為匿名用戶或用戶組(默認設置);
no_root_squash:與rootsquash相反;
anonuid=xxx:將遠程訪問的所有用戶都映射為匿名用戶,並指定該用戶為本地用戶(UID=xxx);
anongid=xxx:將遠程訪問的所有用戶組都映射為匿名用戶組賬戶,並指定該匿名用戶組賬戶為本地用戶組賬戶(GID=xxx);
C 其它選項
secure:限制客戶端只能從小於1024的tcp/ip埠連接nfs伺服器(默認設置);
insecure:允許客戶端從大於1024的tcp/ip埠連接伺服器;
sync:將數據同步寫入內存緩沖區與磁碟中,效率低,但可以保證數據的一致性;
async:將數據先保存在內存緩沖區中,必要時才寫入磁碟;
wdelay:檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率(默認設置);
no_wdelay:若有寫操作則立即執行,應與sync配合使用;
subtree:若輸出目錄是一個子目錄,則nfs伺服器將檢查其父目錄的許可權(默認設置);
no_subtree:即使輸出目錄是一個子目錄,nfs伺服器也不檢查其父目錄的許可權,這樣可以提高效率;
例如,我們在namenode1機器上配置做如下配置
/home/dfs/nfs_share_edits/ namenode2(rw)
這個配置是把namenode1上的/home/dfs/nfs_share_edits目錄設置成共享,可以給namenode2來訪問,訪問許可權是可讀寫。
3 啟動
sudo service portmap start
sudo service nfs start
查詢狀態
service portmap status
service nfs status
停止服務
service nfs stop
service portmap stop
4 客戶端掛載
命令格式
mount NFS伺服器IP/域名:共享目錄本地掛載目錄
例如,在namenode2機器上運行mount命令掛載namenode1的NFS共享目錄
mkdir /home/dfs/nfs_share_edits
sudo mountnamenode1:/home/dfs/nfs_share_edits /home/dfs/nfs_share_edits
這是把namenode2把namenode1的NFS共享目錄掛載到本地,這樣就可以訪問遠程的共享目錄了,掛載前需要先創建本地的掛載目錄。
掛載之後,可以用mount命令查看掛載狀態
sudo mount | grep -i nfs
卸載命令
sudo umount namenode1:/home/dfs/nfs_share_edits
5 相關的守護進程
nfsd
它是基本的NFS守護進程,主要功能是管理客戶端是否能夠登錄伺服器;
mountd
它是RPC安裝守護進程,主要功能是管理NFS的文件系統。當客戶端順利通過nfsd登錄NFS伺服器後,在使用NFS服務所提供的文件前,還必須通過文件使用許可權的驗證。它會讀取NFS的配置文件/etc/exports來對比客戶端許可權。
portmap
主要功能是進行埠映射工作。當客戶端嘗試連接並使用RPC伺服器提供的服務(如NFS服務)時,portmap會將所管理的與服務對應的埠提供給客戶端,從而使客戶可以通過該埠向伺服器請求服務。
6 相關的命令
#查看配置
exportfs
#默認查看共享的服務
showmount -e
#查看已經與客戶端連接上的目錄信息
showmount -a
⑷ 如何在Linux下掛載NFS網路共享
1. 主機安裝Cygwin(還有一個http://ftp.iij.ad.jp/pub/cygwin/之類的release包),安裝release包時,確保勾選安裝libbz2_1,sunrpc和nfs-sever,cygrunsrv。
2. 安裝好後,運行/bin/nfs-server-config腳本.腳本運行後,生成export文件。
3. 編輯etc/export文件。可分行輸入需要掛載的目錄,如在根目錄下:
/sharefolder [IP/submask] (rw,no_root_squash)
編輯etc/hosts.allow, 增添 nfsd: ALL 一行
4. 啟動NFS服務。
cygrunsrv -S portmap
cygrunsrv -S nfsd
cygrunsrv -S mountd
運行usr/sbin/showmount.exe 測試
5. 客戶機操作:
mount -t nfs -o nolock 192.168.*.*:/sharefolder /mnt
sharefolder即是NFS伺服器上的共享文件夾,掛載點在客戶機/mnt目錄下
6. 測試
cd /mnt
vi test.txt 隨便輸入內容,然後在主機找到 C:/cygwin/sharefolder,如果發現有test.txt並且內容和剛才輸入的一致,則說明掛在成功。