NFS
# NFS
**Network File System 网络文件系统**
文件共享服务 网络文件系统。挂载的功能.将本地的资源挂着网络
==NFS优势==:节省本地存储空间,将常用的数据,如:/home目录,存放在NFS服务器上且可以通过网络访问,本地终端将可减少自身存储空间的使用
## nfs.ko
NFS 是一个文件系统,是操作系统来提供的,在内核里面就提供的
有xfs.ko 那么具有一个nfs.ko
```bash
[root@localhost ~]# yum install mlocate -y
[root@localhost ~]# locate xfs.ko
locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory
[root@localhost ~]# updatedb
[root@localhost ~]# locate xfs.ko
/usr/lib/modules/3.10.0-327.el7.x86_64/kernel/fs/xfs/xfs.ko
[root@localhost ~]# locate nfs.ko
/usr/lib/modules/3.10.0-327.el7.x86_64/kernel/drivers/xen/xenfs/xenfs.ko
/usr/lib/modules/3.10.0-327.el7.x86_64/kernel/fs/nfs/nfs.ko
```
## nfs-utils 服务安装包
```bash
yum install nfs-utils
```
## 开启服务
```bash
centos7:
systemctl enable --now nfs
systemctl enable --now nfs.service
systemctl enable --now nfs-server
[root@c7-107 ~]# ll /lib/systemd/system/nfs* 发现软连接的关系,所以centos8 上发生变化
===============================================
centos8
systemctl enable --now nfs-server
#只要开启nfs.service,那么 rpcbind 就自动打开了
#监听的端口:rpcbind 是111 nfs.service 是很多的端口的集合
[root@c7-127 ~]# lsof -i :111
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 547 rpc 6u IPv4 17466 0t0 UDP *:sunrpc
rpcbind 547 rpc 8u IPv4 17472 0t0 TCP *:sunrpc (LISTEN)
rpcbind 547 rpc 9u IPv6 17473 0t0 UDP *:sunrpc
rpcbind 547 rpc 11u IPv6 17475 0t0 TCP *:sunrpc (LISTEN)
```
## rpcbind 注册中心
```bash
nfs 依赖于 rpcbind 服务
用户访问rpcbind 的111 端口才能访问 nfs
换句话说 :就是在centos7的以上的版本,开启了nfs 服务就自动开启了 rpcbind 服务
```
### rpcbind 基于 socket 和 service 两种
**换句话说就是要关闭 rpcbind 和 rpcbind.socket 两个才行。 但是 nfs 服务是依赖于rpcbind的,所以只要重启 nfs 服务,那么 rpcbind 就自动复活**
```bash
[root@c7-107 ~]# systemctl stop rpcbind
Warning: Stopping rpcbind.service, but it can still be activated by:
rpcbind.socket
[root@c7-107 ~]# systemctl status rpcbind.socket #关闭服务了,但是socket还是开的
● rpcbind.socket - RPCbind Server Activation Socket
Loaded: loaded (/usr/lib/systemd/system/rpcbind.socket; enabled; vendor preset: enabled)
Active: active (listening) since Tue 2021-06-29 20:11:05 CST; 26min ago
Listen: /var/run/rpcbind.sock (Stream)
Jun 29 20:11:05 c7-107 systemd[1]: Listening on RPCbind Server Activation Socket.
======================================================
[root@c7-107 ~]# systemctl stop rpcbind.socket
[root@c7-107 ~]# systemctl stop rpcbind
[root@c7-107 ~]# systemctl restart nfs #重启就可以复活 rpcbind和rpcbind.socket
[root@c7-107 ~]# systemctl status rpcbind
● rpcbind.service - RPC bind service
Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-06-29 20:43:45 CST; 7s ago
[root@c7-107 ~]# systemctl status rpcbind.socket
● rpcbind.socket - RPCbind Server Activation Socket
Loaded: loaded (/usr/lib/systemd/system/rpcbind.socket; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-06-29 20:43:45 CST; 41s ago
```
## rpcinfo
```bash
[root02:53 PMcentos8 ~]#rpcinfo -p
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
100024 1 udp 58678 status
100024 1 tcp 51107 status
100005 1 udp 20048 mountd
#查看远程客服端的协议
[root@c7-107 ~]# rpcinfo -s 10.0.0.127
program version(s) netid(s) service owner
100000 2,3,4 local,udp,tcp,udp6,tcp6 portmapper superuser
100024 1 tcp6,udp6,tcp,udp status 29
100005 3,2,1 tcp6,udp6,tcp,udp mountd superuser
100003 4,3 udp6,tcp6,udp,tcp nfs superuser
100227 3 udp6,tcp6,udp,tcp nfs_acl superuser
100021 4,3,1 tcp6,udp6,tcp,udp nlockmgr superuser
#++*nfs服务启动的端口太多,只能企业内部用,因为不好配防火墙*++
```
## NFS配置文件
·```badh
[root@localhost ~]# rpm -qf /etc/exports
setup-2.8.71-6.el7.noarch
yum install setup -y
[root@localhost ~]# rpm -ql setup
/etc/exports
/etc/exports.d/*.exports
```
```bash
[root@c7-127 ~]# cat /etc/exports
/data/wordpress *(rw)
[root@c7-127 ~]# exportfs -r 重新加载文件
[root@c7-127 ~]#
[root@c7-127 ~]# exportfs -v
/data/wordpress
(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
[root@localhost ~]# vim /etc/exports
/data/wordpress_8 * #默认情况下是只读的 * 表示所以的主机
#表示将 /data/wordpress_8 的目录共享了
#加载服务才shenxio
```