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