NFS網絡文件系統安裝配置

簡介

   NFS(Network File System)FS是由Sun開發並發展起來的一項用於在不同機器,不同操作系統之間通過網絡共享數據。客戶端用mount命令把遠程的NFS文件系統掛載到本地即可,操作遠程服務端的文件跟操作本地的文件幾乎沒什麼區別。


一、NFS工作原理與RPC服務的關係

二、NFS服務的安裝配置及文件介紹

三、客戶端的使用


一、NFS工作原理與RPC服務的關係

1、NFS的工作原理如下圖:

1)、訪問一個本地的文件還是NFS文件對客戶端來說是透明的,當文件打開時,由內核決定。文件打開後,內核將本地文件的所有引用傳遞給-->本地文件訪問框中,而將一個NFS文件的所有引用傳遞給-->NFS客戶端框中。

2)、NFS客戶端通過其TCP/IP模塊向NFS服務器發送RPC請求,NFS主要使用UDP,最新的也可以使用TCP。

3)、NFS服務器在端口2049接收作爲UDP數據包的客戶端請求,儘管NFS可以被視爲使用端口映射,允許服務器使用一個臨時端口,但大多數都是直接指定UDP2049端口。

4)、當NFS服務器收到一個客戶端請求時,它將這個請求傳遞給本地文件訪問例程,然後訪問服務器上的一個本地的磁盤文件。

5)、NFS服務器需花一定時間來處理一個客戶端請求,訪問本地文件系統一般情況也需一部分時間,在這段時間內,服務器不應該阻止其他客戶端的請求。爲了實現這一功能,大多數NFS服務器都是多線程--服務器內核中實際上有多個NFS服務器在NFS本身的加鎖管理程序中運行,具體根據操作系統。大多數類Unix內核不是多線程,一個共同的技術就是啓動一個用戶進程(常爲:nfsd)的多個實例。這個實例執行一個系統調用,使其作爲一個內核進程保留在操作系統內核中。

6)、在客戶端主機上,NFS客戶端需花一定時間來處理一個用戶進程的請求,NFS客戶端向服務器主機發出一個RPC調用 ,然後等待服務器應答,爲了給使用NFS客戶端主機上的用戶進程提供更多併發性,在客戶端內核中一般運行多個NFS客戶端,同樣具體實現也根據操作系統。

2、RPC服務

   RPC最主要的功能就是指定每個NFS功能所對應的端口號,並且響應給客戶端,讓客戶端可以連接到正確的端口上。當服務器在啓動NFS時會隨機選用數個端口,並主動地向RPC註冊。因此RPC可以知道每個端口對應的NFS功能。然後RPC固定使用端口111來監聽客戶端的請求並回報客戶端正確的端口,所以可以讓NFS的啓動更爲容易。注意:啓動NFS之前,要先啓動RPC;否則NFS會無法向RPC註冊。另外,重新啓動RPC時原本註冊的數據會不見,因此RPC重新啓動後它管理的所有程序都需要重新啓動以重新向RPC註冊。

客戶端向NFS服務器請求數據的過程:

(1)客戶端會向服務器端的RPC(port 111)發出NFS文件存取功能的詢問請求。

(2)服務器端找到對應的已註冊的NFS daemon端口後會回報給客戶端。

(3)客戶端了解正確的端口後,就可以直接與NFS守護進程來連接


二、NFS服務器的安裝配置與文件介紹

1、NFS服務器的安裝

服務器系統:CentOS6.4.x86_64

IP規劃:NFS服務器IP地址:172.16.14.1  NFS客戶端IP地地址:172.16.14.2

需要用到的軟件包:

[root@localhost ~]# yum -y install nfs-utils rpcbind  #YUM安裝NFS服務端
rpcbind-0.2.0-11.el6.x86_64.rpm                       #NFS服務器所依賴的軟件包
nfs-utils-1.2.3-36.el6.x86_64.rpm                     #NFS軟件包

查看軟件是否安裝:

2、文件介紹

   NFS服務腳本:/etc/rc.d/init.d/nfs

   NFS主配置文件:/etc/sysconfig/nfs

   配置文件:/etc/exports 默認此文件爲空,需手動添加

   主配置文件書寫格式: Export HOST(Options)  Export:共享的目錄  HOST:主機地址 Options:選項

