✍62 linux服务器挂载远程文件夹
本地磁盘设备挂载只需要 mount 简单挂载即可, 但挂载远程服务器上的目录还需要进行一些配置
一.需求
- 将 A 服务器上的 某个文件夹挂载到 B 服务器上的某个文件夹上(类似于windows上的共享文件夹)
- 例 : 将192.168.10.48 上目录共享给 192.168.10.164
二.实现原理
1.NFS 是什么
- Linux中存在这样一个应用即:Network File System 即 NFS 网络文件系统
- 一种使用于分散式文件系统的协定,让应用程序在客户端通过网络访问位于磁盘中的数据
- 是在类Unix系统间实现对应的磁盘文件共享的一种方法
2.RPC 是什么
- 远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制
3.NFS 和 RPC 的关系
NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享, 这是因为NFS使用了一些其它的传输协议; 而这些传输协议用到这个RPC功能的, 可以说NFS本身就是使用RPC的一个程序, 或者说NFS也是一个RPC SERVER; 所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM PORT的对应
- 可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输
三.安装
- 如果要实现共享文件夹的效果,那么首先需要安装NFS
- 但由于NFS是依赖于RPC协议来进行的协议传输,所以,此时需同时安装,NFS 和 RPC 两个应用程序
yum -y install nfs-utils rpcbind
四.设置共享目录(192.168.10.48)
1.编辑 /etc/exports
文件 (192.168.10.48)
- 文件默认为空(没有共享)
- 书写规则 :
[共享的目录] [客户机](权限参数)
vim /etc/exports
/home/song_test 192.168.10.164(rw,sync,no_root_squash) # 保存退出
# 客户机地址 可以是 : 主机名、IP地址、网段地址、或者"*、?"通配符
# 例 : 192.168.10.* (该网段的所有的ip)
- 权限参数
ro # 该主机对该共享目录有只读权限
rw # 该主机对该共享目录有读写权限
root_squash # 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户
no_root_squash # 客户机用root访问该共享文件夹时,不映射root用户
all_squash # 客户机上的任何用户访问该共享目录时都映射成匿名用户
anonuid # 将客户机上的用户映射成指定的本地用户ID的用户
anongid # 将客户机上的用户映射成属于指定的本地用户组ID
sync # 资料同步写入到内存与硬盘中
async # 资料会先暂存于内存中,而非直接写入硬盘
insecure # 允许从这台机器过来的非授权访问
2.启动服务
- 先启动 RPC服务,再启动 NFS 服务
service rpcbind start
service nfs start
- 查看服务
ps -ef|grep rpcbind
ps -ef|grep nfs
3.查看当前机器发布的 NFS 共享目录
showmount -e 192.168.10.48
五.设置客户机 (192.168.10.164)
1.安装 RPC 和 NFS(可不安装)
2.mount 挂载
mount 192.168.10.48:/home/song_test /opt2 # 将远程服务器 song_test 目录挂载到当前 /opt2 上
3.问题 : mount.nfs: No route to host
- 防火墙没有放行服务相应的端口
- 可以直接关闭 192.168.10.48 上的防火墙再尝试 :
service firewalld stop
4.查看是否挂载成功
5.设置自动挂载
- mount 指令是临时挂载, 服务器重启会断开挂载
- 可以编辑
/etc/fstab
文件让其每次开机都自动挂载
vim /etc/fstab
# 最后一行添加
192.168.10.48:/home/song_test /opt2 nfs defaults,_netdev 0 0
六.mount.nfs: No route to host 解决方法
- 除了直接关闭防火墙放行所有端口, 还可以检查 NFS 服务启动占用了哪些端口, 专门对其开设
1.查看 nfs 相关服务及端口
- nfs服务需要开启 mountd, nfs, nlockmgr, portmapper, rquotad 这5个服务,需要将这5个服务的端口加到iptables里面
rpcinfo -p
少一个 rquotad
2.将需要开放的端口写入文件
-
nfs 和 portmapper 两个服务是固定端口的,nfs 为 2049,portmapper 为 111
-
编辑 :
/etc/services
根据rpcinfo -p
查询出来的结果将下面端口设置成固定端口
mountd 20048/tcp
mountd 20048/udp
rquotad 966/tcp
rquotad 966/udp
nlockmgr 34401/tcp
nlockmgr 54658/udp # 保存退出
- 重启 NFS 服务
service nfs restart
- 编辑防火墙文件开放端口 :
/etc/sysconfig/iptables
vim /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -s 192.168.0.0/24 -m state --state NEW -p tcp --dport 111 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.0.0/24 -m state --state NEW -p tcp --dport 20048 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.0.0/24 -m state --state NEW -p tcp --dport 2049 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.0.0/24 -m state --state NEW -p tcp --dport 966 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.0.0/24 -m state --state NEW -p tcp --dport 34401 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.0.0/24 -m state --state NEW -p udp --dport 111 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.0.0/24 -m state --state NEW -p udp --dport 966 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.0.0/24 -m state --state NEW -p udp --dport 2049 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.0.0/24 -m state --state NEW -p udp --dport 20048 -j ACCEPT
-A RH-Firewall-1-INPUT -s 192.168.0.0/24 -m state --state NEW -p udp --dport 54658 -j ACCEPT # 保存退出
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通