存储与容量
录制文件通常是 Rust-Srec 部署的主要成本。容量规划必须包括原始录制、弹幕文件、管道中间文件、最终产物,以及备份或迁移期间的额外空间。
估算录制容量
可使用以下十进制近似公式:
text
每小时 GB = 平均码率 Mbit/s x 0.45
每日 GB = 每小时 GB x 每日录制小时数 x 同时录制数
所需容量 = 每日 GB x 保留天数 x 安全系数以 6 Mbit/s 计算,一路直播每小时约 2.7 GB。每天 8 小时、保留 30 天约为 648 GB,尚未包括弹幕、管道产物、文件系统开销和安全余量。应测量平台真实码率;转码可能减少最终体积,但会增加处理期间的峰值占用。
安全系数至少取 1.2;直播时长不稳定或管道同时保留源文件与产物时应进一步提高。
Docker 路径
| 宿主机设置 | 容器路径 | 内容 |
|---|---|---|
DATA_DIR | /app/data | SQLite 数据库与应用数据 |
CONFIG_DIR | /app/config | 平台配置文件 |
OUTPUT_DIR | /app/output | 录制与配置的管道输出 |
LOG_DIR | /app/logs | 应用日志 |
生产环境使用绝对宿主机路径,并确认容器用户能在每个输出根中创建、重命名和删除文件。除非容量和告警确实共用,否则不要把 OUTPUT_DIR 指向操作系统卷。
容量控制
- 用
max_concurrent_downloads限制同时写入数。 - 下游无法处理超大文件时,通过时长或分片大小限制切分长录制。
- CPU 与 IO 管道并发应低于主机可持续容量。
- 任务历史和通知事件历史有各自保留设置;这些设置不会删除媒体文件。
- 只有在非关键数据上验证目标和删除源文件行为后,才使用自动移动或上传管道。
Rust-Srec 不能替代组织的媒体生命周期策略。如保留要求需要,应在应用外自动归档或删除媒体,并确保自动化不会删除仍在写入的文件。
告警与故障处理
同时监控输出卷的剩余字节和剩余百分比,告警提前量应覆盖最长活跃录制和管道临时空间。输出根写入门会在配置目录不可写时阻止新任务并发送严重通知,但不能替代容量预测。
输出失败时:
- 停止增加新任务,确认受影响的输出根。
- 检查剩余空间、inode/文件数限制、挂载状态和所有权。
- 恢复写权限,并在同一文件系统完成一次小文件写入测试。
- 受影响主播重新启用前,确认系统健康页恢复正常。