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

如上图,如果文件服务部署在不同服务器,写入各自的/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
到此这篇关于linux服务器nfs文件共享的实现方式的文章就介绍到这了,更多相关linux nfs文件共享内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论