iT邦幫忙

DAY 12
11

一、 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
  1. 設定/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端口發送
  1. 啟動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

  2. 查看服務狀態
    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 的時候,將分享的目錄顯示到螢幕上
  1. 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 讓設定生效

全文同步於FAQ-BOOK
IT鐵人文章分享


上一篇
SVN 入門安裝設定教學(下)
下一篇
NFS Client端設定
系列文
關於IT資訊界的筆記和學習紀錄41

尚未有邦友留言

立即登入留言