如何在 Homelab 设置中使用 NFS 在不同系统之间共享文件夹

当您的网络中有多个系统时,特别是如果您像在家庭实验室或通过您的组织对它们进行虚拟化时,拥有共享文件夹非常方便和有用,可以让您的工作更轻松、更快捷。

我,为 example,有一个我在不同虚拟机之间共享的文件夹。 这样,在一个系统中下载的任何内容都可以立即在另一个系统上使用。

我的文件夹位于集中式文件共享 NFS 虚拟化服务器上​​。 此文件夹共享到运行 torrenting 应用程序的容器,在该容器中,我将同时可用的文件下载到另一个容器,该容器也可以使用这些相同的文件进行处理。

基本上,我将我的文件集中在一个位置,稍后我会在不同的设备和实例之间共享以方便和功能。

使用常规 NFS 还是使用 NAS 文件共享应用程序?

就我而言,我只是运行 NFS 共享,因为我没有足够的资源来运行 NAS 应用程序,它也可以完成同样的工作。 这就是为什么我以最简单和最基本的方式进行设置的原因。

设置共享源

为此,我首先设置了一个简单的 Debian 服务器,并在其中设置了几个旨在在我的内部设备之间共享的文件夹。

根据您计划如何共享这些文件夹和您的特定环境(家庭、办公室、外部世界等),您必须考虑如何设置权限。

假设这仅适用于您的内部网络,并且您已经有适当的防火墙来保护安全,我们将开放此:

sudo chown nobody:nogroup /home/helder/SharingFolder
sudo chmod 777 /home/helder/SharingFolder

拥有这些文件夹后,我必须安装 nfs-kernel-server,这样我的服务器才能“了解”如何通过 NFS 共享内容。

根据您的发行版,您可以以一种或另一种方式进行设置,但是当我使用 Debian 时,我使用了:

sudo apt install nfs-kernel-server

在此之后,我必须首先提供对我要共享的文件夹的访问权限并将其设置为持久性。 这是通过导出文件完成的。

另外,我必须知道我想在我的网络中与谁共享这个,所以我知道我有 2 个不同的容器将使用这个文件夹,并且之前确定了它们的内部 IP:192.10.10.20 和 192.10.10.30:

sudo vi /etc/exports

如您所见,我正在为我的容器授予读写权限,因为这是我的情况所需要的。 如果它不应该对共享文件进行任何更改,您可能只是授予只读权限。

最后,在流程的这一部分,您必须使您的更改有效且有效。 要做到这一点:

sudo exportfs -a
sudo systemctl restart nfs-kernel-server

这将激活您的导出并开始共享到提供的 IP。

设置接收共享者

现在,是时候设置另一端,即这些共享文件夹的使用者了。

为此,您必须登录每个接收实例并执行相同的步骤。 对于本文,我将只展示其中一个 (192.10.10.20),但您必须在任何您想访问这些的地方进行操作。

同样,正如我在 Ubuntu 容器上所做的那样,命令在其他一些发行版上可能会有所不同,但本质上是相同的。

从概念上讲,需要做的是在接收器上设置一个安装点。 这些挂载点将作为您共享上的常规文件夹工作,但实际上它们将基本上链接到共享器上的物理文件夹(在我的情况下是 Ubuntu 容器)。

我们首先在接收机器上创建文件夹:

mkdir /home/helder/ReceivingShare

现在,我们需要确保在接收容器上安装了 NFS 功能,因此我们将这样做:

sudo apt install nfs-common

现在,假设您希望它成为容器上的永久共享,因此可以随时访问它。 因此,让我们通过 /etc/fstab 文件将其设置为容器中的持久共享:

sudo vi /etc/fstab

完成此操作后,我建议重新启动任何接收器容器或机器,以便测试和确认 fstab,您现在应该在网络上与您配置的设备共享一个公用文件夹。