NFS服務搭建
介紹
NFS(Network File System)即網絡檔案系統,是FreeBSD支援的檔案系統中的一種,它允許網絡中的計算機之間通過TCP/IP網絡共享資源。在NFS的應用中,本地NFS的用戶端應用可以透明地讀寫位于遠端NFS伺服器上的檔案,就像通路本地檔案一樣
NFS服務安裝
要設定好 NFS 伺服器我們必須要有兩個軟體才行,分别是:
- RPC 主程式:rpcbind
就如同剛剛提的到,我們的 NFS 其實可以被視為一個 RPC 服務,而要啟動任何一個 RPC 服務之前,我們都需要做好 port 的對應 (mapping) 的工作才行,這個工作其實就是 rpcbind這個服務所負責的!也就是說, 在啟動任何一個 RPC 服務之前,我們都需要啟動 rpcbind 才行!
- NFS 主程式:nfs-utils
就是提供 rpc.nfsd 及 rpc.mountd 這兩個 NFS Daemons 與其他相關 Documents 與說明檔案、執行檔案等的軟體!這個就是 NFS 服務所需要的主要軟體啦!
檢視系統是否已安裝NFS
[15:48:53 [email protected] ~]#rpm -qa|grep nfs
[15:58:06 [email protected] ~]#rpm -qa|grep rpcbind
[15:58:14 [email protected] ~]#
安裝NFS服務
[15:58:14 [email protected] ~]#yum -y install nfs-utils rpcbind
[15:59:05 [email protected] ~]#rpm -qa|grep nfs
nfs-utils-1.3.0-0.68.el7.x86_64
libnfsidmap-0.25-19.el7.x86_64
[15:59:48 [email protected] ~]#rpm -qa|grep rpcbind
rpcbind-0.2.0-49.el7.x86_64
NFS服務端配置
- 主要配置檔案:/etc/exports
- NFS檔案系統維護指令:/usr/sbin/exportfs
- 分享資源的登入檔:/var/lib/nfs/*tab
- 用戶端查詢伺服器分享資源的指令:/usr/sbin/showmount
編輯配置檔案 /etc/exports
[16:12:59 [email protected] /data/k8s_nfs]#pwd
/data/k8s_nfs
[16:13:00 [email protected] /data/k8s_nfs]#vim /etc/exports
/data/k8s_nfs 192.168.82.0/24(rw,no_root_squash,no_all_squash,sync)
配置介紹
參數 | 内容說明 |
rw/ro | 該目錄分享的權限是可擦寫 (read-write) 或隻讀 (read-only),但最終能不能讀寫,還是與檔案系統的 rwx 及身份有關 |
sync/async | sync 代表資料會同步寫入到記憶體與硬碟中,async 則代表資料會先暫存于記憶體當中,而非直接寫入硬碟! |
no_root_squash/ root_squash | 用戶端使用 NFS 檔案系統的賬号若為 root 時,系統該如何判斷這個賬号的身份?預設的情況下,用戶端 root 的身份會由 root_squash 的設定壓縮成 nfsnobody, 如此對伺服器的系統會較有保障。但如果你想要開放用戶端使用 root 身份來操作伺服器的檔案系統,那麼這裡就得要開 no_root_squash 才行! |
all_squash | 不論登入 NFS 的使用者身份為何, 他的身份都會被壓縮成為匿名使用者,通常也就是 nobody(nfsnobody) 啦! |
使配置生效
[16:14:57 [email protected] /data/k8s_nfs]#exportfs -r
啟動rpcbind、nfs服務
[16:24:05 [email protected] /data/k8s_nfs]#systemctl start rpcbind
[16:24:12 [email protected] /data/k8s_nfs]#systemctl start nfs
[16:24:19 [email protected] /data/k8s_nfs]#systemctl enable rpcbind
[16:24:29 [email protected] /data/k8s_nfs]#systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
檢視NFS所共享的目錄
[16:25:12 [email protected] /data/k8s_nfs]#showmount -e localhost
Export list for localhost:
/data/k8s_nfs 192.168.82.0/24
去用戶端伺服器上挂載
[16:08:43 root@mq1 ~]#mkdir /sharenfs
[16:08:54 root@mq1 ~]#mount -t nfs 192.168.81.183:/data/k8s_nfs /sharenfs/
mount: 檔案系統類型錯誤、選項錯誤、192.168.81.183:/data/k8s_nfs 上有壞超級塊、
缺少代碼頁或助手程式,或其他錯誤
(對某些檔案系統(如 nfs、cifs) 您可能需要
一款 /sbin/mount.<類型> 助手程式)
有些情況下在 syslog 中可以找到一些有用資訊- 請嘗試
dmesg | tail 這樣的指令看看。
遇到這個問題說明用戶端伺服器上沒有安裝nfs-utils
[16:08:13 root@mq1 ~]#rpm -qa|grep nfs
[16:09:23 root@mq1 ~]#yum -y install nfs-utils
[16:13:38 root@mq1 ~]#mount -t nfs 192.168.81.183:/data/k8s_nfs /sharenfs/
[16:13:41 root@mq1 ~]#df -h
檔案系統 容量 已用 可用 已用% 挂載點
/dev/mapper/cl-root 46G 26G 20G 58% /
/dev/sda3 50G 15G 32G 32% /data
192.168.81.183:/data/k8s_nfs 443G 8.8G 412G 3% /sharenfs