CentOS 7.3 NFS服務器的安裝與配置

一、NFS服務簡介

       NFS 是Network File System的縮寫,即網絡文件系統。一種使用於分散式文件系統的協定,由Sun公司開發,於1984年向外公佈。功能是通過網絡讓不同的機器、不同的操作系統能夠彼此分享個別的數據,讓應用程序在客戶端通過網絡訪問位於服務器磁盤中的數據,是在類Unix系統間實現磁盤文件共享的一種方法。


       NFS 的基本原則是“容許不同的客戶端及服務端通過一組RPC分享相同的文件系統”,它是獨立於操作系統,容許不同硬件及操作系統的系統共同進行文件的分享。


       NFS在文件傳送或信息傳送過程中依賴於RPC協議。RPC,遠程過程調用 (Remote Procedure Call) 是能使客戶端執行其他系統中程序的一種機制。NFS本身是沒有提供信息傳輸的協議和功能的,但NFS卻能讓我們通過網絡進行資料的分享,這是因爲NFS使用了一些其它的傳輸協議。而這些傳輸協議用到這個RPC功能的。可以說NFS本身就是使用RPC的一個程序。或者說NFS也是一個RPC SERVER。所以只要用到NFS的地方都要啓動RPC服務,不論是NFS SERVER或者NFS CLIENT。這樣SERVER和CLIENT才能通過RPC來實現PROGRAM PORT的對應。可以這麼理解RPC和NFS的關係:NFS是一個文件系統,而RPC是負責負責信息的傳輸。

       NFS協議提供了一種遠程文件系統規範:

       nfs.jpg

二、系統環境

系統平臺: CentOS 7.3

NFS Server: 192.168.8.88

關閉防火牆

#  systemctl  stop  firewalld            --臨時關閉防火牆 

#  systemctl  disable  firewalld       --永久關閉防火牆


關閉selinux

臨時關閉:

#  setenforce 0

永久關閉:

#  vim  /etc/selinux/config

 SELINUX=disabled                 --enforcing改爲disabled


#   reboot                                       --重啓系統永久生效


三、安裝NFS服務

NFS的安裝是非常簡單的,只需要兩個軟件包即可,而且在通常情況下,是作爲系統的默認包安裝的。

  • nfs-utils:包含NFS服務端守護進程、NFS客戶端的工具和NFS命令與控制腳本

  • rpcbind:提供RPC的端口映射的守護進程及其相關文檔、執行文件等


1.  查看系統中是否安裝了對應的軟件

rpm  -qa   nfs*  &&  rpm  -qa  rpcbind

image.png

2. 使用yum工具安裝nfs、rpcbind軟件包

yum  -y  install  nfs-utils  rpcbind           --如果已經安裝過了,所以顯示“無須任何處理”

image.png


四、配置NFS服務

NFS服務的配置相對比較簡單,只需要在相應的配置文件中進行設置,然後啓動NFS服務即可。


NFS服務的常用目錄:

        /etc/exports                      NFS服務的主要配置文件

        /usr/sbin/exportfs             NFS服務的管理命令

        /usr/sbin/showmount       客戶端的查看命令

        /var/lib/nfs/etab                記錄NFS分享出來的目錄的完整權限設定值

        /var/lib/nfs/xtab                記錄曾經登錄過的客戶端信息


NFS服務的主配置文件爲 /etc/exports,NFS使用/etc/exports定義需要共享的目錄及訪問對象的控制,NFS在默認情況下不共享任何目錄(/etc/exports文件爲空)當需要共享目錄時需要手動設置。

 

/etc/exports文件內容格式:

#  <共享目錄>  [客戶端1 選項(訪問權限,用戶映射,其他)]  [客戶端2 選項(訪問權限,用戶映射,其他)]


1. 共享目錄

共享目錄是指NFS系統中需要共享給客戶端使用的目錄。

 

2. 客戶端

客戶端是指網絡中可以訪問這個NFS共享目錄的計算機。

