首页 > 技术文章 > 磁盘容量配额(转)

love3556 原文

 

如前面介绍章节讲到的类Unix系统最初设计理念就让许多人一起使用,多任务的操作系统,但是硬件的资源是固定有限的,如果出现个小破坏份子不断的创建文件或下载电影,那么硬盘空间总有一天会被占满的吧,这时就需要quota服务帮助我们为每个用户限制可以使用的硬盘空间,一旦超出预算就不再允许他们使用。

quota的磁盘配额可以限制用户的硬盘可用空间或最大创建文件数量,并且还有软/硬限制的区别:

软限制:当达到软限制时会提示用户,但允许用户在规定期限内继续使用。

硬限制:当达到硬限制时会提示用户,且强制终止用户的操作。

查看内核是否支持quota功能:

[root@linuxprobe ~]# dmesg | grep quota
[ 3.140241] VFS: Disk quotas dquot_6.5.2

查看quota程序包是否已经安装:

[root@linuxprobe ~]# rpm -q quota
quota-4.01-11.el7.x86_64

查看boot目录是否支持quota功能(noquota表示暂时不支持):

[root@linuxprobe ~]# mount | grep boot
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

让/boot目录支持quota功能:

[root@linuxprobe ~]# vim /etc/fstab
UUID=6e97ef8f-51f1-4781-8f1c-0acb9f631b32 /boot xfs defaults,uquota 0 0

重启主机后即可生效:

[root@linuxprobe ~]# reboot

查看boot目录是否支持quota功能(usrquota表示已经支持):

[root@linuxprobe Desktop]# mount | grep boot
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,usrquota)

创建两个用于quota实验的用户tom:

[root@linuxprobe ~]# useradd tom

需要允许其他用户对/boot目录写入文件操作:

[root@linuxprobe ~]# chmod -Rf o+w /boot

xfs_quota命令用于管理XFS文件系统的quota硬盘配额,格式为:“quota [参数] 配额 文件系统”。

参数 作用
-c 命令 以交换式或参数的形式设置要执行的命令。
-p 设置提示或报错信息的程序名称,默认为xfs_quota。
-x 专家模式,能够对quota做更多复杂的配置。

使用xfs_quota命令设置对tom用户在/boot目录的磁盘配额,具体要求如下:

使用quota专家模式限制磁盘软限制为3m、磁盘硬限制为6m、文件软限制为3个且文件硬限制为6个。

[root@linuxprobe ~]# xfs_quota -x -c 'limit bsoft=3m bhard=6m isoft=3 ihard=6 tom' /boot

获取当前/boot目录上的quota配额限制:

[root@linuxprobe ~]# xfs_quota -x -c report /boot
User quota on /boot (/dev/sda1)   Blocks
User ID Used Soft Hard Warn/Grace
---------- --------------------------------------------------
root 95084 0 0 00 [--------]
tom 0 3072 6144 00 [--------]

切换至tom用户:

[root@linuxprobe ~]# su - tom

正常创建了一个为5M的文件:

[tom@linuxprobe ~]$ dd if=/dev/zero of=/boot/tom bs=5M count=1
1+0 records in
1+0 records out
5242880 bytes (5.2 MB) copied, 0.123966 s, 42.3 MB/s

创建8M文件时强制终止并报错了:

[tom@linuxprobe ~]$ dd if=/dev/zero of=/boot/tom bs=8M count=1
dd: error writing ‘/boot/tom’: Disk quota exceeded
1+0 records in
0+0 records out
6291456 bytes (6.3 MB) copied, 0.0201593 s, 312 MB/s

查看当前用户的quota限制(显示硬盘配额已占满):

[tom@linuxprobe ~]$ quota
Disk quotas for user tom (uid 1001):
Filesystem blocks quota limit grace files quota limit grace
/dev/sda1 6144* 3072 6144 6days 1 3 6

edquota命令用于超级用户编辑其他用户的quota配额限制,格式为:“edquota [参数] [用户]”。

参数 作用
-u 编辑用户的配额限制。
-g 编辑用户组的配额限制。
-r 通过RPC协议编辑远程的配额。


编辑tom的配额限制,将硬盘的硬限制修改为8m(8192k):

[root@linuxprobe ~]# edquota -u tom
Disk quotas for user tom (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/sda1 6144 3072 8192 1 3 6

切换至tom用户:

[root@linuxprobe ~]# su - tom
Last login: Mon Sep 7 16:43:12 CST 2015 on pts/0

再来创建8m的文件就不会有问题了:

[tom@linuxprobe ~]$ dd if=/dev/zero of=/boot/tom bs=8M count=1
1+0 records in
1+0 records out
8388608 bytes (8.4 MB) copied, 0.0268044 s, 313 MB/s

推荐阅读