我昨天通过 ai 帮我恢复了,我看你的问题现象跟我很像,发出来你看看有没有用
针对“硬盘无法自动挂载、Web界面提示数据库错误、网络不通”的典型故障。
飞牛NAS (fnOS) 深度修复救砖教程
适用场景:
- 开机后搜不到IP或Ping不通外网。
- Web界面登录报错:“数据库读写错误”或“无法连接到服务器”。
- SSH可以登录,但执行
df -h 发现数据盘(/vol1等)全丢了。
前期准备:登录 SSH
使用 Termius、Xshell 或 macOS 终端,输入 ssh root@你的NAS-IP 登录。
注意: 如果提示 sudo -i,请输入密码进入真正的 root 权限(如下图开头所示)。
第一步:恢复网络(让NAS能上网)
由于系统没挂载数据盘,配置丢失,DNS通常是坏的。执行以下命令手动修复:
echo "nameserver 223.5.5.5" > /etc/resolv.conf
# 尝试测试(如果不报错说明通了)
ping -c 2 baidu.com
第二步:识别并挂载硬盘
这是最关键的一步。我们要把硬盘找回来,并挂载到正确的“坑”里。
1. 激活硬盘卷
vgchange -ay
2. 确认对应关系(非常重要!)
输入 lsblk 查看你的磁盘分布。根据文后附图,自己梳理一下对应关系:
- NVMe分区 (md127):容量约 867G,这是系统数据盘,必须挂载到
/vol1(它包含数据库和系统配置)。
- SATA RAID1 (md126):容量约 931G,挂载到
/vol3。
- SATA 单盘 (md125):容量约 3.6T,挂载到
/vol4。
- 我是通过先挂载了/vol1因为我知道我的docker信息都在这里面,挂载后docker就可以启动了 然后通过查看docker内自己的应用来看其他盘那个是vol3和4 或者其他的
- 通过执行 ls / 可以查看系统内挂载过的vol数字 例如我的:
root@zfnOS:~# ls /
bin dev fs lib lost+found mnt proc run share swapfile tmp var vol01 vol1 vol4
boot etc home lib64 media opt root sbin srv sys usr vol00 vol02 vol3
3. 执行挂载命令
请按顺序一行行执行(如果提示目录不存在,就用ls /看下以前挂载过的数字):
mount /dev/mapper/trim_d7cd9bad_c035_4e87_bf88_a88c436ce923-0 /vol1
mount /dev/mapper/trim_b330ffaf_2612_4807_9cfa_3fbeef803ced-0 /vol3
mount /dev/mapper/trim_8aecd616_6be6_4b34_b554_211fcdfc33a1-0 /vol4
检查结果: 输入 df -h。如果你看到这几个盘都出来了,说明硬盘救回来了。
第三步:修复系统数据库
硬盘挂载后,Web界面还是报错,是因为数据库权限文件在崩溃中损坏变空了。
看看系统原生服务里是否有数据库:
systemctl list-units --type=service | grep -iE "postgres|sql|db"
root@zfnOS:~# systemctl list-units --type=service | grep -iE "postgres|sql|db"
dbus.service loaded active running D-Bus System Message Bus
ovsdb-server.service loaded active running Open vSwitch Database Unit
postgresql.service loaded active exited PostgreSQL RDBMS
● postgresql@15-main.service loaded failed failed PostgreSQL Cluster 15-main
postgresql@15-main.service 状态为 failed
为什么启动失败。请执行:
journalctl -u postgresql@15-main.service -n 50 --no-pager
root@zfnOS:# journalctl -u postgresql@15-main.service -n 50 --no-pager
Jan 27 19:56:40 zfnOS postgresql@15-main[1344]: 2026-01-27 19:56:40.648 CST [1389] LOG: configuration file "/etc/postgresql/15/main/pg_hba.conf" contains no entries
Jan 27 19:56:40 zfnOS postgresql@15-main[1344]: 2026-01-27 19:56:40.649 CST [1389] FATAL: could not load pg_hba.conf
Jan 27 19:56:40 zfnOS postgresql@15-main[1344]: 2026-01-27 19:56:40.666 CST [1389] LOG: database system is shut down
Jan 27 19:56:40 zfnOS postgresql@15-main[1344]: pg_ctl: could not start server
Jan 27 19:56:40 zfnOS postgresql@15-main[1344]: Examine the log output.
Jan 27 19:56:40 zfnOS systemd[1]: postgresql@15-main.service: Can't open PID file /run/postgresql/15-main.pid (yet?) after start: No such file or directory
Jan 27 19:56:40 zfnOS systemd[1]: postgresql@15-main.service: Failed with result 'protocol'.
Jan 27 19:56:40 zfnOS systemd[1]: Failed to start postgresql@15-main.service - PostgreSQL Cluster 15-main.
-- Boot 15098dacecc34076bb09db57f36a69dc --
报错信息明确指出:FATAL: could not load pg_hba.conf,原因是 configuration file "/etc/postgresql/15/main/pg_hba.conf" contains no entries。
翻译成白话: PostgreSQL 数据库的权限配置文件 pg_hba.conf 变空了(0 字节或者全是空行)。数据库启动时发现没权限配置,为了安全,它拒绝启动。
修复步骤(手动恢复数据库)
我们需要给数据库补回最基础的权限配置。
第一步:检查文件pg_hba.conf内容是否真的是空的
ls -l /etc/postgresql/15/main/pg_hba.conf
nano /etc/postgresql/15/main/pg_hba.conf
2. 写入修正内容
如果里面是空的,请完整复制下面这段话并粘贴进去:
# TYPE DATABASE USER ADDRESS METHOD
local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
local replication all trust
host replication all 127.0.0.1/32 trust
host replication all ::1/128 trust
nano操作技巧: 粘贴后,按 Ctrl+O 再按 回车 保存,最后按 Ctrl+X 退出。
- 注意这个配置是否有安全问题 我未知 请谨慎采用 我用了是可以恢复的 但是不知道会不会产生数据库安全问题 期待厂家或大佬解答一下
3. 重启数据库服务
# 修正文件权限
chown postgres:postgres /etc/postgresql/15/main/pg_hba.conf
chmod 640 /etc/postgresql/15/main/pg_hba.conf
# 重启服务
systemctl restart postgresql@15-main.service
检查状态: 输入 systemctl status postgresql@15-main.service。只要看到绿色的 active (running),恭喜你,NAS已经活了!
第四步:拉起飞牛核心服务
数据库恢复后,我们需要重启飞牛的各个管理程序:
systemctl restart filestor_service.service
systemctl restart finder_service.service
systemctl restart docker
第五步:重要收尾(防止再次崩溃)
- 刷新 Web 界面:现在你应该可以正常进入飞牛后台了。
- 如果进去了:恭喜!系统已经彻底找回了它的数据库。
- 如果还是报错:再执行一次 tail -n 20 /var/log/postgresql/postgresql-15-main.log,看看现在的报错是不是变了。
- 固化网络配置:
- 进入飞牛 Web 的 【控制面板】->【网络】。
- 手动设置一次静态 IP 和 DNS(如 223.5.5.5)。
- 点击 【保存/应用】。这一步会强制系统把修复后的配置写回硬盘。
- 检查硬盘健康:
- 在 SSH 输入
btrfs device stats /vol1。
- 如果输出的结果里所有数值都是 0,说明硬盘没坏,只是系统配置崩了。如果数值很大,请尽快更换硬盘。