为了防止某个用户占用大量资源导致其他用户无法正常使用,一般会对单个用户可占用资源进行限制。就磁盘限额,XFS文件系统原生支持目录级别的限制。ext文件系统不支持目录限制,曲线方式是限制用户的总占用空间。
本文介绍使用quota
程序限制用户可用硬盘空间。
Linux限制用户可用硬盘空间
Linux磁盘配额(Quota),可以限制用户、用户组的总磁盘占用空间。
首先安装quota程序:
apt install -y quota
修改 /etc/fstab
文件,修改需要限制磁盘分区的属性:
/dev/sda1 / ext4 defaults,usrquota,grpquota 0 1
重新挂在根目录:
mount -o remount
接下来扫描要限制的分区:
# quotacheck -ugmv / quotacheck: Scanning /dev/sda1 [/] done quotacheck: Cannot stat old user quota file: No such file or directory quotacheck: Cannot stat old group quota file: No such file or directory quotacheck: Cannot stat old user quota file: No such file or directory quotacheck: Cannot stat old group quota file: No such file or directory quotacheck: Checked 8865 directories and 109083 files quotacheck: Old file not found. quotacheck: Old file not found.
其中-u和-g参数表示检查用户和用户组的配额。
初次运行会有上面类似的警告,结束后根目录下会出现aquota.group
和aquota.user
两个文件。
开启磁盘限额:
# quotaon -ugv / /dev/sda1 [/]: group quotas turned on /dev/sda1 [/]: user quotas turned on
接着编辑用户的限额:
# edquota -u work Disk quotas for user work (uid 1000): Filesystem blocks soft hard inodes soft hard /dev/sda1 1191884 2048000 3076000 5099 0 0
要编辑的是soft和hard的值,以KB为单位。上面我们限制work用户占用超过2G(soft)就发出警告,超过3G(hard)就拒绝写入。inode的值一般无需限制。
接下来切换work账号,尝试创建一个3G的文件:
# fallocate -l 3G testfile fallocate: fallocate failed: Disk quota exceeded
创建失败,说明限制起作用了。
限制用户组:
edquota -g work
关掉限制:
quotaoff -ugv /
发表回复