NFS /etc/exports參數解釋


nfs 安裝

  • 執行以下命令安裝 nfs 服務器所需的軟件包
    yum install -y nfs-utils
  • 執行命令 vim /etc/exports,創建 exports 文件,文件內容如下:
    /root/nfs_root/ *(insecure,rw,sync,no_root_squash)
  • 執行以下命令,啟動 nfs 服務
    # 創建共享目錄,如果要使用自己的目錄,請替換本文檔中所有的 /root/nfs_root/ mkdir /root/nfs_root systemctl enable rpcbind systemctl enable nfs-server systemctl start rpcbind systemctl start nfs-server exportfs -r
  • 檢查配置是否生效
    exportfs
    # 輸出結果如下所示 /root/nfs_root /root/nfs_root

 

先簡單介紹一下NFS服務器是什么?

  NFS server可以看作是一個FILE SERVER,它可以讓你的PC通過網絡將遠端的NFS SERVER共享出來的檔案MOUNT到自己的系統中,在CLIENT看來使用NFS的遠端文件就象是在使用本地文件一樣。

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是負責負責信息的傳輸。

ubuntu系統
服務器端(192.168.94.54)
1.1安裝NFS服務:

執行以下命令安裝NFS服務器,

apt會自動安裝nfs-common、rpcbind等13個軟件包

sudo apt install nfs-kernel-server
1
1.2編寫配置文件:

編輯/etc/exports 文件:

sudo vi /etc/exports


/etc/exports文件的內容如下:

/tmp *(rw,sync,no_subtree_check,no_root_squash)

/data *(rw,sync,no_subtree_check,no_root_squash)

/logs *(rw,sync,no_subtree_check,no_root_squash)

Exports文件中可以設定的參數主要有以下這些:

  參數 說明

(1) Ro 該主機對該共享目錄有只讀權限

(2) Rw 該主機對該共享目錄有讀寫權限

(3) Root_squash 客戶機用root用戶訪問該共享文件夾時,將root用戶映射成匿名用戶

(4) No_root_squash 客戶機用root訪問該共享文件夾時,不映射root用戶

(5) All_squash 客戶機上的任何用戶訪問該共享目錄時都映射成匿名用戶

(6) Anonuid 將客戶機上的用戶映射成指定的本地用戶ID的用戶

(7) Anongid 將客戶機上的用戶映射成屬於指定的本地用戶組ID

(8) Sync 資料同步寫入到內存與硬盤中

(9) Async 資料會先暫存於內存中,而非直接寫入硬盤

(10) Insecure 允許從這台機器過來的非授權訪問
 
(11) subtree_check 如果共享/usr/bin之類的子目錄時,強制NFS檢查父目錄的權限(默認)

(12) no_subtree_check 和上面相對,不檢查父目錄權限

(13) wdelay 如果多個用戶要寫入NFS目錄,則歸組寫入(默認)

(14 )no_wdelay 如果多個用戶要寫入NFS目錄,則立即寫入,當使用async時,無需此設置。

(15) hide 在NFS共享目錄中不共享其子目錄

(16) no_hide 共享NFS目錄的子目錄

(17) secure NFS通過1024以下的安全TCP/IP端口發送

(18) insecure NFS通過1024以上的端口發送

/ user01(rw) user02(rw,no_root_squash) 表示共享服務器上的根目錄(/)只有user01和user02兩台主機可以訪問,且有讀寫權限;user01主機用root用戶身份訪問時,將客戶機的root用戶映射成服務器上的匿名用戶(root_squash,該參數為缺省參數),相當於在服務器使用nobody用戶訪問目錄;user02主機用root用戶身份訪問該共享目錄時,不映射root用戶(no_root_squash),即相當於在服務器上用root身份訪問該目錄

  /root/share/ 192.168.1.2(rw,insecure,sync,all_squash) 表示共享服務器上的/root/share/目錄只有192.168.1.2主機可以訪問,且有讀寫權限;此主機用任何身份訪問時,將客戶機的用戶都映射成服務器上的匿名用戶(all_squash),相當於在服務器上用nobody用戶訪問該目錄(若客戶機要在該共享目錄上保存文件(即寫操作),則服務器上的nobody用戶對該目錄必須有寫的權限)

  /home/ylw/ .test.com (rw,insecure,sync,all_squash) 表示共享/home/ylw/目錄,.test.com域中所有的主機都可以訪問該目錄,且有讀寫權限

  /home/share/ .test.com (ro,sync,all_squash,anonuid=zh3,anongid=wa4) 表示共享目錄/home/share/,*.test.com域中的所有主機都可以訪問,但只有只讀的權限,所有用戶都映射成服務器上的uid為zh3、gid為wa4的用戶

1.3創建共享目錄

