Linux - 每个目录的配额?

Linux - 每个目录的配额?

我有以下场景:

单个分区安装为 /,具有大量磁盘空间。

有一系列目录(/pg/tbs1、/pg/tbs2、/pg/tbs3 等等),我想限制这些目录的总大小。

一种选择是制作一些大文件,然后将它们 mkfs 起来,并通过环回挂载,然后设置配额,但这会使扩展有点问题。

还有其他方法可以使配额在每个目录中起作用吗?

答案1

如果您被迫使用 ext3,那么使用 LVM 可能是最好的解决方案。为每个项目创建一个新的文件系统。它看起来像这样:

# Create a 10g filesystem for "project1" in volume group "vg0"
lvcreate -L 10g -n project1 vg0

# Create an ext3 filesystem.
mke2fs -j /dev/vg0/project1

# Mount it (obviously you would want this in /etc/fstab)
mount /dev/vg0/project1 /projects/project1

扩大项目文件系统很容易:

# Add 2GB to the volume.
lvextend -L +2g /dev/vg0/project1

# Grow the filesystem.
resize2fs /dev/vg0/project1

答案2

如果您不依赖组权限,则可以为每个“配额目录”使用不同的 UNIX 组,然后在每个目录上设置 sgid 位(这样创建的文件和目录将属于目录的组而不是创建者用户的主要组),并使用组配额。

答案3

是的。查看 XFS 文件系统和项目配额。其他文件系统不提供此功能。

答案4

我认为,为每个共享文件夹创建新的文件系统有点过头了。只需为每个共享文件夹创建新组,将共享文件夹的所有者组设置为该组,为组设置粘性位(以便每个新文件和目录都以该组为所有者),并使用 acl 列表对文件和文件夹的权限进行设置。然后为这些组设置配额。

相关内容