如何在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挂载以及如何从各种客户端计算机访问它们。如有任何疑问,请在下面的评论中提出。