Linux服务器挂载远程文件夹

170次阅读
没有评论

共计 2973 个字符,预计需要花费 8 分钟才能阅读完成。

本地磁盘设备挂载只需要 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

Linux 服务器挂载远程文件夹

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

4. 查看是否挂载成功

Linux 服务器挂载远程文件夹

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

Linux 服务器挂载远程文件夹

少一个 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  # 保存退出 
正文完
 
shawn
版权声明:本站原创文章,由 shawn 2023-06-11发表,共计2973字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)