目录大小限制

目录大小限制

在 Linux 中,可以限制分区的大小,例如使用配额。但是,有没有限制目录大小的方法呢?例如,我有一个目录,假设/mnt/foo/bar不是分区(例如,不在df结果中)。这可能吗?mkfs这个目录不可能。

答案1

不是直接的,您可以创建一个您想要限制目录的大小的文件,然后使用循环挂载将其挂载到树中。

  • 创建一个文件作为文件系统使用,例如
    • fallocate -l 100M disk.img(这并不总是与底层 FS 兼容。)
    • dd if=/dev/zero of=disk.img count=512k
  • 在磁盘映像上创建文件系统
    • mkfs disk.img
  • 挂载映像
    • mount -o loop disk.img /path/to/mount/point(您也可以选择启用配额)

答案2

您所要求的功能很不错,但我不知道有哪个文件系统有这样的功能。在不添加更多文件系统的情况下,最好的办法是使用配额,即限制每个用户(或组)的存储空间。

按目录执行此操作的一个问题是,一旦考虑到文件可能被硬链接的可能性,语义就不会那么明显。

请考虑以下事件序列:

  • 管理员为每个主目录配置 1GB 配额的系统
  • user1运行一个程序,它会在~user1
  • 当日志文件为 1MB 时,user2会创建一个硬链接~user2
  • user2添加 900MB 的其他文件~user2
  • user1将 900MB 的数据附加到日志文件
  • user1删除日志文件~user1

上述任何一项操作都不会因配额限制而失败。但user2最终的结果却远远超出了配额。

相关内容