利用 Linux 搭建并配置一个 NFS 服务器

打印 上一主题 下一主题

主题 1019|帖子 1019|积分 3057

体系环境:
  

  • Rocky Linux 9.3;实用于 Red Hat / Centos 等红帽系发行版;其他发行版必要查找对应的软件包。
  • NFS 软件包版本:nfs-utils-1:2.5.4-26.el9_4.x86_64
  NFS:Network File System , 网络文件体系。
1. 安装相干软件包

起首,确保体系已经更新并安装了 NFS 所需的软件包:
  1. sudo dnf update -y
  2. # 安装 nfs 软件包
  3. # 如果是较新的版本中,也会自动安装 rpcbind
  4. sudo dnf install nfs-utils -y
复制代码

【注】在 NFSv4 中,不再必要 rpcbind,因为它利用了更简单的通信机制,不依赖于 RPC 服务的映射。但是如果必要兼容 NFSv2 或 NFSv3,则必须安装并运行 rpcbind。因为这两个版本的 NFS 依赖 rpcbind 来协商和管理通信。
  1. sudo dnf install rpcbind -y
复制代码
2. 启动并启用相干服务

安装完成后,启动 NFS 服务并将其设置为开机自启:
  1. # 开机自启
  2. sudo systemctl enable nfs-server
  3. # 启动 nfs 服务
  4. sudo systemctl start nfs-server
复制代码
如果安装了 rcpbind 也必要设置举行启动以及设置为开机自启:
  1. # 开机自启
  2. sudo systemctl enable rpcbind
  3. # 启动服务
  4. sudo systemctl start rpcbind
复制代码
3. NFS 配置文件

3.1 /etc/exports 文件

   /etc/exports 是 NFS(Network File System)的配置文件,用于定义哪些目次要共享、共享给哪些客户端以及每个客户端的访问权限。
  /etc/exports 文件的语法:
  1. # 每一行都是一个配置
  2. <共享目录> <客户端列表>(<选项>)
  3. # 每行进行配置多个客户端列表
  4. <共享目录> <客户端列表>(<选项>) <客户端列表>(<选项>)
复制代码


  • 共享目次:要共享的本地目次的绝对路径。
  • 客户端列表:指定可以访问该目次的客户端,支持 IP 所在、主机名或通配符。
  • 选项列表:定义客户端的访问权限和其他行为,放在括号中。

简单示例:
  1. # 将 /home/shared 目录共享给 192.168.1.0/24 网络的所有主机,并且允许读写访问:
  2. /home/shared 192.168.1.0/24(rw,sync,no_subtree_check)
  3. # 将 /var/nfs 目录共享给多个特定的客户端,并指定不同的访问权限
  4. /var/nfs 192.168.1.10(ro,sync) 192.168.1.11(rw,sync,no_root_squash)
复制代码
3.2 共享目次

指定本地要共享的目次的绝对路径,不能利用相对路径。
共享目次的权限一般为 755 或 777,根据实际环境设置即可。
3.3 客户端列表

客户端可以用以下几种常用的方式表示:


  • 单个 IP 所在:如 192.168.1.10,只允许指定的客户端访问。
  • IP 所在范围(子网):如 192.168.1.0/24,允许特定网络范围内的所有客户端访问。
  • 主机名:如 client.example.com,允许指定主机访问(必要配置 DNS 或 /etc/hosts)。
  • 通配符:如 *,允许所有客户端访问(不保举用于生产环境)。
   客户端列表可以指定多个客户端,利用空格分隔。
  3.4 参数选项

在括号内指定的选项用来配置共享的权限和行为。
参数选项挺多的,但是可以举行一下归纳,常用的参数重要分为下面几类:
3.4.1 访问权限选项



  • 默认为: ro
  • rw:读写权限,允许客户端对共享目次举行读和写操作。
  • ro:只读权限,客户端只能读取共享目次中的文件,无法修改。
3.4.2 数据写入硬盘模式



  • 默认值:sync
  • sync:同步写入;确保数据在写入时立刻写入磁盘,保证数据一致性。
  • async:异步写入;数据会先暂存在内存中,然后再批量写入磁盘,可能提升性能但存在数据丢失风险。
3.4.3 root 用户权限



  • 默认值:root_squash
  • no_root_squash:允许 NFS 客户端以 root 身份访问共享目次。
  • root_squash:将客户端的 root 用户映射为 nobody (旧版本为:nfsnobody ),默认设置,增加安全性以防止权限提升。
3.4.4 子树查抄



  • 默认值:subtree_check
  • no_subtree_check:禁用子树查抄,当客户端访问共享目次中的文件(含目次)时,NFS 服务器不会查抄该文件所属的子目次是否在导出的目次树中,只会查抄顶级(并不是其路径,只有顶级)共享目次的权限。
  • subtree_check:启用子树查抄,当客户端哀求访问共享目次中的文件(含目次)时,NFS 服务器会查抄该文件是否属于实际被导出的子目次,并查抄其路径上的所有权限。
3.4.5 匿名用户



  • 默认值:no_all_squash
  • all_squash:将所有客户端用户(不论是 root 照旧普通用户)都映射为匿名用户 nobody (旧版本为:nfsnobody )。
  • no_all_squash:访问用户先与本机用户匹配,匹配失败后再映射为匿名用户 nobody (旧版本为:nfsnobody );
  • anonuid / anongid:分别指定匿名用户的 UID 和 GID,当利用 root_squash 或 all_squash 时利用。
  1. # 示例
  2. /home/shared 192.168.1.0/24(rw,all_squash,anonuid=1001,anongid=1001)
复制代码
3.4.6 安全性(特权端口)



  • 默认值:secure
  • secure:仅允许客户端通过特权端口(0-1023)连接。
    默认环境下,只有当客户端利用特权端口时,NFS 服务器才允许访问。特权端口只能由 root 用户绑定,因此这个选项提供了额外的安全性。
  • insecure:允许客户端通过非特权端口(1024 以上)连接。
    启用该选项会使 NFS 服务器接受来自任何端口的连接,如许可以允许不利用特权端口的客户端(比方某些非标准 NFS 实现或特定的客户端设备)访问共享目次。
  1. # 配置示例
  2. /home/shared 192.168.1.0/24(rw,sync,insecure)
复制代码
3.4.7 网络传输



  • 默认值:wdelay
  • wdelay:耽误写入;当 NFS 服务器在接收到多个写入哀求时,会稍微耽误处置处罚,以便归并多个哀求为一次写操作,从而减少磁盘 I/O 操作次数。
  • no_wdelay:禁用耽误写入;当 NFS 服务器立刻处置处罚每个写入哀求,而不等待更多的写操作。
3.4.x 更多 (More)

   X 表示未知,哈哈哈!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

汕尾海湾

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表