本教程适用于这些OS版本
- Ubuntu 18.04(Bionic Beaver)
- Ubuntu 14.04 LTS(Trusty Tahr)
- Ubuntu 10.04(Lucid Lynx)
网络文件系统(NFS)是一种流行的分布式文件系统协议,它允许用户在其服务器上安装远程目录。该系统允许您利用不同位置的存储空间,并轻松地从多个服务器写入同一空间。因此,它对于用户需要经常访问的目录非常有效。本教程以简单易懂的步骤介绍了在Ubuntu 18.04服务器上安装NFS共享的过程。
初步信息
出于本教程的目的,两个Ubuntu 18.04服务器之间将有一个目录共享配置,可以是任何大小。但是,对于每个服务器,您需要一个已使用sudo权限设置的帐户。共享其目录的服务器将被称为主机,而将安装这些目录的服务器将被称为客户端。3.为了统一和简单,在整个教程中,应使用以下IP地址来指代主机和服务器值:
- 主:192.168.0.100
- 客: 192.168.0.101
用户必须使用其不同的主机和客户端值替换上述值。我们现在都准备了解在Ubuntu 18.04 LTS上安装NFS共享的步骤。
下载和安装组件
首先,必须在主机和客户端服务器上安装必要的组件。在主机服务器上,您需要安装nfs-kernel-server软件包,这样才能共享您的目录。由于这是您在此会话中使用apt执行的第一步,因此必须首先在安装之前刷新本地包索引(如下所示):
sudo apt-get update
sudo apt-get install nfs-kernel-server
安装这些软件包后,您可以切换到客户端计算机。在客户端计算机上,您将需要安装名为nfs-common的软件包,该软件包提供NFS功能,而无需包含服务器组件。同样,您需要在安装之前刷新本地软件包索引,以确保您具有更新的信息(如下所示):
sudo apt-get update
sudo apt-get install nfs-common
这将使您完成此步骤,现在可以继续下一步。
在主机服务器上创建共享目录
出于本教程的目的,将有一个涉及共享两个不同目录的实验。第一个共享目录恰好是包含用户数据的/ home目录。第二个是一个通用目录,它将特别为NFS创建,以便演示正确的设置和过程。同样位于/ var / nfs由于/ home目录已经存在,让我们继续使用以下命令创建/ var / nfsdirectory:
sudo mkdir /var/nfs
我们现在有一个明确指定用于与远程主机共享的新目录。但是,此目录的所有权还不理想。我们必须将用户所有权分配给名为nobody的系统上的用户。我们还必须将组所有权分配给名为nogroup的系统上的组。这可以通过键入以下命令来完成:
sudo chown nobody:nogroup /var/nfs
这里需要注意的是,我们必须谨慎地改变那些特别用于共享的目录的所有权。例如,不得更改主目录(/ home目录)的所有权,因为它会给主机服务器上的用户带来许多问题。
在主机服务器上配置NFS导出
通过创建和分配目录,我们现在可以深入了解NFS配置文件,以便建立这些资源的共享。为此,您必须使用以下命令以root权限在文本编辑器中打开/ etc / exports文件:
sudo nano /etc/exports
将出现的文件将包含一些注释,以告知您每个配置行的一般结构。基本上,语法类似于以下内容:
directory_to_share client (share_option2,...,share_optionM)
这里的目的是能够为每个必须共享的目录创建一行。因为在我们选择的示例中,IP恰好是192.168.0.100,所以行应如下所示:
/home 192.168.0.101(rw,sync,no_root_squash,no_subtree_check)
/var/nfs 192.168.0.101(rw,sync,no_subtree_check)
现在让我们花点时间了解上面几行中给出的选项。
- rw:此选项允许客户端计算机读取以及对卷的写入权限。
- sync:它强制NFS在回复之前将更改写入磁盘,从而产生更稳定和一致的环境。这主要是因为回复复制了远程卷的实际状态。
- nosubtreecheck:此选项可以避免子树检查,这是一个强制主机检查文件是否在每个请求的导出树中实际可用的过程。在客户端打开文件时重命名文件时可能会产生问题。出于同样的原因,在大多数情况下,建议禁用子树检查。
- norootsquash:默认情况下,NFS将来自root用户的请求远程转换为服务器上的非特权请求。这是一种安全功能,不允许客户端上的root帐户以root用户身份使用主机的文件系统。这种指令禁用了一定数量的共享。
一旦完成了所有必需的更改,您必须进行更改,并在关闭文件之前保存这些更改。随后,您必须使用以下命令创建保存共享导出的NFS表:
sudo exportfs -a
但是,NFS服务尚未运行。您可以通过键入以下命令来启动相同的操作:
sudo service nfs-kernel-server start
上述命令将使您的共享可供您配置的客户端使用。您现在已准备好继续下一步。
在客户端服务器上创建挂载点和挂载远程共享
配置主机服务器并使其目录共享可用后,您现在需要准备好客户端。在这里,您将需要挂载远程共享,因此您需要创建一些挂载点。您将使用常规/ mnt开始,然后在其下创建一个名为NFS的目录以合并共享。这里,实际目录应与它们在主机服务器上的位置相对应。用户可以使用以下命令创建每个目录和必要的父目录:
sudo mkdir -p /mnt/nfs/home
sudo mkdir -p /mnt/nfs/var/nfs
创建了一个容纳远程共享的合适位置,您现在可以通过寻址主机服务器来安装它们,为了本教程的目的,该主机服务器是5.6.7.8,如下所示:
sudo mount 192.168.0.100:/home /mnt/nfs/home
sudo mount 192.168.0.100:/var/nfs /mnt/nfs/var/nfs
这些应该允许您将共享从主机安装到客户端计算机上。您可以通过查看客户端服务器上的可用磁盘空间来仔细检查(如下所示):
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda 59G 1.3G 55G 3% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 2.0G 12K 2.0G 1% /dev
tmpfs 396M 324K 396M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 2.0G 0 2.0G 0% /run/shm
none 100M 0 100M 0% /run/user
192.168.0.100:/home 59G 1.3G 55G 3% /mnt/nfs/home
从底部可以看出,只有一个预期的共享是可见的,因为两个导出的共享都存在于远程服务器上的同一文件系统上,这意味着它们共享同一个存储池。要使Avail和Use%列准确,只能将其中一个共享添加到计算中。但是,如果要查看已挂载的所有NFS共享,可以键入以下命令:
mount -t nfs
上面的命令将抛出当前在客户端计算机上可访问的所有NFS挂载,这将使您完成此步骤,现在是时候继续下一个。
测试NFS访问
您可以通过向您的共享写入内容来测试共享访问权限,例如,将测试文件写入您的一个共享(如下所示):
sudo touch /mnt/nfs/home/test_home
在这里,我们还将测试文件写入其他共享以显示一个重要的区别:
sudo touch /mnt/nfs/var/nfs/test_var_nfs
请仔细查看已挂载主目录中文件的所有权(如下所示),以了解其中的差异:
ls -l /mnt/nfs/home/test_home
-rw-r--r-- 1 root root 0 Apr 10 09:15 test_home
很明显,该文件由root拥有,原因是你在此mount上停用了root_squash选项,该选项将该文件写为未知的非root用户。在启用了root_squash的情况下安装的另一个测试文件中,您会注意到完全不同的内容(如下所述):
ls -l /mnt/nfs/var/nfs/test_var_nfs
-rw-r--r-- 1 nobody nogroup 0 Apr 10 09:15 test_var_nfs
显然,此文件已分配给nobody 用户和nogroup 组。因此,这符合预设配置。现在让我们继续下一步。
使远程NFS目录自动挂载
您可以选择通过将远程NFS共享添加到客户端上的fstab文件来自动安装远程NFS共享。您需要使用以下命令在文本编辑器中以root权限打开此文件:
sudo nano /etc/fstab
在文件的底部,您需要为每个共享添加一行,这看起来类似于下面给出的内容:
192.168.0.100:/home /mnt/nfs/home nfs auto,noatime,nolock,bg,nfsvers=4,intr,tcp,actimeo=1800 0 0
192.168.0.100:/var/nfs /mnt/nfs/var/nfs nfs auto,noatime,nolock,bg,nfsvers=4,sec=krb5p,intr,tcp,actimeo=1800 0 0
此处指定的选项可以在fstab文件中描述NFS安装的手册页中找到,方法是使用以下命令:
man nfs
这将使您能够在引导时自动挂载远程分区。可能需要一段时间才能建立连接并且共享可用(耐心在这里将成为一种美德!)
卸载NFS远程共享
如果您不再需要在系统上安装远程目录,则可以使用以下命令移出共享的目录结构并卸载,从而轻松卸载它:
cd ~
sudo umount /mnt/nfs/home
sudo umount /mnt/nfs/var/nfs
这将允许您删除远程共享,只显示您的本地存储:
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda 59G 1.3G 55G 3% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 2.0G 12K 2.0G 1% /dev
tmpfs 396M 320K 396M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 2.0G 0 2.0G 0% /run/shm
none 100M 0 100M 0% /run/user
很明显,NFS共享现在不能用作存储空间。这将带您到本教程的结尾。