适用机型:DS214play | 2026年6月
一、背景与问题说明
群晖 NAS 的监控套件(Surveillance Station)在持续录像过程中会对硬盘造成大量随机写入,长期运行会显著缩短机械硬盘寿命。本文档记录了一次完整的故障排查和解决过程。
1.1 原始方案及其缺陷
原方案使用 eSATA 接口外接一块闲置的西数红盘 3TB 用于存储监控录像,通过 bind mount 将外接盘挂载到 Surveillance Station 的存储路径:
mount -o bind /volumeSATA/satashare /volume1/camera_storage
⚠️ 此方案存在致命缺陷:bind mount 会将外接盘的 I/O 状态与 NAS 主系统完全绑定。一旦外接盘出现任何故障,整个 NAS 系统将随之崩溃。
1.2 故障现象
• NAS 网页无法访问,SSH 无法连接
• WireGuard 内网其他设备正常,唯独 NAS 不可达
• 电源灯亮着,机器未关机
• 断开 eSATA 盘电源后,NAS 经过约 6 小时才缓慢恢复
1.3 根因分析
通过 dmesg 日志确认根本原因:
ata3: device unplugged sstatus 0x0
ata3: SError: { 10B8B } ← 物理信号编码错误
ata3.00: error: { IDNF } ← 扇区找不到(坏道特征)
ata3: hard resetting link ← 内核反复重置,每次阻塞 2-7 秒
内核反复尝试重置 eSATA 链路,每次重置期间所有 I/O 请求全部阻塞。由于 bind mount 的强耦合特性,DSM 网络服务进程也被拖入等待队列,最终导致 NAS 完全无响应。
二、解决方案
2.1 方案选择
核心原则:使用固态硬盘替代机械硬盘,并加入保护机制防止外接盘故障扩散到主系统。
2.2 为什么选择 SSD
• SSD 无机械结构,天生适合持续写入,不会因为随机写入损坏
• 三星 870 QVO 1TB TBW = 360TB,按三路摄像头每天写入约 30GB 计算,理论寿命超过 30 年
• USB 协议容错性比 eSATA 更强,掉线恢复更快
• USB 供电一体,不需要额外电源适配器
⚠️ 不要使用 NTFS 格式,群晖通过 fuse 驱动挂载 NTFS,性能差且稳定性低。必须使用 ext4 格式。
三、操作步骤
3.1 准备工作
1. 购买 SATA SSD(推荐 1TB 或 2TB,三星 870 EVO/QVO 均可)
2. 购买 USB 转 SATA 转接线(某宝约 15-30 元)
3. 将 SSD 通过转接线连接到电脑,格式化为 ext4 格式
�� 如果在 Windows 下格式化,需要使用 DiskGenius 等工具选择 ext4 格式。也可以直接插到群晖上,由群晖自动格式化。
3.2 连接 SSD 到群晖
4. 将 SSD 通过 USB 转 SATA 转接线连接到 DS214play 的 USB 口
5. 等待约 30 秒,群晖会自动识别并挂载
6. SSH 登录群晖验证挂载状态:
mount | grep USB预期输出:
/dev/sdr1 on /volumeUSB1/usbshare type ext4 (rw,relatime,...)
⚠️ 设备名(sdr1)可能因系统不同而变化,以实际输出为准。
3.3 停止 Surveillance Station
在 DSM 网页端操作:
7. 进入「套件中心」
8. 找到「Surveillance Station」
9. 点击「停止」,等待完全停止
3.4 手动测试 bind mount
SSH 登录群晖,手动执行一次挂载确认正常:
mount -o bind /volumeUSB1/usbshare /volume1/camera_storage
mount | grep camera_storage预期输出:
/dev/sdr1 on /volume1/camera_storage type ext4 (rw,relatime,...)
3.5 部署启动守护脚本
这是最关键的步骤。守护脚本包含三层保护机制:
• 第一层:等待 USB SSD 就绪后再挂载,防止开机时序问题
• 第二层:执行 bind mount
• 第三层:后台守护进程,每 60 秒检测 USB SSD 状态,掉线时自动卸载保护主系统,恢复后自动重新挂载
在 DSM 网页端操作:
10. 进入「控制面板」→「任务计划」
11. 找到原来的 bind mount 启动任务(或新建一个)
12. 编辑任务,确认设置:用户选择 root,事件选择「启动」
13. 将脚本内容替换为以下完整脚本:
#!/bin/bash
# 关闭 USB 省电,防止系统自动断开 USB 设备
echo -1 > /sys/bus/usb/devices/usb1/power/autosuspend_delay_ms
echo on > /sys/bus/usb/devices/usb1/power/control
# 等待 Surveillance Station 完全启动
sleep 60
USB_SRC="/volumeUSB1/usbshare"
BIND_DST="/volume1/camera_storage"
LOG="/var/log/usb_mount.log"
echo "$(date): 启动 USB SSD bind mount 守护" >> $LOG
# === 第一层:等待 USB 卷就绪,最多等 60 秒 ===
for i in $(seq 1 12); do
if mount | grep -q "/volumeUSB1/usbshare"; then
echo "$(date): /volumeUSB1/usbshare 就绪" >> $LOG
break
fi
echo "$(date): 等待 /volumeUSB1/usbshare... ($i/12)" >> $LOG
sleep 5
done
if ! mount | grep -q "/volumeUSB1/usbshare"; then
echo "$(date): /volumeUSB1/usbshare 未就绪,放弃挂载" >> $LOG
exit 1
fi
# === 第二层:执行 bind mount ===
mount -o bind "$USB_SRC" "$BIND_DST"
echo "$(date): bind mount 完成" >> $LOG
# === 第三层:后台守护,USB 掉线自动保护系统 ===
(
while true; do
sleep 60
if ! mount | grep -q "/volumeUSB1/usbshare"; then
echo "$(date): /volumeUSB1/usbshare 掉线,主动卸载保护系统" >> $LOG
umount -l "$BIND_DST" 2>/dev/null
echo "$(date): 已卸载,系统受保护" >> $LOG
sleep 300
if mount | grep -q "/volumeUSB1/usbshare"; then
mount -o bind "$USB_SRC" "$BIND_DST"
echo "$(date): 重新挂载成功" >> $LOG
fi
fi
done
) &
echo "$(date): 守护进程已启动 PID=$!" >> $LOG14. 保存脚本
�� 脚本注意事项:群晖精简系统没有 mountpoint 命令,必须使用 mount | grep -q 来检测挂载状态。
3.6 重启 NAS 验证
15. 在 DSM 网页端:「控制面板」→「重新启动」
16. 等待约 5-10 分钟,重启完成后 SSH 登录验证:
# 验证挂载状态
mount | grep -E "camera|USB"
# 查看启动日志
cat /var/log/usb_mount.log | tail -10预期输出(mount):
/dev/sdr1 on /volumeUSB1/usbshare type ext4 (rw,...)
/dev/sdr1 on /volume1/camera_storage type ext4 (rw,...)
预期日志:
Sat Jun 27 xx:xx:xx CST 2026: 启动 USB SSD bind mount 守护
Sat Jun 27 xx:xx:xx CST 2026: /volumeUSB1/usbshare 就绪
Sat Jun 27 xx:xx:xx CST 2026: bind mount 完成
Sat Jun 27 xx:xx:xx CST 2026: 守护进程已启动 PID=xxxxx
3.7 启动 Surveillance Station 并配置存储
17. 套件中心 → Surveillance Station → 启动
18. 进入 Surveillance Station → 摄像机 → 编辑每个摄像头 → 录制
19. 设置存储参数:
⚠️ DS214play 内存仅 683MB 且不可扩展,CPU 为 Marvell ARM 架构。2K 分辨率(2560×1440)会导致 CPU 长期高负载,强烈建议降至 1080P 或 720P。
四、日常维护与监控
4.1 检查挂载状态
# 确认两个挂载点都正常
mount | grep -E "camera|USB"
# 查看守护日志
tail -20 /var/log/usb_mount.log
# 查看 SSD 使用量
df -h /volumeUSB1
4.2 守护脚本日志说明
4.3 SSD 掉线的处理
如果日志显示 SSD 频繁掉线:
• 检查 USB 线是否接触良好,必要时更换 USB 线
• 将 SSD 固定放置,避免震动导致接触不良
• 检查群晖 USB 口供电是否稳定
4.4 远程应急处理
如果 NAS 再次无法访问:
20. 通过 WireGuard 进入内网,SSH 登录路由器
21. 从路由器 ping NAS:ping 192.168.0.88
22. 如果 NAS 无响应且有智能插座控制 USB SSD 电源,可远程断电重启 SSD
23. 守护脚本会在 SSD 恢复后 5 分钟内自动重新挂载
�� 强烈建议给 USB SSD 的电源(转接线的 USB 供电口)接一个米家智能插座,便于远程断电重启。
五、常见问题排查
5.1 重启后 camera_storage 没有挂载
症状:mount | grep camera_storage 无输出
原因:脚本执行时 Surveillance Station 尚未完全启动,导致 bind mount 被覆盖
解决:手动执行挂载命令,或确认脚本中 sleep 60 已生效
mount -o bind /volumeUSB1/usbshare /volume1/camera_storage
5.2 脚本提示「未就绪,放弃挂载」
原因:群晖没有 mountpoint 命令,旧版脚本使用了该命令
解决:确认脚本使用 mount | grep -q 而非 mountpoint -q 来检测挂载状态
5.3 系统负载(load average)长期偏高
DS214play 存在以下已知问题:
• Syno_HDDMon、DisplayVBI 等内核进程长期处于 D 状态,这是老平台固有问题
• 683MB 内存对于多套件并行运行来说过于紧张
缓解措施:
• 停用 Active Insight 套件(会消耗大量 CPU 和内存)
• 停用 LogCenter、USBCopy 等非必要套件
• 摄像头分辨率降至 720P,帧率设为 10-15fps
5.4 SSD 设备名变化
每次重启后 SSD 的设备名(sdr1、sds1 等)可能变化,但挂载路径 /volumeUSB1/usbshare 保持不变,脚本使用路径检测,不受设备名变化影响。
六、方案对比总结
文档版本:1.0 | 更新日期:2026年6月27日 | DragonHome NAS 运维记录
评论区