限制Linux中目录的总大小

限制Linux中目录的总大小

我有一个服务守护进程,它会创建大量临时文件。最近我的服务器死机了,因为一个恶意用户设法淹没了 /tmp 并填满了磁盘。我已采取一些措施来主动清理临时目录,但此外,我想限制此应用程序临时目录的最大大小。

有什么方法可以创建目录,比如说,/apptmp永远不会大于 10G?我知道我可以根据用户设置磁盘限制,但我只想限制这个 tmpdir;应用程序应该始终能够在其他地方写入。

我正在运行 Ubuntu Linux 12.04。

编辑:所有这些最终都应该包含在可安装的 Ubuntu 软件包中。所以我认为我不想依赖于修改分区,除非我能以某种方式模拟它。

答案1

您可以为其指定/tmp一个分区。这样您就可以确保它永远不会超过该数量。我建议使用 LVM,这样您就可以根据需要增加或减少分区大小。

答案2

卢卡斯的答案是最好的。

如果您已经设法以无法轻松重新分区驱动器的方式安排磁盘,那么您也可以使用常规磁盘文件内的文件系统进行循环安装。例如:

$ dd if=/dev/zero of=/tmp/tmpdisk bs=1073741824 count=10
$ mke2fs /tmp/tmpdisk
$ sudo mount -o loop /tmp/tmpdisk /apptmp

这将在 /tmp 中创建一个 10GB 的文件,在该文件内创建一个文件系统,然后循环将其挂载为 /apptmp。

但是,正如所指出的,只有当您的磁盘分区方案陷入困境时,才应该这样做。

相关内容