几年来,存储系统从修订备份中收集了 17 亿个文件,并且已经有点满了。
所以我开始删除所有五年以上的文件。我假设大约有 17 亿(!!!)个文件,包含大约 90 TByte 的数据 - 我必须估计,因为即使只是一个 find 或 du 也需要几周甚至几个月的时间。后端(mdraid、ext4)本身实际上并不是太重要,因为无论如何我都想更改它。
我让 rm 删除文件一天,只删除了所有文件的 0.1% 左右。我估计以这种方式删除所有内容需要一到两年的时间。这样做时很可能会杀死一些驱动器。并不是我太担心,它是一个Hotswap RAID。
我一直在使用 ionice -c3 来确保仅在驱动器不忙时删除文件,以避免磁盘抖动,因为驱动器通常每天有 1-2 小时处于重负载状态。一个相当有趣的旁注是,当我第一次尝试运行 rm 时,数百万个硬链接将其内存使用量驱动到了 100GByte 左右,然后它进行了核心转储。因此,我将操作分成更小的部分,如果我只删除单个子目录,则可以工作文件,但仍然经常达到 20-30GByte 的峰值。
我的两个问题:
例如,我考虑手动编辑 Inode-Structures,这样文件就消失了,但空间没有归还,然后让 fsck 修复系统。
欢迎其他疯狂的想法。我总是可以通过制作 LVM 快照来恢复。
如果没有人提出更好的主意,我将大大减少创建的修订数量和/或将所有超过一个月的内容 tar/xz 到外部 USB 驱动器。这并不酷,因为用户实际上喜欢能够访问修订版中的旧内容。