Unix Toolbox

 主页   资讯   文章   代码   电子书 

磁盘限额用来限制磁盘空间大小和/或用户(或用户组)可用的文件数。The quotas are allocated on a per-file system basis and are enforced by the kernel.

Linux 设置

Quota 工具包通常已安装,其包含一些命令行工具。
在 fstab 中激活用户配额并重新挂载分区。如果分区正在使用,关闭所有使用的文件,或者重启系统。添加 usrquota 到 fstab 的挂载类型中,举个例子:

/dev/sda2     /home    reiserfs     rw,acl,user_xattr,usrquota 1 1
# mount -o remount /home
# mount                              # 检查 usrquota 已经激活,否则重启

quotacheck 初始化 quota.user 文件。

# quotacheck -vum /home
# chmod 644 /home/aquota.user        # 让用户检查自己的配额

用脚本(e.g. SuSE 的 /etc/init.d/quotad)或 quotaon 来启用限额:

quotaon -vu /home

检查配额启用情况:

quota -v

FreeBSD 设置

Quota 工具是 FreeBSD 基本系统的一部分,然而内核需要 quota 选项。如果不存在,新增它并重新编译 内核。

options QUOTA

与 Linux 一样,添加限额到 fstab 选项(是 userquota,而不是 usrquota)中:

/dev/ad0s1d    /home    ufs     rw,noatime,userquota    2  2
# mount /home                        # 重新挂载分区

在 /etc/rc.conf 中启用磁盘限额并开启 quota 服务。

# grep quotas /etc/rc.conf
enable_quotas="YES"                  # 在启动时打开限额(或者 "NO")
check_quotas="YES"                   # 在启动时检查限额(或者 "NO")
# /etc/rc.d/quota start

分配限额

磁盘限额默认并不限制(设置为0)。用 edquota 来对单用户进行限制。一个 quota 也可给许多用户复用。虽然 quota 实现之间的文件结构不同,但其原理是相同的:限制节点(inodes)数量以及使用者可以取用的磁盘区块数量。Only change the values of soft and hard. 如果未指定,默认区块大小为 1k。使用 edquota -t 设置 grace 时间。举个例子:

# edquota -u colin

Linux

Disk quotas for user colin (uid 1007):
  Filesystem         blocks       soft       hard     inodes     soft     hard
  /dev/sda8            108       1000       2000          1        0        0

FreeBSD

Quotas for user colin:
/home: kbytes in use: 504184, limits (soft = 700000, hard = 800000)
   inodes in use: 1792, limits (soft = 0, hard = 0)

给许多用户分配限额

命令 edquota -p 用来复用一个 quota 给其他用户。举个例子,复用所指用户的限额给所有用户:

# edquota -p refuser `awk -F: $3 > 499 {print $1}' /etc/passwd`
# edquota -p refuser user1 user2     # 复用给 2 个用户

检查

用户只需输入 quota (文件 quota.user 必须可读) 来可以检查他们的限额。Root 可以查看所有用户的限额。

# quota -u colin                     # 查看用户的限额
# repquota /home                     # 所有用户在这个分区上的限额情况