如何在Ubuntu 20.04上安装NFS客户端和服务器

如何在Ubuntu 20.04上安装NFS客户端和服务器

网络文件系统或简称NFS是一种分布式文件系统协议,允许您在服务器上安装远程目录。您可以使用NFS从其他服务器或客户端访问文件和文件夹。您可以从网络上的多个客户端或远程系统写入该服务器。该技术提供了跨多个系统共享资源的灵活性。

在本教程中,您将学习如何设置NFS服务器以及如何使用Ubuntu 20.04在客户端上安装NFS共享。

前提

  • 两个Ubuntu 20.04系统。每个服务器需要具有sudo特权和UFW防火墙的非root用户。
  • 您可以通过专用网络配置服务器和客户端。在本教程中,我们将使用host_ip host_ip 地址和 client_ip 浏览到客户端的IP地址。

步骤1-在服务器和客户端上安装NFS

主办

必须安装 nfs-kernel-server 使用主机上的软件包共享目录。

$ sudo apt update
$ sudo apt install nfs-kernel-server

客户

客户有 nfs-common 一个允许客户端安装主机目录但不能托管目录本身的软件包。

$ sudo apt update
$ sudo apt install nfs-common

第2步-在主机上创建共享目录

允许客户端访问主机上目录的方法有两种。默认情况下,NFS服务器不允许需要sudo特权的操作。这意味着客户端超级用户不能以root用户身份写入文件,重新分配所有权或执行需要提升特权的任务。

但是,客户端可能需要在主机上执行某些需要提升权限但不需要超级用户访问权限的操作。

第一种方式

这是共享目录的默认方式。这使得客户端根用户很难使用提升的特权与主机进行交互。

首先,创建一个共享目录。

$ sudo mkdir /var/nfs/general -p

当我在客户端上执行root操作时,NFS会将它们转换为 nobody:nogroup 主机的凭据。因此,您需要赋予共享目录适当的所有权。

$ sudo chown nobody:nogroup /var/nfs/general

第二种方式

在这里,我们与客户端共享主机的主目录。这允许客户机上的root用户正确访问主机。

不需要创建主目录,因为它已经存在于主机服务器上。您甚至不需要更改权限,因为主机用户将遇到多个问题。

步骤3-在主机上配置NFS

配置NFS并设置共享。

打开文件 /etc/exports 在主机服务器上。

$ sudo nano /etc/exports

添加以下行,每个要共享的目录一行:

/var/nfs/general    client_ip(rw,sync,no_subtree_check)
/home               client_ip(rw,sync,no_root_squash,no_subtree_check)

让我们看一下所有这些选项及其含义。

  • w:这使客户端可以对主机目录进行读写访问。
  • 同步化:此选项强制在NFS响应之前写入更改。这意味着NFS将首先完成对主机目录的写入,然后响应客户端。这样可以确保它反映了主机服务器的实际状态,但是会减慢文件操作的速度。
  • no_subtree_check:此选项禁用子树检查。子树检查是一项操作,要求服务器检查每个NFS请求是否存在所访问的文件并且该文件位于导出的树中。重命名客户端访问的文件时,此操作会导致问题。因此,我们建议您在大多数情况下禁用它。它具有安全性,但是更可靠。
  • no_root_squash:默认情况下,NFS会将客户端作为根用户执行的所有操作转换为服务器上的非特权用户。这样做是为了提高安全性。此选项禁用某些共享的行为。

完成后,按关闭文件 Ctrl + X 然后输入 ÿ 提示时。

重新启动NFS服务器以应用更改。

$ sudo systemctl restart nfs-kernel-server

第4步-配置主机防火墙

NFS最佳实践是为每个客户端IP地址分别启用它,而不是使其从任何位置均可访问。

NFS使用端口2049。使用以下命令启用对NFS的访问:

$ sudo ufw allow from client_ip to any port nfs

检查并确认状态。

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                 
2049                       ALLOW       167.100.34.78        
OpenSSH (v6)               ALLOW       Anywhere (v6)

步骤5-在客户端上创建安装点

现在已经配置了主机,设置客户端。

在客户端上为挂载创建两个目录。

$ sudo mkdir -p /nfs/general
$ sudo mkdir -p /nfs/home

现在我们已在主机边缘配置了所有内容,我们可以使用主机的IP地址挂载共享。

$ sudo mount host_ip:/var/nfs/general /nfs/general
$ sudo mount host_ip:/home /nfs/home

