《网络硬盘NFS》PPT课件.ppt

上传人:w****2 文档编号:16573855 上传时间:2020-10-14 格式:PPT 页数:23 大小:301KB
返回 下载 相关 举报
《网络硬盘NFS》PPT课件.ppt_第1页
第1页 / 共23页
《网络硬盘NFS》PPT课件.ppt_第2页
第2页 / 共23页
《网络硬盘NFS》PPT课件.ppt_第3页
第3页 / 共23页
点击查看更多>>
资源描述
第 26章 网络硬盘 NFS NFS是网络文件系统( Network File System)的简称, 用于在计算机间共享文件系统。通过 NFS可以让远程主机的 文件系统看起来就像是在本地一样。这个由 Sun公司于 1985 年推出的协议产品如今已被广泛采用,几乎(这个词甚至可 以舍去)所有的 Linux发行版都支持 NFS NFS同样基于服务器 -客户机架构,本章将着重讨论 NFS服务器的安装和配置。 NFS只能用于 UNIX类主机间的 文件共享, Windows客户机应该使用 Samba获得文件服务, 参考 25章获得相关资料。 26.1 快速上手:搭建一个 NFS服务器 按照惯例,本节帮助读者快速搭建一个 NFS服务器,这 个 NFS服务器实现最基本的功能:向外界不加限制地导出一 个目录。这里暂时不考虑安全方面的因素,稍后会详细介绍 和 NFS配置相关的完整信息。 26.1.1 安装 NFS服务器 所有的主流 Linux发行版都在软件包管理系统中附带了 NFS服务器套件,用户所要做的只是安装而已。以 Ubuntu Linux为例,只要简单地在 Shell终端执行下面这条命令,就 可以完成安装 NFS服务器需要的一切步骤: $ sudo apt-get install nfs-common nfs-kernel-server 正在读取软件包列表 . 完成 正在分析软件包的依赖关系树 读取状态信息 . 完成 将会安装下列额外的软件包: libevent1 libgssglue1 libnfsidmap2 librpcsecgss3 portmap 26.1.2 简易配置 完成 NFS服务器的安装后,还需要对其进行相关设置, 以确定哪些文件应该被共享。通过修改 /etc/exports文件来实 现服务器的配置。用熟悉的文本编辑器打开 /etc/exports文件 (需要有 root权限),在末尾添加下面这一行: /srv/nfs_share *(rw) 26.1.3 测试 NFS服务器 作为测试,下面通过 mount命令在另一台主机上挂载这 个文件系统,如果读者一时找不到其它 Linux主机可供测试 ,那么可以直接在本地完成实验。在服务器的主机名(或者 IP地址)和导出目录之间用冒号连接, -o选项指定了使用可 读写方式挂载: $ sudo mount -o rw localhost:/srv/nfs_share /mnt/nfs/ 26.2 NFS基础 通过简单的实践,读者已经大概了解了让 NFS服务器工 作起来的基本步骤。 NFS协议非常简单,但遗憾的是,简单 往往意味着对管理员更大的挑战。 NFS服务器的配置文件从 来不会像 Apache那样长篇大论,很多事情必须自己考虑清 楚。特别是在安全性方面,不要指望 NFS像 Apache那样自动 给出一个“完美”的方案。通过本节及以后各节的学习,读 者会逐步发现,“快速上手”环节中使用的 NFS配置是存在 很多问题的,尽管它看上去似乎工作得不错。 26.2.1 关于 NFS协议的版本 目前被大量部署和使用的是第 3版的 NFS协议,这个协 议在上世纪 90年代初期被开发。在第 2版的基础上, NFSv3 加入了异步写操作功能,从而有效提高了读写磁盘的速度。 第 3版的 NFS完全兼容第 2版。 NFS协议非常稳定,以至于十多年之后才有了第 4版的 开发。这个版本的 NFS提供了一些非常诱人的新特性,例如 : 提供上锁( lock)和安装( mount)协议; 有状态操作; 很强的安全措施; 同时支持 UNIX和 Windows客户机; 支持 Unicode编码的文件名; 更高的性能; 26.2.2 RPC: NFS的传输协议 NFS使用 RPC作为自己的传输协议。 Sun的 RPC( Remote Procedure Call,远程过程调用)协议提供了一种与 系统无关的方法,用于实现网络进程间的通信。这个协议既 可以使用 UDP,也可以使用 TCP作为下层的传输协议。 最初的 NFS使用 UDP协议。这个协议非常简单,并且 在上世纪 80年代那样的网络环境下被证明是最高效的。然而 随着时间的推移, UDP缺乏拥塞控制算法的特点(或者说缺 点?)在大型网络上逐渐暴露出性能上的劣势。于是人们转 而把目光投向了 TCP,幸运的是,随着快速 CPU和智能化网 络控制器的普及,已经没有什么理由再去选择 UDP作为 RPC 的下层协议了。 TCP因此成为了目前 NFS通信的最好选择。 现在,所有的 Linux发行版都能够同时支持 TCP和 UDP 作为 NFS的传输协议,具体选择哪一种完全取决于客户机( 通过在安装时指定安装选项)。 26.2.3 无状态的 NFS NFSv3的服务器是“无状态”的,这意味着服务器并不 知道 也不想知道 哪些机器正在使用某个特定的文件 ,或者某个文件系统已经被哪些机器挂载了。在客户机成功 地同 NFS服务器建立连接后,会获得一个秘密的 cookie,客 户机通过这个 cookie取得访问服务器上资源的权力。从这种 意义上, NFS服务器好像一个慷慨的主人,把客人领进餐厅 然后对他说:“想吃什么就随便拿吧”,随后就走开了。 这样的设计很有好处。如果 NFS服务器崩溃了,那么客 户机只要简单地等待服务器恢复正常,然后就像什么都没发 生过一样继续工作,这其中不会丢失任何信息。当然,无状 态的 NFS不能支持类似于文件上锁这样的功能,因为这需要 系统提供客户机的相关信息。这也正是 NFSv4决定实现“有 状态操作”的一个原因。 26.3 NFS配置 这一节主要介绍 NFS服务器的配置和管理。和其他 Linux服务一样, NFS使用一个配置文件来完成配置工作。 对于管理员来说,这个配置文件几乎就是 NFS的全部,对此 将首先进行讨论。随后在 26.3.2节将介绍 NFS的启动脚本, 这一节的内容兼顾了各种不同的主流发行版。 26.3.1 理解配置文件 NFS服务器的配置文件是 /etc/exports,这在所有的发行 版上都是一样的。之所以选择这个名字,是因为客户机的挂 载对于 NFS服务器而言,是“导出( export)”了一个文件 系统。当 NFS服务器安装完成后,这个文件应该是“空白” ,或者包含了一些指导用户设置的注释。在 Ubuntu中,这 个文件看起来像这个样子: # /etc/exports: the access control list for filesystems which may be exported # to NFS clients. See exports(5). # # Example for NFSv2 and NFSv3: # /srv/homes hostname1(rw,sync) hostname2(ro,sync) # # Example for NFSv4: # /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt) # /srv/nfs4/homes gss/krb5i(rw,sync) 26.3.1 理解配置文件 选项 含义 ro 以只读方式导出 rw=list 以可读写方式导出(默认选项)。如果指定了 list,那么 rw只 对在 list中出现的主机有效,其他主机必须以只读方式安装 noaccess 阻止访问这个目录及其子目录 wdelay 为合并多次更新而延迟写入磁盘 no_wdelay 尽可能快地把数据写入磁盘 sync 在数据写入磁盘后响应客户机请求(同步模式) async 在数据写入磁盘前响应客户机请求(非同步模式) subtree_check 验证每个被请求的文件都在导出的目录树中 no_subtree_check 只验证涉及被导出的文件系统的文件请求 26.3.2 启动和停止服务 NFS需要两个不同的守护进程来处理客户机请求: mountd响应安装请求,而 nfsd则响应实际的文件服务。正 如 25.2.2节已经提到的, NFS运行在 Sun的 RPC协议上,因此 另一个守护进程也是必须的, portmap服务用于把 RPC服务 映射到 TCP或者 UDP端口。事实上,所有将 RPC协议作为下 层传输协议的应用程序都需要 portmap守护进程。 不要太过担心这些守护进程是否需要手工启动,安装 完 NFS服务器后,系统会自动把它们设置为随系统启动。 26.3.2 启动和停止服务 Linux发行版 启动脚本的路径 Debian和 Ubuntu /etc/init.d/nfs-kernel-server /etc/init.d/nfs-common RedHat和 Fedora /etc/rc.d/init.d/nfs SUSE /etc/init.d/nfsboot 26.4 使用 SUSE的 YaST2配置 NFS服务器 用户也可以选择使用图形化管理工具配置 NFS。图形化 工具对初学者总是充满吸引力,它可以提供更直观的配置选 项、更漂亮的界面,同时也提供了更繁琐的操作步骤。 SUSE的集成管理工具 YaST2在大多数时候能够帮助管理员 绕开对配置文件的修改。这里借 NFS服务器简要介绍一下使 用 YaST2配置系统服务的过程。 YaST2可以通过“ K菜单” |“计算机” |“管理员设置” 命令打开,为此需要提供管理员( root)口令。 YaST2的主 界面分为两部分,左侧显示了 9个不同的模块。 26.4 使用 SUSE的 YaST2配置 NFS服务器 26.5 安全性方面的几点建议 NFS在设计初期并没有着重考虑安全性的问题 当发 现 NFS的配置如此简单的时候就应该意识到这一点。的确, 在实际使用过程中, NFS协议带来很多安全隐患,这些安全 问题有时候会让人们怀疑随之带来的简便性是否值得。但不 管怎么样,有了问题就必须尝试去解决,系统管理员总不能 把自己的脑袋埋在沙堆里吧。 26.5.1 充满风险的 NFS NFS通过 exports文件导出文件系统,同时指定哪些主 机可以访问这些资源。看起来这样的做法没有什么问题:如 果管理员能够把 exports文件设置得足够“精细”的话,就 可以保证只有可信赖的主机拥有访问权限。然而遗憾的是, 这种想法只是一厢情愿。 NFS服务器是根据客户机的报告, 而不是它自己的判断来确定连接来自哪里。在 26.3.1节的例 子中,如果客户机撒谎说自己是 datastore,那么 NFS服务器 就相信它是 datastore,并授予它对 /srv/nfs_share的写权限。 26.5.2 使用防火墙 对于上面提到的第一种情况,最好的解决方法就是“ 交给 Linux去解决”。所有的 Linux发行版本都包含了一个包 过滤防火墙,通过设置防火墙只允许特定的主机连接 NFS端 口,可以有效地过滤来自其他主机的连接请求。防火墙从源 头上断绝了 NFS相信陌生人的机会,关于防火墙的设置,请 参考第 28章。 使用防火墙并不是说可以不必关心 exports文件了。相 反,仍然应该认真设置 exports中的可信赖主机列表,确保 文件系统只导出给内部有限的几台主机。在 exports中设置 太多“信任”的主机会让入侵出现之后的调查变得异常艰难 ,并且这种设置本身包含了巨大的安全隐患。 26.5.3 压制 root和匿名映射 允许 root用户在 NFS文件系统上随便运行是很危险的。 NFS通过 UID来判断用户的身份,如果 root用户登录进来, 那么这个 UID为 0的超级用户就拥有对其中所有文件和目录 的完整权限,管理员精心设置的权限控制就失效了。 在默认情况下, Linux的 NFS服务器截获所有来自 root 用户( UID=0)的请求,将其转换为好像是来自另一个普通 用户。这种行为被称作“压制 root( squashing root)”。 Linux定义了一个特殊的用户 nobody(与其对应的组是 nogroup)来完成这种转换。这个用户没有任何特殊权限, 在大部分情况下, nobody用户必须遵循文件权限中针对“ 其他人”的设置(参考 6.5节)。 26.5.4 使用特权端口 NFS客户机可以选择使用任意一个端口来连接 NFS服务 器,除非服务器在导出文件系统时指定了 secure选项。这个 选项要求客户机必须使用特权端口(端口号小于 1024)连接 NFS服务器。尽管在 PC机上,使用特权端口并不能显著提 高安全性。 与之相反的一个选项是“ insecure”,告诉服务器可以 接受来自非特权端口(端口号大于 /等于 1024)的连接。在 默认情况下, Linux客户机都会使用一个特权端口来连接 NFS服务器,因此一般不用考虑客户机的设置。 26.6 监视 NFS的状态: nfsstat nfsstat命令可以显示当前 NFS的各项统计信息。带“ - s”选项的 nfsstat命令显示 NFS服务器的相关信息: $ nfsstat -s Server rpc stats: calls badcalls badauth badclnt xdrcall 62 0 0 0 0 Server nfs v3: null getattr setattr lookup access readlink 2 3% 31 59% 3 5% 3 5% 7 13% 0 0% read write create mkdir symlink mknod 0 0% 0 0% 1 1% 0 0% 0 0% 0 0% remove rmdir rename link readdir readdirplus 0 0% 0 0% 0 0% 0 0% 0 0% 1 1% fsstat fsinfo pathconf commit 0 0% 3 5% 1 1% 0 0% 26.7 小结 所有的主流 Linux发行版都在安装源中包含了 NFS服务 器。 NFS使用 RPC作为传输协议。后者由 Sun公司开发,提 供了一种与系统无关的通讯方法。 NFSv3是一种无状态的服务。 NFS服务器通过 /etc/exports文件确定导出的文件系统。 可以(也应该)指定 NFS服务器向哪些主机导出目录。 不同的 Linux发行版常常使用不同的 NFS启动脚本。 NFS服务器根据客户机报告确定客户机的身份。 应该使用防火墙、压制 root、匿名映射等方法增强 NFS 服务器的安全性。 nfsstat命令显示 NFS的各项统计信息。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!