共计 2973 个字符,预计需要花费 8 分钟才能阅读完成。
本地磁盘设备挂载只需要 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 # 保存退出
正文完