Linux NFS 服务配置
1. NFS 服务简介 🌐
NFS 是一种允许客户端通过网络访问远程服务器文件系统的协议。通过 NFS,用户可以像访问本地磁盘一样使用远程文件夹。
适用场景:
- 集中化存储管理
- 数据共享
- 负载均衡
2. NFS 服务原理 ⚙️
NFS 使用 RPC(远程过程调用)机制与客户端通信:
- 服务器端 将文件夹共享出来,指定可访问的主机和权限。
- 客户端 挂载共享文件夹后,可通过网络访问共享的内容。
2.1 工作流程
工作原理描述:
-
客户端发起请求:
- 客户端(如工作站)通过 NFS 协议向服务器请求访问共享的文件系统。
-
NFS 守护进程:
- 服务器端运行 NFS 守护进程(如
nfsd
),负责处理 NFS 请求。 nfsd
负责实际的文件系统操作,读取或写入文件等。
- 服务器端运行 NFS 守护进程(如
-
RPC(远程过程调用):
- NFS 使用 RPC 来处理远程调用。客户端通过
rpcbind
服务查找 NFS 服务的端口号。
- NFS 使用 RPC 来处理远程调用。客户端通过
-
挂载过程:
- 客户端发送挂载请求到服务器的
mountd
守护进程。 mountd
检查/etc/exports
文件中的配置,确定是否允许客户端挂载,并返回一个文件句柄(File Handle),客户端可以使用这个句柄来访问文件系统。
- 客户端发送挂载请求到服务器的
-
文件访问:
- 客户端使用文件句柄直接与
nfsd
交互,进行文件操作(如读、写、创建、删除等)。
- 客户端使用文件句柄直接与
-
文件锁定:
- 当客户端需要锁定文件时,会通过
lockd
守护进程来管理文件锁定,防止多个客户端同时修改文件。
- 当客户端需要锁定文件时,会通过
-
响应:
- 服务器通过 NFS 协议将响应(如文件内容、操作成功或失败的信息)发送回客户端。
工作原理简图:
2.2 NFS 协议版本
- NFSv3:支持异步操作,性能较好。
- NFSv4:更安全,支持状态化操作。
以下是 NFSv4 常用端口号的表格:
服务组件 | NFS 版本 | 协议 | 端口号 | 备注 |
---|---|---|---|---|
Portmapper (rpcbind) | v4 | TCP/UDP | 111 | 用于所有 RPC 服务的端口映射,尽管 NFSv4 使用单一端口,但仍可能需要 rpcbind 辅助服务的注册 |
NFS Daemon (nfsd) | v4 | TCP/UDP | 2049 | NFS 数据传输端口,所有 NFSv4 通信都在这个端口上进行 |
Kerberos | v4 | TCP/UDP | 88 | 如果启用 Kerberos 认证,用于 NFSv4 的安全性服务 |
备注:
- NFSv4 简化了端口使用,所有的 NFS 通信都在单一端口 2049 上进行。
rpcbind
仍然可能用于辅助服务的注册,但 NFSv4 本身不依赖于mountd
的单独端口。- 启用 Kerberos 认证时,需要开放 88 端口以支持 Kerberos 服务。
3. 安装 NFS 服务 🛠️
3.1 安装 NFS 服务端
在服务器上安装 NFS 软件包:
# Debian/Ubuntu
sudo apt update && sudo apt install nfs-kernel-server -y
# CentOS/RHEL
sudo yum install nfs-utils -y