nfs 知识点总结

一、NFS 基础概念

1. 定义

NFS(Network File System,网络文件系统),基于 TCP/IP 协议,由 Sun 公司开发,作用: 把远端服务器的目录挂载到本地客户端,客户端使用远程文件和本地硬盘文件体验完全一致,属于文件级共享存储

2. 核心特点

  1. 跨 Linux/Unix 系统共享文件,Windows 需额外客户端软件;
  2. 服务端管控权限、数据存储,客户端只做挂载访问;
  3. 默认端口随机,依赖 RPC 服务协调端口映射;
  4. 适合内网局域网使用,公网不安全;
  5. 无加密、原生权限管控偏弱,常结合防火墙 + 内网使用。

3. 工作架构(C/S 架构)

  • NFS 服务端:存放共享数据,导出共享目录
  • NFS 客户端:挂载服务端共享目录,读写文件

二、依赖核心组件:RPC(远程过程调用)

NFS 本身不会固定监听端口,依靠 RPC 来分配端口:

  1. rpcbind(CentOS7+/Ubuntu 新版):旧版叫 portmap
    • 默认端口:111(TCP/UDP)
    • 作用:统一管理 NFS 各模块端口,客户端先连 111 查询 NFS 工作端口,再建立数据传输;
  2. NFS 启动顺序:先启动 rpcbind → 再启动 nfs 服务。

NFS 主要进程(服务端)

表格

进程作用
nfsdNFS 主服务进程,负责文件读写请求
mountd挂载守护进程,校验客户端挂载权限
rpc.lockd文件锁机制,防止多客户端同时修改同一文件冲突
rpc.statd状态监控,服务器宕机后恢复文件锁

三、NFS 配置文件与共享语法

1. 主配置文件

路径:/etc/exports 语法格式:

共享目录 客户端地址(权限参数)

示例:

/data/nfs  192.168.1.0/24(rw,sync,no_root_squash)

2. 客户端地址写法

  • 单个 IP:192.168.1.100
  • 网段:192.168.1.0/24
  • 所有主机:*

3. 常用权限参数(重点)

读写权限
  • rw:可读可写
  • ro:只读
同步 / 异步
  • sync:同步写入,数据写完才返回成功,安全、速度慢(推荐生产)
  • async:异步写入,先放缓存即刻返回,速度快、断电易丢数据
root 用户映射(最关键权限)
  1. root_squash(默认开启) 客户端 root 用户访问时,会被压缩映射为服务端匿名用户nfsnobody防止客户端 root 篡改服务器文件,安全默认配置
  2. no_root_squash 客户端 root 保持 root 权限,权限极大,内网信任环境才使用,生产谨慎开启
匿名用户设定
  • all_squash:所有客户端普通用户都压缩为匿名用户 nfsnobody
  • anonuid=xxx/anongid=xxx:自定义匿名用户 UID/GID
其他参数
  • no_subtree_check:关闭子树校验,挂载目录包含子目录时提升兼容性
  • insecure:允许客户端使用大于 1024 的端口挂载

四、NFS 服务端部署流程(CentOS7/8/9)

  1. 安装软件
yum install nfs-utils rpcbind -y
  1. 创建共享目录,设置权限
mkdir -p /data/nfs
chmod 755 /data/nfs
# 如需写入权限:修改属主为nfsnobody
chown nfsnobody:nfsnobody /data/nfs
  1. 编辑 /etc/exports 写入共享规则
  2. 启动服务(顺序不能颠倒)
systemctl start rpcbind
systemctl start nfs-server
# 开机自启
systemctl enable rpcbind nfs-server
  1. 重载配置(修改 exports 后无需重启服务)

-r reexport

exportfs -r

五、常用查看命令

服务端命令

  1. exportfs -v:查看本机所有 NFS 共享列表及参数
  2. showmount -e 本机IP:对外展示共享目录 -e export
  3. exportfs -au:全部取消共享
  4. exportfs -av:重新发布所有共享

客户端命令

  1. showmount -e NFS服务端IP:查询服务器可挂载目录 示例:showmount -e 192.168.1.20

六、客户端挂载 NFS

1. 临时挂载(重启失效)

mount -t nfs 服务端IP:/共享目录 本地挂载点
# 示例
mount -t nfs 192.168.1.20:/data/nfs /mnt/nfs

指定参数挂载:

mount -t nfs -o sync,ro 192.168.1.20:/data/nfs /mnt/nfs

2. 永久挂载(开机自动挂载)

编辑 /etc/fstab 格式:

服务端IP:/共享目录  本地挂载点  nfs  挂载参数  0 0

示例:

192.168.1.20:/data/nfs  /mnt/nfs  nfs  defaults,sync  0 0

生效:mount -a

3. 卸载挂载

umount /mnt/nfs
# 繁忙无法卸载强制卸载
umount -lf /mnt/nfs

七、NFS 权限原理(极易踩坑)

NFS 权限由两层共同决定

  1. /etc/exports 里的共享权限(rw/ro)
  2. 服务端共享目录本身的本地文件系统权限(rwx、属主属组)

举例: exports 设置 rw,但是服务器 /data/nfs 权限 700,属主 root;客户端普通用户依然无法写入; 原因:客户端用户映射成 nfsnobody,没有目录写入权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值