如何在 Ubuntu 16.04 上设置 NFS 挂载

介绍

NFS,或网络文件系统,是一个分布式文件系统协议,允许您在您的服务器上安装远程目录. 这允许您在不同的位置管理存储空间,并从多个客户端写入该空间。

在本指南中,我们将涵盖如何配置NFS安装。

前提条件

我们将在本教程中使用两个服务器:一个将与另一个共享其文件系统的一部分。

  • 两台Ubuntu 16.04服务器,每个都有一个非根用户,具有sudo特权,并启用了私人网络。

](https://andsky.com/tech/tutorials/how-to-set-up-and-use-digitalocean-private-networking)

在整个教程中,我们将参考共享目录的服务器作为 host,并将这些目录设置为 client的服务器。

  • 主机: 203.0.113.0
  • 客户端: 203.0.113.256

您应该用自己的主机和客户端 IP 地址代替这些值。

步骤 1 – 下载和安装组件

我们将开始在每个服务器上安装必要的组件。

关于客人

在主机服务器上,我们将安装nfs-kernel-server包,这将使我们能够共享我们的目录. 由于这是我们在本会中使用apt进行的第一个操作,我们将在安装之前更新本地包索引:

1sudo apt-get update
2sudo apt-get install nfs-kernel-server

安装这些包后,切换到客户端服务器。

关于客户

在客户端服务器上,我们需要安装一个名为nfs-common的包,它提供NFS功能,而不包括不必要的服务器组件。

1sudo apt-get update
2sudo apt-get install nfs-common

现在,这两个服务器都有必要的包,我们可以开始配置它们。

步骤 2 — 在主机上创建共享目录

我们将共享两个单独的目录,具有不同的配置设置,以说明NFS安装可以与超级用户访问有关的两个关键方式。

但是,NFS 安装的目录并非安装系统的一部分,因此默认情况下,NFS 服务器拒绝执行需要超级用户权限的操作. 此默认限制意味着客户端上的超级用户不能将文件编写为 root、重新分配所有权或在 NFS 安装上执行任何其他超级用户任务。

有时,然而,在客户端系统上有值得信赖的用户需要能够在安装的文件系统上完成这些事情,但他们不需要在主机上获得超级用户访问. NFS 服务器可以配置以允许这一点,尽管它引入了一种风险元素,因为这样的用户可以获得对整个主机系统的根访问。

示例1:导出通用山

在第一个示例中,我们将创建一个使用默认 NFS 行为的通用 NFS 安装程序,以使客户端机器上具有根权限的用户难以使用这些客户端超级用户权限与主机进行交互。

首先,创建一个名为nfs的共享目录:

1sudo mkdir /var/nfs/general -p

由于我们正在用sudo创建它,所以该目录在主机上由 root 拥有。

1ls -la /var/nfs/general
1[secondary_label Output]
24 drwxr-xr-x 2 root root 4096 Jul 25 15:26 .

NFS 将客户端上的任何操作转换为nobody:nogroup凭证作为安全措施,因此,我们需要更改目录所有权以匹配这些凭证。

1sudo chown nobody:nogroup /var/nfs/general

该目录现在已经准备好出口。

示例 2:导出家庭目录

在我们的第二个示例中,目标是使存储在主机上的用户主机目录在客户端服务器上可用,同时允许这些客户端服务器的受信任管理员获得他们需要的访问,以便方便地管理用户。

要做到这一点,我们将导出/home目录. 因为它已经存在,我们不需要创建它. 我们也不会更改权限。

步骤 3 — 在主机服务器上配置 NFS 导出

接下来,我们将潜入NFS配置文件,以设置这些资源的共享。

在您的文本编辑器中打开/etc/exports文件,使用根权限:

1sudo nano /etc/exports

该文件有评论,显示了每个配置行的总体结构,语法基本上是:

1[label /etc/exports]
2directory_to_share client(share_option1,...,share_optionN)

我们需要为我们计划共享的每个目录创建一个行,因为我们的示例客户端具有203.0.113.256的IP,我们的行将看起来如下。

1[label /etc/exports]
2/var/nfs/general 203.0.113.256(rw,sync,no_subtree_check)
3/home 203.0.113.256(rw,sync,no_root_squash,no_subtree_check)

我们在两个目录中使用相同的配置选项,除了no_root_squash

  • rw:此选项为客户端计算机提供读写和写入量访问权限。
  • sync:此选项强迫NFS在回复之前将更改写到磁盘上。这导致一个更稳定和一致的环境,因为答案反映了远程卷的实际状态。然而,它也降低了文件操作的速度。
  • no_subtree_check:此选项防止了次要检查,这是一个过程,主机必须检查文件是否实际上仍然可在出口的树上对每一个请求。这可能会导致文件在客户端打开时更名时出现许多问题。在几乎所有情况下,它是更好的解除次要检查。
  • no_root_squash: 默认情况下,NFS

完成更改后,保存并关闭文件,然后,以便为您配置的客户端提供共享,请使用以下命令重新启动 NFS 服务器:

1sudo systemctl restart nfs-kernel-server

然而,在您实际上可以使用新股票之前,您需要确保防火墙规则允许对股票的流量。

步骤 4 – 在主机上调整防火墙

首先,让我们检查防火墙的状态,看看是否已启用,如果是,看看目前允许的内容:

1sudo ufw status
1[secondary_label Output]
2Status: active
3
4To Action From
5--                         ------      ----
6OpenSSH ALLOW Anywhere
7OpenSSH (v6)               ALLOW Anywhere (v6)

在我们的系统中,只允许SSH流量,所以我们需要为NFS流量添加一个规则。

在许多应用程序中,你可以使用sudo ufw app list并以名义启用它们,但nfs不是其中之一.因为ufw还检查服务的端口和协议,我们仍然可以以名义添加NFS。

使用以下命令在主机上打开 2049 端口,确保取代客户端的 IP 地址:

1sudo ufw allow from 203.0.113.256 to any port nfs

您可以通过键入检查更改:

1sudo ufw status

您应该在输出中看到从端口2049允许的流量:

1[secondary_label Output]
2Status: active
3
4To Action From
5--                         ------      ----
6OpenSSH ALLOW Anywhere                 
72049 ALLOW 203.0.113.256        
8OpenSSH (v6)               ALLOW Anywhere (v6)

这证实UFW只会允许NFS流量在2049端口从我们的客户端机器。

步骤 5 – 在客户端上创建山点

现在主机服务器已配置并服务其份额,我们将准备我们的客户端。

为了使远程共享在客户端上可用,我们需要将主机目录安装在一个空的客户端目录上。

<$>[注] 注: 如果你的安装点中有文件和目录,一旦你安装了NFS共享,它们就会被隐藏。

我们将为我们的山口创建两个目录:

1sudo mkdir -p /nfs/general
2sudo mkdir -p /nfs/home

步骤 6 – 将目录安装在客户端上

现在我们有地方放置远程共享,我们已经打开了防火墙,我们可以通过地址我们的主机服务器来设置共享,这在本指南中是203.0.113.0,如下:

1sudo mount 203.0.113.0:/var/nfs/general /nfs/general
2sudo mount 203.0.113.0:/home /nfs/home

这些命令应该将股票从主机安装到客户端机器上。您可以双重检查它们是否以多种方式成功安装。您可以用简单的mountfindmnt命令检查这一点,但df -h将为您提供更多可读的输出,说明如何在 nfs 股票中显示不同的磁盘使用情况:

1df -h
 1[secondary_label Output]
 2Filesystem Size Used Avail Use% Mounted on
 3udev 238M 0 238M 0% /dev
 4tmpfs 49M 628K 49M 2% /run
 5/dev/vda1 20G 1.2G 18G 7% /
 6tmpfs 245M 0 245M 0% /dev/shm
 7tmpfs 5.0M 0 5.0M 0% /run/lock
 8tmpfs 245M 0 245M 0% /sys/fs/cgroup
 9tmpfs 49M 0 49M 0% /run/user/0
10203.0.113.0:/home 20G 1.2G 18G 7% /nfs/home
11203.0.113.0:/var/nfs/general 20G 1.2G 18G 7% /nfs/general

我們安裝的兩個部分都出現在底部,因為它們是從相同的檔案系統上安裝的,所以它們顯示了相同的磁碟使用量. 要查看每個安裝點下實際使用的空間,請使用磁碟使用命令「du」和安裝路徑。

例如:

1du -sh /nfs/home
1[secondary_label Output]
236K	/nfs/home

这表明,整个家庭目录的内容只使用可用空间的20K。

第 7 步:测试 NFS 访问

接下来,让我们通过写给每个股票的东西来测试对股票的访问。

示例1:一般目的份额

首先,将测试文件写入 /var/nfs/general 部分。

1sudo touch /nfs/general/general.test

然后检查其所有权:

1ls -l /nfs/general/general.test
1[secondary_label Output]
2-rw-r--r-- 1 nobody nogroup 0 Aug 1 13:31 /nfs/general/general.test

因为我们在不改变NFS的默认行为的情况下安装了这个卷,并通过sudo命令创建了该文件作为客户端机器的根用户,将文件的所有权设置为nobody:nogroup。

示例 2: Home 目录共享

若要将 General Purpose 共享的权限与 Home Directory 共享进行比较,请以相同的方式创建 Home Directory 文件:

1sudo touch /nfs/home/home.test

然后看看文件的所有权:

1ls -l /nfs/home/home.test
1[secondary_label Output]
2-rw-r--r-- 1 root root 0 Aug 1 13:32 /nfs/home/home.test

我们通过sudo命令创建了home.test作为根,就像我们创建了general.test文件一样。然而,在这种情况下,它是由 root 拥有,因为当我们在这个安装上指定了no_root_squash选项时,我们超越了默认行为。

步骤 8 — 在 Boot 上安装远程 NFS 目录

我们可以通过将它们添加到客户端上的 /etc/fstab 文件,在启动时自动安装远程 NFS 共享。

在您的文本编辑器中打开此文件与 root 特权:

1sudo nano /etc/fstab

在檔案的底部,我們將為我們的每個股票添加一行. 他們將看起來像這樣:

1[label /etc/fstab]
2. . .
3203.0.113.0:/var/nfs/general    /nfs/general nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
4203.0.113.0:/home       /nfs/home nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

<$>[注] 注: 有关我们在这里指定的选项的更多信息可以在描述NFS在fstab中安装的man nfs命令的man页面上找到。

客户端服务器将在启动时自动安装远程分区,但连接和共享可能需要几分钟。

步骤 9 – 卸载 NFS 远程共享

如果您不再希望远程目录安装在您的系统上,您可以通过离开共享的目录结构并卸载来卸载它,如下:

1cd ~
2sudo umount /nfs/home
3sudo umount /nfs/general

这将删除远程共享,只留下可访问的本地存储:

1df -h
 1[secondary_label Output]
 2
 3Filesystem Size Used Avail Use% Mounted on
 4/dev/vda 59G 1.3G 55G 3% /
 5none 4.0K 0 4.0K 0% /sys/fs/cgroup
 6udev 2.0G 12K 2.0G 1% /dev
 7tmpfs 396M 320K 396M 1% /run
 8none 5.0M 0 5.0M 0% /run/lock
 9none 2.0G 0 2.0G 0% /run/shm
10none 100M 0 100M 0% /run/user

如果您还想防止他们在下一次重新启动时被远程安装,请编辑 /etc/fstab 并通过在行开始时放置一个 # 符号来删除行或评论它,您也可以通过删除 auto 选项来防止自动安装,这将允许您手动安装它。

结论

在本教程中,我们创建了一个 NFS 主机,并通过创建两个不同的 NFS 插件来说明一些关键的 NFS 行为,我们与我们的 NFS 客户端共享。

如果您正在使用 NFS 用于私人数据,您需要决定如何保护这些数据。您可能能够通过 SSH 或 VPN 连接路由 NFS 以创建更安全的体验,但这通常伴随着性能的严重损失。如果性能是一个问题,请考虑 SSHFS

Published At
Categories with 技术
comments powered by Disqus