14. 安装和配置NFS服务

关于NFS

NFS(Network File System)是一种分布式文件系统协议,它允许网络上的计算机之间共享文件系统。以下是NFS服务的一些核心介绍:

  1. 功能与工作原理

    • NFS允许不同的机器和操作系统通过网络共享文件。用户和程序可以像访问本地存储一样访问远程服务器上的文件。
    • NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,使得远程主机的目录就像本地的一个磁盘分区一样。
    • NFS的挂载原理涉及到客户端将服务器上的共享目录挂载到自己文件系统的某个挂载点,这个挂载点可以自定义。
    • NFS服务的实现依赖于RPC(Remote Procedure Call,远程过程调用)机制,以完成远程到本地的映射过程。RPC最主要的功能就是指定每个NFS功能所对应的端口,并返回给客户端,使客户端可以连接到正确的端口上。
  2. 优点

    • 节省本地存储空间,将常用的数据存放在一台服务器可以通过网络访问该数据。
    • 简单容易上手,方便部署非常快速,维护十分简单。
  3. 应用范围

    • NFS在企业或数据中心环境中,多台服务器需要访问同一组文件时非常有用,如多个Web服务器共享用户上传的图片、文档等资源。
    • 开发和测试环境,开发团队间共享代码库或者构建工具链。
    • 虚拟化与云计算,虚拟机通过宿主机挂载的NFS共享来存储和读取其操作系统镜像、应用程序数据及用户数据。
    • 集群计算,高性能计算(HPC)集群中,各个节点可以通过NFS共享大型数据集。
    • 备份与恢复,NFS服务器可被用作集中式备份存储。
  4. 安全性

    • NFS的安全性较低,适合在信任的局域网环境中使用。

试验环境

  • A机器,IP: 192.168.x.111,作为服务端
  • B机器,IP: 192.168.x.112,作为客户端

另外需要正确配置YUM。

A机器配置(服务端)

安装NFS

yum install nfs-utils rpcbind

rpcbind 是一个在Linux系统中用于支持NFS(Network File System)服务的重要组件。

创建共享目录

在NFS服务器上建立用于NFS文件共享的目录,并设置足够的权限确保其他人也有写入权限。

mkdir /nfsfile
chmod -Rf 777 /nfsfile
echo "Welcome to NFS" > /nfsfile/readme

配置NFS

NFS服务程序的配置文件为/etc/exports,设定哪些客户端可以访问哪些NFS共享文件系统,==默认情况下里面没有任何内容==,该文件的书写原则如下。

一条完整的共享条目语法结构如下:

  1. 共享目录的路径
  2. 允许访问的NFS客户端
  3. 共享权限参数

例如,

/nfsfile 192.168.x.0/24(rw,sync,all_squash,root_squash)

以上是把/nfsfile目录共享给192.168.x.0/24网段内的所有主机,让这些主机都拥有读写权限,在将数据写入到NFS服务器的硬盘中后才会结束操作,最大限度保证数据不丢失,以及把来访客户端root管理员映射为本地的匿名用户等。

常用参数解释如下:

参数 作用
ro 只读
rw 读写
wdelay 延迟写操作
root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
sync 同时将数据写入到内存与硬盘中,保证不丢失数据
async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据

收尾

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

重启NFS

systemctl restart rpcbind
systemctl restart nfs

设置NFS开机自启动

systemctl enable rpcbind
systemctl enable nfs

B机器配置(客户端)

服务安装

yum install nfs-utils rpcbind

启动服务等

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

重启NFS

systemctl restart rpcbind
systemctl restart nfs

设置NFS开机自启动

systemctl enable rpcbind
systemctl enable nfs

创建共享目录

在NFS客户端创建一个挂载目录

mkdir /nfsfile
chmod -Rf 777 /nfsfile

查看NFS服务器共享情况

使用showmount命令(以及必要的参数,见下表)查询NFS服务器的远程共享信息,其输出格式为“共享的目录名称 允许使用客户端地址”。

showmount -e 192.168.X.111
参数 作用
-e 显示NFS服务器的共享列表
-a 显示本机挂载的文件资源的情况NFS资源的情况
-v 显示版本号

能看到结果则表示A和B服务器NFS配置正确

挂载并测试使用

使用mount进行挂载,使用-t 参数指定类型为nfs

mount -t nfs 192.168.x.111:/nfsfile /nfsfile

到目录下查看内容

cd /nfsfile
ls
cat readme

能看到A机器共享的readme文件

同样的,B机器创建文件,A机器这边也能进行同步

touch newfile

去A机器下看 是否能看到相应newfile