当前位置: 首页 > news >正文

Linux 服务器NFS文件共享

背景

项目上用到文件服务,文件存储使用的是服务器本地磁盘,需要在多个服务器上部署文件服务以及在其他服务上面,也需要像读取本地文件一样读取上传上来的文件。

如上图,如果文件服务部署在不同服务器,写入各自的/data/nas目录(目录没有进行共享)下面,并把相关记录记录到数据库,那么就存在一个问题,调用192.168.0.1的文件服务存的文件,只能通过192.168.0.1的文件服务来读取,使用另外两台服务器的文件服务无法读取到,因为它们当前磁盘中文件不存在。

如果使用nfs文件共享的方式,则三台服务器都能获取到全部文件。

实现方式

选取一台服务器作为服务端,例如选取192.168.0.1,将该服务器的/data/nas目录挂载到另外两台服务器上。

NFS 服务器端配置(aarch64)

1. 安装 NFS 服务器软件包
# Debian/Ubuntu (ARM)
sudo apt update
sudo apt install nfs-kernel-server -y# CentOS/RHEL (ARM)
sudo yum install nfs-utils -y
2. 创建共享目录并设置权限
# 这里是创建共享目录示例
sudo mkdir -p /srv/nfs_arm_shared
sudo chown nobody:nogroup /srv/nfs_arm_shared  # 宽松权限(测试环境)
sudo chmod 1777 /srv/nfs_arm_shared            # 粘滞位允许用户管理自己的文件
3. 配置 NFS 导出 (/etc/exports)
# 没有nano 使用vim也是一样的
sudo nano /etc/exports

添加内容(ARM 优化配置):

# aarch64 专用共享目录
/srv/nfs_arm_shared  *(rw,sync,no_subtree_check,no_root_squash)  # 测试环境# 生产环境建议限制IP:
/srv/nfs_arm_shared  192.168.1.0/24(rw,sync,no_wdelay,insecure_locks)
/data/nas  192.168.1.0/24(rw,sync,no_wdelay,insecure_locks)

ARM 架构优化参数:

  • no_wdelay:禁用写延迟(ARM 小核架构优化)
  • insecure_locks:兼容 ARM 客户端的锁机制
  • async:如果数据一致性要求不高可启用(提升 ARM 性能)
4. 应用配置并启动服务
# 重新加载配置
sudo exportfs -arv# 启动服务
sudo systemctl enable --now nfs-server  # Debian/Ubuntu
sudo systemctl enable --now nfs         # CentOS/RHEL# 验证导出
sudo showmount -e localhost
5. ARM 架构防火墙配置
# Ubuntu/Debian (UFW)
sudo ufw allow from 192.168.1.0/24 to any port nfs# CentOS/RHEL (firewalld)
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --reload

NFS 客户端配置 (aarch64)

1. 安装客户端工具
# Debian/Ubuntu ARM
sudo apt install nfs-common -y# CentOS/RHEL ARM
sudo yum install nfs-utils -y
2. 创建挂载点
# 这里的目录可以不一样,但最好是搞成一样的
sudo mkdir -p /srv/nfs_arm_shared
3. 手动挂载测试
# 使用 NFSv4(推荐)
sudo mount -t nfs4 -o vers=4.2,noatime,nodiratime server_ip:/srv/nfs_arm_shared /srv/nfs_arm_shared

ARM 客户端优化参数:

  • noatime/nodiratime:减少元数据写入(延长 ARM 设备存储寿命)
  • rsize=131072,wsize=131072:大块传输(提升 ARM 网络性能)
  • soft:防止 NFS 卡死(针对 ARM 低功耗设备)
4. 永久挂载 (/etc/fstab)
server_ip:/srv/nfs_arm_shared  /srv/nfs_arm_shared  nfs  vers=4.2,noatime,nodiratime,soft,timeo=300,retrans=3  0  0

