一个 NAS,三块盘,一块红了
Filesystem Size Used Avail Use% Mounted on
/dev/md1 1.9T 344G 1.5T 19% /mnt/disk1
/dev/md2 3.7T 3.4T 287G 93% /mnt/disk2 🔴
/dev/md3 3.7T 3.2T 466G 88% /mnt/disk3 🟡
disk2 93%,disk3 88%,disk1 只有 19%。同为 3.7TB 盘,为什么占用率相差 5%?为什么 disk1 这么空?
unRAID 的 share 分配策略决定了数据去哪。Media 共享配置了 disk2,disk3 + highwater 分配器——意思是新文件先填满 disk3,再写 disk2,disk1 完全不参与。结果是 disk3 先红,disk2 紧随其后,disk1 一直闲着。
这篇不是教你买大盘扩容,是教你怎么把存量盘通过策略性清理“回血”。
核心数据
| 项目 | 清理前 | 清理后 |
|---|---|---|
| 目录总文件 | 29,521 | 26,119 |
| 目录总大小 | 3.7 TB | 3.2 TB |
| 已释放空间 | ~425 GB | |
| 最早录像 | 2025-08-01 | 2025-09-01 |
磁盘影响:
- Disk 2(93%)→ 无显著变化,说明 8 月数据主要落在 disk3
- Disk 3(88% → 77%)→ 从 3.2T 降到 2.8T,腾出 ~400GB ✅
- Cache 盘基本不变(71%→72%)
删掉 2025 年 8 月单月的 3,402 个文件(425GB),disk3 从 88% 降到 77%。这就是这篇的全部核心。
背景:摄像头录像怎么存的
小米摄像头(以及大多数支持 NAS 存储的摄像头)录像命名规律:
设备ID_YYYYMMDD_HHMMSS_HHMMSS.mp4
目录结构:
/mnt/user/Media/
├── XiaomiCamera_Archive/ # 归档目录(年份分层)
│ ├── 2024/
│ ├── 2025/
│ └── 2026/
└── XiaomiCamera_00_78DF728C7940/ # 设备 ID 目录
├── 00_202508*.mp4 # 2025年8月录像
├── 00_202509*.mp4
└── ...
关键点:00_2 看起来像年份目录,实际是设备 ID 78DF728C7940 的简写。别被目录名骗了,ls /mnt/user/Media/ 对比确认。
定位大户:哪个月最占空间
# 统计特定月份大小(用 ls + awk,避免 find 大目录超时)
ssh root@NAS_IP \
'ls -la /mnt/user/Media/XiaomiCamera_00_78DF728C7940/00_202508*.mp4 | \
awk '\''{sum+=$5} END {printf "%.2f GB, %d files\n", sum/1073741824, NR}'\'''
结果:425.25 GB, 3402 files(2025 年 8 月单月)
为什么用 ls 而不是 find?大目录下 find 递归遍历极易超时。分层逐级 ls,先看年份,再看月份,最后看文件。
执行清理
# 删除 2025年8月 录像
ssh root@NAS_IP 'rm -f /mnt/user/Media/XiaomiCamera_00_78DF728C7940/00_202508*.mp4'
通配符批量删除,几秒完成。
验证
# 看剩余最早录像
ls /mnt/user/Media/XiaomiCamera_00_78DF728C7940/ | sort | head -3
# 00_20250901_xxx.mp4
# 00_20250902_xxx.mp4
# ...
# 看目录实际大小(du 不是 df,df 显示整块 Btrfs 占用)
du -sh /mnt/user/Media/XiaomiCamera_00_78DF728C7940/
unRAID 坑:容器内 df -h 报告的是整块文件系统占用,非特定目录。看目录实际大小必须用 du -sh。
为什么清理效果不均衡?
回到开头的问题:为什么 disk3 降了,disk2 没动?
Media 共享配置:
includeDisks: disk2, disk3
allocator: highwater
highwater 策略:设定水位线,新文件优先写剩余空间最多的盘,直到所有盘剩余空间接近水位线,再均衡写入。实际上的效果是——disk3 先被填满,然后才轮到 disk2。
所以 2025 年 8 月的数据主要落在 disk3,删掉后 disk3 释放最明显。要想 disk2 也降下来,得继续删更早的数据(那时 disk3 还没满,数据分到了 disk2),或者手动 rebalance。
可复用命令速查
| 场景 | 命令 |
|---|---|
| 查磁盘占用 | ssh root@NAS "df -h \| grep -E '^(/dev|//)'" |
| 查共享配置 | cat /boot/config/shares/media.cfg |
| 看目录结构 | ls /mnt/user/Media/XiaomiCamera_Archive/ |
| 统计月份大小 | ls -la /path/00_202508*.mp4 \| awk '{sum+=$5} END {printf "%.2f GB, %d files\n", sum/1073741824, NR}' |
| 删除月份 | rm -f /path/00_202508*.mp4 |
| 验证最早文件 | ls /path/ \| sort \| head -3 |
| 看目录实际大小 | du -sh /path/ |
保留策略建议
当前最早录像追溯到 2024 年 7 月,循环周期约 1 年。
目标:加速处理到 2025 年 12 月,再改为 6 个月循环,释放约一半空间。
后续可扩展:
- 建立自动化清理脚本(按保留天数 / 保留空间阈值)
- 接入监控告警:disk 占用 > 85% 推送微信
- 探索视频压缩(H.264→H.265)进一步节省空间
- 手动 rebalance:把数据从高占用盘移到低占用盘(unbalance 插件或 mv)
总结
- 别只盯着扩容——存量盘通过策略性清理也能“回血” 400GB+
- 懂分配策略才能精准清理——highwater 下旧数据集中在后填的盘,清理效果集中
- 大目录操作用
ls不用find——分层确认模式,通配符批量删 - 验证用
du不用df——前者看目录实际大小,后者看整盘占用 - 保留周期要算账——1 年 → 6 个月,空间释放一半,风险可控