‘学了就忘’Linux文件系统管理 — 63、磁盘配额介绍

1、磁盘配额概念

磁盘配额是限制用户或者用户组在一个分区上可以使用的空间大小和文件个数的限制。

扩展:

  • 管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。
  • 磁盘配额针对的是分区,Windows系统也有磁盘配额功能。
  • 这是一个基础的功能,如果真要在实际工作中使用,还需要结合其他的其他的服务。比如上传文件,需要结合FTP服务器等。

2、磁盘配额条件

(1)内核必须支持磁盘配额

[root@localhost ~]# grep CONFIG_QU0TA /boot/config-2.6.32-279.e16.i686
# 执行上面命令,如果搜索到下面内容,说明Linux内核加载了磁盘配额功能。
CONFIG_QUOTA=y
CONFIG_QUOTA_NETLINK_INTERFACE=y
#CONFIG_QUOTA_DEBUG is not set 
CONFIG_QUOTA_TREE=y 
CONFIG QUOTACTL=y

#我搜索的结果是
CONFIG_NETFILTER_XT_MATCH_QUOTA=m
CONFIG_XFS_QUOTA=y
CONFIG_QUOTA=y
CONFIG_QUOTA_NETLINK_INTERFACE=y
CONFIG_PRINT_QUOTA_WARNING=y
# CONFIG_QUOTA_DEBUG is not set
CONFIG_QUOTA_TREE=y
CONFIG_QUOTACTL=y

一般情况下,那怕是最小化安装的Linux系统中,磁盘配额都是配置好的。

(2)系统中必须安装了quota工具。

我们的Linux默认是安装了quota工具的,查看命令如下:

[root@localhost ~]# rpm -qa | grep quota
quota-3.17-16.e16.i686

提示:如果内核不支持,就要重新编译内核,一般不会出现这样情况。如果没有quota工具,直接用yum安装。

3、磁盘配额的相关概念

(1)用户配额和组配额

能限制用户的配额,也能限制组的配额。在实际日常中,组配额很少用。

说明:为什么组配额很少用?

比如我给一个组限制600MB的空间配额,这个组中有三个用户,而组配额并不是按照每个人200MB的方式进行划分,而是先到先得的方式进行划分,有可能user1一个人把600MB的空间全部占用了,而另外两个人一点空间都没有。

(2)磁盘容量限制和文件个数限制

磁盘配额是可以对一个分区的磁盘容量文件个数进行限制。

为什么要限制文件个数?

因为每个文件都会占用一个i节点号,而i节点号是有限的,分区大小不同,i节点号的数量是不一样的。如果i节点占满了,也同样存储不了数据。

(3)软限制和硬限制

  • 软限制可以理解为警告限制,如果你超过了软限制,你还可以写入数据,只是每次写入都会有提示,你的空间快占满了,请你尽快清理。
  • 硬限制就是实际限制,到了限制,你一个字节都存储不了了。

(4)宽限时间

如果用户的空间占用大小,处于软限制和硬限制之间,系统会在用户登陆时警告用户磁盘将满,这个时间就是宽限时间,默认是7天。如果达到了宽限时间,用户的磁盘占用量还超过软限制,那么软限制就会升级为硬限制。(这个时间能修改,但是没有必要。)

4、磁盘配额实践规划

我们开始磁盘配额实验,首先我们来规划下:

  • 磁盘配额是限制的普通用户分区上使用磁盘空间和文件个数的,所以我们需要指定一个分区。那么我们手工建立一个5GB的/dev/sdb1分区,把它挂载到/disk目录当中。(swap分区和boot分区不能做实验)。
  • 还有需要建立被限制的用户和用户组。假设需要限制user1user2user3用户,这三个用户属于test用户组。(组配合不好用,上面说了,不进行说明了,这里只说明普通用户的磁盘配额)
  • 为了便于测试,三个用户的磁盘容量硬限制为50MB,软限制为40MB,文件个数硬限制限制为11个,软限制为8个。
  • 系统宽限时间我们改为8天。

提示:

  • 关于磁盘配额配额的操作,下一篇文章会详细说明。

  • 还有磁盘阵列(Redundant Arrays of Independent Disks,RAID)的内容,自己有时间可以自己了解一下。