快捷搜索:

NFSv4 提供无缝的网络访问

收集文件系统(NFS)从 20 世纪 80 年代中期开始就已成为免费操作系统的一部分,并且成为了专有 UNIX 系统的最爱。懂得 NFS 方面的常识十分紧张,其缘故原由很简单:能够在 UNIX 收集之间实现无缝造访对付系统来说异常关键。在本文中我们将进修 NFS 最新的发行版 NFSv4 若何办理很多关键问题,尤其是版本 2 和版本 3 中都十分凸起的安然性问题。

我们很轻易把文件系统觉得是想当然就有的。我们在谋略机上事情,谋略机让我们能够造访打印机、拍照机、数据库、远程传感器、千里镜、编译器和移动电话。这些设备险些没什么共性 —— 实际上,此中很多都是在 Internet 获得广泛利用之后才成为了现实的(例如,综合了小型谋略机功能的拍照机和移动电话)。然而,它们都必要某种类型的文件系统来安然地存储和造访数据。

平日来说,我们都不会真的去问这样的问题:数据、应用数据的利用法度榜样以及将数据出现给我们的接口是若何存储在谋略机上的?很多用户都(不无事理地)将文件系统算作是一壁将自己与以位和字节形式保存的原始数据分隔开来的墙。连接文件系统所应用的协议栈对付大年夜部分用户来说平日都是一个黑盒子,实际上对付大年夜部分法度榜样员来说也是如斯。在所有这些设备之间进行互联也就相称于启用了文件系统之间的通信。

收集文件系统

从很多方面讲,通信都不仅仅是信息的长间隔传输。收集协议也并不是使通用通信成为可能的惟一手段。终究,每个谋略机系统都必须将数据报翻译成别的一真个操作系统可以理解的内容。TCP 是一种高效的传输协议,然则它并没有被优化来帮忙快速文件造访和启用利用法度榜样软件的远程节制。

散播式谋略和收集谋略的对照

传统的收集协议对付谋略在谋略机之间(实际上是收集上)分发的措施所能做的供献不多。只有那些蹩脚的法度榜样员才会依附于传输协讲和光纤电缆来进行并行谋略。相反,我们平日都依附于一个继续模型,此中链接层的协议在连接初始化完成落后行接收,并要在网卡之间进行相称繁杂的握手。并行谋略和散播式文件系统都不再识别 IP 或以太网了。现在,只要事关机能,我们就可以轻忽它们。然而,安然性问题却另当别论。

文件造访在谋略机系统之间的组织要领仍旧是个谜。现在,不管所造访的文件是在一台谋略机上照样在多台合理散播的谋略机上,对付造访系统来说都应该没什么差别。文件系统的语义和文件系统的数据布局现在已经成为了两个完全不合的主题。在 Plan 9 安装上的或在 Andrew 文件系统(AFS)风格的散播式文件系统上的文件系统语义暗藏了文件的组织要领和文件系统到硬件和收集的映射要领。NFS 并不必要暗藏文件和目录在远程文件系统上的存储措施,然则它也没有公开存储文件系统、目录和文件的实际硬件。

NFS:UNIX 问题的一个办理规划

散播式文件系统造访必要应用多个敕令来应用户可以将收集上一台谋略机中的目录挂载到自己的系统上来。Sun Microsystems 在很多年之前就面临了这种寻衅,当时它正开始动手推广称为 远程历程调用(RPC)的技巧和 NFS。

Sun 公司必要办理的根本问题是若何将几台 UNIX 机械连接在一路,从而构成一个无缝的散播式事情情况,而不必要从新编写 UNIX 文件系统的语义,同时也不用添加太多散播式文件系统特有的数据布局。当然,要想让 UNIX 事情站的收集看起来像一个大年夜系统是弗成能的:在保留每个系统的完备性的同时,要让用户能够在其他谋略机的目录长进行操作,而且不会体验到弗成吸收的延时或任何的事情流程限定。

