歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux管理 >> Linux維護 >> Linux 下NFS設置

Linux 下NFS設置

日期:2017/3/2 10:38:51   编辑:Linux維護

NFS Server端的設定

  NFS Server端的設定,首先需要確認Linux主機是否可以支持NFS這項服務,然後再設定使用者的來源IP或主機名稱以及共享出去的目錄權限。

  那麼,在Client PC怎麼使用這個共享出來的目錄呢?首先以showmount檢查Linux Server是否有可以使用的 NFS目錄。如果有就將它mount在本機上面,這樣就可以使用NFS Server主機提供的資源了。

  1.系統要求

  除了前面已經提到的兩個系統守護進程portmap與nfs-utils之外,內核(Kernel)版本最好高於2.2.18。此外,如果重新編譯過內核,一定要選擇支持NFS。

  2.etc/exports

  編輯 /etc/exports文件:

  # vi /etc/exports
  /usr/src/sys -maproot=daemon host2
  /usr/ports -ro -network 192.168.1.0

  從上面這個例子中可以看出exports文件的格式,首先是定義要共享的文件目錄,必須使用絕對路徑,而不能使用符號連接。後面就是對這個目錄進行訪問限 制的參數,用於保證安全性。第一行設置中,將/usr/sys/src目錄共享出去,但限制客戶機上的root用戶等價於本機上的daemon用戶,以避 免客戶機上的root用戶擁有這個服務器上的root權力進行非法操作;此後的host2參數是主機名,這就限制只有host2才能共享這個 /usr/sys/src目錄;第三行設置共享了/usr/ports目錄,但限制為只允許讀取,並且也只有192.168.1.0網絡上的計算機才能訪 問這個共享目錄。

  ◆ rw 可擦寫的權限。

  ◆ ro 只讀的權限。

  ◆ no_root_squash 當登入NFS主機使用共享之目錄的使用者如果是root時,那麼這個使用者的權限將被轉換成為匿名使用者,通常它的UID與GID都會變成nobody身份。

  ◆ root_squash 登入NFS主機使用共享目錄的使用者,如果是root,那麼對於這個共享的目錄來說,它就具有 root的權限。

  ◆ all_squash 不論登入NFS使用者的身份為何,它的身份都會被轉換成為匿名使用者,通常也就是nobody。

  ◆ anonuid 通常為nobody,當然也可以自行設定這個UID的值,UID必須存在於/etc/passwd當中。

  ◆ anongid 同anonuid,但是變成group ID就是了。

  ◆ sync 資料同步寫入到內存與硬盤當中。

  ◆ async 資料會先暫存於內存當中,而非直接寫入硬盤。

  3.激活服務portmap和nfsd

  #/etc/rc.d/init.d/portmap start (or:#service portmap start)
  #/etc/rc.d/init.d/nfs start (or:#service nfs start)
  portmap激活之後,就會出現一個端口號為111的sunrpc的服務。至於nfs則會激活至少兩個以上的系統守護進程,然後就開始監聽Client PC的需求,用cat/var/log/messages可以看到操作是否成功:

  #cat /var/log/messages
  Nov 16 15:04:45 cao portmap: portmap startup succeeded
  Nov 16 15:04:53 cao nfs: Starting NFS services: succeeded
  Nov 16 15:04:54 cao nfs: rpc.rquotad startup succeeded
  Nov 16 15:04:54 cao nfs: rpc.mountd startup succeeded
  Nov 16 15:04:54 cao nfs: rpc.nfsd startup succeeded

4.exportfs

  如果修改了/etc/exports這個文件後,不需要重新激活nfs,只要重新掃瞄一次/etc/exports的文件,並且重新將設定加載即可:

  # exportfs [-aruv]

  參數說明:

  -a 全部掛載(或卸載) /etc/exports 文件內的設定 。

  -r 重新掛載/etc/exports裡的設定,此外,亦同步更新/etc/exports及/var/lib/nfs/xtab的內容。

  -u 卸載某一目錄。

  -v 在export的時候,將共享的目錄顯示到屏幕上。

  5.檢驗目錄/var/lib/nfs/xtab

  檢驗所共享的目錄內容,查看/var/lib/nfs/xtab這個文件:

  # vi /var/lib/nfs/xtab
  /home/cao 192.168.0.1(rw,sync,wdelay,hide,secure,root_squash,
  no_all_squash,subtree_check,secure_locks, mapping=identity,anonuid=-2,
  anongid=-2)

  這就是/home/cao這個共享出去的目錄預設NFS裡面的屬性。

  6.showmount

  # showmount [-ae] hostname

  參數說明:

  -a 在屏幕上顯示目前主機與Client所連上來的使用目錄狀態 。

  -e 顯示hostname這部機器的/etc/exports裡面的共享目錄。

  當要掃瞄某一主機所提供的NFS共享的目錄時,就使用showmount -e IP(或主機名稱hostname)即可。

  7.觀察激活的端口號

  # netstat -utln
  Active Internet connections (only SERVERs)
  Proto Recv-Q Send-Q Local Address Foreign Address State
  tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN <== portmap
  tcp 0 0 0.0.0.0:817 0.0.0.0:* LISTEN <== rpc.xxxx
  tcp 0 0 0.0.0.0:1266 0.0.0.0:* LISTEN <== rpc.xxxx
  udp 0 0 0.0.0.0:2049 0.0.0.0:*           <== nfs 的 port
  udp 0 0 0.0.0.0:814 0.0.0.0:*           <== rpc.xxxx
  udp 0 0 0.0.0.0:1327 0.0.0.0:*           <== rpc.xxxx
  udp 0 0 0.0.0.0:111 0.0.0.0:*           <== portmap

  nfs所開啟的端口是2049,其它的端口是RPC Server其它程序(例如rpc.mountd、rpc.rquotad、rpc.nfsd... )隨機產生的,也就是端口號不會是固定的,每次restart nfs都會得到不一樣的端口號。

  8. 停止NFS服務

  # /etc/rc.d/init.d/portmap stop

  Client端PC的設定

  1.掃瞄可以使用的NFS Server目錄

  在Client本地端建立mount point,使用mount將遠程主機共享的目錄掛載進來。假設主機名稱是www.cao.net,使用showmount查看NFS Server可以共享的目錄。然後將/home/public掛載在 /home/nfs/public下:

  # showmount -e www.cao.net
  Export list for localhost:
  /tmp *
  /home/linux *.cao.net
  /home/public (everyone)
  /home/cao 192.168.0.1

  2.掛載/home/public目錄

  首先建立這個目錄,然後再利用mount指令來掛載/home/public目錄:

  # mkdir -p /home/nfs/public
  # mount -t nfs CAO.linux.org:/home/public /home/nfs/public

  掛載的格式:

  # mount -t nfs hostname(orIP):/directory/mount/point
  # df
  Filesystem 1K-blocks Used Available Use% Mounted on
  /dev/hda1 1904920 1235380 572776 68% /
  /dev/hdb1 976344 115212 810736 13% /backup
  www.cao.net:/home/public 1904920 1235376 572776 69% /home/nfs/public

  將資料掛載進來後,只要進入/home/nfs/public目錄,就等於到了www.cao.net那部NFS Server的/home/public 目錄中。

  3.卸載使用umount

  # umount /home/nfs/public

  關機時如果NFS Server上面還有Client聯機,建議NFS Server關機之前,要先關掉portmap與nfs這兩個系統服務。如果無法正確地將這兩個系統服務關掉,那麼先以netstat -utlp找出PID,然後使用kill殺掉進程,這樣才能正常關機。


Copyright © Linux教程網 All Rights Reserved