NFS文件共享服务器
简介:NFS(Network File System)网络文件系统,它主要的功能是通过网络(局域网),让不同的机器、不同的操作系统可以共享彼此的目录或文件,将共享的目录挂载到本地的文件系统,一般用来存储共享视频和图片等静态数据,常用在集群架构后端进行数据共享,NFS依赖负责信息传输的RPC协议。
一、NFS入门
1. NFS服务软件
A. 需要开启mountd、nfsd、nlockmgr、portmapper、rquotad这5个服务, 除了nfsd和portmapper服务端口是固定的,其余都是随机分配的
B. nfsd:是nfs的守护进程,不负责文件存储(由NFS服务器本地内核负责调度存储),用于理解客户端发起的rpc请求,并将其转交给本地内核,而后存储在指定的文件系统上;
C. mountd:mountd的服务端口是随机的,由rpc服务(portmapper)提供随机端口号,用于验证客户端是否在允许访问此NFS文件系统的客户端列表中,在则允许访问(发放一个令牌,持令牌去找nfsd),否则拒绝访问;
D. idmapd:实现用户帐号的集中映射,把所有的帐号都映射为NFSNOBODY,但是在访问时却能以本地用户的身份去访问;
E. portmapper:NFS服务器的rpc服务,用于管理远程过程调用(RPC);
F. rpcbind:即RPC主程序;
2. NFS常用目录或文件
A. /etc/exports:NFS主要配置文件;
B. /usr/sbin/showmount:客户端的查看命令;
C. /var/lib/nfs/etab:查看服务端配置目录的完整权限;
D. /usr/sbin/exportfs:维护NFS分享资源的指令;
3. 端口
A. 查看RPC的端口映射:rpcinfo -p;
B. nfs默认端口是2049(tcp/udp);
C. portmapper默认端口是111(tcp/udp);
D. mountd、idmapd、rpcbind三个是随机端口;
E. 固定端口编辑/etc/sysconfig/nfs文件,然后reboot即可。
1 2 3 4 5 | RQUOTAD_PORT=2050 LOCKD_TCPPORT=2051<br> // 注意不能共端口 LOCKD_UDPPORT=2052 MOUNTD_PORT=2048 STATD_PORT=2053 |
4. /etc/exports配置文件
A. 格式:<输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)],例如/rhxy/nfs 192.168.1.1(rw);
B. 配置参数
ro—>设置输出目录只读权限;
rw—>设置输出目录可读可写权限;
root_squash—>当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户;
no_root_squash—>当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员;
all_squash—>无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户;
sync—>同时将数据写入到内存与硬盘中,保证不丢失数据;
async—>将数据先保存到内存缓冲区,然后再写入硬盘;
二、NFS服务部署
1. 安装NFS和RPC:yum install -y nfs-utils rpcbind;
2. 先启动RPC服务,再启动NFS服务,,否则提示cint_create: RPC: Program not registered;
systemctl start rpcbind systemctl enable rpcbind;
systemctl start nfs-server systemctl enable nfs-server;
3. 关闭防火墙:systemctl stop firewalld;
4. 配置共享文件目录,编辑配置文件:
vi /etc/exports;
编写/rhxy/nfs 192.168.1.0(rw)
systemctl reload nfs;
5. 查看NFS挂载配置:showmount -e 192.168.0.1;
6. 在客户端创建目录并共享目录
A. 永久生效挂载:vi /etc/fstab
编写192.168.1.0:/public /rhxy/nfs nfs defaults 0 0
mount -a 使/etc/fstab文件生效;
Shell:echo "192.168.1.0:/public /rhxy/nfs nfs defaults 0 0' >> /etc/fstab && mount -a
B. 临时生效挂载:mount -t nfs 10.12.10.11:/data/nfs/nacos/init.d /var/lib/docker/volumes/rhxy-main_nacos/_data;
C. 卸载挂载:umount /var/lib/docker/volumes/rhxy-main_nacos/_data;
7. 检查挂载情况:df -Th;
8. docker集群目录挂载,为了避免每个节点上面去配置NFS挂载和映射,使用volume nfs即可完成,查看数据卷用docker volume inspect ***;
9. 设置nfs服务端只能指定机器访问,顺便解决漏洞问题
1 2 3 4 | iptables -A INPUT -m iprange --src-range 10.12 . 108.100 - 10.12 . 108.115 -p tcp -m multiport --dports 111 , 2049 , 20048 -j ACCEPT iptables -A INPUT -m iprange --src-range 10.12 . 108.100 - 10.12 . 108.115 -p udp -m multiport --dports 111 , 2049 , 20048 -j ACCEPT iptables -A INPUT -p tcp -m multiport --dports 111 , 2049 , 20048 -j DROP iptables -A INPUT -p udp -m multiport --dports 111 , 2049 , 20048 -j DROP |
可参考:docker下使用NFS服务共享
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
2020-06-05 Docker Nework网络管理及内核优化