NFS是一种基于TCP/IP 传输的网络文件系统协议。NFS网络文件系统服务可以将远程Linux系统上的文件共享资源挂载到本地主机的目录上,客户机可以像访问本地目录一样访问远程服务器中的共享资源
nfs端口:2049 RPC端口:111
安装服务端软件
apt install nfs-kernel-server
创建共享文件夹
mkdir /mnt/nfs
chmod 777 /mnt/nfs
修改配置文件
vim /etc/exports
末尾加上
/mnt/nfs (允许访问的ip)/24(rw,sync,no_root_squash)
| 关键字 | rw | ro | root_squash | no_root_squash | all_squash | sync | async |
| 说明 | 读写权限 | 只读权限 | 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户 | 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 | 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户 | 同时将数据写入到内存与硬盘中,保证不丢失数据。 同步,效率低,但可以保证数据的一致性 | 优先将数据保存到内存,必要时才写入磁盘,效率高,但有丢失数据的风险。 异步 |
重启服务
systemctl restart nfs-kernel-server.service
二、安装客户端
安装客户端软件
apt install nfs-common
创建挂载到本地的目录文件夹
mkdir /mnt/nfs
检查连接是否正常
showmount -e (服务端ip)
有以下提示即为正常,否则检查防火墙、服务端是否正常
Export list for (服务端ip):
(服务端目录) (服务端IP)
挂载目录
1、命令挂载
mount -t nfs (服务端IP):(共享名称) (本地挂载路径)
mount -t nfs -o uid=1000,gid=1000,rw,hard,intr (服务端IP):(共享名称) (本地挂载路径) #nfsv4已弃用
编辑/etc/idmapd.conf文件,修改
[General]
Domain = yourdomain.local # 与NFS服务器相同的域名
[Mapping]
Nobody-User = nobody #挂载的用户
Nobody-Group = nogroup #挂载的用户组
mount -t nfs -o rw,hard (服务端IP):(共享名称) (本地挂载路径)
| 参数 | 含义 |
|---|---|
-t nfs | 指定文件系统类型为 NFS |
uid=1000 | 客户端文件所有者:强制显示为本地 UID 1000 的用户所有 |
gid=1000 | 客户端文件所属组:强制显示为本地 GID 1000 的组所有 |
rw | 读写模式:允许读写操作(默认值,可省略) |
hard | 硬挂载:服务器无响应时无限重试(保持数据一致性) |
intr | 允许中断:在硬挂载时可中断卡住的进程(如 Ctrl+C) |
常用 NFS 挂载选项全集(-o 参数)
1. 基本控制
| 选项 | 含义 |
|---|---|
ro | 只读挂载 |
rw | 读写挂载(默认) |
soft | 软挂载:请求超时返回错误(可能导致数据损坏) |
hard | 硬挂载:无限重试直到服务器恢复(推荐) |
intr | 允许中断卡住的 NFS 请求(需配合 hard 使用) |
bg | 后台挂载:失败后在后台重试 |
fg | 前台挂载(默认) |
2. 用户映射
| 选项 | 含义 |
|---|---|
uid=N | 客户端显示的文件所有者 UID |
gid=N | 客户端显示的文件所属组 GID |
noacl | 禁用 ACL 支持 |
context=... | SELinux 安全上下文(仅 v4) |
3. 性能优化
| 选项 | 含义 |
|---|---|
rsize=N | 读缓冲区大小(字节),建议 8192-32768 |
wsize=N | 写缓冲区大小(字节),建议 8192-32768 |
timeo=N | 请求超时时间(0.1秒单位),默认 600(60秒) |
retrans=N | 重试次数(默认 3 次) |
noatime | 不更新文件访问时间 |
nodiratime | 不更新目录访问时间 |
4. 协议与连接
| 选项 | 含义 |
|---|---|
tcp | 强制使用 TCP 协议(推荐) |
udp | 使用 UDP 协议(已淘汰) |
vers=3 | 强制使用 NFS v3 |
vers=4 | 强制使用 NFS v4(推荐) |
port=N | 指定服务器端口(默认 2049) |
noresvport | 使用非特权端口(<1024)连接 |
5. 文件锁与缓存
| 选项 | 含义 |
|---|---|
lock | 启用文件锁(默认) |
nolock | 禁用文件锁(用于旧服务器) |
ac / noac | 启用/禁用属性缓存 |
lookupcache=all | 缓存所有目录查找结果 |
lookupcache=pos | 仅缓存成功查找结果(默认) |
6. 安全相关
| 选项 | 含义 |
|---|---|
sec=sys | 使用 UNIX UID/GID 认证(默认) |
sec=krb5 | Kerberos v5 认证 |
sec=krb5i | Kerberos + 完整性校验 |
sec=krb5p | Kerberos + 加密传输 |
2、永久挂载
vim /etc/fstab
(服务端IP):/mnt/nfs /nfs nfs defaults 0 0