搬瓦工VPS
拥有10+机房且可自主切换机房

如何在 Ubuntu 20.04 系统中安装 NFS 服务器(NFS配置策略)

NFS 文件管理系统是一种分布式文件系统协议,允许我们通过网络共享文件目录。 我们在使用 NFS后可以在系统上挂载远程目录,并像处理本地文件一样处理远程机器上的文件。比如,我们可以在本地系统盘中可以看到服务器的目录,直接将文件丢到目录中,实际上是丢到服务器端的。默认情况下,NFS 协议未加密且不提供用户身份验证。 对服务器的访问受到客户端 IP 地址或主机名的限制。

如何在 Ubuntu 20.04 系统中安装 NFS 服务器(NFS配置策略)

在这篇文章中将会记录如何在 Ubuntu 20.04 上设置 NFS 服务器。 以及,我们将记录如何在客户端计算机上挂载 NFS 文件系统。

第一、准备工作

我们将使用两台机器,一台运行 Ubuntu 20.04,它将充当 NFS 服务器,另一台运行我们将安装共享的任何其他 Linux 发行版。 服务器和客户端应该能够通过专用网络相互通信。 我们可以使用公共 IP 地址并将服务器防火墙配置为仅允许来自受信任来源的端口 2049 上的流量。

本示例中的机器具有以下 IP:

NFS 服务器 IP:192.168.33.10
NFS 客户端 IP:来自 192.168.33.0/24

第二、设置 NFS 服务器 

第一步是设置 NFS 服务器。 我们将安装必要的包,创建和导出 NFS 目录,并配置防火墙。

1、安装 NFS 服务器

NFS 服务器包提供运行 NFS 内核服务器所需的用户空间支持。 要安装软件包,请运行:

sudo apt update
sudo apt install nfs-kernel-server

安装完成后,NFS 服务将自动启动。

在 Ubuntu 20.04 上,NFS 版本 2 被禁用。 版本 3 和 4 已启用。 我们可以通过运行以下 cat 命令来验证:

sudo cat /proc/fs/nfsd/versions

我们反馈到数据是:

-2 +3 +4 +4.1 +4.2

NFS v2 现在已经很老了,没有理由启用它。NFS 服务器配置在 /etc/default/nfs-kernel-server 和 /etc/default/nfs-common 文件中定义。 对于大多数情况,默认设置已足够。

NFS v4 服务器使用全局根目录,导出的目录是相对于该目录的。我们可以使用绑定安装将共享安装点链接到要导出的目录。

在本例中,我们将 /srv/nfs4 目录设置为 NFS 根目录。 为了更好地解释如何配置 NFS 挂载,我们将共享两个具有不同配置设置的目录(/var/www 和 /opt/backups)。 /var/www/ 归用户 www-data 所有,/opt/backups 归 root 所有。

首先创建根目录和共享挂载点:

sudo mkdir -p /srv/nfs4/backups
sudo mkdir -p /srv/nfs4/www

将挂载目录绑定到共享挂载点:

sudo mount --bind /opt/backups /srv/nfs4/backups
sudo mount --bind /var/www /srv/nfs4/www

要使绑定挂载在重新启动后永久安装,请打开 /etc/fstab 文件:

sudo nano /etc/fstab

添加文件:

/opt/backups /srv/nfs4/backups  none   bind   0   0
/var/www     /srv/nfs4/www      none   bind   0   0

2、导出文件系统

下一步是将要导出的文件系统和允许访问这些共享的客户端添加到 /etc/exports 文件。导出的文件系统的每一行都具有以下形式:

export host(options)

其中 export 是导出的目录,host 是可以访问导出的主机名或 IP 地址/范围,options 是主机选项。

打开 /etc/exports 文件并添加以下行:

/srv/nfs4         192.168.33.0/24(rw,sync,no_subtree_check,crossmnt,fsid=0)
/srv/nfs4/backups 192.168.33.0/24(ro,sync,no_subtree_check) 192.168.33.3(rw,sync,no_subtree_check)
/srv/nfs4/www     192.168.33.20(rw,sync,no_subtree_check)

第一行包含 fsid=0 选项,它定义 NFS 根目录 (/srv/nfs4)。 仅允许来自 192.168.33.0/24 子网的客户端访问此 NFS 卷。 需要 crossmnt 选项来共享作为导出目录子目录的目录。

第二行显示了如何为一个文件系统指定多个导出规则。 允许对整个 192.168.33.0/24 范围进行读访问,并且仅对 192.168.33.3 IP 地址进行读和写访问。 同步选项告诉 NFS 在回复之前将更改写入磁盘。

最后一行有关所有可用选项的更多信息,请在您的终端中键入 man export。

保存文件并导出共享:

sudo exportfs -ar

每次修改 /etc/exports 文件时都需要运行上面的命令。 如果有任何错误或警告,它们将显示在终端上。

