✍62 linux服务器挂载远程文件夹

本地磁盘设备挂载只需要 mount 简单挂载即可, 但挂载远程服务器上的目录还需要进行一些配置

参考 : https://www.cnblogs.com/zh94/p/11922744.html

一.需求

  • 将 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

image-20220105153744586

  • 防火墙没有放行服务相应的端口
  • 可以直接关闭 192.168.10.48 上的防火墙再尝试 :
service firewalld stop

4.查看是否挂载成功

image-20220105154123246

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

image-20220105155531809

少一个 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  # 保存退出
posted @ 2022-02-16 16:43  给你骨质唱疏松  阅读(599)  评论(0编辑  收藏  举报