NFS
介紹
NFS就是Network File System的縮寫,它最大的功能就是可以通過網絡,讓不同的機器、不同的操作系統可以共享彼此的文件。
NFS服務器可以讓PC將網絡中的NFS服務器共享的目錄掛載到本地端的文件系統中,而在本地端的系統中來看,那個遠程主機的目錄就好像是自己的一個磁盤分區一樣,在使用上相當便利;
NFS一般用來存儲共享視頻,圖片等靜態數據;NFS 協議默認是不加密的,它不像 Samba,它不提供用戶身份鑒別。服務端通過限定客戶端的 IP 地址和端口來限制訪問。
原理
NFS在文件傳送或信息傳送的過過程中,依賴於RPC協議。RPC,遠程過程調用(Remote Procedure Call),是使客戶端能夠執行其他系統中程序的一種機制。NFS本身是沒有提供信息傳輸的協議和功能的,但NFS卻能讓我們通過網絡進行資料的分享,就是因為NFS使用了RPC提供的傳輸協議,可以說NFS就是使用PRC的一個程序
- 首先服務器端啟動RPC服務,並開啟111端口
- 服務器端啟動NFS服務,並向RPC注冊端口信息
- 客戶端啟動RPC(portmap服務),向服務端的RPC(portmap)服務請求服務端的NFS端口
- 服務端的RPC(portmap)服務反饋NFS端口信息給客戶端。
- 客戶端通過獲取的NFS端口來建立和服務端的NFS連接並進行數據的傳輸
注意: 在啟動NFS SERVER之前,首先要啟動RPC服務(即portmap服務,下同)否則NFS SERVER就無法向RPC服務區注冊,另外,如果RPC服務重新啟動,原來已經注冊好的NFS端口數據就會全部丟失。因此此時RPC服務管理的NFS程序也要重新啟動以重新向RPC注冊。
特別注意:一般修改NFS配置文檔后,是不需要重啟NFS的,直接在命令執行systemctl reload nfs或exportfs –rv即可使修改的/etc/exports生效
適用場景
-
NFS 最好是部署在局域網 ,不要在公網上 ;
-
適合在中小型企業使用;大型網站不會用 NFS 的, 用的都是 分布式存儲
安裝
NFS服務端
安裝nfs-kernel-server:
$ sudo apt install nfs-kernel-server
NFS客戶端
安裝 nfs-common:
$ sudo apt install nfs-common
配置
服務端配置
-
創建共享目錄
sudo mkdir -p /var/nfs/sharedir
-
配置 /etc/exports (NFS掛載目錄及權限由/etc/exports文件定義)
格式: 共享目錄的路徑 允許訪問的NFS客戶端(共享權限參數) 參數: - ro 只讀 - rw 讀寫 - root_squash 當NFS客戶端以root管理員訪問時,映射為NFS服務器的匿名用戶 - no_root_squash 當NFS客戶端以root管理員訪問時,映射為NFS服務器的root管理員 - all_squash 無論NFS客戶端使用什么賬戶訪問,均映射為NFS服務器的匿名用戶 - sync 同時將數據寫入到內存與硬盤中,保證不丟失數據 - async 優先將數據保存到內存,然后再寫入硬盤;這樣效率更高,但可能會丟失數據 請注意,NFS客戶端地址與權限之間沒有空格
-
比如要將
/var/nfs/sharedir
目錄共享, 則在該文件末尾添加下列語句:
/home/lin/NFSshare 192.168.66.*(rw,sync,no_root_squash)/var/nfs/sharedir *(rw,sync,no_root_squash,no_subtree_check)
-
要限制客戶端IP, 添加下列語句:
/var/nfs/sharedir 122.111.222.111(rw,sync,no_subtree_check)
-
共享目錄為/public , 允許訪問的客戶端為192.168.245.0/24網絡用戶,權限為只讀
/public 192.168.245.0/24(ro)
-
-
重新加載 nfs-kernel-server 配置:
$ sudo systemctl reload nfs-kernel-server
客戶端配置
-
使用
showmount
命令查看nfs服務器共享信息。輸出格式為“共享的目錄名稱 允許使用客戶端地址”。
showmount命令參數:- -a :顯示目前主機與客戶端的 NFS 聯機分享的狀態;
- -e :顯示/etc/exports 所分享的目錄數據。
user@k8s-node-01:~$ showmount -e 192.168.249.5 Export list for 192.168.249.5: /var/nfs/sharedir *
-
在客戶端創建目錄,並掛載共享目錄
$ sudo mkdir -p /mnt/nfs_sharedir
-
掛載遠程共享目錄:
$ sudo mount your_nfs_server_ip:/var/nfs/sharedir /mnt/nfs_sharedir
e.g.
sudo mount 192.168.249.5:/var/nfs/sharedir /mnt/nfs_sharedir
-
編輯fstab文件, 使系統每次啟動時都能自動掛載
$ sudo vim /etc/fstab
添加如下:
your_nfs_server_Ip:/var/nfs/sharedir /mnt/nfs_sharedir nfs defaults 0 0
-
-
檢查客戶端掛載狀態
-
卸載遠程掛載
$ sudo umount /mnt/nfs_sharedir