詳細講解NFS配置過程


為什么要用NFS
   NFS(Network File System)即網絡文件系統,是FreeBSD支持的文件系統中的一種,它允許網絡中的計算機之間通過TCP/IP網絡共享資源。在NFS的應用中,本地NFS的客戶端應用可以透明地讀寫位於遠端NFS服務器上的文件,就像訪問本地文件一樣。
   NFS最早是由Sun公司發展出來的,
  簡單的來說:它就是是可以透過網絡,讓不同的主機、不同的操作系統可以共享存儲。
以下是NFS最顯而易見的好處:
  1. 節省本地存儲空間,將常用的數據存放在一台NFS服務器上且可以通過網絡訪問,那么本地終端將可以減少自身存儲空間的使用。
  2. 用戶不需要在網絡中的每個機器上都建有Home目錄,Home目錄可以放在NFS服務器上且可以在網絡上被訪問使用。
  3. 一些存儲設備CDROM和Zip(一種高儲存密度的磁盤驅動器與磁盤)等都可以在網絡上被別的機器使用。這可以減少整個網絡上可移動介質設備的數量。
  NFS 的基本原則是“容許不同的客戶端及服務端通過一組RPC分享相同的文件系統”,它是獨立於操作系統,容許不同硬件及操作系統的系統共同進行文件的分享。
  NFS在文件傳送或信息傳送過程中依賴於RPC協議。RPC,遠程過程調用 (Remote Procedure Call) 是能使客戶端執行其他系統中程序的一種機制。NFS本身是沒有提供信息傳輸的協議和功能的,但NFS卻能讓我們通過網絡進行資料的分享,這是因為NFS使用了一些其它的傳輸協議。而這些傳輸協議用到這個RPC功能的。可以說NFS本身就是使用RPC的一個程序。或者說NFS也是一個RPC SERVER。所以只要用到NFS的地方都要啟動RPC服務,不論是NFS SERVER或者NFS CLIENT。這樣SERVER和CLIENT才能通過RPC來實現PROGRAM PORT的對應。可以這么理解RPC和NFS的關系:NFS是一個文件系統,而RPC是負責負責信息的傳輸。
一、准備階段:(客戶端和服務端)
[root@NFS-server ~]# cat /etc/redhat-release #查看系統版本
CentOS release 6.8 (Final)
[root@NFS-server ~]# uname -r #查看系統內核版本 2.6.32-642.11.1.el6.x86_64
[root@NFS-server ~]# uname -m #查看系統是否64位
x86_64
二、NFS服務端所需的軟件列表
nfs-utils: 這個是NFS服務主程序(包含rpc.nfsd、rpc.mountd、daemons)
rpcbind: 這個是CentOS6.X的RPC主程序(CentOS5.X的為portmap)
三、檢查軟件是否安裝
[root@NFS-server ~]# rpm -qa nfs-utils rpcbind #檢查安裝的軟件包
rpcbind-0.2.0-12.el6.x86_64
nfs-utils-1.2.3-70.el6_8.2.x86_64
<如果沒有安裝在系統中通過yum 命令進行安裝以上兩個包>
[root@NFS-server ~]# yum install -y nfs-utils rpcbind #安裝上述所需的兩個軟件包
四、啟動NFS服務端相關服務
- --開啟rpcbind服務
[root@NFS-server ~]# /etc/init.d/rpcbind status  #查詢rpcbind服務狀態並啟動
rpcbind (pid 1281) is running...
[root@NFS-server ~]# LANG=en
[root@NFS-server ~]# lsof -i :111 #查詢rpcbind監聽狀態 (111是rpcbind的主端口)
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1281 rpc 6u IPv4 10766 0t0 UDP *:sunrpc
rpcbind 1281 rpc 8u IPv4 10769 0t0 TCP *:sunrpc (LISTEN)
rpcbind 1281 rpc 9u IPv6 10771 0t0 UDP *:sunrpc
rpcbind 1281 rpc 11u IPv6 10774 0t0 TCP *:sunrpc (LISTEN)
[root@NFS-server ~]# netstat -lntup |grep rpcbind #查詢rpcbind服務啟動狀態 (同lsof查詢端口效果一樣)
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1281/rpcbind
tcp 0 0 :::111 :::* LISTEN 1281/rpcbind
udp 0 0 0.0.0.0:608 0.0.0.0:* 1281/rpcbind
udp 0 0 0.0.0.0:111 0.0.0.0:* 1281/rpcbind
udp 0 0 :::608 :::* 1281/rpcbind
udp 0 0 :::111 :::* 1281/rpcbind
[root@NFS-server ~]# chkconfig --list rpcbind #檢查rpcbind自啟動情況
rpcbind 0:off 1:off 2:on 3:on 4:on 5:on 6:off
root@NFS-server ~]# rpcinfo -p localhost #查看NFS服務項rpc服務器注冊的端口信

