NFS共享存储
NFS原理
1.用户进程访问NFS客户端,使用不同的函数对数据进行处理
2.NFS客户端通过TCP/IP的方式传递给NFS服务端。
3.NFS服务端接收到请求后,会先调用portmap进程进行端口映射。
4.nfsd进程用于判断NFS客户端是否拥有权限连接NFS服务端。
5.Rpc.mount进程判断客户端是否有对应的权限进行验证。
6.idmap进程实现用户映射和压缩
7.最后NFS服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,由内核驱动硬件。
环境准备
| 服务器系统 | 角色 | 外网ip | 内网ip |
| Centos7.9 | NFS服务器 | 10.0.0.200 | 172.16.1.200 |
| Centos7.9 | web服务器 | 10.0.0.7 | 172.16.1.7 |
一、关闭防火墙
在NFS、web服务器都执行
关闭Firewalld systemctl stop firewalld systemctl disable firewalld 关闭selinux 修改 /etc/selinux/config 文件为SELINUX=disabled 临时修改: setenforce 0二、安装NFS
在NFS、web都需要安装,web只需要安装,不需要启动
yum install -y nfs-utils三、配置文件
在NFS服务器,配置文件
修改 /etc/exports 创建data共享目录 mkdir /data 修改目录权限 chown nfsnobody.nfsnobody /data 修改为:/data/ 172.16.1.0/24(rw,sync,all_squash) 参数说明: 允许172.16.1.0/24下的ip可以挂载 rw:读写 ro:只读 sync:同步写(安全)数据同步写入磁盘后才返回,安全、慢一点(生产推荐) async:异步(快)先放内存,异步刷盘,速度快,断电可能丢数据 root_squash:(默认)客户端 root → 服务端会被压缩成匿名用户 nfsnobody,没有 root 权限 no_root_squash:(NFS 必用!)客户端 root = 服务端 root,不压缩,读写权限完全正常 all_squash:所有客户端用户都压缩成匿名用户 anonuid=xxx 匿名用户映射为本地 UID anongid=xxx 匿名用户映射为本地 GID四、启动服务
systemctl start nfs systemctl enable nfs五、检查服务和新配置文件
cat /var/lib/nfs/etab netstat -nltp | grep nfs六、web客户端挂载共享目录
检查共享
[root@web01~]#showmount -e 172.16.1.200 Export list for 172.16.1.200: /data 172.16.1.0/24挂载
mount -t nfs 172.168.1.200:/data /nfsdir 生产环境挂载 mount ‐t nfs ‐o nosuid,noexec,nodev 172.16.1.200:/data /nfsdir 防止提权、防止执行恶意程序、防止滥用设备文件。写入开机自启挂载目录中
