千家信息网

第九章 网络文件共享服务之NFS

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,9.1 nfs介绍9.1.1 nfs特点NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在
千家信息网最后更新 2026年11月01日第九章 网络文件共享服务之NFS

9.1 nfs介绍

9.1.1 nfs特点

NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。


在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样


nfs适用于Linux与Unix之间实现文件共享,不能实现Linux与Windows间的文件共享功能


nfs是运行在应用层的协议,其监听于2049/tcp和2049/udp套接字上


nfs服务只能基于IP进行认证,这也是它的缺点之一


9.1.2 使用nfs的好处

a) 节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用

b) 用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用

c) 一些存储设备如软驱、CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量


9.1.3 nfs的体系组成

nfs体系至少有两个主要部分:

一台NFS服务器

若干台客户机


nfs体系的架构图如下:

客户机通过TCP/IP网络远程访问存放在NFS服务器上的数据

在NFS服务器正式启用前,需要根据实际环境和需求,配置一些NFS参数


9.1.4 nfs的应用场景

nfs有很多实际应用场景,以下是一些常用的场景:

a) 多个机器共享一台CDROM或其他设备。这对于在多台机器中安装软件来说更加便宜与方便

b) 在大型网络中,配置一台中心NFS服务器用来放置所有用户的home目录可能会带来便利。这些目录能被输出到网络以便用户不管在哪台工作站上登录,总能得到相同的home目录

c) 不同客户端可在NFS上观看影视文件,节省本地空间

d) 在客户端完成的工作数据,可以备份保存到NFS服务器上用户自己的路径下


9.2 nfs工作机制

nfs是基于rpc来实现网络文件系统共享的。所以我们先来说说rpc

9.2.1 RPC

RPC(Remote Procedure Call Protocol),远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。

RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。

rpc工作机制如上图所示,下面来描述一下它:

a) 客户端程序发起一个RPC系统调用基于TCP协议发送给另一台主机(服务端)

b) 服务端监听在某个套接字上,当收到客户端的系统调用请求以后,将收到的请求和其所传递的参数通过本地的系统调用执行一遍,并将结果返回给本地的服务进程

c) 服务端的服务进程收到返回的执行结果后将其封装成响应报文,再通过rpc协议返回给客户端

d) 客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行


CentOS6中RPC服务的进程名是portmapper,可以通过rpcinfo -p查看当前系统使用的RPC服务名


9.2.2 NIS

NIS:Network Information System,网络信息系统,是对主机帐号等系统提供集中管理的网络服务。


用户登录任何一台NIS客户机都会从NIS服务器进行登录认证,可实现用户帐号的集中管理


NIS协议是明文的,所以NIS一般不建议在公网中使用而通常在局域网中使用。


此章主要是讲NFS,所以NIS的配置这里就不详说了,有兴趣的朋友可以去网上搜索


9.2.3 nfs工作机制

NFS服务器端运行着四个进程:nfsd,mountd,idmapd,portmapper

idmapd:实现用户帐号的集中映射,把所有的帐号都映射为NFSNOBODY,但是在访问时却能以本地用户的身份去访问

mountd:用于验证客户端是否在允许访问此NFS文件系统的客户端列表中,在则允许访问(发放一个令牌,持令牌去找nfsd),否则拒绝访问

mountd的服务端口是随机的,由rpc服务(portmapper)提供随机端口号

nfsd:nfs的守护进程,监听在2049/tcp和2049/udp端口上

不负责文件存储(由NFS服务器本地内核负责调度存储),用于理解客户端发起的rpc请求,并将其转交给本地内核,而后存储在指定的文件系统上

portmapper:NFS服务器的rpc服务,其监听于111/TCP和111/UDP套接字上,用于管理远程过程调用(RPC)


下面通过一个例子来说明NFS的简单工作流程:

需求:查看file文件的信息,此file存储在远程NFS服务端主机上(挂载在本地目录/shared/nfs中)

(1)客户端发起查看file信息的指令(ls file)给内核,内核通过NFS模块得知此文件并不是本地文件系统中的文件,而是在远程NFS主机上的一个文件

(2)客户端主机的内核通过RPC协议把查看file信息的指令(系统调用)封装成rpc请求通过TCP的111端口发送给NFS服务端主机的portmapper

(3)NFS服务端主机的portmapper(RPC服务进程)告诉客户端说NFS服务端的mountd服务在某某端口上,你去找它验证

因为mountd在提供服务时必须要向portmapper注册一个端口号,所以portmapper是知道其工作于哪个端口的

(4)客户端得知服务端的mountd进程端口号后,通过已知的服务端mountd端口号请求验证

(5)mountd收到验证请求后验证发起请求的客户端是否在允许访问此NFS文件系统的客户端列表中,在则允许访问(发放一个令牌,持令牌去找nfsd),否则拒绝访问

(6)验证通过后客户端持mountd发放的令牌去×××端的nfsd进程,请求查看某文件

(7)服务端的nfsd进程发起本地系统调用,向内核请求查看客户端要查看的文件的信息

(8)服务端的内核执行nfsd请求的系统调用,并将结果返回给nfsd服务