客戶端常用的指定方式:

    指定ip地址的主機:192.168.8.200

    指定子網中的所有主機:192.168.8.0/24 或192.168.8.0/255.255.255.0

    指定域名的主機:www.domain.com

    指定域中所有的主機: *.domain.com

    所有主機: *

 

3. 選項

控制共享目錄的訪問權限和用戶映射等,如果選項不止一個,以逗號“,”隔開。

編輯格式中的選項用來設置共享目錄的訪問權限、用戶映射等。


(1)訪問權限選項:

  • ro: 設置共享目錄爲只讀的權限

  • rw: 設置共享目錄爲可讀寫的權限

 

(2)用戶映射選項:

  • all_squash:將遠程訪問的所有普通用戶及所屬組都映射爲匿名用戶或用戶組,相當於使用nobody用戶訪問該共享目錄(此參數爲默認設置);

  • no_all_squash:與all_squash相反;

  • root_squash:將root用戶及所屬組都映射爲匿名用戶或用戶組(默認設置);

  • no_root_squash:與rootsquash相反,即以root身份訪問;

  • anonuid=xxx:將遠程訪問的所有用戶都映射爲匿名用戶,並指定該用戶爲本地用戶(UID=xxx);

  • anongid=xxx:將遠程訪問的所有用戶組都映射爲匿名用戶組賬戶,並指定該匿名用戶組賬戶爲本地用戶組賬戶(GID=xxx)。

 

(3)其它選項:

  • sync:將數據同步寫入內存緩衝區與磁盤中,效率低,但可以保證數據的一致性;

  • async:將數據先保存在內存緩衝區中,必要時才寫入磁盤;

  • wdelay:檢查是否有相關的寫操作,如果有則將這些寫操作一起執行,這樣可以提高效率(默認設置);

  • no_wdelay:若有寫操作則立即執行,應與sync配合使用;

  • secure:限制客戶端只能從小於1024的tcp/ip端口連接nfs服務器(默認設置);

  • insecure:允許客戶端從大於1024的tcp/ip端口連接服務器;

  • subtree:若輸出目錄是一個子目錄,則nfs服務器將檢查其父目錄的權限(默認設置);

  • no_subtree:即使輸出目錄是一個子目錄,nfs服務器也不檢查其父目錄的權限,這樣可以提高效率。


五、NFS服務的啓動與停止

對/etc/exports文件進行了正確的配置以後,就可以啓動NFS服務器了。


1. 啓動NFS服務

爲了使NFS服務器能正常工作,需要啓動rpcbind和nfs兩個服務。

systemctl  start  rpcbind.service

systemctl  start  nfs.service

image.png


2. 查詢NFS服務狀態

#  systemctl  status  rpcbind.service

#  systemctl  status  nfs.service

image.png

image.png


3. 停止NFS服務

需要停止NFS服務運行時,停止nfs服務即可,因爲對於系統中有其他服務(如NIS)需要使用,所以不需要停止rpcbind服務。

#  systemctl  stop  nfs.service

 

4. 設置NFS服務的自動啓動狀態

對於實際的應用系統,每次啓動CentOS系統後都手工啓動nfs服務是不現實的,需要設置系統在指定的運行級別自動啓動rpcbind和nfs服務。

systemctl  enable  rpcbind.service

systemctl  enable  nfs-server.service

systemctl  is-enabled  nfs-server.service               --查看nfs服務是否在啓動系統時啓用

 image.png


六、NFS服務配置實例

在/etc/exports文件中,每一行代表一個共享目錄,並且描述了該目錄如何被共享

vim  /etc/exports
/share  *(ro)   # /share爲共享目錄,所有主機具有隻讀權限,遠程訪問的所有用戶以及所屬組都映射爲匿名用戶或用戶組
/test   192.168.8.12(rw,no_root_squash)  192.168.8.13(ro)       # /test爲共享目錄,IP爲192.168.8.12主機就有可讀可寫權限,並以root身份訪問,ip爲192.168.8.13的主機具有隻讀的權限,並以匿名用戶的身份訪問
/data   192.168.8.0/24(rw,anonuid=1001,anongid=100)             # /data爲共享目錄,192.168.8.0網段的所有主機具有可讀可寫權限,並以匿名用戶身份訪問,且指定其uid爲1001,gid爲100

