如何在CentOS上创建NFS共享目录?

在现代化的IT基础设施中,服务器之间的文件共享是一项基础且至关重要的需求,网络文件系统(NFS)作为一种经典、高效且稳定的分布式文件系统协议,被广泛应用于Linux/Unix环境,尤其是在CentOS这样的企业级操作系统中,通过NFS,您可以轻松地将一台服务器(NFS服务器)上的指定目录共享给网络中的一台或多台客户端(NFS客户端),客户端可以像访问本地磁盘一样读写这些远程文件,本文将详细介绍如何在CentOS系统上配置NFS共享目录,涵盖服务器端与客户端的完整设置流程、安全配置以及最佳实践。

如何在CentOS上创建NFS共享目录?

NFS服务器端配置

NFS服务器是提供共享资源的主机,其核心任务是安装必要软件、创建共享目录、配置访问规则并启动相关服务。

1 安装NFS软件包

在CentOS 7或8系统上,NFS的功能主要由nfs-utils软件包提供,确保系统已更新,然后使用dnf(CentOS 8)或yum(CentOS 7)进行安装。

# 对于CentOS 8
sudo dnf install nfs-utils -y
# 对于CentOS 7
sudo yum install nfs-utils -y

2 创建并设置共享目录

创建一个您希望共享的目录,我们在根目录下创建一个名为/shared_data的目录。

sudo mkdir /shared_data

为了确保客户端能够正常读写,需要设置合适的权限,一个简单的做法是将其所有权授予一个特定的用户和组,或者放宽权限(请注意生产环境中的安全风险)。

# 示例:授予nfsnobody用户和组所有权,这是NFS的默认匿名用户
sudo chown -R nfsnobody:nfsnobody /shared_data
# 或者,授予读写权限给所有用户(不推荐用于生产环境)
sudo chmod 777 /shared_data

3 配置exports文件

NFS服务器的核心配置文件是/etc/exports,该文件定义了哪些目录可以被共享,以及哪些客户端可以访问,以及它们的访问权限。

使用文本编辑器打开此文件:

sudo vi /etc/exports

在文件中添加一行配置,其基本格式为:共享目录路径 客户端IP(选项1,选项2,...)

要允许IP地址为168.1.101的客户端以读写权限访问/shared_data目录,可以添加以下内容:

/shared_data 192.168.1.101(rw,sync,no_subtree_check,no_root_squash)

如果希望允许整个网段(如168.1.0/24)的所有客户端访问,可以使用通配符或网段表示法:

/shared_data 192.168.1.0/24(rw,sync,no_subtree_check)

常用选项说明:

选项 描述
rw 允许读写操作。
ro 只读模式。
sync 数据同步写入磁盘和内存,保证数据一致性,但性能稍低。
async 数据先写入内存,再写入磁盘,性能高,但存在掉电数据丢失风险。
no_root_squash 客户端root用户在访问共享目录时,拥有服务端的root权限(安全风险高,慎用)。
root_squash (默认)客户端root用户会被映射为一个匿名用户(如nfsnobody)。
no_subtree_check 不检查父目录的权限,可以提高性能,特别是在共享一个大的子目录时。

4 启动并启用NFS服务

配置完成后,需要启动NFS相关的服务并设置它们开机自启,主要涉及nfs-serverrpcbind

如何在CentOS上创建NFS共享目录?

# 启动服务
sudo systemctl start rpcbind
sudo systemctl start nfs-server
# 设置开机自启
sudo systemctl enable rpcbind
sudo systemctl enable nfs-server

应用/etc/exports文件中的更改:

sudo exportfs -a

请确保防火墙允许NFS服务,CentOS默认使用firewalld

sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --reload

NFS客户端配置

客户端需要挂载服务器提供的共享目录才能使用。

1 安装客户端软件包

与服务器端类似,客户端也需要安装nfs-utils软件包以获得mount.nfs等工具。

# 对于CentOS 8
sudo dnf install nfs-utils -y
# 对于CentOS 7
sudo yum install nfs-utils -y

2 创建挂载点

在客户端上创建一个用于挂载远程NFS共享的本地目录。

