介绍
NFS,或网络文件系统,是一个分布式文件系统协议,允许您在您的服务器上安装远程目录. 这允许您利用在不同的位置的存储空间,并从多个服务器轻松地写到同一个空间。
在本指南中,我们将介绍如何在 Ubuntu 14.04 服务器上配置 NFS 安装。
前提条件
在本指南中,我们将配置两个Ubuntu 14.04服务器之间的目录共享,这些服务器可以是任何大小,对于每个服务器,您将需要有一个帐户设置与sudo特权。
对于本指南的目的,我们将参考将共享其目录的服务器 host和将这些目录设置为 client的服务器。
为了在整个指南中保持直线,我将使用以下IP地址作为主机和服务器值的站点:
- 主机: 1.2.3.4
- 客户端: 111.111.111
您应该用自己的主机和客户端值代替上述值。
下载和安装组件
在我们开始之前,我们需要在我们的主机和客户端服务器上安装必要的组件。
在主机服务器上,我们需要安装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
在主机服务器上创建共享目录
在本指南中,我们将尝试共享两个单独的目录,我们将共享的第一个目录是包含用户数据的/home
目录。
第二个是一般用途的目录,我们将专门为NFS创建,以便我们可以展示正确的程序和设置。
由于已存在的 /home
目录,请继续创建 /var/nfs
目录:
1sudo mkdir /var/nfs
现在,我们有一个新的目录,专门用于与远程主机共享,但是,目录所有权并不理想,我们应该将用户所有权交给我们系统上的一个名为nobody
的用户,我们也应该将群组所有权交给我们系统上的一个名为nogroup
的群组。
我们可以通过输入这个命令来做到这一点:
1sudo chown nobody:nogroup /var/nfs
我们只需要更改专门用于共享的目录的所有权,例如,我们不希望更改我们‘/home’目录的所有权,因为这会给我们在主机服务器上的任何用户带来大量问题。
在主机服务器上配置 NFS 导出
现在我们已经创建并分配了我们的目录,我们可以潜入NFS配置文件,以设置这些资源的共享。
在您的文本编辑器中打开/etc/exports
文件,使用根权限:
1sudo nano /etc/exports
您看到的文件将有一些评论,将向您展示每个配置行的总体结构. 基本上,语法是这样的:
directory_to_share client(share_option1,...,share_optionN)
因此,我们希望为我们想要共享的每个目录创建一个行,因为在这个示例或客户端中有一个111.111.111.111
的IP,我们的行将看起来如下:
/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:此选项为客户端计算机提供阅读和写入卷的访问权限。
- sync:此选项强迫NFS在回复之前在磁盘上写更改.这导致一个更稳定和一致的环境,因为答案反映了远程卷的实际状态。
- no_subtree_check:此选项阻止了子树检查,这是一个过程,主机必须检查每个请求的输出树中是否确实有文件。这可能会导致文件在客户端打开时更名时出现许多问题。在几乎所有情况下,最好禁用子树检查。
- no_root_squash**:默认情况下,NFS将用户根请求从用户根源远程转换为服务器上的非
当您完成更改时,保存并关闭文件。
接下来,您应该通过键入创建持有您的股票出口的NFS表:
1sudo exportfs -a
然而,NFS 服务实际上还没有运行,您可以通过键入开始:
1sudo service nfs-kernel-server start
这将使您的股票可用于您配置的客户端。
在客户端服务器上创建 Mount Points 和 Mount Remote Shares
现在您的主机服务器已配置并使其目录共享可用,我们需要准备我们的客户端。
我们将使用传统的/mnt
作为起点,并在其下创建一个名为nfs
的目录,以保持我们的股票合并。
实际目录将与其在主机服务器上的位置相匹配. 我们可以通过键入以下方式创建每个目录和所需的母目录:
1sudo mkdir -p /mnt/nfs/home
2sudo 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
正如你在底部可以看到的,我们的股票中只有一个出现了,这是因为我们出口的两个股票都在远程服务器上的相同文件系统上,这意味着它们共享相同的存储池。
如果您想要查看您已安装的所有 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 访问测试
你可以通过写一些东西给你的股票来测试你的股票的访问权限. 你可以写一个测试文件给你的股票之一,如下:
1sudo touch /mnt/nfs/home/test_home
让我们把测试文件写给另一份,以证明一个重要的区别:
1sudo touch /mnt/nfs/var/nfs/test_var_nfs
看看安装的家庭目录中的文件的所有权:
1ls -l /mnt/nfs/home/test_home
1-rw-r--r-- 1 root root 0 Apr 30 14:43 test_home
正如你可以看到的,该文件是由 root 拥有,这是因为我们在这个安装上禁用了root_squash
选项,该选项将该文件写成匿名,非 root 用户。
在我们的另一个测试文件上,它安装了 with 启用root_squash
,我们会看到一些不同的东西:
1ls -l /mnt/nfs/var/nfs/test_var_nfs
1-rw-r--r-- 1 nobody nogroup 0 Apr 30 14:44 test_var_nfs
正如你所看到的,这个文件被分配给了nobody
用户和nogroup
组。
让远程 NFS 目录自动安装
我们可以通过将它添加到客户端上的fstab
文件来自动安装我们的远程NFS共享。
在您的文本编辑器中打开此文件与 root 特权:
1sudo 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
文件中安装的男性页面中找到:
1man nfs
这将自动安装在启动时的远程分区(连接和共享可能需要几分钟)。
删除 NFS 远程共享
如果您不再希望远程目录安装在您的系统上,您可以轻松卸载它,通过离开共享的目录结构并卸载,如下:
1cd ~
2sudo umount /mnt/nfs/home
3sudo umount /mnt/nfs/var/nfs
这将删除远程共享,只留下可访问的本地存储:
1df -h
1Filesystem Size Used Avail Use% Mounted on
2/dev/vda 59G 1.3G 55G 3% /
3none 4.0K 0 4.0K 0% /sys/fs/cgroup
4udev 2.0G 12K 2.0G 1% /dev
5tmpfs 396M 320K 396M 1% /run
6none 5.0M 0 5.0M 0% /run/lock
7none 2.0G 0 2.0G 0% /run/shm
8none 100M 0 100M 0% /run/user
正如您所看到的,我们的 NFS 股票不再作为存储空间可用。
结论
NFS 提供了通过网络访问远程系统的快速和简单的方法,但协议本身并未加密. 如果您在生产环境中使用此功能,请考虑通过 SSH 或 VPN 连接路由 NFS 以创建更安全的体验。