要查看当前活动的导出及其状态,请使用:

sudo exportfs -v

输出将包括所有股票及其选项。 如您所见,还有一些我们尚未在 /etc/exports 文件中定义的选项。 这些是默认选项,如果您想更改它们,则需要明确设置这些选项。

反馈数据:

/srv/nfs4/backups
		192.168.33.3(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4/www 	192.168.33.20(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4     	192.168.33.0/24(rw,wdelay,crossmnt,root_squash,no_subtree_check,fsid=0,sec=sys,rw,secure,root_squash,no_all_squash)
/srv/nfs4/backups
		192.168.33.0/24(ro,wdelay,root_squash,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)

在 Ubuntu 上,默认情况下启用 root_squash。 这是有关 NFS 安全性的最重要选项之一。 它通过将 root UID 和 GID 映射到 nobody/nogroup UID/GID 来防止从客户端连接的 root 用户在挂载的共享上拥有 root 权限。

为了让客户端机器上的用户能够访问,NFS 期望客户端的用户和组 ID 与服务器上的用户和组 ID 相匹配。 另一种选择是使用 NFSv4 idmapping 功能,将用户和组 ID 转换为名称,反之亦然。

就是这样。 此时,我们已经在 Ubuntu 服务器上设置了 NFS 服务器。 现在可以转到下一步并配置客户端并连接到 NFS 服务器。

3、防火墙配置

如果您在受防火墙保护的远程 Ubuntu 服务器上安装 Jenkins,则需要在 NFS 端口上启用流量:

sudo ufw allow from 192.168.33.0/24 to any port nfs

验证:

sudo ufw status

第三、设置NFS客户端

现在 NFS 服务器已设置并导出共享,下一步是配置客户端并挂载远程文件系统。我们将专注于 Linux 系统,但也可以在 macOS 和 Windows 机器上挂载 NFS 共享。

1、安装客户端

在客户端机器上,我们只需要安装挂载远程 NFS 文件系统所需的工具。

A – 在 Debian 和 Ubuntu 上安装 NFS 客户端

包含用于在基于 Debian 的发行版上挂载 NFS 文件系统的程序的软件包的名称是 nfs-common。 要安装它,请运行:

sudo apt update
sudo apt install nfs-common

B – 在 CentOS 和 Fedora 上安装 NFS 客户端

在 Red Hat 及其衍生产品上,安装 nfs-utils 包:

sudo yum install nfs-utils

2、挂载文件系统

我们将在 IP 为 192.168.33.20 的客户端机器上工作,它具有对 /srv/nfs4/www 文件系统的读写访问权限以及对 /srv/nfs4/backups 文件系统的只读访问权限。

为挂载点创建两个新目录:

sudo mkdir -p /backups
sudo mkdir -p /srv/www

我们可以在所需的任何位置创建目录。使用 mount 命令挂载导出的文件系统:

sudo mount -t nfs -o vers=4 192.168.33.10:/backups /backups
sudo mount -t nfs -o vers=4 192.168.33.10:/www /srv/www

其中 192.168.33.10 是 NFS 服务器的 IP。 我们也可以使用主机名而不是 IP 地址,但它需要由客户端计算机解析。 这通常通过将主机名映射到 /etc/hosts 文件中的 IP 来完成。挂载 NFSv4 文件系统时,省略 NFS 根目录。 使用 /backups,而不是 /srv/nfs4/backups。

使用 mount 或 df 命令验证远程文件系统是否已成功挂载:

df -h

我们可以看到

Filesystem              Size  Used Avail Use% Mounted on
udev                    951M     0  951M   0% /dev
tmpfs                   199M  676K  199M   1% /run
/dev/sda3               124G  2.8G  115G   3% /
tmpfs                   994M     0  994M   0% /dev/shm
tmpfs                   5.0M     0  5.0M   0% /run/lock
tmpfs                   994M     0  994M   0% /sys/fs/cgroup
/dev/sda1               456M  197M  226M  47% /boot
tmpfs                   199M     0  199M   0% /run/user/1000
192.168.33.10:/backups  124G  2.8G  115G   3% /backups
192.168.33.10:/www      124G  2.8G  115G   3% /srv/www

要在重新启动时永久挂载,请打开 /etc/fstab 文件并添加以下行:

192.168.33.10:/backups /backups   nfs   defaults,timeo=900,retrans=5,_netdev	0 0
192.168.33.10:/www /srv/www       nfs   defaults,timeo=900,retrans=5,_netdev	0 0

这样可以确保开机启动。

这样基本完成。我们已经演示到如何设置 NFS 服务器以及如何在客户端机器上安装远程文件系统。作为 NFS 的替代方案,我们也可以使用 SSHFS 通过 SSH 连接挂载远程目录。

赞(0)
未经允许不得转载:搬瓦工中文网 » 如何在 Ubuntu 20.04 系统中安装 NFS 服务器(NFS配置策略)