在服務器端創建/tmp /data和/logs共享目錄

sudo mkdir -p /tmp

sudo mkdir -p /data

sudo mkdir -p /logs

1.4重啟nfs服務:

sudo service nfs-kernel-server restart

1.5常用命令工具:

在安裝NFS服務器時,已包含常用的命令行工具,無需額外安裝。

顯示已經mount到本機nfs目錄的客戶端機器。

sudo showmount -e localhost

將配置文件中的目錄全部重新export一次!無需重啟服務。

sudo exportfs -rv

查看NFS的運行狀態

sudo nfsstat

查看rpc執行信息,可以用於檢測rpc運行情況

sudo rpcinfo

查看網絡端口,NFS默認是使用111端口。

sudo netstat -tu -4

客戶端(192.168.94.76)
2.1安裝客戶端工具:

在需要連接到NFS服務器的客戶端機器上,

需要執行以下命令,安裝nfs-common軟件包。

apt會自動安裝nfs-common、rpcbind等12個軟件包

sudo apt install nfs-common

2.2查看NFS服務器上的共享目錄

顯示指定的(192.168.94.54)NFS服務器上export出來的目錄

sudo showmount -e 192.168.94.54

2.3創建本地掛載目錄

sudo mkdir -p /mnt/data

sudo mkdir -p /mnt/logs

2.4掛載共享目錄

將NFS服務器192.168.94.54上的目錄,掛載到本地的/mnt/目錄下

sudo mount -t nfs 192.168.94.54:/data /mnt/data

sudo mount -t nfs 192.168.94.54:/logs /mnt/logs

注:在沒有安裝nfs-common或者nfs-kernel-server軟件包的機器上,

直接執行showmount、exportfs、nfsstat、rpcinfo等命令時,

系統會給出友好的提示,

比如直接showmount會提示需要執行sudo apt install nfs-common命令,

比如直接rpcinfo會提示需要執行sudo apt install rpcbind命令。

centos6系統
1、安裝nfs和rpcbind

檢查自己的電腦是否已經默認安裝了nfs和rpcbind:

# rpm -aq | grep nfs
nfs-utils-lib-1.1.5-13.el6.x86_64
nfs-utils-1.2.3-75.el6_9.x86_64

# rpm -aq | grep rpcbind
rpcbind-0.2.0-13.el6_9.1.x86_64

這表示系統已經默認安裝。如果沒有安裝也沒事,可以采用下面的命令安裝

# yum install nfs-utils rpcbind

2、配置nfs的配置文件和hosts文件

創建需要共享的目錄:默認用/mnt

配置nfs的配置文件:

vim /etc/exports

在這個文件中添加需要輸出的目錄,如:

/usr/local/static *(rw)

/usr/local/static:表示的是nfs服務器需要共享給其他客戶端服務器的文件夾

*:表示可以掛載服務器目錄的客戶端ip

(rw):表示該客戶端對共享的文件具有讀寫權限

配置hosts文件:vim /etc/hosts

192.168.93.5 tomcat-01
192.168.93.7 tomcat-02

192.168.93.5:表示服務器本機的ip地址
tomcat-01:表示服務器的機器名

3、啟動nfs和rpcbind服務、檢測服務狀態、已經設置服務開機啟動

啟動服務:

#service rpcbind start
#service nfs start

檢查啟動狀態:

#service rpcbind status
#service nfs status

4、檢測服務器的nfs狀態

# showmount -e localhost 查看自己共享的服務
Export list for hostname:
/usr/local/static *

注意:在執行這個命令的時候如果出現錯誤,說明DNS不能解析當前的服務器,那就是hosts文件沒有配置。

5、客戶端掛載NFS中共享的目錄

客戶端服務器也需要安裝nfs 和 rpcbind 服務。

首先是啟動nfs和rpcbind服務。

查詢服務端共享的文件目錄:

showmount -e 192.168.93.5
Export list for 192.168.93.5:
/usr/local/static *

創建掛載目錄:

#cd /mnt
#mkdir static

掛載服務端的共享目錄:

# mount -t nfs -o nolock,nfsvers=3,vers=3 192.168.93.5:/usr/local/static /mnt/static

查看掛載的狀態:

# mount | grep nfs

sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
192.168.93.5:/usr/local/static on /mnt/static type nfs (rw,nolock,nfsvers=3,vers=3,addr=192.168.93.5)

6、測試共享

服務器創建文件:

#cd /usr/local/static
#touch test123
#echo "123" > test123

客戶端查看文件:

#cd /mnt/static
#ll -h
total 4.0K
-rw-r--r--. 1 root root 4 Dec 26 10:06 test123
————————————————
版權聲明:本文為CSDN博主「三支煙」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_36357820/article/details/78488077


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM