QNAP TS-2477XU-RP NFS共享无法正常挂载问题求助
我手头的设备是TS-2477XU-RP,配了32GB内存和AMD Ryzen 7 3700X 8核处理器,几天前刚重装过固件,现在用的是QTS 5.1.5.2679版本。网络连接很简单:
┌─────────────┐ │192.168.7.100│ Head (Fedora Server 38) └──────┬──────┘ │ ┌──────▼──────┐ │192.168.7.90 │ Switch └──────┬──────┘ │ ┌──────▼──────┐ │192.168.7.80 │ NAS (TS-2477XU-RP) └─────────────┘
NAS没有外网访问权限,就只用来和Head机器共享文件。目前从Head或者通过Head代理访问NAS的Web管理页面(https://192.168.7.80/)、SSH都没问题,但NFS共享死活挂不上,折腾好久了,来求助各位!
存储卷配置
我用了10块20TB硬盘,做了Raid 6的存储池(总容量145TB),里面只创建了一个厚卷。
NFS服务配置
我是按照官方手册第440页的步骤开启NFS共享的,当前配置如下:
控制面板 → 网络与文件服务 → Win/Mac/NFS/WebDAV → NFS服务:
- ✅ 启用NFS服务
- ✅ NFSv2和NFSv3,✅ NFSv4,❌ NFSv4.1
- 高级选项:“使用固定NFS服务端口”、“启用manage-gids”、“强制客户端umask”都没勾选
控制面板 → 权限 → 共享文件夹,选择
SharedFolder:- 基本属性:文件夹名SharedFolder,路径
/SharedFolder - NFS主机访问权限:
- ✅ 访问权限
- ✅ sync (wdelay)
- ❌ secure
- 允许的IP/域名:
192.168.7.0/24,权限sys、读写、无用户映射
- 基本属性:文件夹名SharedFolder,路径
从资源监控里看NFS服务是正常运行的,有rpc.statd、rpc.rquotad、rpc.mountd、rpc.idmapd、portmap、nfsd_logd这6个服务,还有大概50个nfsd进程在跑。
用户配置
我在Head和NAS上都创建了同一个用户名xbello,UID和GID都是1000,NAS上这个用户属于Admins组。
挂载尝试
我在Head上的/mnt/STORE目录已经建好,尝试挂载的结果如下:
首先是默认NFS版本:
[HEAD] # mount -t nfs 192.168.7.80:/SharedFolder /mnt/STORE -v mount.nfs: timeout set for Thu Mar 21 10:24:16 2024 mount.nfs: trying text-based options 'vers=4.2,addr=192.168.7.80,clientaddr=192.168.7.100' mount.nfs: mount(2): Connection timed out mount.nfs: Connection timed out for 192.168.7.80:/SharedFolder on /mnt/STORE
指定NFSv3尝试:
[HEAD] # mount -t nfs 192.168.7.80:/SharedFolder /mnt/STORE -v -o nfsvers=3 mount.nfs: timeout set for Thu Mar 21 10:32:17 2024 mount.nfs: trying text-based options 'nfsvers=3,addr=192.168.7.80' mount.nfs: prog 100003, trying vers=3, prot=6 mount.nfs: trying 192.168.7.80 prog 100003 vers 3 prot TCP port 2049 mount.nfs: prog 100005, trying vers=3, prot=17 mount.nfs: trying 192.168.7.80 prog 100005 vers 3 prot UDP port 42945 (...) mount.nfs: mount(2): Connection timed out mount.nfs: Connection timed out for 192.168.7.80:/SharedFolder on /mnt/STORE
排查过程
我自己做了一些排查,结果如下:
- NAS本地挂载测试:可以成功挂载
192.168.7.80:/SharedFolder到/share/homes/xbello/tmp[NAS] $ sudo mount -t nfs 192.168.7.80:/SharedFolder /share/homes/xbello/tmp - Head端查看共享列表:能正常看到NAS的共享目录
[HEAD] $ showmount -e 192.168.7.80 Export list for 192.168.7.80: /SharedFolder 192.168.7.0/24 - NAS端export配置:查看
/etc/exports内容如下,配置看起来没问题[NAS] $ cat /etc/exports "/share/CACHEDEV1_DATA/SharedFolder" 192.168.7.0/24(sec=sys,rw,sync,wdelay,insecure,no_subtree_check,no_root_squash,fsid=a-long-hash) "/share/NFSv=4" *(no_subtree_check,no_root_squash,insecure,fsid=0) "/share/NFSv=4/SharedFolder" 192.168.7.0/24(sec=sys,rw,sync,wdelay,insecure,nohide,no_subtree_check,no_root_squash,fsid=another-long-hash) - SELinux排查:临时关闭SELinux后尝试挂载,还是超时失败
[HEAD] # setenforce 0 [HEAD] # mount -t nfs 192.168.7.80:/SharedFolder /mnt/NAS -v (Eventually times out) - 防火墙/端口排查:用nmap扫NAS端口,NFS相关的2049、111都开放了,还有几个随机端口(33217、44137等)也是开放的,这些端口随NFS服务重启会变化
[HEAD] # nmap -p- 192.168.7.80 Starting Nmap 7.93 ( https://nmap.org ) at 2024-03-21 10:34 CET Nmap scan report for 192.168.7.80 Host is up (0.00017s latency). Not shown: 65524 closed tcp ports (conn-refused) PORT STATE SERVICE 22/tcp open ssh 111/tcp open rpcbind 443/tcp open https 2049/tcp open nfs 8080/tcp open http-proxy 33217/tcp open unknown 44137/tcp open unknown 46785/tcp open unknown 49743/tcp open unknown 59099/tcp open unknown 60962/tcp open unknown Nmap done: 1 IP address (1 host up) scanned in 14.58 seconds - 停掉NFS服务测试:在NAS上停掉NFS服务后,Head端挂载直接报错连接拒绝,说明之前的超时不是服务没开的问题
[NAS] $ sudo /etc/init.d/nfs stop Shutting down NFS services: OK [HEAD] # mount -t nfs 192.168.7.80:/SharedFolder /mnt/STORE -v -o nfsvers=3 mount.nfs: timeout set for Thu Mar 21 12:21:40 2024 mount.nfs: trying text-based options 'nfsvers=3,addr=192.168.7.80' mount.nfs: prog 100003, trying vers=3, prot=6 mount.nfs: portmap query retrying: RPC: Unable to receive mount.nfs: prog 100003, trying vers=3, prot=17 mount.nfs: portmap query failed: RPC: Unable to receive - Connection refused
替代方案现状
我也考虑过换TrueNAS系统,但这个机器没找到插USB启动的地方,也没法接显示器,不确定有没有IPMI,暂时没法折腾。目前能用的只有SSHFS,但QNAP的SSH有个坑:就算修改/etc/ssh/sshd_config里的AllowUsers添加普通用户,这个用户还是没法SSH登录,必须把它加到Admins组才行,这点很不方便。
有没有大佬遇到过类似的问题?求支招!
备注:内容来源于stack exchange,提问作者xbello