(9)nfsd进程收到内核返回的结果后将其封装成rpc请求报文并通过tcp/ip协议返回给客户端


9.3 nfs的配置

主配置文件:/etc/exports,文件中的项的格式相当简单,要共享一个文件系统,只要在文件中添加如下条目即可

directory(or file system) client1(option1,option2) client2(option1,option2)

nfs主配置文件中的常用选项(option):

secure:这个选项是缺省项,它使用了1024以下的TCP/IP端口实现NFS的连接。指定insecure可以禁用这个选项

rw:允许NFS客户机进行读/写访问。缺省选项是只读的

async:此选项可以改进性能,但如果没有完全关闭NFS守护进程就重启了NFS服务器,这也可能会造成数据丢失。

no_wdelay:此选项关闭写延时。如果设置了async,那么NFS就会忽略此选项

nohide:若将一个目录挂载到另一个目录之上,则原来的目录通常就被隐藏起来或看起来像空的一样。要禁用这种行为,需启用hide选项

no_subtree_check:此选项关闭子树检查,子树检查会执行一些不想忽略的安全性检查。缺省选项是启用子树检查

no_auth_nlm:此选项可作为insecure_locks指定,它告诉NFS守护进程不要对加锁请求进行认证。若关心安全性问题,就要避免使用此选项。缺省选项是auth_nlm或secure_locks

mp(mountpoint=path):通过显式的声明此选项,NFS要求挂载所导出的目录

fsid=num:此选项通常在NFS故障恢复时使用。


用户映射:

通过NFS中的用户映射,可以将伪或实际用户和组的标识赋给一个正在对NFS卷进行操作的用户。这个NFS用户具有映射所允许的用户和组的许可权限。


对NFS卷使用一个通用的用户/组可以提供一定的安全性和灵活性,而不会带来很多管理负荷。


在使用NFS挂载的文件系统上的文件时,用户的访问通常都会受到限制,这就是说用户都是以匿名用户的身份来对文件进行访问的,这些用户缺省情况下对这些文件只有只读权限。


这种行为对于root用户来说尤其重要。然而,实际上的确存在这种情况:希望用户以root用户或所定义的其他用户的身份访问远程文件系统上的文件。


NFS允许指定访问远程文件的用户--通过用户标识号(UID)和组标识号(GID),可以禁用正常的squash行为。


用户映射的选项:

root_squash:此选项不允许root用户访问挂载上来的NFS卷

no_root_squash:此选项允许root用户访问挂载上来的NFS卷

all_squash:此选项对于公共访问的NFS卷来说非常有用,它会限制所有的UID和GID,只使用匿名用户。缺省设置是no_all_squash

anonuid和anongid:这两个选项将匿名UID和GID修改成特定用户和组帐号


查看NFS服务器端共享的文件系统:

showmount -e NFSSERVER_IP

挂载NFS文件系统:

mount -t nfs SERVER:/path/to/sharedfs /path/to/mount_point

开机自动挂载nfs:编辑/etc/fstab文件,添加如下格式的内容

SERVER:/PATH/TO/EXPORTED_FS/mnt_pointnfsdefaults,_netdev0 0

客户端挂载时可以使用的特殊选项:

Client

Mounting remote directories

Before mounting remote directories 2 daemons should be started first:

rpcbind

rpc.statd


rsize:其值是从服务器读取的字节数(缓冲)。默认为1024。若使用比较高的值,如8192,可以提高传输速度

wsize:其值是写入到服务器的字节数(缓冲)。默认为1024。若使用比较高的值,如8192,可以提高传输速度


The timeo value is the amount of time, in tenths of a second, to wait before resending a transmission after an RPC timout.

After the first timeout, the timeout value is doubled for each retry for a maximum of 60 seconds or until a major timeout occurs.

If connecting to a slow server or over a busy network, better performance can be achiveved by increasing this timeout value.

The intr option allows signals to interrupt the file operation if a major timeout occurs for a hard-mounted share.


exportfs:维护exports文件导出的文件系统表的专用工具

export -ar:重新导出所有的文件系统

export -au:关闭导出的所有文件系统

export -u FS:关闭指定的导出的文件系统

服务 文件 用户 客户 系统 客户端 服务器 网络 进程 目录 内核 主机 信息 端的 存储 工作 客户机 端口 应用 配置 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技有限公司图片 华宇互联网科技 互联网金融科技平台 万达互联网科技 郑州华宇互联网科技 互联网巨头投资的硬核科技 农村开互联网科技讲堂 哈尔滨新华互联网科技学院 互联网科技实习生岗位职责 福州新华互联网科技学校 知乎 互联网对科技的发展 注册互联网科技公司经营范围大全 开一家科技互联网公司需要多少钱 山东有哪些互联网科技公司 怎样加入科技互联网 从那以后互联网科技有限公司 抖集互联网科技技术咨询 福建互联网展示科技馆设计 科技互联网行业投资研究 互联网科技企业文化 天津市摩尔互联网科技 互联网的科技 郑州华宇互联网科技 互联网和高科技公司 中国科技创新与世界互联网大会 互联网公司黑科技创始人 伊宁互联网科技做什么的 上海同邻互联网科技有限公司规模 互联网界的黑科技 同城互联网络科技
0