linux搭建nfs
1.nfs介绍
NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。
NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利。
NFS一般用来存储共享视频,图片等静态数据。
2.挂载原理
当我们在NFS服务器设置好一个共享目录/home/public后,其他的有权访问NFS服务器的NFS客户端就可以将这个目录挂载到自己文件系统的某个挂载点,这个挂载点可以自己定义,如上图客户端A与客户端B挂载的目录就不相同。并且挂载好后我们在本地能够看到服务端/home/public的所有数据。如果服务器端配置的客户端只读,那么客户端就只能够只读。如果配置读写,客户端就能够进行读写。
挂载后,NFS客户端查看磁盘信息命令:
1 | df -h # 或者lsblk |
3.NFS工作原理
1.首先服务器端启动RPC服务,并开启111端口。
2.服务器端启动NFS服务,并向RPC注册端口信息。
3.客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口。
4.服务端的RPC(portmap)服务反馈NFS端口信息给客户端。
5.客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。
4.安装nfs服务端
1 2 3 | yum -y install nfs-utils systemctl enable nfs-server systemctl restart nfs-server |
5.关闭防火墙和selinux
1 2 3 4 5 6 7 8 | systemctl stop firewalld systemctl disable firewalld # 临时关闭,重启后失效 setenforce 0 # 永久关闭 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 永久关闭需要重启 reboot |
6.查看
1 2 3 | systemctl restart rpcbind systemctl restart nfs netstat -anpt | grep rpcbind #查看rpcbind是否开启,rpcbind服务默认使用111端口 |
7.nfs配置
配置文件:/etc/exports
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 默认是一个空文件,需要自己编写内容 格式是: <输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)] A:输出目录 输出目录是指NFS系统中需要共享给客户机使用的目录; B:客户端 客户端是指网络中可以访问这个NFS输出目录的计算机; 客户端常用的指定方法: 指定IP地址的主机;例192.168.1.1 指定子网里的主机;例192.168.0.0 /24 192.168.0.0 /255 .255.255.0 指定域名内的主机;例david.bsmart.cn 指定域中所有的主机;例*.bsmart.cn 指定所有主机:* C:NFS选项 a:访问权限选项: ro :只读 rw:读写 b.用户映射选项 all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody); no_all_squash:与all_squash取反(默认设置); root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置); no_root_squash:与rootsquash取反; anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx); anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx); c.其它选项 secure:限制客户端只能从小于1024的tcp /ip 端口连接nfs服务器(默认设置); insecure:允许客户端从大于1024的tcp /ip 端口连接服务器; sync :将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性; async:将数据先保存在内存缓冲区中,必要时才写入磁盘; wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置); no_wdelay:若有写操作则立即执行,应与 sync 配合使用; subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置); no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率; |
8.nfs服务挂载
创建共享目录
1 2 | mkdir /data chmod 755 /data |
配置共享目录
exports挂载共享目录
1 | exportfs -rv |
exportfs命令需要参考配置文件“/etc/exportfs”。也可以直接在命令行中指定要共享的NFS文件系统。
语法格式:
1 | export [参数] [目录] |
常用参数
1 2 3 4 | -a 全部挂载或者全部卸载 -r 重新挂载 -u 卸载某一个目录 - v 显示共享目录 |
安装完成后,重启一下nfs服务就可以使用了
1 2 3 4 5 | systemctl restart rpcbind systemctl restart nfs #查看nfs共享信息 showmount -e |
9.nfs客户端配置
1 | yum install nfs-utils -y |
查看服务端共享的目录
1 | showmount -e 192.168.185.6 |
客户端创建挂载目录
1 | mkdir /test |
将服务端目录挂载到本地
1 | mount -t nfs 192.168.185.6: /data /test |
查看挂载信息
1 | df -h |
取消挂载
1 | umount /test |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通