今天简单回顾一下NFS吧

0 阅读4分钟

什么是NFS,它有什么用?

NFS(Network File System,网络文件系统)是一款基于TCP/IP协议的网络文件共享协议,核心作用是让客户端通过网络将服务端的文件系统“挂载”到本地,实现像访问本地文件一样实时访问远程资源。它诞生于UNIX系统,是Linux集群环境中文件共享的常用方案。

它的核心用途包括:

  • 集群文件共享:多台客户端(如Web集群、应用集群)共享同一套资源(静态文件、配置文件、日志目录),确保数据一致性(如多Web节点共用静态资源目录)。
  • 实时数据访问:客户端挂载后实时读写服务端文件,无需手动同步,适合需要多节点协同操作同一文件的场景(如分布式任务日志存储)。
  • 存储扩容:客户端本地存储不足时,挂载远程NFS服务器目录,实现存储空间扩容,无需额外配置本地磁盘。
  • 简化运维管理:仅需在NFS服务端维护文件,所有客户端同步访问最新版本,避免在多节点重复部署文件。

它的优势很明显:

  • 实时性强:客户端挂载后直接访问远程文件,无同步延迟,适合对数据实时性要求高的场景。
  • 使用透明:客户端操作NFS目录与本地目录完全一致,无需学习特殊命令,上手成本低。
  • 轻量化部署:服务端配置简单,客户端仅需挂载即可使用,无需复杂依赖。
  • 跨平台兼容:支持Linux、UNIX、Windows(需安装客户端),适配主流服务器架构。

怎么安装NFS?(CentOS 7)

NFS依赖“NFS服务端”和“RPC服务”(远程过程调用,负责解析客户端请求),需同时安装并启动,步骤如下:

1. 服务端安装与配置

# 安装NFS服务端和RPC服务(rpcbind)
yum install -y nfs-utils rpcbind

# 1. 创建共享目录(示例:/data/nfs_share)
mkdir -p /data/nfs_share
chmod 777 /data/nfs_share # 赋予权限,避免客户端访问权限不足

# 2. 配置共享规则(核心配置文件:/etc/exports)
# 格式:共享目录  允许访问的客户端网段(权限参数)
echo "/data/nfs_share 192.168.1.0/24(rw,sync,no_root_squash)" >> /etc/exports

# 权限参数说明:
# rw:可读可写;ro:只读
# sync:同步写入(数据实时写入磁盘,安全稳定);
# async:异步写入(性能高,可能丢数据)
# no_root_squash:客户端用root用户访问时,保留root权限;
# root_squash:映射为nfsnobody用户

# 3. 重载配置(无需重启服务,使新规则生效)
exportfs -r

# 4. 启动服务(先启动rpcbind,再启动nfs)
systemctl start rpcbind
systemctl start nfs-server
systemctl enable rpcbind # 开机自启
systemctl enable nfs-server

# 验证共享是否生效
showmount -e localhost # 输出共享目录和允许的网段即成功

2. 客户端安装与挂载

# 安装NFS客户端(仅需安装nfs-utils)
yum install -y nfs-utils

# 1. 查看服务端共享资源(替换为NFS服务端IP)
showmount -e 192.168.1.100

# 2. 创建本地挂载点
mkdir -p /data/local_nfs

# 3. 临时挂载(重启后失效)
mount -t nfs 192.168.1.100:/data/nfs_share /data/local_nfs

# 4. 永久挂载(写入/etc/fstab,重启自动挂载)
echo "192.168.1.100:/data/nfs_share /data/local_nfs nfs defaults 0 0" >> /etc/fstab

# 验证挂载是否成功
df -h # 查看挂载信息,出现192.168.1.100:/data/nfs_share即生效

NFS核心配置与常用命令

1. 核心配置文件(/etc/exports)

配置格式灵活,支持多客户端、多权限配置,示例:

# 1. 允许单个IP访问,只读权限
/data/nfs_share 192.168.1.101(ro,sync)

# 2. 允许多个网段,不同权限
/data/nfs_share 192.168.1.0/24(rw,sync) 10.0.0.0/8(ro,sync)

# 3. 允许所有客户端访问(不推荐生产环境)
/data/nfs_share *(rw,sync,root_squash)

2. 常用管理命令

# 服务端命令
exportfs -r # 重载共享配置
exportfs -v # 查看详细共享规则
systemctl restart nfs-server # 重启NFS服务
showmount -e localhost # 查看本地共享资源

# 客户端命令
mount -t nfs 服务端IP:共享目录 本地挂载点 # 临时挂载
umount /data/local_nfs # 卸载挂载(需确保无进程占用目录)
df -h # 查看挂载状态
mount -a # 重载/etc/fstab,使永久挂载生效

先写这么多,后面有时间再多写点干货🤭。