1. 磁盘配额条件
内核必须支持磁盘配额
[root@centos2 ~]# cd /boot/ [root@centos2 /boot]# ll 总用量 192980 -rw-r--r--. 1 root root 153068 10月 19 01:19 config-3.10.0-1062.4.1.el7.x86_64 -rw-r--r--. 1 root root 152976 8月 8 02:11 config-3.10.0-1062.el7.x86_64 drwx------. 3 root root 17 11月 9 2018 efi drwxr-xr-x. 2 root root 27 11月 1 23:00 grub drwx------. 5 root root 97 11月 1 23:53 grub2 -rw-------. 1 root root 78623773 11月 1 23:08 initramfs-0-rescue-85901032a744483ebe559e0551c923f4.img -rw-------. 1 root root 31429453 11月 1 23:53 initramfs-3.10.0-1062.4.1.el7.x86_64.img -rw------- 1 root root 13878466 11月 7 23:16 initramfs-3.10.0-1062.4.1.el7.x86_64kdump.img -rw-------. 1 root root 31432689 11月 1 23:52 initramfs-3.10.0-1062.el7.x86_64.img -rw-------. 1 root root 13874408 11月 1 23:14 initramfs-3.10.0-1062.el7.x86_64kdump.img -rw-r--r--. 1 root root 318846 10月 19 01:19 symvers-3.10.0-1062.4.1.el7.x86_64.gz -rw-r--r--. 1 root root 318717 8月 8 02:12 symvers-3.10.0-1062.el7.x86_64.gz -rw-------. 1 root root 3597450 10月 19 01:19 System.map-3.10.0-1062.4.1.el7.x86_64 -rw-------. 1 root root 3594971 8月 8 02:11 System.map-3.10.0-1062.el7.x86_64 -rwxr-xr-x. 1 root root 6734016 11月 1 23:08 vmlinuz-0-rescue-85901032a744483ebe559e0551c923f4 -rwxr-xr-x. 1 root root 6734016 10月 19 01:19 vmlinuz-3.10.0-1062.4.1.el7.x86_64 -rwxr-xr-x. 1 root root 6734016 8月 8 02:12 vmlinuz-3.10.0-1062.el7.x86_64 [root@centos2 /boot]# grep CONFIG_QUOTA config-3.10.0-1062.el7.x86_64 CONFIG_QUOTA=y CONFIG_QUOTA_NETLINK_INTERFACE=y # CONFIG_QUOTA_DEBUG is not set CONFIG_QUOTA_TREE=y CONFIG_QUOTACTL=y CONFIG_QUOTACTL_COMPAT=y [root@centos2 /boot]# grep CONFIG_QUOTA config-3.10.0-1062.4.1.el7.x86_64 CONFIG_QUOTA=y CONFIG_QUOTA_NETLINK_INTERFACE=y # CONFIG_QUOTA_DEBUG is not set CONFIG_QUOTA_TREE=y CONFIG_QUOTACTL=y CONFIG_QUOTACTL_COMPAT=y 系统中必须安装了quota工具,我们的Linux默认是安装了quota工具的 [root@centos2 ~]# rpm -qa|grep quota quota-nls-4.01-19.el7.noarch quota-4.01-19.el7.x86_64
要支持磁盘配额的分区必须开启磁盘配额功能,这个功能需要手工开启,不再是默认就开启的
2.概念
用户配额和组配额
磁盘容量限制和文件个数限制
软限制和硬限制
宽限时间
如果用户的空间占用数处于软限制与硬限制之间,系统会在用户登陆时警告用户磁盘将满,这个时间就是宽限时间,默认7天。如果达到宽限时间,用户的磁盘占用量仍高于软限制,那么软限制将会升为硬限制。
例:
1. 磁盘配额规划
2. 创建组和用户
groupadd test useradd -G test user1 useradd -G test user2 useradd -G test user3 passwd user1 passwd user2 passwd user3
3. 在分区上开启磁盘配额功能
mount -o remount,usrquota,grpqouta /disk1
#vim /etc/fstab
#/dev/sdb1 /disk1 ext4 defaults,usrquota,grpquota 0 0 #mount -o remount /disk1
4. 建立磁盘配额的配置文件
quotacheck [选项] [分区名] -a 扫描/etc/mtab文件中所有启用磁盘配额功能的分区。如果加入此参数,命令后面就不需要加入分区名了 -c 不管原有的配置文件,重新扫描并建立新的配置文件 -u 建立用户配额的配置文件,也就是生成aquota.user文件 -g 建立组配额的配置文件,会生成aquota.group文件 -v 显示扫描过程 -m 强制以读写的方式扫描文件系统,和-M类似。一般扫描根分区时使用
-f 强制扫描文件系统,并写入新的配置文件。一般扫描新添加的硬盘分区时使用
quotacheck -avug
需要关闭SELinux
[root@centos2 ~]# ll /disk1 总用量 32 -rw------- 1 root root 6144 11月 7 23:50 aquota.group -rw------- 1 root root 6144 11月 7 23:50 aquota.user drwx------ 2 root root 16384 11月 7 18:25 lost+found
5. 设置用户和组的配额限制
edquota [选项] [用户名或组名] -u 用户名 设定用户配额 -g 组名 设定组配额 -t 设定宽限时间 -p 复制磁盘配额。如果已经设定好某个用户的配额限制,其他用户的配额限制如果和这个用户相同,那么可以直接复制配额限制,而不用都手工指定
[root@centos2 ~]# edquota -u user1
Disk quotas for user user1 (uid 1002): Filesystem blocks soft hard inodes soft hard /dev/sdb1 0 40000 50000 0 6 9
#分区名 已占用容量 软限制 硬限制 已占用文件数 软限制 硬限制
[root@centos2 ~]# edquota -u user2 Disk quotas for user user2 (uid 1003): Filesystem blocks soft hard inodes soft hard /dev/sdb1 0 100000 200000 0 10 15
5.2 配额复制
[root@centos2 ~]# edquota -p user1 -u user3
#命令 -p 源用户 -u 目标用户
5.3 修改宽限时间
[root@centos2 ~]# edquota -t Grace period before enforcing soft limits for users: Time units may be: days, hours, minutes, or seconds Filesystem Block grace period Inode grace period /dev/sdb1 8days 8days
5.4 启动和关闭配额
配额的配置完成之后,只需启动配额就好了。
quotaon [选项] [分区名] -a 依据/etc/mtab文件启动所有的配额分区。如果不加-a,后面就一定要指定分区名 -u 启动用户配额 -g 启动组配额 -v 显示启动过程的信息
[root@centos2 ~]# quotaon -vug /disk1 /dev/sdb1 [/disk1]: group quotas turned on /dev/sdb1 [/disk1]: user quotas turned on
关闭配额
quotaoff [选项] [分区名] -a 依据/etc/mtab文件关闭所有的配额分区。如果不加-a,后面就一定要指定分区名 -u 关闭用户配额 -g 关闭组配额
[root@centos2 ~]# quotaoff -vug /disk1 /dev/sdb1 [/disk1]: group quotas turned off /dev/sdb1 [/disk1]: user quotas turned off
6. 磁盘配额查询
quota查询用户或用户组配额
quota [选项] [用户名或组名] -u 用户名 查询用户配额 -g 组名 查询组配额 -v 显示详细信息 -s 以习惯单位显示容量大小
[root@centos2 ~]# quota -uvs user1 Disk quotas for user user1 (uid 1002): Filesystem space quota limit grace files quota limit grace /dev/sdb1 0K 40000K 50000K 0 6 9
repquota查询文件系统配额
repquota [选项] [分区名] -a 依据/etc/mtab文件查询配额。如果不加-a选项,就一定要加分区名 -u 查询用户配额 -g 查询组配额 -v 显示详细信息 -s 以习惯单位显示容量大小
[root@centos2 ~]# repquota -avugs *** Report for user quotas on device /dev/sdb1 Block grace time: 8days; Inode grace time: 8days Space limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 20K 0K 0K 2 0 0 user1 -- 0K 40000K 50000K 0 6 9 user2 -- 0K 100000K 196M 0 10 15 user3 -- 0K 40000K 50000K 0 6 9 Statistics: Total blocks: 7 Data blocks: 1 Entries: 4 Used average: 4.000000 *** Report for group quotas on device /dev/sdb1 Block grace time: 7days; Inode grace time: 7days Space limits File limits Group used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 20K 0K 0K 2 0 0 test -- 0K 100000K 196M 0 10 20 Statistics: Total blocks: 7 Data blocks: 1 Entries: 2 Used average: 2.000000
7. 测试
[root@centos2 ~]# dd if=/dev/zero of=/disk1/testfile bs=1M count=60 #建立testfile文件,指定大小60M
8. 非交互式设定用户磁盘配额
[root@localhost ~]# setquota -u 用户名 容量软限制 容量硬限制 个数软限制 个数硬限制 分区名 [root@localhost ~]# useradd user4 [root@localhost ~]# passwd user4 [root@localhost ~]# setquota -u user4 10000 20000 5 8 /disk1 #设定用户在/disk1分区的容量软限制为10MB,硬限制20MB。文件个数软限制5个,硬限制#8个。