如何在Ubuntu 14.04上配置NFS服务器和挂载NFS共享

1.1 NFS-An概述

网络文件系统(NFS)是一种流行的分布式文件系统协议,使用户能够在其服务器上安装远程目录。 该系统允许您利用不同位置的存储空间,并以轻松的方式将多个服务器写入同一空间。 因此,对于用户需要频繁访问的目录而言,它的工作相当好。 本教程将以简单易用的步骤解释在Ubuntu 14.04服务器上安装NFS共享的过程。

1.2初步信息

1.为了本教程的目的,将有两个Ubuntu 14.04服务器之间的目录共享配置,这可能是任何大小的。 但是,对于每个这些服务器,您将需要一个已设置sudo权限的帐户。 2.为了本教程的目的,共享其目录的服务器将被称为主机 ,而将挂载这些目录的服务器称为客户机。 3.为了均匀性和简单性,在整个教程中应使用以下IP地址来指代主机和服务器的值:

  • 主持人:5.6.7.8
  • 客户:333. 333. 333. 333

用户必须用不同的主机和客户端值来替换上述值。现在我们已经设置了解在Ubuntu 14.04中安装NFS共享的步骤

1.3下载和安装组件

首先,必须在主机和客户端服务器上安装必要的组件。 在主机服务器上,您将需要安装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

这将带您到此步骤结束,您现在可以转到下一个步骤。

1.4在主机服务器上创建共享目录

为了本教程的目的,将有一个实验涉及共享两个不同的目录。 共享的第一个目录恰好是包含用户数据的/ home目录 。 第二个将是一个专门为NFS创建的通用目录,以便演示正确的设置和进程。 在/ var / nfs中也是如此。由于/ home目录已经存在,所以让我们简单的介绍一下 ,使用以下命令创建/ var / nfsdirectory

sudo mkdir /var/nfs

我们现在有一个明确指定用于与远程主机共享的新目录。 但是,这个目录的所有权还不是很理想。 我们必须将用户所有权分配给名为“ noone ”的系统上的用户。 我们还必须将组所有权分配给名为anygroup的系统上的组。 这可以通过键入以下命令来完成:

sudo chown noone:anygroup /var/nfs

在这里要注意的是,我们必须仔细地更改所有权,只对那些特别用于共享的目录进行更改。 例如,不能更改主目录(/ home目录)的所有权,因为它将对主机服务器上存在的用户造成许多问题。

1.5配置主机服务器上的NFS导出

通过创建和分配目录,我们现在可以进入NFS配置文件,以便设置这些资源的共享。 为此,您必须使用以下命令以root权限在文本编辑器中打开/ etc / exports文件:

sudo nano /etc/exports

将出现的文件将包含一些注释,以告诉您每个配置行的一般结构。 本质上,语法将类似于以下::

directory_to_share client (share_option2,...,share_optionM)

这里的目标是为每个必须共享的目录创建一条线。 因为在我们所选择的例子中,IP恰好是333.333.333.333,行应该如下所示:/ home 333.333.333.333(rw,sync,no_root_squash,no_subtree_check)/ var / nfs 333.333.333.333(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

上述命令将使您的共享可用于您要配置的客户端。 你现在已经准备好继续下一步了。

1.6在客户端服务器上创建安装点并挂载远程共享

配置主机服务器并使其目录共享可用,您现在需要准备您的客户端。 在这里,您需要安装远程共享,因此您需要创建几个安装点。 您将使用传统的/ mnt开始,随后在其下创建一个名为NFS的目录以合并共享。 这里,实际目录应与主机服务器上的位置对应。 用户可以使用以下命令创建每个目录和必要的父目录:

sudo mkdir -p /mnt/nfs/home
sudo mkdir -p /mnt/nfs/var/nfs

创建了一个合适的位置来容纳远程共享,您现在可以通过寻址主机服务器来安装它们,为了本教程的目的是5.6.7.8,如下所示:

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

如底部所示,只有一个目标共享是可见的,因为两个导出的共享都存在于远程服务器上的同一个文件系统上,这意味着它们共享同一个存储池。 要使可用性使用%列准确,只能在计算中添加一个共享。 尽管如此,如果您希望查看已挂载的所有NFS共享,可以键入以下命令:

mount -t nfs

5.6.7.8:/home on /mnt/nfs/home type nfs (rw,vers=4,addr=5.6.7.8,clientaddr=333.333.333.333) 5.6.7.8:/var/nfs on /mnt/nfs/var/nfs type nfs (rw,vers=4,addr=5.6.7.8,clientaddr=333.333.333.333)

上述命令将抛出客户端计算机上当前可访问的大量NFS安装,这将使您结束此步骤,现在可以转到下一个。

1.7测试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 27 12:58 test_home

很明显,该文件由root拥有,原因是您在此mount上禁用了root_squash选项,该选项将该文件写入未知的非root用户。 在启用了root_squash的另一个测试文件中,您将注意到完全不同的内容(如下所述):

ls -l /mnt/nfs/var/nfs/test_var_nfs
-rw-r--r-- 1 noone anybody 0 Apr 27 12:58 test_var_nfs

显然,该文件已分配给任何用户和任何人组。 因此,这符合预设配置。 现在让我们继续下一步。

1.8远程NFS目录安装自动

您可以选择通过将远程NFS共享加载到客户机上的fstab文件来自动挂载 。 您需要使用以下命令在文本编辑器中使用root权限打开此文件:

sudo nano /etc/fstab

在文件底部,您需要为每个共享添加一行,看起来像下面给出的内容:

5.6.7.8:/home      /mnt/nfs/home   nfs auto,noatime,nolock,bg,nfsvers=4,intr,tcp,actimeo=1800 0 0
5.6.7.8:/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

这将使您能够在启动时自动挂载远程分区。 可能需要一段时间才能建立联系,并提供股份(耐心将成为这里的美德!)

1.9卸载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共享现在不可用作存储空间。 这将带您进入教程的末尾。

1.10包起来

NFS提供了一种简单而迅速的机制来通过网络访问远程系统。 但是,协议未加密。 如果您打算在生产环境中使用此设置,建议您考虑通过SSH或VPN连接路由NFS,以创建更安全的体验。

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

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

支付宝扫一扫打赏

微信扫一扫打赏