Options:
    rw:                  #讀寫權限
    ro:                  #只讀權限
    secure:              #要求客戶端請求端口小於1024默認開啓
    insecure:            #NFS通過1024以上的端口發送
    async:               #異步寫入,性能好,數據可靠性差
    sync:                #同步寫入,性能差,數據可靠性高          
    wdelay:              #寫入延遲
    no_wdelay:           #不做寫入延遲
    hide:                #在NFS共享目錄中不共享其子目錄
    nohide:              #共享NFS目錄的子目錄
    crossmnt:            #交叉掛載
    no_acl:              #關閉nfs支持acl功能
    root_squash:         #壓縮root用戶權限爲nfsnobody
    no_root_squash:      #不壓縮root用戶的權限
    all_squash:          #所有的用戶都壓縮權限
    anonuid=nfsuser,anongid=nfsgroup: #指定用戶帳號做匿名用戶帳號

3、服務端使用命令:

showmount
    -a: 顯示當前主機所共享的NFS文件系統中,有哪些已經被客戶端掛載
    -d: 顯示當前主機所共享的NFS文件系統中,每個掛載連接
exportfs
    -r: 重新導出
    -a: 操作所有文件系統
    -u: 取消導出
    -v: 顯示詳細信息
    -ra:重新共享所有目錄
    -au:卸載所有共享目錄
rpcinfo
    -p: 查看NFS註冊使用的端口

4、啓動NFS服務器

注:RHEL5系統不是"rcpbind"服務,而是"portmap"服務.請大家做的時候注意.

5、配置NFS服務器

[root@localhost ~]# mkdir /nfs_server         #創建nfs服務器端共享目錄
[root@localhost ~]# cat > /etc/exports << EOF
> /nfs_server 172.16.0.0/16(rw,root_squash)
> EOF   #共享nfs_server目錄,只允許172.16.0.0網段訪問,並且有可寫權限,壓縮root用戶的權限


三、客戶端的使用

1、查看NFS服務器共享了哪些目錄

[root@localhost ~]# showmount -e 172.16.14.1 #顯示服務器共享了哪些文件系統列表
Export list for 172.16.14.1:
/nfs_server 172.16.0.0/16                    #NFS服務器共享的目錄

2、客戶端掛載使用NFS文件系統

[root@localhost ~]# mkdir /nfs_client              #創建客戶端掛載點
[root@localhost ~]# mount -t nfs 172.16.14.1:/nfs_server /nfs_client #掛載NFS文件系統.-t:指定文件系統類型
[root@localhost ~]# mount | grep nfs_client        #查看是否掛載成功
172.16.14.1:/nfs_server on /nfs_client type nfs (rw,vers=4,addr=172.16.14.1,clientaddr=172.16.14.2)

3、在NFS服務器和客戶端分別創建普通用戶"centos"與"redhat",這裏需要說明一下,NFS做驗證是基於用戶ID,用戶名相同是不能訪問的,必須在ID相同的情況下可以才訪問."root"用戶默認權限是被壓縮的.下面我們來做一下測試如:

   1)、先查看NFS服務器"nfsuser"用戶是否對共享文件夾"/nfs_server"有可寫權限,並設置好權限:

   2)、在NFS服務器端和客戶端分別創建一個用戶爲"nfsuser",且用戶ID不同,如下圖:

   3)、在客戶端使用"nfsuser"用戶來驗證是否能寫入,且保證服務端沒有用戶ID爲601的,如下圖:


   4)、分別在NFS服務器端與客戶端創建"centos"和"redhat"用戶,且用戶UID相同,如下圖:

   5)、先查看NFS服務器"centos"用戶是否對共享文件夾"/nfs_server"有可寫權限,並設置好權限:

   6)、在客戶端使用"redhat"用戶驗證是否能寫入;並在服務器端與客戶端查看文件的屬主及屬組,如下圖:


 NFS網絡文件系統到此結束,後續會添加一些其他認證功能;敬請關注...


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章