Linux - 每个目录的配额?

22 linux quota

我有以下场景:

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

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

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

有没有其他方法可以使每个目录的配额工作?

lar*_*sks 18

如果您被迫使用 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
Run Code Online (Sandbox Code Playgroud)

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

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

# Grow the filesystem.
resize2fs /dev/vg0/project1
Run Code Online (Sandbox Code Playgroud)


jpe*_*zzo 9

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


小智 5

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


小智 5

我实际上想这样做有一段时间了,因为我不想为我的所有虚拟邮件用户创建系统用户。带配额的 ZFS 文件系统会很棒,而且 zfs-fuse 每天都在进步,但我想要的是一个非常轻量级的解决方案。最后,我决定编写一个 FUSE 文件系统,我可以将它作为一个层挂载到另一个文件系统上(任何基本目录实际上都可以工作)。它有一个用于管理配额的实用程序,可以轻松编写脚本,并且由于配额值仅作为 xattrs 存储在目录或文件中,因此一个挂载点可以提供对任意数量配额的支持。

我已经在邮件服务器上测试了一段时间,最近决定它已经进入青春期并准备发布到野外。如果您好奇,可以在http://code.google.com/p/fusequota/ 上查看。我将不胜感激任何反馈。