NFS是Network Filesystem的缩写及网络文件系统
主要功能是通过 局域网络 让不同主机 系统之间可以共享文件和目录
为什么要使用NFS服务进行数据存储
1.实现多台服务器之间的数据共享
2.实现多台数据库之间的数据一致
本地文件操作方式(本地调用)
1.当用户执行mkdir命令,该命令会通过shell解释器翻译给内核,有内核解析完成后驱动硬件,完成相应的操作,NFS实现原理(需要先了解【程序|进程|线程】)
2.用户进程访问nfs客户端,使用不同的函数对数据进行处理
3.nfs 客户端通过TCP/IP的方式传递给nfs服务端
4.nfs服务端接收到请求后,会先调用portmap进程进行端口映射
5.nfsd进程用于判断nfs客户端是否拥有权限连接nfs服务端
6.rpc.mount进程判断客户端是否有对应的权限进行验证
7.idmap进程实现用户映射和压缩
8.最后nfs服务端会将对应请求的函数 转换为本地能识别的命令,传递给内核,有内核驱动硬件
//rpc是一个远程过程调用,那么使用nfs必须有rpc服务
##################################################################################################
安装NFS
服务端配置
1.安装NFS-server
yum -y install nfs-utils rpcbind
2.配置nfs
[root@nfs01 ~]# vim /etc/exports
/data 192.168.20.0/24(rw,sync,all_squash)
3.创建对应的目录
[root@nfs01 ~]# mkdir /data
4.启动服务,并加入开机自启
[root@nfs01 ~]# systemctl enable rpcbind nfs-server
[root@nfs01 ~]# systemctl start rpcbind nfs-server
5.检查端口
[root@nfs01 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 11513/rpcbind
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
6.检查共享的内容
[root@nfs01 ~]# cat /var/lib/nfs/etab
/data 192.168.20.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,all_squash)
7.检查匿名用户对应的真实账户
[root@nfs01 ~]# grep '65534' /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
8.将/data 目录的属主属组授权为nfsnobody
[root@nfs01 ~]# chown -R nfsnobody.nfsnobody /data/
######################################################################################################
客户端配置
1.安装NFS-server
yum -y install nfs-utils rpcbind
2.启动服务,并加入开机自启
[root@nfs01 ~]# systemctl enable rpcbind
[root@nfs01 ~]# systemctl start rpcbind
2.1.验证
[root@web01 ~]# showmount -e 192.168.20.40
Export list for 192.168.20.40:
/data 192.168.20.0/24
3.配置客户端,创建挂载点,执行挂载命令
[root@web01 ~]# mkdir /data
[root@web01 ~]# mount -t nfs 192.168.20.40:/data /data/
[root@web01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
192.168.20.40:/data 50G 1.5G 49G 3% /data
4.测试客户端是否拥有写权限
[root@web01 ~]# echo '123' >/data/test
[root@web01 ~]# ll /data/
total 4
-rw-r--r--. 1 nfsnobody nfsnobody 4 Jan 28 13:46 test
5.卸载本地端挂载的信息
[root@web01 ~]# umount /data
[root@web01 ~]# ll /data/
total 0
6.检查nfs服务端是否存在数据
[root@nfs01 ~]# ll /data/
total 4
-rw-r--r--. 1 nfsnobody nfsnobody 4 Jan 28 13:46 test
###################################################################################################
永久挂载(防止服务器重启挂载失效)
[root@web01 ~]# cat /etc/fstab
192.168.20.40:/data /data nfs defaults 0 0
重新修改开机自启动的选项
[root@web01 ~]# cat /etc/fstab
192.168.20.40:/data /data nfs defaults,_netdev 0 0
"_netdev" 防止无法联系nfs服务端时导致开机启动失败(无法使用mount -a 验证fstab)
重载
[root@nfs01 ~]# exportfs -arv
exporting 192.168.20.0/24:/data
重启
[root@web02 ~]# systemctl restart nfs-server