磁盘配额

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了磁盘配额相关的知识,希望对你有一定的参考价值。

当Linux根分区的磁盘空间耗尽时,Linux操作系统将无法再建立新的文件(包括程序运行的临时文件),从而出现服务程序崩溃、系统无法启动等故障。为了避免在服务器中出现类似磁盘空间不足的问题,可以启用磁盘配额功能,对用户在指定文件系统(分区)中使用的磁盘空间、文件数量进行限制,以防止个别用户恶意或无意间占用大量的磁盘空间,从未保持系统存储空间的稳定性和持续可用性。

在CentOS系统中,内核已经定制了支持Linux文件系统的磁盘配额功能,并且在系统中配置和管理磁盘配额的工具由xfsprogs软件包的xfs_quota配额管理程序提供。
XFS文件系统是通过xfs_quota工具进行管理;EXT3/4文件系统通过quota工具进行管理。
通过命令

[[email protected] ~]# rpm  -q xfsprogs
#确认xfsprogs软件包的安装情况
[[email protected] ~]# rpm -ql xfsprogs | grep xfs_quota
#查看xfs_quota配额管理程序

如果想要使用磁盘配额,必须要明白的知识点有:

磁盘配额的作用范围
xfs_quota设置的磁盘配额功能,只能在指定的文件系统(分区)内有效,用户使用其他未设置配额的文件系统时,将不会受到限制。

磁盘配额的限制对象
xfs_quota主要针对系统中指定的用户账号、组账号进行限制,没有被设置限额的用户或组将不会受到影响。对组(必须是基本组)账号设置配额后,组内所有用户使用的磁盘容量、文件数量的总和不能超过限制。

磁盘配额的限制类型
磁盘容量:限制用户能够使用的磁盘数据块大小,也就是限制 磁盘空间大小,默认单位为KB;
文件数量:限制用户能够拥有的文件个数。在Linux操作系统中,每一个文件都有一个对应的数字标记,称为i结点,这个编号在同一个文件系统内是唯一的。因此xfs_quota是通过限制i结点的数量来实现对文件数量的限制。

磁盘配额的限制方法
软限制:指定一个软性的配额数值,在固定的宽限期(默认为7天)内允许暂时超出这个限制,但是系统会发出警告信息;
硬限制:指定一个硬性的配额数值,是绝对禁止用户超过的限制,当达到硬限制是,系统也会发出警告并禁止写入数据。
硬限制的配额制应大于相应的软限制值,否则软限制将失效。

在实施磁盘配额的实际过程中,只有当用户(或组)、文件系统(分区)及配额数值都满足限额条件时,xfs_quota才会对操作进行限制。

磁盘配额管理步骤:
技术图片

以支持配额功能的方式挂载文件系统

[[email protected] ~]# mkdir /a
[[email protected] ~]# mount -o usrquota,grpquota /dev/web_document/bdqn /a
#增加用户、组配额功能的支持挂载
[[email protected] ~]# chmod 777 /a                        #为了测试方便,允许任何用户写入数据
[[email protected] ~]# mount

                                                                        …………                         #省略部分信息
/dev/mapper/web_document-bdqn on /a type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)

实现开机自动挂载(增加用户、组配额的功能挂载)

[[email protected] ~]# vim /etc/fstab                   #修改逻辑卷的挂载配置
                            …………                                            #省略部分信息

/dev/web_document/bdqn          /a                      xfs     defaults,usrquota,grpquota  0 0

编辑用户和组账号的配额设置

[[email protected] ~]# xfs_quota -x -c ‘limit -u bsoft=10M bhard=15M isoft=40 ihard=50 zhangsan‘ /a
#设置用户张三的磁盘配额,磁盘容量软限制为10M,硬限制为15M;文件数软限制为40,硬限制为50

-x表示启用专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用;
-c表示直接调用管理命令;
limit可以设置磁盘容量的软、硬限制;及文件数的软、硬限制;
-u表示指定用户(如果指定组使用-g);
bsoft表示设置磁盘容量的软限制数值;
bhard表示设置磁盘容量的硬限制数值;
isoft表示设置磁盘文件数的软限制数值;
ihard表示设置磁盘文件数的硬限制数值。

如果仅限制磁盘容量和文件数量,可以使用

