Server OS ( Debian6.0.3 )
需求 :
nfs server 192.168.11.11,分享目錄/data/123
nfs client 192.168.11.12 mount 目錄一樣 /data/123
使用了NFS 之後,我想大家應該會知道,若大家連線越多,那麼對 Server 的資源也就浩用越大,若是 Client 能設定成只在需要的時候才自動掛上必要的目錄,而在一段時間之後若沒有再使用就卸載,如此對於 Server 的使用也能相對的減少資源使用。
autofs 可以用來自動掛載資料,也就是我們這次的重點,而 autofs 是一個 daemon,一旦啟動後它會駐列在系統中,他會先載入設定檔然後監視指定的目錄,一旦使用者要存取所指定的目錄時就會開始自動掛載起來。以下的範列,我將示範在主機裡分享 /home 目錄可供 Client 掛載,而在 Server 的設定,完全就跟往前一樣設定好分享條件,然後啟動 NFS 就可以了。所以我們要調整的是 Client 的部份。
A. nfs server 操作部分 ( 192.168.11.11 )
0. apt-get update 更新套件 list 並 安裝
$ apt-get update ; apt-get install nfs-common nfs-kernel-server
1. 修改/etc/exports
/data/123 192.168.11.12(rw,sync,no_subtree_check)
2. 建立目錄檔並設定目錄權限
$ mkdir -p /data/123
$ chmod 775 /data -R
$ chown root:nfs-upload 123 -R
3. 新增群組及使用者 &將舊有的使用者加入群組
$ groupadd -g 210 nfs-upload
$ eradd -g 210 -u 210 -M nfs-upload
$ vim /etc/group
$ nfs-upload:x:210:user1,user2
ps 修改較為嚴格的檔案權限將目錄與檔案,設定使用群組會更保險一點!
4. 啟動 NFS 服務
首先,一定要記得啟動 NFS 之前一定要先把 portmap 啟動才行,否則會出錯:
$ /etc/init.d/nfs-server start
5. 檢查是否有開啟 portmap 111 port 和rpc.mount 2049 port
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 815/portmap
tcp 0 0 192.168.11.11:53 0.0.0.0:* LISTEN 4441/named
tcp 0 0 192.168.2.141:53 0.0.0.0:* LISTEN 4441/named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 4441/named
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 4122/sshd
tcp 0 0 0.0.0.0:33208 0.0.0.0:* LISTEN 1090/rpc.mountd
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 4441/named
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1610/exim4
tcp 0 0 0.0.0.0:58524 0.0.0.0:* LISTEN 828/rpc.statd
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
6. 啟動之後,可以使用 showmount 看看有分享那些目錄:
# showmount -e
Export list for localhost:
/data/123 192.168.11.12
你可以使用 rpcinfo 這個工具來看看有那些服務使用 rpc 資源:
# rpcinfo -p 192.168.11.11
程式採用的協定連接阜
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 56335 status
100024 1 tcp 58524 status
100021 1 udp 42987 nlockmgr
100021 3 udp 42987 nlockmgr
100021 4 udp 42987 nlockmgr
100021 1 tcp 48867 nlockmgr
100021 3 tcp 48867 nlockmgr
100021 4 tcp 48867 nlockmgr
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100005 1 udp 48744 mountd
100005 1 tcp 33208 mountd
100005 2 udp 48744 mountd
100005 2 tcp 33208 mountd
100005 3 udp 48744 mountd
100005 3 tcp 33208 mountd
B. nfs clinet 操作部分 ( 192.168.11.12 )
1. 編輯 設定 auto.master 主要是設定需要監控那一個目錄,然後再指定其設定檔:
#vim /etc/auto.master
/data/123 /etc/auto.123 --timeout=30
上面的意思是,autofs 要去監控 /data/123 目錄,而設定檔在 /etc/auto.123 這個檔案裡,而 timeout 時間是 30 秒。
ps (那個 /data/nfsfile 目錄不需要存在,因為 autofs 會主動的建立該目錄! 如果你建立了,可能反而會出問題~先確定一下沒有該目錄吧!)
2. 編輯設定 auto.123 是由 auto.master 設定而來的,裡面設定了/data/123 目錄下的掛載來源和參數:
#vim auto.123
test -fstype=nfs,intr,soft 192.168.11.11:/data/123
3. 啟動 autofs
# /etc/init.d/autofs start
4. 驗証可以用 mount or df
現在再來看看目前的 mount 狀態:
# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
上面可以看到 automount 正在監控 /data 目錄,而且為我們還沒有進入 /home 目錄裡的任何資料夾,所以會沒有其它的 mount 資訊。
# cd /data/test/
# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
192.168.11.11:/data/123 on /data/test/123 type nfs (rw,intr,soft,sloppy,addr=192.168.11.11)
看到了吧,最後一行正顯示著 192.168.11.11 的 /data/123 正被我們掛載。
# cd /data/test/123
# mount | grep 123
192.168.11.11:/data/123 on /data/test/123 type nfs (rw,intr,soft,sloppy,addr=192.168.11.11)
# 上面的輸出是同一行!瞧!突然出現這個玩意兒!因為是自動掛載的嘛!
# df
檔案系統 1K-區段 已用 可用 已用% 掛載點
/dev/sda1 19751804 1024252 17724188 6% /
tmpfs 517208 0 517208 0% /lib/init/rw
udev 512788 96 512692 1% /dev
tmpfs 517208 0 517208 0% /dev/shm
192.168.11.11:/data/123
19751808 1002368 17746048 6% /data/test/123
檔案的掛載也出現沒錯!
由於auto mount 的原因一定會有多一各載掛目錄,先用lnk 來設定,後續再尋找方式解決
# cd /data
# ln -s /data/test/123 123
查看設定error log 指令
tail /var/log/messages
NFS 到底開了哪些埠口
# netstat -tulnp| grep -E '(rpc|nfs)'
顯示出目前這部主機的 RPC 狀態
[root@www ~]# rpcinfo -p localhost
請顯示所設定好的相關 exports 分享目錄資訊
# showmount -e localhost
/etc/exports 只是比較特別的權限參數還有很多預設參數呢! 這些預設參數在哪?我們可以檢查一下 /var/lib/nfs/etab
# tail /var/lib/nfs/etab
automount 重新設定
# 1. 重新掛載一次 /etc/exports 的設定
[root@www ~]# exportfs -arv
你也可以利用 showmount -a localhost 來查出來那個用戶端還在連線
# 2. 將已經分享的 NFS 目錄資源,通通都卸載
[root@www ~]# exportfs -auv
# 這時如果你再使用 showmount -e localhost 就會看不到任何資源了!
設定完成後,後續再補上防火牆的設定規則。
待續
參考網站 : 鳥哥 http://linux.vbird.org/linux_server/0330nfs.php#nfsserver_need
NFS & Automount http://www.l-penguin.idv.tw/article/nfs-automount.htm
沒有留言:
張貼留言