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 root@192.168.81.183 ~]#rpm -qa|grep nfs
[15:58:06 root@192.168.81.183 ~]#rpm -qa|grep rpcbind
[15:58:14 root@192.168.81.183 ~]#
安裝NFS服務
[15:58:14 root@192.168.81.183 ~]#yum -y install nfs-utils rpcbind
[15:59:05 root@192.168.81.183 ~]#rpm -qa|grep nfs
nfs-utils-1.3.0-0.68.el7.x86_64
libnfsidmap-0.25-19.el7.x86_64
[15:59:48 root@192.168.81.183 ~]#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 root@192.168.81.183 /data/k8s_nfs]#pwd
/data/k8s_nfs
[16:13:00 root@192.168.81.183 /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 root@192.168.81.183 /data/k8s_nfs]#exportfs -r
啟動rpcbind、nfs服務
[16:24:05 root@192.168.81.183 /data/k8s_nfs]#systemctl start rpcbind
[16:24:12 root@192.168.81.183 /data/k8s_nfs]#systemctl start nfs
[16:24:19 root@192.168.81.183 /data/k8s_nfs]#systemctl enable rpcbind
[16:24:29 root@192.168.81.183 /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 root@192.168.81.183 /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