如何在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用户身份写入文件,重新分配所有权或执行任何需要提升特权的任务。
但是有时,客户端需要在主机上执行某些操作,这些操作需要提升的特权,但不需要超级用户访问权限。
第一种方法
这是共享目录的默认方式。这使得客户端上的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)
让我们研究所有这些选项及其含义。
- rw:这使客户端可以在主机目录上进行读写访问。
- sync:此选项强制NFS在回复之前写入更改。这意味着NFS将首先完成写入主机目录,然后响应客户端。这样可以确保反映主机服务器的实际状态,但会减慢文件操作的速度。
- no_subtree_check:此选项禁用子树检查。子树检查是一项操作,其中对于每个NFS请求,服务器必须检查所访问的文件是否存在以及该文件是否在导出的树中。当客户端访问的文件被重命名时,此操作会导致问题。因此,在大多数情况下,最好将其禁用。它对安全性有一些轻微影响,但可以提高可靠性。
- no_root_squash:默认情况下,NFS会将客户端以root用户身份执行的所有操作转换为服务器上的非特权用户。这样做是为了提高安全性。此选项禁用某些共享的行为。
完成后,通过按Ctrl + X并在出现提示时输入Y来关闭文件。
重新启动NFS服务器以应用更改。
$sudo systemctl restart nfs-kernel-server
步骤4-配置主机防火墙
NFS的最佳实践是分别为每个客户端的IP地址启用它,而不是允许从任何地方访问它。
NFS使用端口2049。通过以下命令启用对NFS的访问。
$sudo ufw allow from client_ip to any port nfs
检查状态以进行验证。Advertisements.banner-1{text-align:center; padding-top:10pximportant; padding-bottom:10pximportant; padding-left:0pximportant; padding-right:0pximportant; width:100%important; box-sizing:border-boximportant; background -color:#eeeeeeimportant; border:1px实心#dfdfdf}
$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
您可以在列表底部看到两个已安装的共享。由于这两个文件都是从同一文件系统挂载的,因此它们显示的是完整磁盘使用情况,而不是挂载目录的实际使用情况。Advertisements.large-leaderboard-2{text-align:center; padding-top:10pximportant; padding-bottom:10pximportant; padding-left:0pximportant; padding-right:0pximportant; width:100%important; box-sizing:border-boximportant; background -color:#eeeeeeimportant; border:1px实心#dfdfdf}
要查看每个安装下占用了多少实际空间,请使用以下命令。
$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
将以下行粘贴到文件的底部。每行对应于我们要在引导时挂载的每个目录。Advertisements.leader-1{text-align:center; padding-top:10pximportant; padding-bottom:10pximportant; padding-left:0pximportant; padding-right:0pximportant; width:100%important; box-sizing:border-boximportant; background -color:#eeeeeeimportant; border:1px实心#dfdfdf}
. . .
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并在出现提示时输入Y来保存文件。
重新引导服务器以检查安装。
$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挂载以及如何从不同的客户端计算机访问它们。如果您有任何疑问,请在下面的评测中提出。