当分区已满时,Linux 文件系统会老化旧文件

use*_*222 9 linux filesystems

我想知道是否有一个相当于循环数据库的文件系统,对于固定大小,它会老化最旧的文件。使用我拥有的简单 cron 作业很容易实现,但我认为这是许多人遇到的问题,也许还有更好的方法。我希望设置一个固定大小的分区或池,当池已满时,其中较旧的文件会自动删除或老化。一种循环缓冲区,它将使用最旧文件留下的空间用于新文件,同时保持文件完整性。

我的 cron 解决方案将磁盘使用率与阈值进行比较,并递归删除最旧的文件,直到磁盘使用率再次低于阈值。它并不完美,因为不能保证阈值足够低,以至于不会在两次 cron 迭代之间被超越。它也没有最大化存储空间的使用,因为阈值在本质上往往是预测性的(在两次 crond 迭代之间,我可以在一分钟内填充多少)。我希望改进的两个缺点。

我正在寻找一个更优雅的解决方案,类似于循环数据库(http://linux.die.net/man/1/rrdtool)如何透明地处理这个问题,但对于文件系统。

Ste*_*way 5

存在许多HSM(分层存储管理)系统,主要针对SAN系统。随着它们的最后访问时间变旧,这些将文件从较快的磁盘迁移到较慢的磁盘,再迁移到磁带。如果您有 SAN,您可能想寻找其中之一。不过,我所知道的大多数许可证都是商业许可证,例如我们使用的 IBM Tivoli HSM。不过,您可能想看看OHSM

如果您只想删除旧文件,那么一个简单的 cron 作业,例如find /data -atime +30 -exec rm {} \;将删除在一定时间内未访问过的文件(但请确保文件系统未使用该noatime选项挂载!)这将是非常危险的,不过,除非你有一个好的在线备份系统。

  • 我会说你做错了。要么向文件系统添加大量磁盘,增加 cron 的频率,要么寻找其他方法。如果您发现自己需要像这样定期删除未指定数量的数据,那么填充文件系统的任何内容都可能存在问题。我认为有问题的文件系统是一个临时的;在这种情况下,写入它的进程应该被写入以更好地清理它们,并且您可能应该增加文件系统的大小。 (5认同)