当前位置:首页 > 虚拟主机 > 正文

如何在CentOS上安装配置NFS,实现跨主机文件共享?

网络文件系统(NFS)是一种经典的分布式文件系统协议,它允许网络中的不同计算机之间共享文件和目录,通过NFS,用户可以像访问本地存储一样,透明地访问远程服务器上的文件,这在企业环境中非常实用,例如用于集中存储用户主目录、共享应用程序数据或搭建可扩展的Web服务器集群,本文将详细介绍如何在CentOS系统上安装和配置NFS服务,涵盖服务器端和客户端的完整设置流程。

在开始之前,请确保准备两台或以上的CentOS主机,并配置好静态IP地址,本文将使用以下环境作为示例:

  • NFS服务器:IP地址为 168.1.10
  • NFS客户端:IP地址为 168.1.20

    所有操作均需要root用户或具有sudo权限的用户执行。

NFS服务器端安装与配置

我们在NFS服务器(192.168.1.10)上进行安装和配置。

安装NFS软件包

CentOS官方源提供了NFS所需的核心软件包,使用yum命令可以轻松安装。

sudo yum update -y sudo yum install nfs-utils -y

nfs-utils包包含了NFS服务端和客户端所需的所有核心工具,如rpcbind、nfs-server以及showmount等。

创建并配置共享目录

创建一个用于共享的目录,并设置适当的权限,这里我们在根目录下创建一个/data/nfs_share目录。

sudo mkdir -p /data/nfs_share

为了安全和权限管理的方便,我们通常会将该目录的所有者设置为nfsnobody,这是一个NFS服务专用的非特权用户。

sudo chown -R nfsnobody:nfsnobody /data/nfs_share sudo chmod -R 755 /data/nfs_share

配置exports文件

NFS的核心配置文件是/etc/exports,在这个文件中,我们定义了要共享哪个目录、允许哪些客户端访问以及访问的权限。

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

如何在CentOS上安装配置NFS,实现跨主机文件共享? 第1张

在文件末尾添加以下行,将/data/nfs_share目录共享给指定的客户端。

/data/nfs_share 192.168.1.20(rw,sync,no_subtree_check,no_root_squash)

这行配置的含义如下:

  • /data/nfs_share:要共享的目录路径。
  • 168.1.20:允许访问此共享的客户端IP地址,也可以使用子网(如168.1.0/24)来允许一个网段的主机访问。
  • (rw,sync,no_subtree_check,no_root_squash):指定客户端的访问权限,各选项说明见下表。
选项 描述
rw 允许客户端读写操作。
ro 只读,是默认选项。
sync 将数据同步写入内存和硬盘,保证数据一致性,但速度稍慢。
async 异步写入,性能更好,但可能在服务器崩溃时丢失数据。
no_subtree_check 禁用子树检查,可以提高性能和稳定性。
no_root_squash 允许客户端的root用户在共享目录上拥有root权限,出于安全考虑,请谨慎使用。

启动并启用服务

配置完成后,需要启动rpcbind和nfs-server服务,并设置它们为开机自启。

sudo systemctl start rpcbind sudo systemctl start nfs-server sudo systemctl enable rpcbind sudo systemctl enable nfs-server

rpcbind是NFS服务的基础,它负责管理RPC(远程过程调用)程序的端口号映射。

配置防火墙

如果服务器的防火墙(firewalld)处于运行状态,必须开放NFS相关的服务端口。

如何在CentOS上安装配置NFS,实现跨主机文件共享? 第2张

NFS客户端安装与挂载

我们切换到NFS客户端(192.168.1.20)进行配置,以挂载服务器共享的目录。

安装客户端软件

客户端同样需要安装nfs-utils包以获得挂载和管理NFS共享的工具。

sudo yum install nfs-utils -y

创建挂载点

在客户端上创建一个目录,作为NFS共享的挂载点。

sudo mkdir -p /mnt/nfs_client

挂载NFS共享

使用mount命令将服务器上的共享目录挂载到本地创建的挂载点。

sudo mount -t nfs 192.168.1.10:/data/nfs_share /mnt/nfs_client

命令中的-t nfs指定了文件系统类型为NFS。

验证挂载

挂载成功后,可以通过多种方式进行验证。

df -h | grep nfs

或者

mount | grep nfs

如果能看到挂载信息,说明挂载成功,你可以在/mnt/nfs_client目录下创建、读取和删除文件,这些操作会实时同步到服务器的/data/nfs_share目录中。

实现开机自动挂载

为了确保客户端重启后NFS共享能自动挂载,需要将其添加到/etc/fstab文件中。

sudo vi /etc/fstab

在文件末尾添加以下内容:

168.1.10:/data/nfs_share /mnt/nfs_client nfs defaults,_netdev 0 0

这里的_netdev选项非常重要,它告诉系统这是一个网络设备,需要等待网络服务启动完成后再进行挂载,避免了因网络未就绪而导致的挂载失败。


相关问答FAQs

问题1:客户端无法写入NFS共享目录,提示权限不足,怎么办?

解答: 这是一个常见的权限问题,请按以下步骤排查:

  1. 检查服务器端exports配置:确认/etc/exports文件中为该客户端配置了rw(读写)权限,而不是ro(只读),修改后记得使用sudo exportfs -r重新加载配置。
  2. 检查服务器端目录权限:在服务器上执行ls -ld /data/nfs_share,确保目录本身对客户端访问的用户有写权限,如果客户端以root用户访问,确保服务器配置了no_root_squash。
  3. 检查SELinux状态:CentOS的SELinux可能会阻止NFS写入,可以临时关闭SELinux(setenforce 0)测试,如果问题解决,则需要正确设置SELinux布尔值,执行sudo setsebool -P nfs_export_all_rw on可以永久允许NFS读写。

问题2:如何实现NFS共享的持久化挂载,确保服务器重启后依然有效?

解答: 仅仅使用mount命令挂载是临时的,重启后会失效,要实现持久化挂载,必须编辑客户端的/etc/fstab文件,在文件中添加一行,格式为:<服务器IP>:<共享目录> <本地挂载点> nfs defaults,_netdev 0 0。168.1.10:/data/nfs_share /mnt/nfs_client nfs defaults,_netdev 0 0,保存文件后,系统在每次启动时会自动读取此文件并完成挂载。_netdev参数是关键,它确保了在网络连接建立后才执行挂载操作,避免了启动失败的风险。

如何在CentOS上安装配置NFS,实现跨主机文件共享? 第3张

0