Linux-每个目录配额?


21

我有以下几种情况:

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

目录范围很广(/ pg / tbs1,/ pg / tbs2,/ pg / tbs3等),我想限制这些目录的总大小。

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

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

linux  quota 

通过环回挂载文件并没有真正带来扩展问题。您只需扩展基础文件,然后使用它resize2fs来扩展文件系统。我认为使用LVM是更好的解决方案,但是您提出的解决方案没有您认为的限制。
larsk 2011年

以及btrfs和zfs
hanshenrik '16

Answers:


17

如果您被迫使用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

6

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


5

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


不幸的是,我无法更改基础fs。但是很高兴知道XFS具有此功能。

5

我实际上已经做了一段时间,因为我不想让所有虚拟邮件用户都成为系统用户。具有配额的ZFS文件系统会很棒,并且zfs-fuse每天都在进步,但是我想要的是一个非常轻巧的解决方案。最终,我决定编写一个FUSE文件系统,该文件系统可以作为另一个文件系统上的一层安装(任何基本目录实际上都可以工作)。它具有用于管理配额的实用程序,可以轻松编写脚本,并且由于配额值只是作为xattrs存储在目录或文件中,因此一个安装点可以支持任意数量的配额。

我已经在邮件服务器上测试了一段时间,最近又确定它已经达到青春期,可以发布了。如果您感到好奇,可以访问http://code.google.com/p/fusequota/进行检查。我将不胜感激任何反馈。



Git镜像对我不起作用。没有错误,但是我可以超过配额(在ext4上,具有挂载选项rw,relatime,data = ordered)
timdiels

3

每个共享文件夹的新文件系统都是恕我直言。只需为每个共享文件夹创建一个新组,将共享文件夹的所有者组设置为该组,为该组设置一个粘性位(以便每个新文件和目录都将该组作为所有者),并且对文件和文件夹的权限使用acl列表。然后为这些组设置配额。


1

我不知道任何方法来设置每个目录的引号。

但是沿着您创建具有有限大小的文件系统的想法。这可能是lvm是一个很好的解决方案的地方。

您可以备份/重新安装并使用lvm,仅向逻辑卷分配所需的最小空间量。扩展lvm逻辑卷非常容易。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.