如何在没有配额的情况下限制目录大小(vserver)?

如何在没有配额的情况下限制目录大小(vserver)?

希望这个问题不是太笼统。

由于我有一个虚拟服务器(Ubuntu 12.04),因此无法使用配额来限制目录的大小。我想知道是否还有其他方法可以实现这一点。

我能想到的唯一方法是 inotify + config-file(其中规定了最大大小)+ 命令的组合,该命令会使文件清空或删除它或类似操作。这不是限制用户目录,而是自动写入文件(如日志文件)。
我知道这不是最好的方法,但我认为只有这种方法可行。您有更好的方法吗?

答案1

这实际上并不能很好地扩展到大量配额,但一个简单的解决方案就是简单地创建另一个具有所需固定大小的文件系统。

如果您没有任何备用块存储,那么您可以使用指向稀疏文件的环回设备。稀疏文件在使用前不会消耗存储,但如果您在该稀疏文件之上创建文件系统,它似乎具有固定的最大可用存储量。不过,增加/缩小会有些困难。最安全的方法是创建一个更大/更小的新稀疏文件 + 文件系统,然后传输旧文件的内容。

答案2

如果问题具体是日志文件,请使用支持指定最大文件大小的 syslog 守护程序。我相信 rsyslogd 可以做到这一点。如果这不可能,有许多 logrotate 程序可以在日志达到最大文件大小时轮换日志并仅保留给定数量的日志,以便将总大小保持在限制范围内。

相关内容