[[email protected] ~]# xfs_quota -x -c ‘limit -u bsoft=10M bhard=15M zhangsan‘ /a
#仅限制磁盘容量
[[email protected] ~]# xfs_quota -x -c ‘limit -u isoft=40 ihard=50 zhangsan‘ /a
#仅限制文件数量
[[email protected] ~]# xfs_quota -c ‘quota -uv zhangsan‘ /a
#查看zhangsan磁盘容量限制
Disk quotas for User zhangsan (1002)
Filesystem              Blocks      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/web_document-bdqn
                             0     ** 10240      15360 **  00 [--------] /a、
[[email protected] ~]# xfs_quota -c ‘quota -i -uv zhangsan‘ /a
#查看zhangsan文件数量限制
Disk quotas for User zhangsan (1002)
Filesystem               Files      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/web_document-bdqn
                             0        ** 40         50**   00 [--------] /a

一般情况,对磁盘容量进行限额的情况比较常见,限制文件 数量的情况较少。所以设置的限额不应小于用户已经使用的数量,否则可能导致该用户无法正常登录系统。另外,建议不要对root用户设置磁盘配额,以免带来不可预知的风险。
以上对用户设置磁盘配额的方法同样适用于组账号,只不过在进入编辑环境是要适用“-g”选项指定组账号对象。

验证磁盘配额功能

[[email protected] ~]# su zhangsan                 #首先切换用户
[[email protected] root]$ dd if=/dev/zero of=/a/123.txt bs=5M count=4
dd: 写入"/a/123.txt" 出错: 超出磁盘限额               #超出硬限制的数据将被截断,无法写入
记录了4+0 的读入
记录了3+0 的写出
15728640字节(16 MB)已复制,2.0585 秒,7.6 MB/秒
[[email protected] root]$ ls -lh /a/123.txt
-rw-rw-r--. 1 zhangsan zhangsan **15M** 6月  30 04:55 /a/123.txt

查看配额使用情况

[[email protected] ~]# xfs_quota -x -c ‘report -a‘
#查看所有可用分区的磁盘容量配额使用情况
User quota on /a (/dev/mapper/web_document-bdqn)
                               Blocks                     
User ID          Used       Soft       Hard    Warn/Grace     
---------- -------------------------------------------------- 
root                0          0          0     00 [--------]
zhangsan        15360      10240      15360     00  [6 days]

Group quota on /a (/dev/mapper/web_document-bdqn)
                               Blocks                     
Group ID         Used       Soft       Hard    Warn/Grace     
---------- -------------------------------------------------- 
root                0          0          0     00 [--------]
zhangsan        15360          0          0     00 [--------]
[[email protected] ~]# xfs_quota -x -c ‘quota -u zhangsan‘ /a
#查看指定用户名的磁盘容量使用情况(查看组使用参数“-g”)
Disk quotas for User zhangsan (1002)
Filesystem              Blocks      Quota      Limit  Warn/Time      Mounted on
/dev/mapper/web_document-bdqn
                         15360      10240      15360   00  [6 days] /a

若同时查看磁盘容量和文件输出报告可结合“-i”和“-b”使用。

[[email protected] ~]# xfs_quota -x -c ‘report -abi‘
User quota on /a (/dev/mapper/web_document-bdqn)
                               Blocks                                          Inodes                     
User ID          Used       Soft       Hard    Warn/Grace           Used       Soft       Hard    Warn/ Grace     
---------- -------------------------------------------------- -------------------------------------------------- 
root                0          0          0     00 [--------]          3          0          0     00 [--------]
zhangsan        15360      10240      15360     00  [6 days]          1         40         50     00 [--------]

Group quota on /a (/dev/mapper/web_document-bdqn)
                               Blocks                                          Inodes                     
Group ID         Used       Soft       Hard    Warn/Grace           Used       Soft       Hard    Warn/ Grace     
---------- -------------------------------------------------- -------------------------------------------------- 
root                0          0          0     00 [--------]          3          0          0     00 [--------]
zhangsan        15360          0          0     00 [--------]          1          0          0     00 [--------]

以上是关于磁盘配额的主要内容,如果未能解决你的问题,请参考以下文章

linux的磁盘配额

linux使用磁盘配额管理

磁盘配额

centos7的磁盘配额有啥特点

磁盘配额实验

22磁盘管理—磁盘配额详解