1. 程式人生 > >Linux中詳細搭建NFS服務

Linux中詳細搭建NFS服務

app 守護 拒絕訪問 port sun 調度 完整 結構 指令

1.nfs簡介

            NFS (Network File System)即網絡文件系統。由Sun公司開發,於1984年向外公布。功能是通過網絡讓不同的機器、不同的操作系統能夠彼此分享個別的數據,讓應用程序在客戶端通過網絡訪問位於服務器磁盤中的數據,是在類Unix系統間實現磁盤文件共享的一種方法。
            nfs適用於Linux與Unix之間實現文件共享,不能實現Linux與Windows間的文件共享功能
            nfs是運行在應用層的協議,其監聽與2049/tcp和2049/udp套接字上
            nfs服務只能基於IP進行認證,這也是它的缺點之一。

2.所需要的軟件及軟件結構
要設定好 NFS 服務器我們必須要有兩個軟件才行,分別是:

   RPC 主程序:rpcbind

      就如同剛剛提的到,我們的 NFS 其實可以被視為一個 RPC 服務,而要啟動任何一個 RPC 服務之前,我們都需要做好 port 的對應 (mapping) 的工作才行,這個工作其實就是『 rpcbind 』這個服務所負責的!也就是說, 在啟動任何一個 RPC 服務之前,我們都需要啟動 rpcbind 才行! (在 CentOS 5.x 以前這個軟件稱為 portmap,在 CentOS 6.x 之後才稱為 rpcbind 的!)

    NFS 主程序:nfs-utils

      就是提供 rpc.nfsd 及 rpc.mountd 這兩個 NFS daemons 與其他相關 documents 與說明文件、執行文件等的軟件!

3.nfs配置

            主要配置文件:/etc/exports
            這個檔案就是 NFS 的主要配置文件了!不過,系統並沒有默認值,所以這個檔案『 不一定會存在』,你可能必須要使用 vim 主動的建立起這個檔案喔!我們等一下要談的設定也僅只是這個檔案而已吶! 
            NFS 文件系統維護指令:/usr/sbin/exportfs
      這個是維護 NFS 分享資源的指令,我們可以利用這個指令重新分享 /etc/exports 變更的目錄資源、將 NFS Server 分享的目錄卸除或重新分享等等,這個指令是 NFS 系統裏面相當重要的一個喔!至於指令的用法我們在底下會介紹。

            分享資源的登錄檔:/var/lib/nfs/*tab
       在 NFS 服務器的登錄文件都放置到 /var/lib/nfs/ 目錄裏面,    在該目錄下有兩個比較重要的登錄檔, 一個是 etab ,主要記錄了 NFS 所分享出來的目錄的完整權限設定值;另一個 xtab 則記錄曾經鏈接到此 NFS 服務器的相關客戶端數據。

            客戶端查詢服務器分享資源的指令:/usr/sbin/showmount
    這是另一個重要的 NFS 指令。exportfs 是用在 NFS Server 端,而 showmount 則主要用在 Client 端。這個 showmount 可以用來察看 NFS 分享出來的目錄資源

4.nfs服務器端運行著四個進程:

    nfsd //nfs 的守護進程,監聽在2049/tcp和2049/udp端口上
 //不負責文件存儲(由NFS服務器本地內核復制調度存儲),用於理解客戶端發起放rpc請求,並將其轉交給本地內核,而後存儲在指定的文件系統上
    mountd //用於驗證客戶端是否在允許訪問此NFS文件系統的客戶端列表中,在則允許訪問(發放一個令牌,持令牌去找nfsd),否則拒絕訪問
    idmapd //實現用戶賬號的集中映射,把所有的賬號都映射為NFSNOBOY,但是在訪問時卻能以本地用戶的身份去訪問
    portmapper //NFS服務器的rpc服務,其監聽於111/Tcp和111/UDP套接字上,用於管理遠程過程調用(RPC)

5.nfs的體系組成

        nfs體系至少有兩個主要部分:
             一臺nfs服務器
             若幹個客戶機

6.實例演示:

服務器端 客戶端
192.168.209.12 192.168.209.13
服務器端做以下操作:
//關閉firewalld防火墻
[root@lanzhiyong ~]# systemctl disable firewalld
[root@lanzhiyong ~]# systemctl stop firewalld

//關閉selinux
[root@lanzhiyong ~]# vim /etc/selinux/config
disabled
[root@lanzhiyong ~]# setenforce 0

    //安裝nfs工具
[root@lanzhiyong ~]# yum -y install nfs-utils rpcbind

    //啟動nfs服務
[root@lanzhiyong ~]# systemctl start rpcbind

[root@lanzhiyong ~]# systemctl start nfs-server

    //nfs配置文件
[root@lanzhiyong ~]# vim /etc/exports
/lanzhiyong 192.168.209.13(rw,async)

    //創建分享的目錄
[root@lanzhiyong ~]# mkdir -p /lanzhiyong
[root@lanzhiyong ~]# grep "65534" /etc/passwd

    //給分享目錄權限
[root@lanzhiyong ~]# chown -R nfsnobody.nfsnobody /lanzhiyong

    //重啟nfs服務
[root@lanzhiyong ~]# systemctl restart nfs-server

    //查看分享的目錄
[root@lanzhiyong ~]# cat /var/lib/nfs/etab 

    //查看配沒配置好
[root@lanzhiyong ~]# showmount -e 192.168.209.12 

客戶端做以下操作:
//關閉firewalld防火墻
[root@lanzhiyong ~]# systemctl disable firewalld
[root@lanzhiyong ~]# systemctl stop firewalld

//關閉selinux
[root@lanzhiyong ~]# vim /etc/selinux/config
disabled
[root@lanzhiyong ~]# setenforce 0
[root@lanzhiyong ~]# yum -y install nfs-utils rpcbind
[root@lanzhiyong ~]# systemctl start rpcbind

//查看NFS服務器端共享的文件系統
[root@lanzhiyong ~]# showmount -e 192.168.209.12

//掛載NFS文件系統
[root@lanzhiyong ~]# mkdir /opt/lan
[root@lanzhiyong ~]# mount -t nfs 192.168.209.12:/lanzhiyong /opt/lan
[root@lanzhiyong ~]# df -h
[root@lanzhiyong ~]# cd /opt/lan/
[root@lanzhiyong lan]# touch 123

服務搭建起來後的驗證:
    在服務器端 進行查看是否有123 這個文件
    [root@lanzhiyong ~]# cd /lanzhiyong

Linux中詳細搭建NFS服務