<這個是還未啟動FNS服務的rpcbind狀態>
---啟動NFS服務
[root@NFS-server ~]# /etc/init.d/nfs status #查看NFS服務並啟動
rpc.svcgssd is stopped
rpc.mountd (pid 1526) is running...
nfsd (pid 1542 1541 1540 1539 1538 1537 1536 1535) is running...
rpc.rquotad (pid 1521) is running...
[root@NFS-server ~]# netstat -lntup|grep nfs #查看NFS端口啟動(FNS默認端口為2049)
[root@NFS-server ~]# lsof -i :2049 #查看NFS端口啟動(FNS默認端口為2049)
[root@NFS-server ~]# netstat -lntup|grep 2049 #查看NFS端口啟動(FNS默認端口為2049)
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
tcp 0 0 :::2049 :::* LISTEN -
udp 0 0 0.0.0.0:2049 0.0.0.0:* -
udp 0 0 :::2049 :::* -
[root@NFS-server ~]# rpcinfo -p localhost #啟動NFS過后rpcbind服務已經啟用了對FNS的端口映射
<這個是啟動FNS服務過后 的rpcbind的狀態>
[root@NFS-server ~]# chkconfig --list nfs  #查看nfs的開機自啟動情況
nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@NFS-server ~]# chkconfig nfs on #讓FNS開機自啟動
由於在FNS服務過程中,必須先啟動rpcbind,再啟動nfs,這樣才能讓NFS在rpcbind上注冊成功
[root@NFS-server ~]# less /etc/init.d/rpcbind  #查看rpcbind服務啟動詳情

同理我們查看nfs服務的自啟動詳情
[root@NFS-server ~]# less /etc/init.d/nfs

<由上面可以看出系統默認會讓rpcbind服務先啟動,再啟動nfs服務,但是在實際生產環境中,我們最好不要用chkconfig來控制服務的開機自啟動,我們生產環境中我們一般用rc.local來管理。主要是為了方便以后查閱哪些服務開機自己,並且能控制先后順序,如圖>
<為了規范化我們用rc.local來管理開機自啟動>
[root@NFS-server ~]# vi /etc/rc.local

NFS服務常見進程的詳細說明
我們可以重NFS服務的啟動過程看到以下幾個進程:
[root@NFS-server ~]# ps -ef |egrep "rpc|nfs" #查看nfs相進程
rpcuser 1303 1 0 Nov22 ? 00:00:00 rpc.statd  #檢查文件一致性
root 1512 2 0 Nov22 ? 00:00:00 [rpciod/0]
rpc 2723 1 0 02:43 ? 00:00:00 rpcbind
root 2896 1 0 02:56 ? 00:00:00 rpc.rquotad  #磁盤配額進程
root 2901 1 0 02:56 ? 00:00:00 rpc.mountd #權限管理驗證等
root 2908 2 0 02:56 ? 00:00:00 [nfsd4]
root 2909 2 0 02:56 ? 00:00:00 [nfsd4_callbacks]
root 2910 2 0 02:56 ? 00:00:00 [nfsd]
root 2911 2 0 02:56 ? 00:00:00 [nfsd]
root 2912 2 0 02:56 ? 00:00:00 [nfsd]
root 2913 2 0 02:56 ? 00:00:00 [nfsd] #NFS主進程,管理登入,身份判定
root 2914 2 0 02:56 ? 00:00:00 [nfsd]
root 2915 2 0 02:56 ? 00:00:00 [nfsd]
root 2916 2 0 02:56 ? 00:00:00 [nfsd]
root 2917 2 0 02:56 ? 00:00:00 [nfsd]
root 2948 1 0 02:56 ? 00:00:00 rpc.idmapd  #名稱映射

<如果對上述進程不明白可以 用man命令查閱幫助信息,如 “man rpc.statd”>