当然,NFS 所做的远远不止于实现了对文本文件的造访,我们还可以经由过程 NFS 来分发 “可运行的” 利用法度榜样。必须要有一些安然历程来支持收集以防对可履行法度榜样的恶意接收。然则这统统究竟是若何实现的呢?

NFS 是一个 RPC 标准

NFS 传统上是作为一个 RFC 利用法度榜样来定义的,它要求 NFS 办事器应用 TCP 协议,NFS 客户机应用 TCP 或别的一种可以避免收集拥塞的协议。Internet 工程义务组(IETF)在 RFC 1832 宣布了 PRC 的 Request for Comments (RFC)。别的一个对付 NFS 实现来说至关紧张的标准则描述了 NFS 所应用的数据款式;它已经在 RFC 1831 中以 “External Data Representation”(XDR)文档的形式宣布了。

NFSv3 必须要应用几个端口来和谐一些帮助协议,这样端口和协议层的以及与它们相关的安然问题就加倍繁杂了。今朝,这个操作模型已经被舍弃了,曩昔在各个端口上要进行的帮助协议的所有操作在 NFSv4 中都可以应用一个有名端口来进行的。

NFSv3 也已经筹备好进行启用了 Unicode 的文件系统操作了 —— 这直到二十世纪九十年代照样相称理论的一个上风。总之,NFS 对付 UNIX 文件系统语义映射得异常好,并且匆匆进了散播式文件系统实现之间的竞争,例如 AFS 和 Samba。虽然 Windows 的支持很差,不过 Samba 文件办事器已包揽理了在 UNIX 和 Windows 系统之间造访共享文件的问题。

NFS 版本 4

正如我们指出的一样,NFSv4 是有状态的。有几个根本的改变使之成为可能。我们前面提到过必须调用帮助协议,由于用户层的进程已经被舍弃了。相反,每个文件打开操作以及相称多的 RPC 调用都被转换成了内核层的文件系统操作。

所有的 NFS 版本都以 RPC 客户机和办事器操作的形式定义了每个义务单元。每个 NFSv3 哀求都必要相称多的 RPC 调用和端口打开调用才能孕育发生结果。版本 4 经由过程引入一个所谓的 复合操作 来简化了这个历程,它包孕了很多文件系统工具操作。当然,这样做的直接影响是在收集上传输的 RPC 调用和数据会少很多,不过每个 RPC 调用所携带的数据都要比实际必要的数据要多。根据评估阐明,NFSv3 RPC 调用所必要的次数是 NFSv4 复合 RPC 历程所必要的客户机-办事器交互次数的 5 倍。

RPC 变得已经不再那么紧张,实际上它常被用作是封装在 NFSv4 客栈中的很多操作的一个包装法度榜样。这种变更还使得协议栈更少地依附于底层的文件系统语义。然则这些变更并不料味着要漠视其他操作系统的文件系统操作:例如,Windows 共享就必要有状态的打开调用。有状态并不仅仅有助于进行流量阐发,而且在文件系统语义中,可以更轻易跟踪文件系统的操作。有状态的打开调用让客户机可以对文件的数据和状态进行缓冲 —— 否则就必须在办事器长进行这种操作。在真实的天下中,Windows 客户机普遍存在,而 NFS 办事器可以与 Windows 无缝、透明地共享数据,是以花一些光阴在 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 改动成特定用户和组帐号。

清单 1 给出了 /etc/exports 的例子。

清单 1. /etc/exports 的例子/opt/files  192.168.0.*

/opt/files  192.168.0.120

/opt/files  192.168.0.125(rw, all_squash, anonuid=210, anongid=100)

/opt/files  *(ro, insecure, all_squash)

第一项将 /opt/files 目录导出给 192.168.0 收集中的所有主机。下一项将 /opt/files 导出给一台主机:192.168.0.120。第三项指定了主机 192.168.0.125,并将对文件的读写权限授权给 user id=210 且 group id=100 的用户。着末一项针对一个公共目录,它只有只读权限并只能容许以匿名帐号的身份造访。

您可能还会对下面的文章感兴趣: