背景

最近有个需求,需要到另外一台服务器上拿文件过来做其它操作,第一反应就是用 ftp、ssh2 之类的 PHP 扩展实现,起一个服务,去把文件复制过来亦或下载下来,但是这个需求是用来自动化测试的,我不可能一直无限去起 ftp、ssh2 服务,太过频繁了,因此,就想着把那台服务器上放文件的目录挂载过来。

NFS简介

NFS是 Network File System 的缩写,即网络文件系统。一种使用于分散式文件协定,有 SUN 公司开发。功能是通过网络让不同的机器、不同的操作系统能够分享个人数据,让应用程序通过网络可以访问位于服务器磁盘中的数据。

NFS 在文件传送或信息传送的过过程中,依赖于 RPC 协议。RPC,远程过程调用(Remote Procedure Call),是使客户端能够执行其他系统中程序的一种机制。NFS 本身是没有提供信息传输的协议和功能的,但 NFS 却能让我们通过网络进行资料的分享,就是因为NFS使用了RPC提供的传输协议,可以说NFS就是使用PRC的一个程序。

NFS服务端、RPC协议、客户端三者可以理解为房源、中介、租客之间的关系:
nfs

搭建

1.查看nfs是否安装

rpm -qa | grep nfs

2.安装

yum -y install nfs

结果报错:提示No package nfs available. Error: Nothing to do。对于此错误,我一般习惯性的去更新一下 yum 仓库
yum -y update 更新完之后,再次运行安装,发现错误依旧,看来这种安装方法不适用。查看一波系统版本信息
cat /etc/redhat-release 显示是CentOS 7.5,应该是没有默认安装包的,可以使用以下命令来安装nfs软件:

yum  install  nfs-utils rpcbind -y

3.已安装nfs,则编辑配置文件

vi /etc/exports
//配置内容如下:
/home/ota/ 101.37.150.166(rw,sync,no_root_squash)

4.启动nfs服务

systemctl start nfs.service

5.检查nfs启动情况

service nfs status

6.执行挂载命令

提前在101.37.150.166上新建目录,配置权限:
mkdir /mnt/nfs
chmod -R 777 /mnt/nfs

mount -t nfs 106.15.188.108:/home/ota /mnt/nfs

7.开机自动挂载

将第6步的命令:mount -t nfs 106.15.188.108:/home/ota /mnt/nfs 添加到 /etc/rc.local 开机就会自动挂载了。

挂载错误

mount: wrong fs type, bad option, bad superblock on 106.15.188.109:/home/ota,
       missing codepage or helper program, or other error
       (for several filesystems (e.g. nfs, cifs) you might
       need a /sbin/mount.<type> helper program)
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

根据错误提示,查看 /sbin/mount. 文件,果然发现没有 /sbin/mount.nfs 的文件,安装 nfs-utils 即可

yum install nfs-utils

安装之后本以为万事大吉,谁知道又报以下错误:

mount.nfs: access denied by server while mounting 106.15.188.109:/home/ota

遇到这个错误怎么解?出绝招啦!修改第3步的内容,将刚才 /etc/exports 中的内容改为

/home/ota/  *(insecure,rw,async,no_root_squash)

这个时候再重新挂载,即可成功!

最后修改:2020 年 02 月 04 日 05 : 00 PM
如果觉得我的文章对你有用,请随意赞赏