centos7下NFS使用與配置
一、NFS的工作流程
1、由程序在NFS客戶端發起存取文件的請求,客戶端本地的RPC(rpcbind)服務會通過網絡向NFS服務端的RPC的111端口發出文件存取功能的請求。 2、NFS服務端的RPC找到對應已註冊的NFS端口,通知客戶端RPC服務。 3、客戶端獲取正確的端口,並與NFS daemon聯機存取數據。 4、存取數據成功後,返回前端訪問程序,完成一次存取操作。
所以無論客戶端 和服務端都需要用NFS,必須安裝RPC服務。
NFS的RPC服務,在Centos5下名為portmap,Centos6下名稱為rpcbind.
二、Centos7搭建NFS服務器實例
服務器系統 | 角色 | IP |
CentOS7-150--server | NFS服務器端 | 192.168.10.150 |
CentOS7-151 -client | NFS客戶端 | 192.168.10.151 |
共享CentOS7-150--server中/data/bbs目錄,使192.168.10.1 IP段所有主機都可以訪問
1、因是測試環境,先關閉selinux和firewalld
1)關閉selinux
[root@service ~]# sed -i s#SELINUX=enforcing#SELINUX=disabled#g /etc/selinux/config
2)關閉firewalld防火墻
查看firewalld防火墻開機自動狀態
[root@service ~]# systemctl list-unit-files|grep enable|grep firewalld firewalld.service enabled
關閉firewalld防火墻開機自動啟
[root@service ~]# systemctl disable firewalld.service Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
停止防火墻
[root@service ~]# systemctl stop firewalld.service
查看防火墻狀態
[root@service ~]# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)Mar 14 18:52:24 localhost.localdomain systemd[1]: Starting firewalld - dynamic .... Mar 14 18:52:24 localhost.localdomain systemd[1]: Started firewalld - dynamic f.... Mar 14 18:52:25 localhost.localdomain firewalld[573]: WARNING: ICMP type 'beyond... Mar 14 18:52:25 localhost.localdomain firewalld[573]: WARNING: beyond-scope: INV... Mar 14 18:52:25 localhost.localdomain firewalld[573]: WARNING: ICMP type 'failed... Mar 14 18:52:25 localhost.localdomain firewalld[573]: WARNING: failed-policy: IN... Mar 14 18:52:25 localhost.localdomain firewalld[573]: WARNING: ICMP type 'reject.. Mar 14 18:52:25 localhost.localdomain firewalld[573]: WARNING: reject-route: INV... Mar 14 11:21:43 service systemd[1]: Stopping firewalld - dynamic firewall daemon... Mar 14 11:21:43 service systemd[1]: Stopped firewalld - dynamic firewall daemon.Hint: Some lines were ellipsized, use -l to show in full.
2、服務端部署
1)檢查系統版本及NFS服務nfs-utils 和rpcbind有沒有安裝
[root@service ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@service ~]# rpm -qa nfs-utils rpcbind
2)安裝NFS服務nfs-untils和rpcbind
[root@service ~]# yum install nfs-utils rpcbind -y
3)啟動rpcbind服務(一定要先啟動rpcbind服務再啟動nfs服務)
查看rpcbind服務狀態
[root@service ~]# systemctl status rpcbind.service
啟動rpcbind服務
[root@service ~]# systemctl start rpcbind.service
查看rpc
[root@service ~]# lsof -i :111 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME systemd 1 root 33u IPv6 25136 0t0 TCP *:sunrpc (LISTEN) systemd 1 root 38u IPv4 25137 0t0 TCP *:sunrpc (LISTEN) rpcbind 9227 rpc 4u IPv6 25136 0t0 TCP *:sunrpc (LISTEN) rpcbind 9227 rpc 5u IPv4 25137 0t0 TCP *:sunrpc (LISTEN) rpcbind 9227 rpc 8u IPv4 33497 0t0 UDP *:sunrpc rpcbind 9227 rpc 10u IPv6 33499 0t0 UDP *:sunrpc [root@service ~]# netstat -lntup|grep rpcbindudp 0 0 0.0.0.0:922 0.0.0.0:* 9227/rpcbind udp 0 0 0.0.0.0:111 0.0.0.0:* 9227/rpcbind udp6 0 0 :::922 :::* 9227/rpcbind udp6 0 0 :::111 :::* 9227/rpcbind
查看nfs服務向rpc註冊的端 口信息
[root@service ~]# rpcinfo -p localhost program vers proto port service 100000 4 tcp 111 portmapper 100000 3 tcp 111 portmapper 100000 2 tcp 111 portmapper 100000 4 udp 111 portmapper 100000 3 udp 111 portmapper 100000 2 udp 111 portmapper
把rpcbind另入開機自啟動
[root@service ~]# systemctl enable rpcbind.service [root@service ~]# systemctl list-unit-files|grep enabled|grep rpcbind rpcbind.socket enabled
4)啟動NFS服務並查看其狀態
[root@service ~]# systemctl start nfs.service [root@service ~]# systemctl status nfs.service
把NFS服務加入開機自啟動並查看其狀態
[root@service ~]# systemctl enable nfs.service [root@service ~]# systemctl list-unit-files|grep nfs
5)授權nfsnobody於/data/bbs讓客戶端掛載後可寫可讀
[root@service /]# chown nfsnobody:nfsnobody /data/bbs
6)創建測試目錄及文件
[root@service ~]# mkdir /data/bbs -p [root@service ~]# mkdir /data/bbs/test.txt
7)配置NFS服務的export文件
[root@service ~]# echo "/data/bbs/ 192.168.10.1/24(rw,sync,root_squash)">>/etc/exports
重新加載nfs配置文件
[root@service ~]# exportfs -rv exporting 192.168.10.1/24:/data/bbs
查看nfs服務器掛載情況
[root@service ~]# showmount -e localhost Export list for localhost: /data/bbs 192.168.10.1/24
ro:目錄只讀
rw:目錄讀寫
sync:將數據同步寫入內存緩沖區與磁盤中,效率低,但可以保證數據的一致性
async:將數據先保存在內存緩沖區中,必要時才寫入磁盤
all_squash:將遠程訪問的所有普通用戶及所屬組都映射為匿名用戶或用戶組(nfsnobody)
no_all_squash:與all_squash取反(默認設置)
root_squash:將root用戶及所屬組都映射為匿名用戶或用戶組(默認設置)
no_root_squash:與rootsquash取反
anonuid=xxx:將遠程訪問的所有用戶都映射為匿名用戶,並指定該用戶為本地用戶(UID=xxx)
anongid=xxx:將遠程訪問的所有用戶組都映射為匿名用戶組賬戶
3、客戶端配置
[root@localhost ~]# yum install nfs-utils rpcbind
把rpcbind加入開機自啟動
[root@localhost bbs]# systemctl enable rpcbind.service
創建測試目錄文件
[root@localhost ~]# mkdir /data/bbs/ -p
掃描NFS服務器的文件共享列表
[root@localhost bbs]# showmount -e 192.168.10.150 Export list for 192.168.10.150: /data/bbs 192.168.10.1/24
把服務器的目錄掛載到客戶端 的目錄下
[root@localhost ~]# mount -t nfs 192.168.10.150:/data/bbs /data/bbs [root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 18G 1004M 17G 6% / devtmpfs 479M 0 479M 0% /dev tmpfs 489M 0 489M 0% /dev/shm tmpfs 489M 6.8M 482M 2% /run tmpfs 489M 0 489M 0% /sys/fs/cgroup /dev/sda1 497M 112M 385M 23% /boot tmpfs 98M 0 98M 0% /run/user/0 192.168.10.150:/data/bbs 18G 1006M 17G 6% /data/bbs
三、數據測試
服務端
[root@service /]# cd /data/bbs [root@service bbs]# touch a.txt
客戶端
[root@localhost ~]# ls /data/bbsa.txt
提示: 1.配置NFS服務端後,不用重啟NFS服務,只要使用exportfs -rv
2.rpc主程序Centos5.8下為portmap 、Centos6.4和Centos7下為rpcbind
3.NFS共享目錄不要授權於777權限,可以改所屬主和組為nfsnobody,因為nfsnobody權限不是很大,也不能登陸
centos7下NFS使用與配置