您可以使用以下命令检查它们是否成功安装:

$ df -h
Filesystem                      Size  Used Avail Use% Mounted on
udev                            448M     0  448M   0% /dev
tmpfs                            99M  664K   98M   1% /run
/dev/vda1                        25G  3.2G   21G  14% /
tmpfs                           491M     0  491M   0% /dev/shm
tmpfs                           5.0M     0  5.0M   0% /run/lock
tmpfs                           491M     0  491M   0% /sys/fs/cgroup
tmpfs                            99M     0   99M   0% /run/user/1000
123.175.112.87:/var/nfs/general  25G   18G  6.3G  74% /nfs/general
123.175.112.87:/home             25G   18G  6.3G  74% /nfs/home

两个已安装的共享都显示在列表的底部。两者都是从同一文件系统挂载的,因此会显示总磁盘使用情况,而不是挂载目录的实际使用情况。

要查看每个安装上使用的实际空间,请使用以下命令:

$ du -sh /nfs/general
36K     /nfs/general

步骤6-测试NFS共享

测试文件 /var/nfs/general 分享。

$ sudo touch /nfs/general/general.test

检查所有权。

$ ls -l /nfs/general/general.test
-rw-r--r-- 1 nobody nogroup 0 Aug  1 13:31 /nfs/general/general.test

这是使用默认的NFS选项挂载的,我使用客户端计算机上的root用户创建了文件,因此主机的所有权为 nobody:nogroup..在这里,客户端用户无法在主机上运行管理作业。

在/ nfs / home共享上创建一个测试文件。

$ sudo touch /nfs/home/home.test

检查所有权。

$ ls -l /nfs/home/home.test
-rw-r--r-- 1 root root 0 Aug  1 13:32 /nfs/home/home.test

在这里,我使用客户端计算机上的root用户创建了测试文件,因此所有权保留在主机上。这是, no_root_squash 一个标志,它允许客户机上的root用户也成为主机上的root用户。

步骤7-在引导过程中挂载NFS共享

引导客户端计算机时,不会保留这些安装。为了使它们永久化, /etc/fstab 文件。

/etc/fstab 用于编辑的文件。

$ sudo nano /etc/fstab

将以下行粘贴到文件的底部。每行对应于引导时安装的每个目录。

. . .
host_ip:/var/nfs/general    /nfs/general   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
host_ip:/home               /nfs/home      nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

有关这些选项的更多信息,请检查以下手册页: nfs..

$ man nfs

按保存文件 Ctrl + X 然后输入 ÿ 提示时。

重新启动服务器并检查安装。

$ sudo reboot

登录到客户端/服务器,并确保安装存在。

$ df -h
Filesystem                      Size  Used Avail Use% Mounted on
udev                            448M     0  448M   0% /dev
tmpfs                            99M  664K   98M   1% /run
/dev/vda1                        25G  3.2G   21G  14% /
tmpfs                           491M     0  491M   0% /dev/shm
tmpfs                           5.0M     0  5.0M   0% /run/lock
tmpfs                           491M     0  491M   0% /sys/fs/cgroup
tmpfs                            99M     0   99M   0% /run/user/1000
123.175.112.87:/var/nfs/general  25G   18G  6.3G  74% /nfs/general
123.175.112.87:/home             25G   18G  6.3G  74% /nfs/home

步骤8:卸载NFS共享

当不再需要NFS挂载时,可以使用以下命令将其卸载:

$ sudo umount /nfs/home
$ sudo umount /nfs/general

一个常见的错误是 unmount 代替 umount 这是实际的命令。

确保正确卸载。

$ df -h
Filesystem                      Size  Used Avail Use% Mounted on
udev                            448M     0  448M   0% /dev
tmpfs                            99M  664K   98M   1% /run
/dev/vda1                        25G  3.2G   21G  14% /
tmpfs                           491M     0  491M   0% /dev/shm
tmpfs                           5.0M     0  5.0M   0% /run/lock
tmpfs                           491M     0  491M   0% /sys/fs/cgroup
tmpfs                            99M     0   99M   0% /run/user/1000

您还需要从 /etc/fstab 防止在引导时重新安装文件。还有 # 如果需要重新使用安装,则使用前一个字符。

结论

本教程到此结束,它教您如何在主机上创建NFS挂载以及如何从各种客户端计算机访问它们。如有任何疑问,请在下面的评论中提出。

Source

Sidebar