在本教程中,我们将讨论如何在 Ubuntu 20.04 服务器上设置 NFS 服务器。 网络文件系统 (NFS) 是一种常用的基于文件的存储系统,它允许远程系统通过计算机网络访问文件并与它们进行交互,就像它们是在本地安装一样。 这使系统管理员能够将资源分组到网络上的中央服务器上,以便于共享。
在 Ubuntu 20.04 上设置 NFS 服务器
在 Ubuntu 20.04 上安装 NFS 服务器
为了在 Ubuntu 20.04 上设置 NFS 服务器,您需要安装 NFS 内核服务器包,这是当前推荐用于 Linux 的 NFS 服务器,具有 NFSv3 和 NFSv4 等功能,通过 GSS 支持 Kerberos 等等。
NFS 在服务器-客户端架构中运行。 因此,请在 NFS 服务器系统上安装 NFS 内核服务器。
apt update
apt install nfs-kernel-server
在 Ubuntu 20.04 上设置 NFS 服务器
接下来,可以选择更新 NFS 域 /etc/idmapd.conf
配置文件。 如果未指定,这将默认设置为您系统的 DNS 域。 这可能会导致不同 DNS 域中的其他系统无法挂载共享。
例如,我系统的域是;
hostname -d
kifarunix-demo.com
因此,编辑 /etc/idmapd.conf
文件并取消注释第 6 行并设置值如果 Domain
到正确的域名。
sed -i "s/# Domain = localdomain/Domain = $(hostname -d)/" /etc/idmapd.conf
验证;
grep Domain /etc/idmapd.conf
样本输出;
Domain = kifarunix-demo.com
在 Ubuntu 20.04 上设置 NFS 导出
NFS 导出是 NFS 服务器上可供 NFS 客户端共享或访问的文件系统或目录。
在本教程中,我们将创建两个目录/NFS 共享。 公共目录和私有目录。
mkdir /media/{public,private}
接下来,编辑 /etc/s
配置文件并将上述目录配置为 NFS 共享。
要设置 NFS 共享:
- 指定要共享的目录
- 要共享的系统的 IP 地址或域名(如果您有 DNS 服务器)
- 与共享目录关联的选项。
NFS 共享文件中的格式 /etc/出口 应该看起来像:
nfshare nfsclient_IP/network/domain [sharingoptions]
vim /etc/s
在我们的设置中,通用目录与任何人共享,私有目录与特定客户端共享。
在这种情况下,下面是我们的 NFS 导出配置,如下所示;
/media/public *(ro,sync,root_squash,subtree_check)
/media/private 192.168.59.21(rw,sync,no_root_squash,no_subtree_check)
所以,让我们把上面的几行放在 /etc/s
.
echo -e "/media/public *(ro,sync,root_squash,subtree_check)n/media/private 192.168.59.21(rw,sync,no_root_squash,no_subtree_check)" >> /etc/s
上面使用的 NFS 共享挂载选项是;
ro
以只读权限在客户端上挂载目录。rw
在具有读写权限的客户端上挂载共享目录。sync
确保对共享目录所做的任何更改在服务器和客户端之间同步。root_squash
将远程 root 用户权限映射到 NFS 服务器上的非特权用户。no_root_squash
允许远程用户在 NFS 服务器上以 root 用户的完全权限访问共享。subtree_check
确保在导出目录而不是块设备的情况下,NFS 服务器必须为每个请求检查共享目录中文件的存在。no_subtree_check
指定 NFS 服务器不应为每个请求验证导出中文件的可用性。
咨询 man 5 s
了解更多 NFS 导出挂载选项。
在 Ubuntu 20.04 上重启 NFS 服务器;
systemctl restart nfs-server
导出 NFS 共享
接下来,运行以下命令导出共享目录。
fs -arvf
样本输出;
ing 192.168.59.21:/media/private ing *:/media/public
有关更多信息 fs
上面使用的选项, man fs
.
在防火墙上允许 NFS 共享访问
如果防火墙在 Ubuntu 20.04 NFS 服务器上运行,则允许从客户端访问 nfs 共享。
例如,允许特定 IP/网络访问上述共享;
ufw allow from 192.168.59.0/24 to any port nfs
nfs 实际上打开了 2049 端口。
检查:
rpcinfo -p | grep nfs
接下来,由于我们使用的是基于端口的防火墙,您需要为 NFS rpc.mountd 配置一个固定端口(更多关于 SecuringNFS)。 它默认使用随机端口,使访问控制有点困难。
例如,假设我们希望它使用端口 50001
,然后编辑文件,/etc/default/nfs-kernel-server
, 并替换将端口添加到行中;
RPCMOUNTDOPTS="--manage-gids"
看起来像这样;
RPCMOUNTDOPTS="--manage-gids --port 50001"
Save 并在完成编辑后退出文件。
在防火墙上打开RPC挂载端口;
ufw allow from 192.168.59.0/24 to any port 50001
也打开 NFS portmapper 端口;
ufw allow from 192.168.59.0/24 to any port 111
重启NFS服务器;
systemctl restart nfs-server
配置 NFS 客户端
安装 NFS 客户端软件包
在充当 NFS 客户端的系统上,安装 NFS 客户端软件包:
sudo apt install nfs-common -y
同样,更新 NFS 共享域:
sed -i "s/# Domain = localdomain/Domain = $(hostname -d)/" /etc/idmapd.conf
创建一个目录来挂载远程 NFS 共享
要访问 NFS 客户端上的远程共享目录,您需要在 NFS 客户端上挂载这些目录。
mkdir -p /nfs-shares/{public,private}
列出 NFS 共享
运行以下命令,显示 IP 地址为 192.168.59.14 的 NFS 服务器的挂载信息。
showmount -e 192.168.59.14
list for 192.168.59.14: /media/public * /media/private 192.168.59.21
在 NFS 客户端上挂载 NFS 共享
在 NFS 客户端上挂载导出,如下所示;
sudo mount -t nfs 192.168.59.14:/media/public /nfs-shares/public
sudo mount -t nfs 192.168.59.14:media/private /nfs-shares/private/
使用以下命令验证安装;
df -hT -P /nfs-shares/private/ /nfs-shares/public/
Filesystem Type Size Used Avail Use% Mounted on 192.168.59.14:/media/private nfs4 14G 4.4G 8.7G 34% /nfs-shares/private 192.168.59.14:/media/public nfs4 14G 4.4G 8.7G 34% /nfs-shares/public
如您所见,两个共享都已挂载。
为了最终确定这一点,让我们在 NFS 服务器上创建一些文件并验证这些文件是否对客户端可用。
touch /media/public/public-files.txt touch /media/private/private-files.txt
在客户端:
ls -1 /nfs-shares/public/ /nfs-shares/private/
/nfs-shares/private/: private-files.txt /nfs-shares/public/: public-files.txt
这标志着我们关于如何在 Ubuntu 20.04 上设置 NFS 服务器的教程的结束
在 Debian 10 上设置 Samba 文件服务器的快速方法
如何在 Linux 和 Windows 系统上访问 Samba 共享
在 Ubuntu 20.04 上设置软件 RAID