在 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
最终的结果却远远超出了配额。