NFS网络文件系统

说明:以下配置都是以root用户角色执行的,并且基于RHEL7设置的,参考书籍《Linux就该这么学》。

什么是NFS?

NFS就是Network FileSystem的缩写,是由Sun公司发展出来的。其目的是让linux 机器之间彼此分享文档。NFS可以让服务器端共享的目录挂载到本地客户机上,对于本地客户机器来说,远程服务器上的目录就好像自己的一部分。NFS文件系统协议允许网络中的主机通过TCP/IP协议进行资源共享,能够让Linux客户端像使用本地资源一样读写远端NFS服务端的文件内容。

NFS有哪些作用?

它的功能是把NFS服务器(即Linux主机)的某个目录挂载到开发板的文件系统上。这样,开发板就可以执行该目录中的可执行程序。这样做的优点在于:不用将程序写入开发板的Flash,减少了对Flash的损害,同时也方便调试。

在嵌入式系统开发中主要用于NFS网络根文件系统启动或者网络加载调试应用程序。

NFS允许系统将其目录和文件共享给网络上的其他系统。通过NFS,用户和应用程序可以访问远程系统上的文件,就像它们是本地文件一样。那么NFS最值得注意的优点有:

(1)本地工作站可以使用更少的磁盘空间,因为常用数据可以被保存在一台机器上,并让网络上的其他机器可以访问它。

(2)不需要为用户在每台网络机器上放一个用户目录,因为用户目录可以在NFS服务器上设置并使其在整个网络上可用。

(3)存储设备如软盘、光驱及USB设备可以被网络上其它机器使用,这可能可以减少网络上移动设备的数量。

NFS运行机制:

NFS是通过网络进行数据传输,并且传输数据时使用的端口是随机的,但是唯一的限制就是端口小于1024。客户端怎么知道服务器使用的是哪个端口,此时就要用到远程过程调用RPC。

其实,NFS运行在SUN的RPC(Remote Procedure
Call,远程过程调用)基础上,RPC定义了一种与系统无关的方法来实现进程间通信,由此,NFS Server也可以看作是RPC
Server。正因为NFS是一个RPC服务程序,所以在使用它之前,先要映射好端口——通过portmap设定。比如:某个NFSClient发起NFS服务请求时,它需要先得到一个端口(port),所以它先通过portmap得到portnumber(不仅是NFS,所有的RPC服务程序启动之前,都需要先设定好portmap)。

注意:在启动RPC服务(比如NFS)之前,需要先启动portmap服务。

NFS具体配置步骤:

一、服务端配置

1、安装NFS服务

yum install nfs-utils

2、在NFS服务端主机上面建立用于NFS文件共享的目录,设置较大的权限来保证其他人也一样有写入的权限:

mkdir /nfsfile
chmod -Rf 777 /nfsfile
echo "This is a test file" > /nfsfile/readme

3、NFS服务程序的配置文件为/etc/exports,默认里面是空白没有内容的,可以按照共享目录的路径 允许访问的NFS资源客户端(共享权限参数)的格式来写入参数,定义要共享的目录与相应的权限。共享权限参数如下:

例如想要把/nfsfile目录共享给所有属于192.168.10.0/24这个网段的用户主机,并且让这些用户拥有读写权限,自动同步内存数据到本地硬盘,以及把对方root超级用户映射为本地的匿名用户等等特殊权限参数,那么就可以按照下面的格式来写入配置文件:

vim /etc/exports
/nfsfile 192.168.10.*(rw,sync,root_squash)

4、启动运行NFS共享服务程序,由于NFS服务在文件共享过程中是依赖RPC服务进行工作了,RPC服务用于把服务器地址和服务端口号等信息通知给客户端,因此要使用NFS共享服务的话,顺手也要把rpcbind服务程序启动,并且把这两个服务一起加入到开机启动项中:

systemctl restart rpcbind
systemctl enable rpcbind
systemctl start nfs-server
systemctl enable nfs-server

二、客户端配置

1、首先用showmount命令查询NFS服务端的远程共享信息,输出格式为“共享的目录名称 允许使用客户端地址”:

常用参数如下:

showmount -e 192.168.10.10  # 显示远程服务端共享的信息

2、然后在客户端系统上面创建一个挂载目录,使用mount命令的 -t 参数指定挂载文件系统的类型,以及后面写上服务端的IP地址,共享出去的目录以及挂载到系统本地的目录。

mkdir /nfsfile         # 创建本地用来挂载的文件夹
mount -t nfs 192.168.10.10:/nfsfile /nfsfile  # 挂载

3、最后挂载成功后,切换到本地目录就应该能够顺利查看到在服务端写入的文件内容了,如果希望远程NFS文件共享能一直有效,还可以写入到fstab文件中:

cat /nfsfile/readme  # 可以在本地目录查看到之前在服务端写入的文件内容
vim /etc/fstab       # 编辑fstab文件保证开机启动仍然有效
    192.168.10.10:/nfsfile /nfsfile nfs defaults 0 0    #具体写入的内容
标签:NFS 发布于:2019-11-05 18:18:30