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个。







01-05 19:08