执行 sudo mount -a 测试配置,mount -a会挂载/etc/fstab里面配置的所有文件系统,然后使用df -h可以查看到挂载信息,如需要取消挂载,可以使用umount /data/nas来取消挂载

aarch64 专属优化

1. 内核参数优化 (/etc/sysctl.conf)
# ARM 架构 NFS 优化
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
sunrpc.tcp_max_slot_table_entries = 128  # 提升 ARM 并发能力

应用:sudo sysctl -p

2. NFS 服务线程优化
# 编辑 /etc/default/nfs-kernel-server (Debian/Ubuntu)
RPCNFSDCOUNT="32"  # 默认8,ARM多核可增加# CentOS/RHEL 编辑 /etc/sysconfig/nfs
RPCNFSDCOUNT=32

重启服务:sudo systemctl restart nfs-server

3. ARM 架构性能监控
# 安装 ARM 性能工具
sudo apt install linux-tools-generic -y  # Ubuntu
sudo yum install perf -y                # CentOS# 监控 NFS 性能
perf stat -e nfs:* -a

🔧 故障排查 (aarch64 专属)

1. ARM 架构常见问题
# 检查 RPC 服务状态
rpcinfo -p# 查看 ARM 架构支持
cat /proc/fs/nfsd/versions  # 应显示 +4.2 +4.1 +4.0# 内核日志检查
dmesg | grep -i nfs
2. 性能问题处理
# 测试 ARM 网络吞吐量
iperf3 -c nfs_server_ip# NFS 性能测试
dd if=/dev/zero of=/mnt/nfs/testfile bs=1M count=1024
3. 安全增强
# 使用 Kerberos (ARM 需验证加密性能)
sudo apt install nfs-kernel-server krb5-config -y
# 在 /etc/exports 添加 sec=krb5p
http://www.dtcms.com/a/485890.html

相关文章:

  • 吃透大数据算法-算法地图(备用)
  • 前端性能优化实战:从指标到落地的全流程指南
  • 120html
  • 四川建设人才官方网站制作app需要学哪些东西专业知识
  • 二叉搜索树 --- 概念 + 模拟
  • 系统安全-主流密码加密算法BCrypt 和PBKDF2详解
  • 【具身智能】具身机器人VLA算法入门及实战(一):具身智能系统及VLA
  • 网站设计_网站建设_手机网站建设免费申请域名的网站
  • (1)认识测试
  • 2025年--Lc188--221. 最大正方形(多维动态规划,矩阵)--Java版
  • 【Redis】缓存读/写操作流程
  • 网站开发的网页模板移动网站建设价格便宜
  • Grafana 数据展示全流程指南:从安装到高级可视化实践
  • 电脑没法ping通某个网段的ip
  • ​rxnfp 仓库介绍(https://rxn4chemistry.github.io/rxnfp)​
  • iOS 26 文件管理实战,多工具组合下的 App 数据访问与系统日志调试方案
  • 工信部网站找回不了密码网站用什么做
  • MaxScale:MySQL读写分离实战指南
  • 基于Vue的体检中心管理系统的开发bk1825s9(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • RabbitMQ的概述
  • 使用PyTorch实现图像分类任务的全流程详解
  • JAVA代泊车接机送机服务代客泊车系统源码支持小程序+APP+H5
  • 吃谷机主题商城小程序的界面功能设计
  • 创建网站超市网络免费推广平台
  • 【征文计划】码上分享:基于 Rokid CXR-M SDK 构建「AI远程协作助手」实战全记录
  • PortSwigger靶场之CSRF where token is tied to non-session cookie通关秘籍
  • laya报错:GET http://xxx/bin/%22%22 404(Not Found)
  • 兴义市住房和城乡建设局网站莲花网站
  • 标题:Linux 系统中的“保险库管理员”:深入浅出理解 /etc/shadow 文件
  • CSS3》》 transform、transition、translate、animation 区别