NFS服務端:

1. 將NFS 服務端的/share共享給192.168.8.0/24網段,權限爲讀寫。

vim  /etc/exports

    /share  92.168.8.0/24(rw)


mkdir  /share             --創建共享目錄


2. 重新啓動NFS服務

systemctl  restart  rpcbind.service

systemctl  restart  nfs.service


確認NFS是否已經啓動

rpcinfo  -p                  --下面的顯示錶示已經啓動

image.png


3. 服務端使用showmount或者exportfs命令查詢NFS的共享目錄

showmount  -e  127.0.0.1    --查看自己共享的目錄

Export list for 127.0.0.1:

/share 192.168.8.0/24

 

或者

exportfs

/share          192.168.8.0/24

 

showmount  -a        --顯示已經與客戶端連接上的目錄信息


NFS客戶端:

1. 查看NFS服務器共享列表

客戶端通過showmount命令可以查看NFS服務器上所有的共享目錄,以便掛載這些共享目錄,其命令格式如下:

showmount  -e   NFS服務端IP

showmount  -e  192.168.8.88         --這裏192.168.8.88是NFS服務器的IP

Export list for 192.168.8.88:

/share 192.168.8.0/24

image.png


2. 掛載NFS服務端的共享目錄

命令格式:

# mount   NFS服務器IP:/共享目錄   /本地掛載點目錄

# mkdir  /local                                          --創建掛載目錄

# mount  192.168.8.88:/share  /local           --將共享目錄掛載到本地的/local目錄

# mount  |  grep  nfs                                 --查看是否掛載成功

image.png

掛載成功後,查看文件是否和服務端一致

 

3. 測試共享文件的訪問權限

服務器:

cd  /share

cp  /etc/passwd  /share/test

客戶端:

ls  /local

cat  /local/test                          --可以查看到/local/test中的內容

echo  "123"  >  /local/test        --無法重定向,權限不夠,因爲默認是以匿名用戶身份訪問的

服務器:(再來到服務器修改/etc/exports中修改設置)

vim  /etc/exports

/share  192.168.8.0/24(rw,no_root_squash)        --改爲以root身份訪問

或者

#  chmod  777  -R  /share                                   --共享目錄本身的寫權限沒有開放給其他用戶


systemctl  restart  nfs.service                          --每次改動了/etc/exports文件都要重啓nfs服務

客戶端:

echo  "123"  >  /local/test                               --可以重定向


4. 客戶端卸載已掛載的NFS共享目錄

#  umount  /local


七、啓動自動掛載NFS文件系統

在客戶端添加配置文件,進行開機自動掛載NFS文件系統。

#  vim  /etc/fstab

192.168.8.88:/share        /local         nfs    defaults    0   0

保存退出,重啓系統。可以發現共享目錄已經自動掛載。


八、相關命令

1. exportfs

如果我們在啓動了NFS之後又修改了/etc/exports,是不是還要重新啓動nfs呢?這個時候我們就可以用exportfs 命令來使改動立刻生效,該命令格式如下:

exportfs  [-aruv]

  -a 全部掛載或卸載 /etc/exports中的內容

  -r 重新讀取/etc/exports 中的信息 ,並同步更新/etc/exports、/var/lib/nfs/xtab

  -u 卸載單一目錄(和-a一起使用爲卸載所有/etc/exports文件中的目錄)

  -v 在export的時候,將詳細的信息輸出到屏幕上

例:

exportfs  -au        --卸載所有共享目錄

exportfs  -rv         --重新共享所有目錄並輸出詳細信息


2. nfsstat

用於查看列出NFS的運行狀態。

 

3. rpcinfo

查看rpc執行信息,可以用於檢測rpc運行情況的工具,利用rpcinfo -p 可以查看出rpc開啓的端口所提供的程序有哪些。其中nfs的端口是2049,rpcbind的端口是111,其餘則是rpc開啓的。

 

4. showmount

  -a 顯示已經於客戶端連接上的目錄信息

  -e IP或者hostname 顯示此IP地址共享的目錄

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