删都删了,空间怎么还没回来:群晖空间回收计划,把 Btrfs 池的容量真正收回

企业 NAS 用久了都会遇到一桩怪事:项目结项,几个 TB 的共享文件夹删了,快照也清了一轮,存储管理器里的可用容量却没怎么动。多数管理员第一反应是统计有延迟,刷新几遍还是老数字。其实在 Btrfs 存储池上这是机制使然:已删除的共享文件夹、快照和 LUN 占用的空间并不会立刻归还给存储池,要靠 DSM 的"空间回收"过程去整理释放。群晖把这个过程做成了可以排期的计划任务——空间回收计划,让容量"还账"这件事按你的时间表自动发生,而不是等某次系统自行触发。

动手前先对两个前提

一是文件系统:官方明确只有 Btrfs 存储空间才支持空间回收。存储空间建在 ext4 上的机器,全局设置里找不到这项功能是正常的,先到存储管理器确认文件系统再动手,别白找一圈。二是负载评估:官方说明空间回收对 I/O 资源消耗较大,并占用系统资源,建议安排在非高峰时段,避免在重要服务或任务进行时影响系统性能。备份窗口、监控回放高峰、虚拟机开机潮,这些时段都要避开——容量晚几天收回是小事,把生产 I/O 拖垮就得不偿失了。

把回收窗口画进时间表格

  1. 启动存储管理器,前往"存储 > 全局设置"。为什么:空间回收挂在存储层的全局设置里,不在任何单个存储池的属性页——第一次配的人往往在池上右键找半天,方向就错了;全局设置的另一个含义是它管的是整机回收节奏,改一次全池生效。

  2. 在"空间回收计划"区域下单击"设置时间表格"。为什么:群晖在这里没有给一个简单的"每天几点跑"的开关,而是给了一张按小时切格的时间表格——回收这种重 I/O 操作,粒度必须细到小时级,才能卡进企业作息的缝隙里。

  3. 选择排法并涂格子:单击"暂停空间回收",随后用时间表格指定不希望运行空间回收的时间;或单击"运行空间回收",随后用时间表格设置允许时段。为什么:两种排法对应两种负载形态——业务集中在白天、夜里整体空闲的,用"运行空间回收"直接圈出夜间窗口最直观;全天都有零散负载(监控写入、异地同步)的,用"暂停空间回收"把备份窗口和高低峰反过来圈死更稳妥。注意官方的硬性要求:必须选择时间表格上的至少一个单元格并设置为允许时段——一个允许时段都不留,等于让回收永远不跑。

  4. 单击"确定"保存,记下当前可用容量作基线。为什么:空间回收的效果要用"删了东西之后容量回来了多少"来验收,保存时留一个基线数字,下个回收窗口过后对照,这条配置才算闭环。

计划跑起来之后的三个特性

其一,系统会在计划的下个允许时段自动恢复手动暂停的空间回收——巡检时临时按下暂停不用记得改回来,计划自己会接上。其二,如果回收没能在允许时段(时间表格上的蓝色单元格)内完成,系统会自动暂停此操作,并在下个允许时段恢复执行——大容量回收跨越几个窗口是正常现象,不要当成故障去重启。其三,完成空间回收所需的时间可能因已删除项目的大小和快照版本的数量而异——删的项目动辄上 TB、快照留了几十个版本的机器,回收跑上一整夜并不稀奇。

运维排期上还有一条经验:把空间回收窗口与备份窗口、数据清理计划错开,三个都是磁盘 I/O 大户,挤在同一时段只会互相拖慢。贵州诚鑫致达科技在给企业客户规划存储维护节奏时,会把空间回收计划写进巡检清单——容量曲线是否按预期回落,是判断 Btrfs 池健康度最直观的仪表之一。

你们单位上一次删除大型共享文件夹后,容量隔了几天才回来?如果到现在还没回来,今晚就去"全局设置"里看看那张时间表格。