NFS伺服器

20121211 修訂 NFS 伺服器內容,請參考 NFS 伺服器(第二版)

NFS(Network FileSystem)的功能就是可以透過網路,讓不同的機器、不同的作業系統、可以彼此分享個別的檔案 (share files) 並進行操作。

NFS Server(10.10.10.128)
NFS 需要遠端程序呼叫 (RPC) 的服務,因此安裝 rpcbind 套件。
# yum install -y nfs-utils rpcbind
開機時啟動
# chkconfig nfs on
# chkconfig rpcbind on

啟動服務
# service rpcbind start  // 先啟動
# service nfs start

關閉防火牆
# iptables -F

NFS 伺服器端分享資料夾設定
# vim /etc/exports
 /var/ftp *(ro)
# service nfs restart

補充:





  • 修改 /etc/exports 內容後,重啟 NFS 服務套用更新,但會使得在線上的使用者斷線,使用以下指令可避免此情況發生。
  • # exportfs -rv  // 參數『v』代表詳細模式,可以不用加
  • 以下四個參數,讓 NFS 客戶端使用者登入 NFS 伺服端時,轉換身份(以 UID 為主)並取得相對應的權限操作。


  • NFS Client(10.10.10.129) # rpcinfo -p 10.10.10.128  // 查看 NFS 伺服器是否有提供 NFS 服務
    # showmount -e 10.10.10.128
     Export list for 10.10.10.128:
     /var/ftp *
    # mkdir /mnt/nfsclient
    # mount 10.10.10.128:/var/ftp /mnt/nfsclient
    # df
     檔案系統                1K- 區段   已用     可用     已用 % 掛載點
     10.10.10.128:/var/ftp 15163392 2951168 11441664 21% /mnt/nfsclient
    注意:無法對資料夾 /mnt/nfsclient 進行新增刪除的操作。
    NFS 客戶端的身份為管理者 root,但登入 NFS 伺服端後,系統會變更成使用者 nfsnobody,而通常使用者的權限對資料夾只有讀的權限。
    有 2 種方法可以解決這個問題,都是在 NFS 伺服器端上設定
    1. 將共享資料夾的使用者權限變更成 xx7
    2. 在 /etc/exports 組態檔中加入 no_root_squash 參數,讓客戶端的管理者登入後亦維持管理者身份但此舉有降低系統安全性的風險
    開機時掛載
    # vim /etc/fstab
     nisserver128.example.com:/var/ftp /mnt/nfsclient nfs ro 0 0


    補充:NFS 伺服器端防火牆設定


    NFS 服務埠號為 2049,rpcbind 服務埠號為 111,除此之外 STATD_PORT、MOUNTD_PORT、LOCKD_UDPPORT、LOCKD_TCPPORT 埠號皆系統會隨機配置,造成 NFS 客戶端無法連線,因此若不固定埠號,就是要把整個防火牆關閉,但此舉非常危險。
    # vim /etc/sysconfig/nfs
     RQUOTAD_PORT=875
     LOCKD_TCPPORT=32769
     LOCKD_UDPPORT=32769
     MOUNTD_PORT=892
     STATD_PORT=662
    # iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 111 -j ACCEPT
    # iptables -A INPUT -p udp -m state --state NEW -m udp --dport 111 -j ACCEPT
    # iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 875 -j ACCEPT
    # iptables -A INPUT -p udp -m state --state NEW -m udp --dport 875 -j ACCEPT
    # iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 32769 -j ACCEPT
    # iptables -A INPUT -p udp -m state --state NEW -m udp --dport 32769 -j ACCEPT
    # iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 662 -j ACCEPT
    # iptables -A INPUT -p udp -m state --state NEW -m udp --dport 662 -j ACCEPT
    # iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 892 -j ACCEPT
    # iptables -A INPUT -p udp -m state --state NEW -m udp --dport 892 -j ACCEPT
    # iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 2049 -j ACCEPT
    # iptables -A INPUT -p udp -m state --state NEW -m udp --dport 2049 -j ACCEPT
    # service nfs restart


    Troubleshooting


  • 無法掛載:若出現被 NFS Server 拒? 的訊息,請先檢查是否有權限存取。假設 NFS Server 設定只有 10.10.10.128 可以存取,但目前的 NFS Client 的 IP 是 10.10.10.129,因此會被拒絕。
  • client # mount nfs_server_ip:/var/ftp /mnt/nfsclient
       mount.nfs: access denied by server while mounting nfs_server_ip:/var/ftp
    client # showmount -e nfs_server_ip
       Export list for nfs_server_ip:
       /var/ftp 10.10.10.128

    沒有留言:

    張貼留言