一、 NFS介紹
NFS(Network FileSystem)是由SUN公司所發展出來的。NFS是一個RPC Service,使檔案能夠共享,而NFS的設計是為了在不同的系統、不同的機器都可透過網路的方式而使用共享的檔案。
二、 設定說明
1. 檢查及安裝
1.1檢查是否有安裝NFS和portmap
如果是使用Centos5.x,會使用的是portmap而不是rpcbind
[root@localhost ~]# rpm -qa | grep nfs nfs-utils-1.0.9-50.el5 nfs-utils-lib-1.0.8-7.6.el5 system-config-nfs-1.3.23-1.el5 [root@localhost ~]# rpm -qa | grep portmap portmap-4.0-65.2.2.1 |
1.2 安裝NFS和portmap (沒安裝的請用Yum安裝也可更新套件)
[root@localhost ~]# yum install nfs-utils portmap |
1.3 檢查核心板本
由於NFS會直接使用到核心功能,所以在核心的部份也要有支源NFS。只要核心版本高於2.2版,也不是自行編輯過的,基本上就都能使用。
[root@localhost ~]# uname -r 2.6.18-238.el5 |
2. 設定/etc/exports
2.1 exports是NFS的主要設定檔,如果系統內沒有這隻檔案的話,請手動vim建立。
[root@localhost ~]# vim /etc/exports /opt 192.168.1.10(ro) *(ro) [分享目錄] [限制的主機 (權限)] [任何IP都可使用(唯讀)] |
以上設定檔是說,要分享opt這個目錄給192.168.1.10這個ip的主機使用唯讀的權限。或是任何IP都可使用唯讀的權限。
分享目錄 : 這邊最好都是輸入絕對路徑才不會有奇奇怪怪的問題發生。
主機名稱 :
1.可使用IP,網址或是主機名稱。但是主機名稱必須要是DNS可以解析的到或是在hosts內有設定的才可使用。在主機名稱和網址的部份是可使用萬用字元。
2.若是不想對任何主機有所限制的話可以使用「*」表示任何主機都可連至NFS來使用。
3.如果同一個目錄要針對不同主機設定不同權限使用的話,可以接在前一個主機設定的後面繼續
設定。如下
[root@localhost ~]# vim /etc/exports /opt 192.168.1.10(ro) *(ro) localhost(rw) [分享目錄] [限制的主機 (權限)] [任何IP都可使用(唯讀)] [可用主機名] |
權限設定 :
在設定權限的部份,需要注意的是在每個主機後面都必需要用()小括號,來設定所需要的權限參數,而小括是和主機名接下去的不需要空隔。如果參數不只一個的時後可用(,)逗號分開。
2.2 常用到的參數 :
ro 只有讀的權限(唯讀read-only) rw 可讀可寫的權限(read-write) 不過最後是否能讀寫,還是要看檔案和資料的rwx及身份有關係。 |
sync 所有資料會在請求使用時同步寫入到記憶體和硬碟。 async 資料會先暫存在記憶體中,而不是直接寫入硬碟。 |
hide 在NFS共享目錄中不共享子目錄 no_hide 在NFS共享目錄中共享子目錄 subtree_check 如果共享/usr/bin之類的子目錄時,強制NFS檢查父目錄權限(預設值) no_ subtree_check 如果共享/usr/bin之類的子目錄時,強制NFS不檢查父目錄權限 |
此參數用來讓系統判斷當使用者在使用NFS時的帳號若是root,該如何判別此身份。 no_root_squash 讓使用者能用root身份來執行NFS。並且對根目錄有完全的管理權限 root_squash 使用者的root身份會變成nfsnobody。可增加系統的安全性。(預設值) all_squash 把所有登入nfs的使用者身份都變為匿名使用者(nobody、nfsbody) |
wdelay 如果同時有多個使用者要寫入NFS,可以用群組的方式設定。(預設值) no_wdelay 如果同時有多個使用者要寫入NFS,立即寫入,當有使用async就不用設置此參數 |
#anon指的是anonymous(匿名者)。在*_squash指的匿名者的UID設定值,通常都是 nobody(nfsbody),而此UID也可自行設定,前題是此UID必須存在/etc/passwd中。 anonuid指的是UID而anongid則指的是群組的GID anonuid=xxxxx 指定NFS伺服器/etc/passwd中匿名用戶的UID anongid=xxxxx 指定NFS伺服器/etc/passwd中匿名用戶的GID |
secure 設定NFS通過1024以下的TCP/IP 端口發送 insecure 設定NFS通過1024以上的TCP/IP端口發送 |
3. 啟動NFS服務
[root@localhost ~]# /etc/init.d/portmap start [root@localhost ~]# /etc/init.d/nfs start [root@localhost ~]# /etc/init.d/nfslock start [root@localhost ~]# chkconfig portmap on [root@localhost ~]# chkconfig nfs on [root@localhost ~]# chkconfig nfslock on |
4. 查看服務狀態
4.1 查看port
在啟動portmap服務時,同時也會開啟UDP和TCP的111port
而NFS本身則會開啟UDP和TCP的2049port
[root@localhost ~]# netstat -tulnp tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:781 0.0.0.0:* LISTEN 4842/rpc.mountd tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 3668/portmap tcp 0 0 0.0.0.0:854 0.0.0.0:* LISTEN 3640/rpc.statd tcp 0 0 0.0.0.0:767 0.0.0.0:* LISTEN 4827/rpc.rquotad udp 0 0 0.0.0.0:2049 0.0.0.0:* - udp 0 0 0.0.0.0:778 0.0.0.0:* 4842/rpc.mountd udp 0 0 0.0.0.0:848 0.0.0.0:* 3640/rpc.statd udp 0 0 0.0.0.0:851 0.0.0.0:* 3640/rpc.statd udp 0 0 0.0.0.0:111 0.0.0.0:* 3668/portmap udp 0 0 0.0.0.0:764 0.0.0.0:* 4827/rpc.rquotad |
4.2 觀察主機的RPC狀態(可使用rpcinfo)
[root@localhost ~]# rpcinfo -p IP或hostname [root@localhost ~]# rpcinfo -t | -u IP或hostname 程式名稱 -p :針對某 IP (未寫則預設為本機) 顯示出所有的 port 與 porgram 的資訊; -t :針對某主機的某支程式檢查其 TCP 封包所在的軟體版本; -t :針對某主機的某支程式檢查其 UDP 封包所在的軟體版本; |
4.3 NFS連線觀察
[root@localhost ~]# showmount [-ae] IP或hostname -a :顯示目前主機與用戶端的 NFS 連線分享的狀態; -e :顯示某部主機的 /etc/exports 所分享的目錄資料。 |
4.4 當重新設定/etc/exports時,不用重啟NFS只需執行(exportfs)
重新掛載 [root@localhost ~]# exportfs -arv 卸載 [root@localhost ~]# exportfs -auv -a :全部掛載(或卸載) /etc/exports 檔案內的設定 -r :重新掛載 /etc/exports 裡面的設定,此外,同步更新 /etc/exports 及 /var/lib/nfs/xtab 的內容 -u :卸載某一目錄 -v :在 export 的時候,將分享的目錄顯示到螢幕上 |
5. NFS的防火牆設定
5.1由於mountd、rquotad、nlockmgr這三個port每次重啟後都會不同。為了讓防火牆設定方便一點。就來吧這三個port號都設定成為固定的。(把白色改為黃色)
[root@localhost ~]# vim /etc/sysconfig/nfs 13 #RQUOTAD_PORT=875 13 RQUOTAD_PORT=1000 20 #LOCKD_TCPPORT=32803 20 LOCKD_TCPPORT=30000 22 #LOCKD_UDPPORT=32769 22 LOCKD_UDPPORT=30000 40 #MOUNTD_PORT=892 40 MOUNTD_PORT=1500 #最左邊的#要記得拿掉,然後在port號的部份可以自行設定。 |
5.2 檢測port是否都設定正確
[root@localhost ~]# /etc/init.d/nfs restart [root@localhost ~]# rpcinfo -p | grep -E '(rquota|mount|nlock)' 100011 1 udp 1000 rquotad 100011 1 tcp 1000 rquotad 100021 1 udp 30000 nlockmgr 100021 1 tcp 30000 nlockmgr 100005 1 udp 1500 mountd 100005 1 tcp 1500 mountd #會看到剛剛設定的port已經生效了 |
5.3 設定防火牆規則
[root@localhost ~]# vi /etc/sysconfig/iptables #加入兩筆規則 -A RH-Firewall-1-INPUT -m state --state NEW -s 10.114.110.0/24 -m tcp -p tcp –dport 111,2049,1000,1500,30000 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -s 10.114.110.0/24 -m udp -p udp –dport 111,2049,1000,1500,30000 -j ACCEPT #這兩筆規則是設定限制此範圍內的IP 10.114.110.0/24,才可以登入使用NFS的TCP和UDP 111,2049,1000,1500,30000 port [root@localhost ~]# /etc/init.d/iptables restart #重啟iptables 讓設定生效 |
評論
此文章尚無評論。