如何建立一个NFS挂载在Ubuntu 14.04

介绍

NFS或网络文件系统是一种分布式文件系统协议,允许您在服务器上装载远程目录。 这允许您利用不同位置的存储空间,并轻松地从多个服务器写入同一空间。 NFS适用于需要定期访问的目录。

在本指南中,我们将介绍如何在Ubuntu 14.04服务器上配置NFS安装。

先决条件

在本指南中,我们将配置两个Ubuntu 14.04服务器之间的目录共享。 这些可以是任何尺寸。 对于每个这些服务器,您将必须设置具有sudo权限的帐户。 你可以学习如何按照1-4我们的步骤来配置这样的帐户初始设置指南的Ubuntu 14.04服务器

对于本指南的目的,我们将指的是将要分享其目录中的主机 ,这将加载这些目录作为客户端的服务器的服务器。

为了使这些指导在整个指南,我将使用以下IP地址作为主机和服务器值的替代:

  • 主持人 :1.2.3.4
  • 客户 :111.111.111.111

您应该用您自己的主机和客户端值替换上面的值。

下载并安装组件

在我们开始之前,我们需要在主机和客户端服务器上安装必要的组件。

在主机服务器上,我们需要安装nfs-kernel-server软件包,它将使我们能够分享我们的目录。 因为这是我们与进行第1操作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/nfs目录:

sudo mkdir /var/nfs

现在,我们有一个专门用于与远程主机共享的新目录。 但是,目录所有权不是理想的。 我们应该给用户所有权在我们的命名系统中的用户nobody 我们应该给组所有权我们的系统在一组名为nogroup为好。

我们可以通过输入这个命令:

sudo chown nobody:nogroup /var/nfs

我们只需要更改专门用于共享的目录上的所有权。 我们不希望改变我们的所有权/home目录中,例如,因为它会导致对我们有我们的主机服务器上的任何用户的问题大量。

在主机服务器上配置NFS导出

现在我们已经创建并分配了目录,我们可以深入到NFS配置文件中来设置这些资源的共享。

打开/etc/exports在以root权限文本编辑器文件中:

sudo nano /etc/exports

您看到的文件将有一些注释,将显示每个配置行的一般结构。 基本上,语法是这样的:

directory_to_share       client(share_option1,...,share_optionN)

因此,我们要为每个我们希望共享的目录创建一行。 由于在这个例子中或客户端的IP 111.111.111.111 ,我们的生产线将是这样的:

/home       111.111.111.111(rw,sync,no_root_squash,no_subtree_check)
/var/nfs    111.111.111.111(rw,sync,no_subtree_check)

我们已经解释了这里的一切,但我们已经启用的具体选项。 让我们现在讨论一下。

  • RW:此选项使客户端计算机的读写访问卷。
  • 同步 :此选项强制NFS回答之前更改写入磁盘。 这导致更稳定和一致的环境,因为应答反映了远程卷的实际状态。
  • 子树检查 :此选项可防止子树检查,这是一个过程,其中主机必须检查文件是否确实仍然在为每个请求导出的树可用。 这可能会导致在客户端打开文件时重命名文件时出现许多问题。 在几乎所有情况下,最好禁用子树检查。
  • 没有壁球 :默认情况下,NFS翻译从根用户的请求到远程服务器上的非特权用户。 这应该是一个安全功能,不允许客户端上的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

现在,我们有一些地方把我们的远程共享,我们可以解决我们的主机服务器,这本指南是挂载它们1.2.3.4 ,就像这样:

sudo mount 1.2.3.4:/home /mnt/nfs/home
sudo mount 1.2.3.4:/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
1.2.3.4:/home          59G  1.3G   55G   3% /mnt/nfs/home

正如你可以看到底部,只有我们的一个股票出现了。 这是因为我们导出的两个共享都在远程服务器上的同一个文件系统上,这意味着它们共享同一个存储池。 为了使AvailUse%列保持准确,只有一个共享可以加入到计算。

如果要查看已装入的所有NFS共享,可以键入:

mount -t nfs
1.2.3.4:/home on /mnt/nfs/home type nfs (rw,vers=4,addr=1.2.3.4,clientaddr=111.111.111.111)
1.2.3.4:/var/nfs on /mnt/nfs/var/nfs type nfs (rw,vers=4,addr=1.2.3.4,clientaddr=111.111.111.111)

这将显示当前在客户端计算机上可访问的所有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 30 14:43 test_home

正如你可以看到,该文件由root所有。 这是因为我们禁用了root_squash这个挂载会写入的文件作为匿名,非root用户的选择。

在我们的其他测试文件,该文件是安装 root_squash启用,我们将看到不同的东西:

ls -l /mnt/nfs/var/nfs/test_var_nfs
-rw-r--r-- 1 nobody nogroup 0 Apr 30 14:44 test_var_nfs

如您所见,此文件已分配给“nobody”用户和“nogroup”组。 这跟随我们的配置。

使远程NFS目录安装自动

我们可以将其添加到我们的使我们的远程NFS共享自动的安装fstab在客户端上的文件。

在文本编辑器中以root权限打开此文件:

sudo nano /etc/fstab

在文件的底部,我们将为每个共享添加一行。 它们将如下所示:

1.2.3.4:/home    /mnt/nfs/home   nfs auto,noatime,nolock,bg,nfsvers=4,intr,tcp,actimeo=1800 0 0
1.2.3.4:/var/nfs    /mnt/nfs/var/nfs   nfs auto,noatime,nolock,bg,nfsvers=4,sec=krb5p,intr,tcp,actimeo=1800 0 0

那我们指定这里的选项可以在描述NFS安装在手册页中找到fstab文件:

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共享不再可用作存储空间。

结论

NFS提供了一种通过网络访问远程系统的快捷方式。 但是,协议本身不加密。 如果在生产环境中使用此选项,请考虑通过SSH或VPN连接来路由NFS,以创建更安全的体验。

作者:Justin Ellingwood
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