Linux运维之网络文件系统NFS介绍与部署(CentOS 7.2版本)

来源:互联网 发布:樱井知香番号合集 编辑:程序博客网 时间:2024/06/05 18:06

NFS概述

NFS(Network File System)即网络文件系统,是一款通过网络方式共享文件系统的通用共享解决方案。NFS目前有三个版本:NFSv2、NFSv3、NFSv4。CentOS 7.2默认使用的是版本4提供网络文件系统共享服务,NFS监听在TCP 2049端口。

当两台计算机需要通过网络建立连接时,双方主机需要通过IP、端口号等信息进行通信。当有100台客户端访问服务器时,服务器就需要记住这些计算机的IP、端口号这些信息,而这些信息是需要程序来管理的。在Linux中,这样的信息可以由某个特定服务自己来管理,也可以委托给RPC来帮助管理。RPC是远程过程中调用协议,RPC协议为远程通信双方所需的基本信息,这样NFS服务就专注于如何共享数据,至于通信连接以及连接的基本信息,则全权委托为RPC管理。CentOS 7系统由rpcbind服务来提供RPC协议的支持(在老版本上是portmap来提供RPC协议的),目前NFSv4虽然不需要于rpcbind直接交互,但是rpc.mountd依然是NFSv4所必需的服务。所以在CentOS 7 平台上实现NFS共享,需要同时启动NFS和rpcbind服务。

所需要的软件是:nfs-utils,rpcbind

NFS服务器配置

NFS服务器读取/etc/exports 配置文件,该文件可以设定哪些客户端可以访问NFS共享文件系统。

该文件的书写原则如下:

  • 空白行将被忽略
  • 以#符号开头的内容将为注释
  • 配置文件中可以通过符号转义换行
  • 每个共享的文件系统需要独立一行条目
  • 客户端主机列表需要使用空格隔开
  • 配置文件中支持通配符

一条完整的共享条目语法结构如下,其中,客户端主机可以是一个网段、单台主机或主机名

共享路径 客户端主机(选项)
共享路径 客户端主机1(选项) 客户端主机2(选项) …

不添加选项时,会使用默认配置,默认配置是:ro、sync、wdelay、no_root_squash

具体的选项配置如下:

  • ro:共享目录只读;
  • rw:共享目录可读可写;
  • all_squash:所有访问用户都映射为匿名用户或用户组;
  • no_all_squash:访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组;
  • root_squash:将来访的root用户映射为匿名用户或用户组;
  • no_root_squash:来访的root用户保持root帐号权限;
  • anonuid=:指定匿名访问用户的本地用户UID,默认为nfsnobody(65534);
  • anongid=:指定匿名访问用户的本地用户组GID,默认为nfsnobody(65534);
  • secure:限制客户端只能从小于1024的tcp/ip端口连接服务器;
  • insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
  • sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
  • async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
  • wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率;
  • no_wdelay:若有写操作则立即执行,应与sync配合使用;
  • subtree_check :若输出目录是一个子目录,则nfs服务器将检查其父目录的权限;
  • no_subtree_check :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

NFS部署实例

服务器配置操作步骤为:安装软件、添加共享账户、创建共享目录、修改权限、设置NFS共享配置文件、启动共享服务。

服务器配置如下:

以上就是服务器端的配置,下面是客户端的访问和使用

NFS权限分析,由于共享数据实际是存储在NFS服务器上的,所以所有的操作实际是以服务器本机账户进行的,只是服务器会根据不同的情况将远程客户端的访问账户转换为不同的服务器本机账户。

  • 客户端使用普通用户连接服务器时,默认情况下,如果客户端使用的账户的UID在服务器上也有相同账号的UID,则服务器将使用服务器本机上该UID账户进行读写操作,如果客户端访问服务器所使用的UID不在服务器上,该服务器自动将账号转换为nobody账号。此外,如果服务器端对共享属性配置了all_squash选项,则服务器会根据anonuid选项的值,将所有的账户自动转换为匿名账号。
  • 客户端使用root连接服务器时,默认会将root转换为服务器上的nfsnobody账号,如果服务器端对共享属性配置了no_root_squash选项,则服务器会将远程root账户转换为本机root账户进行读写操作。
阅读全文
0 0
原创粉丝点击