NAS 缓存及磁盘休眠优化需求
1. 背景说明
当前 NAS 配置如下:
- 主机:B450M 主板 + 5700G ES CPU + 16GB DDR4 内存
- 磁盘:6×3.5'' HDD + 2×2.5'' SSD
- 存储池通过通道卡扩展至 8 盘位
- 磁盘休眠时间:5 分钟
- 唤醒策略:仅在对存储空间进行读写时唤醒
系统满载功耗约 80W,可接受;但在闲置状态下依然保持约 70W,功耗偏高。
经排查发现,后台 BT 下载/做种应用即便在低速上传(约 20KB/s)时也会频繁读取磁盘,导致存储池无法休眠。即便配置了 SSD 缓存,BT 做种仍会频繁触发 HDD 唤醒,这是正常行为(BT 需要完整读原文件校验数据)。
当前的临时解决方案:新增加一块 2.5'' 的 1TB HDD,构建单独存储池,将下载任务挂载至该池,完成下载后复制至主存储池,完成做种后删除源文件,以避免唤醒大容量主池。
以上方案虽可行,但属于手动拆分逻辑,实际可通过更智能的缓存控制策略自动化。
2. 核心问题
- 小流量频繁读写(如 BT 做种)导致主存储池长期被唤醒,无法休眠。
- 即便使用 SSD 缓存,也无法阻止系统为这些小文件读取操作唤醒机械盘。
- 手动为下载任务创建额外存储池可缓解问题,但增加复杂性且不优雅。
3. 目标
通过改进 NAS 的缓存与同步逻辑,实现以下功能:
- 降低非必要情况下唤醒主存储池的概率,明显减少闲置功耗。
- 在保证基本数据安全的前提下,允许小文件在缓存中停留更久。
- 智能化延迟写入与批量同步机制,减少机械盘启动次数。
- BT、小文件业务、短期文件活动尽量在缓存或低功耗盘内完成。
- 某种程度上,主存储池成为缓冲池的冷备,缓冲池缓存主存储池文件索引目录,和频繁读写的小文件,从而最大限度减少主存储唤醒
4. 功能需求
4.7 一个独立的小存储池作为缓存扩容选项
- 支持将独立的存储池挂载为“扩展缓存盘”,这个独立的存储池可以的单块HDD,也可以为了保证数据安全性使用2-3块HDD,用于承载:
- BT 下载与做种的缓存区
- 小文件与临时文件的延迟写入空间
- 非关键数据的缓冲区
- 扩展缓存盘与主存储池逻辑隔离,可在主池休眠时独立运行。
- 系统可智能决定数据流向:
- 若 SSD 缓存不足,则将数据写入扩展机械盘缓存
- 在同步时由 SSD、扩展盘按优先级合并写回主存储池
- 用户可选择扩展缓存盘的运行模式:
- 高速缓存盘(优先级高于 SSD 缓存)
- 次级缓存盘(SSD 满载时接管)
- 下载/做种专用盘
- 扩展缓存盘可在闲置时根据策略自行休眠,不影响主存储池。
4.1 智能读写缓存策略
- 允许将小文件长期缓存于 SSD 上,在一定时间内不强制同步至主存储池,甚至从逻辑上变成主存储池成为缓存池的备份。
- 可自定义小文件阈值(如:小于 64MB 的文件可进入长期缓存)。
- 对缓存区设置最大容量阈值,达到后触发批量落盘。
- 缓存文件支持 LRU(最近最少使用)淘汰策略。
4.2 延迟同步机制
- 支持“延迟写入”模式,允许文件在缓存中停留更长时间(如:10 分钟、60 分钟、1 天、自定义)。
- 当缓存中文件累计达到一定大小(如 5GB / 10GB)或达到一定数量时批量写入。
- 批量写入时集中唤醒存储池,减少频繁唤醒。
4.3 针对小文件的优化行为
- 小文件默认写入缓存区,读取也优先走缓存,不触发主存储池唤醒。
- 可选项:允许部分非关键文件(如临时文件、缓存文件)不落盘、仅存储于 SSD 缓存。
- 支持 "cache only" 目录策略(例如专门用于下载、做种的目录)。
4.4 BT/下载任务智能隔离
- 为 BT 下载目录提供独立的缓存策略:
- 小片段随机读写全部落在 SSD 缓存中处理。
- 仅在完成任务时将文件一次性写回至主存储池。
- 支持 "做种缓存" 模式,在做种阶段只读取缓存,不触发主池唤醒。
- 下载完成后根据用户策略选择:
- 自动迁移至主存储池
- 主池被休眠时延迟迁移
- 做种结束后自动删除源缓存文件
4.5 磁盘休眠优化
- 主存储池在非必要情况下保持休眠状态。
- 固定任务(如缓存同步)支持合并、延迟、批量执行。
- 系统可监控所有磁盘 I/O 请求,当为非关键任务(例如 BT 检查)时优先走缓存,不唤醒 HDD。
4.6 可配置的风险级别与安全模式
- 用户可选择数据一致性策略:
- 高安全模式:立即写盘(现有机制)
- 平衡模式:延迟写盘 + 批量同步
- 高性能省电模式:大量小文件可仅存在缓存,长时间不落盘
- 明确告知不同模式的数据风险(如断 电可能丢失缓存中未同步的数据)。
5. 预期收益
- 主存储池可长时间休眠,闲置功耗可从 70W 降至 30~40W(视盘数而定)。
- BT 做种、小文件读写对机械盘几乎零干扰。
- 系统整体响应速度提升(SSD 缓存优先)。
- 大幅减少机械盘启动次数,延长磁盘寿命。
6. 补充说明
该需求不仅适用于 BT 场景,也适用于:
- 数据库小文件
- 各类日志文件
- Docker 容器层文件
- 包管理器缓存
- Web/服务的小量 I/O 请求
也可以推广为全局的小文件优化存储策略,提升系统整体能效与寿命。
7. 总结
当前问题的本质是:小文件频繁读写导致主存储池被持续唤醒,而缓存机制对这类场景支持不足。
通过增强缓存策略、延迟同步机制和任务隔离能力,可实现:
- 更智能的缓存管理
- 更良好的磁盘休眠效果
- 更低的整体功耗
- 更灵活的用户选择
最终目标是打造对小文件友好、高效节能的 NAS 系统架构。