SkeyeVSS开发FAQ: 磁盘满与录像落盘策略
试用安装包下载 | SMS | 在线演示
项目源码地址:https://github.com/openskeye/go-vss
1. 典型症状
- 新录像写入失败,数据库或索引显示异常;
- 服务日志大量No space left on device;
- inode 耗尽(小文件过多)导致仍有「空间」但无法创建文件;
- 系统只读 remount,数据库损坏风险骤增。
2. 区分空间与 inode
执行df -h看块设备使用率,执行df -i看 inode。录像分段、海量小图抓拍场景下inode 先满并不少见。缓解手段包括:提高分段大小、合并索引文件、定期归档到对象存储。
3. 录像策略设计要点
- 循环覆盖(FIFO):按磁盘配额或天数滚动删除最老片段;
- 分盘存储:系统盘与数据盘分离,避免日志把系统盘打满连带 DB;
- 对象存储下沉:冷数据上S3/MinIO,本地仅热数据;
- 单通道限速:异常码率设备防止拖垮整盘写入带宽。
4. 与数据库、索引的一致性
磁盘满时先停写的业务可能已成功写文件但元数据未提交,恢复后需校验或重建索引。运维上应在监控中同时告警磁盘使用率 + 写入错误率 + 录像任务队列。
5. 应急流程
- 扩容或清理:确认可删的是缓存/临时目录,勿误删 WAL;
- 只读库:若使用 SQLite/MySQL,检查是否因磁盘问题进入恢复模式;
- 分批恢复录像:避免恢复瞬间IO 风暴再次打满。
6. 监控建议
- 告警阈值建议多档:80% 预警、90% 紧急;
- 对云盘注意吞吐与 IOPS 上限,容量未满也可能IO 饱和。
磁盘问题空间、inode、IO 三线排查;录像类系统要把循环覆盖当作默认生存策略,而不是事后手工删文件。
