什么是NFS
共享存储,文件服务器
NFS基本概述
NFS是一种网络文件系统,主要功能是通过局域网让不同的主机系统之间可以共享文件或目录
NFS系统与windows网络共享,NFS用于企业集群架构
大型网站会用到复制的分布式文件系统FastDFS(音频 小说 视频)
glusterfs 存放iso镜像
HDFS NFS(图片静态页)解决前端web共享
分布式:将多台机器,组成像一台机器一样使用
微服务:将一台机器,拆分成多台机器使用
为什么使用NFS
实现多台服务器之间数据共享
实现多台服务器之间数据一致
NFS原理
1.用户进程访问NFS客户端,使用不同的函数进行处理
2.NFS客户端通过TCP/IP连接服务端
3.NFS服务端接收请求,会先调用portmap进程进行端口映射
4.Rpc.nfsd进程用于判断NFS客户端能否连接服务端;#守护进程NFS
5.Rpc.mount进程用于判断客户端对服务端的操作权限
6.如果通过权限验证,可以对服务端进行操作,修改或读取
NFS实践
| 主机 |
IP |
角色 |
| web01 |
192.168.25.2 |
NFS客户端 |
| NFS |
192.168.25.1 |
NFS服务端 |
服务端配置
1.关闭防火墙
#systemctl disable firewalld
2.关闭selinux
#setenforce 0
3.安装NFS和rpcbind
#yum install -y nfs-utils rpcbind
4.修改配置文件
# vim /etc/exports
#语法: NFS共享目录(/data) NFS允许连接的客户端IP 允许操作的权限
配置内容
[root@nfs ~]# cat /etc/exports
/data 192.168.25.0/24(rw,sync,all_squash)
5.创建共享目录
#mkdir /data
6.启动nfs
#systemctl start nfs rpcbind
7.验证nfs启动
#showmount -e 或 netstat -lntp | grep rpc
8.验证NFS配置
[root@nfs ~]# cat /var/lib/nfs/etab
/data192.168.25.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)
客户端配置
1.关闭防火墙
#systemctl disable firewalld
2.关闭selinux
#setenforce 0
3.安装NFS和rpcbind
#yum install -y nfs-utils rpcbind
4.查看挂载点
[root@web1 ~]# showmount -e 192.168.25.1
Export list for 192.168.25.1:
/date 192.168.25.0/24
5.挂载
[root@web1 ~]# mount -t nfs 192.168.25.1:/data /backup
查看挂载
[root@web1 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 476M 0 476M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda3 22G 2.1G 20G 10% /
/dev/sda1 1014M 155M 860M 16% /boot
tmpfs 98M 0 98M 0% /run/user/0
192.168.25.1:/data 22G 2.1G 20G 10% /backup
写入数据测试
#第一次写入测试
[root@web1 backup]# cd ~
[root@web1 ~]# cd /backup/
[root@web1 backup]# touch 123.txt
touch: 无法创建"123.txt": 权限不够
#给目录授权
[root@nfs ~]# chown -R nfsnobody.nfsnobody /data/
#再次创建测试
[root@web1 backup]# touch 123.txt
[root@web1 backup]# ll
总用量 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 7月 15 04:45 123.txt
#查看服务端
[root@nfs ~]# ll /data/
总用量 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 7月 15 04:45 123.txt
同步完成
卸载
方式1:#umount /backup
方式2:#umount 192.168.25.1:/data
#强制取消挂载
umount -lf /backup
开机挂载
#编辑fstab文件
192.168.25.1:/data /backup nfs defaults 0 0
#验证fstab写入正确与否
mount -a
方法2#####
echo "mount -t nfs 192.128.25.1 /data /backup" >> /etc/rs.local
NFS配置详解
[root@nfs ~]# cat /etc/exports
/data 192.168.25.0/24(rw,sync,all_squash)
| NFS共享参数 |
参数作用(加粗常用) |
| rw |
读写权限 |
| ro |
只读权限 |
| root_squash |
当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户 |
| no_root-squash |
当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 |
| all_squash |
无论NFS客户端使用什么账户访问时,均映射为NFS服务器的匿名用户 |
| no_all_sauash |
无论NFS客户端使用什么账户访问时,都不进行压缩 |
| sync |
同时将数据写入内存与硬盘,保证不丢失数据 |
| async |
优先将数据保存到内存,再写入硬盘,效率高,但可能丢失数据 |
| anonuid |
配置all_squash使用,指定NFS的用户UID,必须存在于系统 |
| anongid |
配置all_squash使用,指定NFS的用户GID,必须存在于系统 |