介绍
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
正如你可以看到底部,只有我们的一个股票出现了。 这是因为我们导出的两个共享都在远程服务器上的同一个文件系统上,这意味着它们共享同一个存储池。 为了使Avail
和Use%
列保持准确,只有一个共享可以加入到计算。
如果要查看已装入的所有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,以创建更安全的体验。