sudo mkdir /mnt/nfs_share

3 挂载NFS共享

使用mount命令手动挂载,命令格式为:mount -t nfs 服务器IP:共享目录路径 本地挂载点

sudo mount -t nfs 192.168.1.100:/shared_data /mnt/nfs_share

(请将168.1.100替换为您的NFS服务器实际IP地址)

挂载成功后,您可以使用df -h命令查看,或者直接在/mnt/nfs_share目录下进行文件操作。

4 实现开机自动挂载

手动挂载在重启后会失效,为了实现持久化挂载,需要将挂载信息写入/etc/fstab文件。

sudo vi /etc/fstab

在文件末尾添加一行:

168.1.100:/shared_data /mnt/nfs_share nfs defaults 0 0

保存后,可以执行sudo mount -a命令来测试/etc/fstab中的配置是否正确,若无错误则表示配置成功,下次系统重启时,该共享目录将自动挂载。

如何在CentOS上创建NFS共享目录?

安全与最佳实践

  • 权限管理:务必谨慎使用no_root_squash,在大多数情况下,默认的root_squash是更安全的选择,确保服务器和客户端上对应用户的UID(用户ID)和GID(组ID)一致,否则可能会出现权限错乱的问题。
  • 网络隔离:NFS协议本身不包含强大的加密机制,建议在受信任的内部网络(如私有局域网)中使用,避免直接暴露在公网上。
  • 防火墙:严格配置防火墙规则,仅允许授权的客户端IP地址访问NFS服务端口。

相关问答FAQs

问题1:为什么我挂载NFS目录后,在客户端查看文件所有者都显示为nobodynfsnobody

解答: 这是NFS的一个核心安全特性,称为“Root Squashing”,默认情况下,当客户端的root用户访问NFS共享时,服务器会将其映射为一个权限受限的匿名用户(通常是nfsnobodynobody),以防止客户端拥有服务器的root权限,同样,如果客户端和服务器上某个普通用户的UID/GID不匹配,在客户端看到的文件所有者也会显示为这个匿名用户。

解决方法:

  1. 推荐方法:确保客户端和服务器上需要访问共享文件的用户具有相同的UID和GID,可以使用useradd -u <UID> <username>来创建指定UID的用户。
  2. 不推荐方法:在服务器的/etc/exports文件中为该客户端添加no_root_squash选项,这会赋予客户端root用户在服务器上的root权限,存在严重安全风险,仅在完全受信任的环境和特定需求下使用。

问题2:NFS和Samba有什么区别,在什么场景下应该选择哪个?

解答: NFS和Samba都是用于网络文件共享的协议,但它们的设计理念和应用场景有所不同。

  • NFS (Network File System)

    • 协议:基于RPC(远程过程调用),是Linux/Unix世界的事实标准。
    • 性能:在纯Linux/Unix环境中,通常性能更高,延迟更低。
    • 兼容性:天生与Linux/Unix系统集成度高,权限控制基于UID/GID,与Windows系统的兼容性需要额外配置支持,且效果不佳。
    • 适用场景:Linux服务器集群之间共享数据、Web服务器后端共享静态资源、HPC(高性能计算)环境。
  • Samba (SMB/CIFS协议)

    • 协议:实现了SMB(Server Message Block)和CIFS(Common Internet File System)协议。
    • 性能:在异构环境中表现良好,但在纯Linux环境下性能可能略逊于NFS。
    • 兼容性:与Windows系统无缝集成,是Windows网络共享的标准协议,可以轻松实现Linux服务器与Windows客户端之间的文件共享,并处理Windows的ACL(访问控制列表)权限。
    • 适用场景**:**需要为Windows用户提供文件服务的Linux文件服务器、混合操作系统(Windows/Linux/Mac)的办公环境、域环境下的文件共享。

选择建议:如果您的环境完全是Linux/Unix系统,追求极致性能和简洁配置,选择NFS,如果您的环境中包含Windows客户端,或者需要与Active Directory域控集成进行复杂的权限管理,选择Samba

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-07 16:49
下一篇 2025-10-07 16:55

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信