五、配置NFS服務端
前面介紹了NFS的啟動,接下來我們配置NFS服務端的配置
/etc/exports 是NFS程序的配置文件。並且默認為空
/etc/exports文件的配置格式為:
NFS共享目錄 NFS客戶端地址1(參數1,參數2,參數3......) 客戶端地址2(參數1,參數2,參數3......)
NFS共享目錄 NFS客戶端地址(參數1,參數2,參數3......)
<我們在此共享給 192.168.1.0/24所有主機,>
<man exports 查看 例子和參數詳情。如下:>
配置完成exports后平滑重啟NFS服務 ,下面兩條命令等同
[root@NFS-server ~]# /etc/init.d/nfs reload
[root@NFS-server ~]# exportfs -r
[root@NFS-server ~]# showmount -e 127.0.0.1 #查看本機掛載情況
<必須先啟動rpcbinc 再啟動nfs才會顯示正確>
[root@NFS-server ~]# mount -t nfs 192.168.1.5:/data /mnt #在本機測試掛載

<我們用客戶機器進行掛載並測試>
<掛在過后由於權限問題,我們不能再/mnt里面進行編輯刪除新增文件等操作。接下來為/data目錄進行權限的設置>
六、配置NFS客戶端
客戶端也需要安裝rpcbind和nfs-utils軟件,並且設置開機自啟動。(只需要啟動rpcbind即可)
然后再進行如下操作
<自此,我們配置成功,但是別高興。我們只是掛載動作完成了,但是我們沒有權限對掛載的目錄進行各種操作。>
接下來我們在服務端配置如下命令,給/data目錄添加nfsnobody權限,
[root@NFS-server ~]# cat /var/lib/nfs/etab  #查看一條配置的詳細信息

現在我們可以對掛載目錄進行各種操作,但是還沒有完。 我們需要把掛載命令放在rc.local里面,
我們不要把掛載命令放在fstab,因為fstab比網絡先啟動,會出現掛載不上網絡NFS
-------------------------------------------------------------------------------------------------------
WINDOWS客戶端的配置
現在我們客戶端和服務端的NFS配置都已經完成,多台客戶端同上的客戶端操作,
如果是WINDOWS客戶端,我們需要在程序和功能里面啟用 NFS客戶端。
 
Windows 7 連接 NFS Server:
控制面板——所有控制面板項——程序和功能——勾選NFS服務,NFS客戶端
CMD 進入命令行
mount ip:/www/abc/ z:
 
其它不支持直接連接NFS Server的windows,可以在系統上面安裝SFU ( Windows Services for UNIX),點開始–>點程序–>點Windows Services for UNIX–>Korn Shell
mount ip:/www/abc/ z:
------------------------------------------------------------------------------------------------------
總結NFS服務的配置過程:
--服務端--
1.安裝軟件
yum install -y nfs-utils rpcbind
2.啟動服務(先啟動rpcbind)
/etc/init.d/rpcbind start
/etc/init.d/nfs start
3.設置開機自啟動
chkconfig nfs on
chkconfig rpcbind on
修改rc.local
4.配置NFS服務
echo "/data 192.168.1.5/24(rw,sync)"
mkdir -p /data
chown -R nfsnobody.nfsnobody /data
5.重新加載服務
/etc/init.d/nfs reload 或者 exportfs -r
6.檢查或測試掛載
showmount -e localhost
mount -t nfs 192.168.1.5:/data /mnt
 
--客戶端-
1.安裝軟件
yum install -y nfs-utils rpcbind
2.啟動rpcbind
/etc/init.d/rpcbind start
3.配置開機自啟動
chkconfig rpcbind on
或者修改rc.local
4.測試服務端共享情況
show -e 192.168.1.5
5.掛載
mkdir -p /data
mount -t nfs 192.168.1.5:/data /data
6.測試是否有讀寫權限
-----------------------------------------------------------------------------------------------
常見錯誤
1.df -h 檢查服務端的NFS服務是不是啟動成功,
2.確認NFS客戶端showmount是否OK。
3.確認rpcbind上是否有NFS注冊,(rpcbind必須先啟動)
3.確認網絡是否通暢
4.確認是否因為防火牆擋住(一般內網不需要開啟防火牆,在出口加防火牆就夠了)
-----------------------------------------------------------------------------------------
后續會對NFS各種優化的內容進行更新
 
 
 
 
 
 
參考內容: 老男孩老師視頻
 


免責聲明!

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



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