CentOS 7.3 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服務器的安裝與配置