网络文件系统(NFS)是一种分布式文件系统协议,它允许用户通过网络访问文件,就像访问本地磁盘一样。由Sun Microsystems于1984年开发的NFS提供了一种通过网络与他人共享目录和文件的方法。NFS广泛应用于UNIX和Linux环境,但也被其他操作系统(如Windows)所支持。
本文介绍了能够轻松挂载NFS导出的基本服务器配置。此外,由于NFS(无Kerberos)的授权选项有限,本文给出了一些如何通过配置选项提高NFS服务器的安全性和可访问性的提示。
NFS基本结构 |
NFS服务器/客户端结构
NFS体系结构基于服务器/客户机模型,其中NFS服务器托管文件系统,并使它们可供NFS客户机使用。NFS协议的实际版本为NFS v4 (RFC 7530)。
NFS服务器负责通过网络与客户端共享其目录和文件。服务器控制对其文件系统的访问,管理权限,并处理客户端对数据的请求。
NFS服务器的关键组件包括:
- 导出目录:可供客户端使用的目录。
- 访问控制:控制哪些客户端可以访问哪些目录的权限集。
- NFS守护进程:管理来自客户端的文件系统请求的后台进程(例如 nfs-server.service )。
NFS客户端
NFS客户端是指从NFS服务器访问共享目录的部分。客户机在本地挂载远程文件系统,允许用户与它们交互,就像它们在本地机器上一样。
NFS客户端的关键任务包括:
- 挂载远程目录: dietpi-drive_manager (Linux操作系统 mount )等命令用于连接NFS服务器并访问共享目录。
- 与挂载的文件系统交互:在挂载的目录上执行文件操作(如读、写、删除)。
NFS服务器安装
NFS服务器的安装通过安装 nfs-kernel-server 完成,可以通过菜单导航或直接从命令行安装:
这将安装NFS服务器(Debian软件包 nfs-kernel-server ),生成一个示例NFS导出配置文件 /etc/exports.d/dietpi.exports 并启动服务器。
默认的exports文件包含 /mnt/dietpi_userdata ,没有任何客户端限制:
root@NFS-server:~# cat /etc/exports.d/dietpi.exports
/mnt/dietpi_userdata *(rw,async,no_root_squash,crossmnt,no_subtree_check)
/ mnt / dietpi_userdata * (rw,异步、no_root_squash crossmnt, no_subtree_check)
(注:直到DietPi v9.8,导出文件有选项 fsid=0 。这导致 dietpi-drive_manager 挂载过程出现问题:当时只使用NFS v3(见下文)。在NFS v4中使用 fsid=0 只能通过手动编辑 /etc/fstab 文件来实现。
使用以下命令启动服务器
systemctl status nfs-server
root@NFS-server:~# systemctl status nfs-server
● nfs-server.service - NFS server and services
Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; preset: enabled)
Drop-In: /run/systemd/generator/nfs-server.service.d
└─order-with-mounts.conf
Active: active (exited) since Fri 2024-09-13 02:51:45 BST; 10min ago
Process: 473 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=0/SUCCESS)
Process: 475 ExecStart=/usr/sbin/rpc.nfsd (code=exited, status=0/SUCCESS)
Main PID: 475 (code=exited, status=0/SUCCESS)
CPU: 4ms
Sep 13 02:51:45 NFS-server systemd[1]: Starting nfs-server.service - NFS server and services...
Sep 13 02:51:45 NFS-server systemd[1]: Finished nfs-server.service - NFS server and services.
Active: active
部分表示服务器已经启动并运行。
NFS客户端安装
通常,用户不需要显式安装NFS客户端,因为如果通过安装nfs挂载NFS共享,则会自动安装NFS客户端。
这将安装NFS客户机(Debian软件包 nfs-common ),而不需要任何进一步的NFS挂载操作。
安装完成后检查状态
systemctl status nfs-client.target
root@NFS-client:~# systemctl status nfs-client.target ● nfs-client.target - NFS client services Loaded: loaded (/lib/systemd/system/nfs-client.target; enabled; preset: enabled) Active: active since Fri 2024-10-25 16:42:11 BST; 20min ago Oct 25 16:42:11 NFS-client systemd[1]: Reached target nfs-client.target - NFS client services.
评论
发表评论