1. 程式人生 > >CentOS 7.3 NFS服務器的安裝與配置

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

nfs nfs服務器 nfs配置 nfs安裝 nfs server

一、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協議提供了一種遠程文件系統規範:

? ? ? ?技術分享圖片

二、系統環境

系統平臺:?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

技術分享圖片

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

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

技術分享圖片


四、配置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

技術分享圖片


2. 查詢NFS服務狀態

#??systemctl? status? rpcbind.service

#??systemctl? status? nfs.service

技術分享圖片

技術分享圖片


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服務是否在啟動系統時啟用

?技術分享圖片


六、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? ? ? ? ? ? ? --下面的顯示表示已經啟動

技術分享圖片


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

技術分享圖片


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

命令格式:

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

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

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

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

技術分享圖片

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

?

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地址共享的目錄

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