linux-磁盘管理与文件系统-磁盘配额

Posted 可乐卷儿

tags:

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


前言

Linux系统作为一个多用户的操作系统,在生产环境中,会发生多个用户共同使用一个磁盘的情况,会造成Linux根分区的磁盘空间耗尽,导致Linux系统无法建立新的文件,从而出现服务程序崩溃、系统无法启动等故障现象。为了避免这种情况,解决方法就是 ,对用户在指定文件系统中使用磁盘空间、文件数量进行限制,防止用户占用大量的磁盘空间,从而保持系统存储空间可以稳定使用
注意:在 CentOS 系统中,不同的文件系统使用不同磁盘配额配置管理工具。
例如,XFS 文件系统通过 xfs_quota 工具进行管理;EXT3/4 文件系统通过 quota 工具进行管理


一、磁盘配额的概述

1、实现磁盘限额的条件

  • 需要linux内核支持
  • 使用quata软件包

2、linux磁盘限额的特点

  • 作用范围:针对指定的文件系统(分区)
  • 限制对象:用户账号、组账号
  • 限制类型:磁盘容量、文件数量
    • 软限制:指定一个软性的配额数值(如 480MB 磁盘空间、180 个文件),在固定 的宽限期(默认为七天)内允许暂时超过这个限制,但系统会给出警告信息
    • 硬限制:指定一个硬性的配额数值(如 500MB 磁盘空间、200 个文件),是绝对 禁止用户超过的限制值,当达到硬限制值时,系统也会给出警告并禁止继续写入数据。硬限制的配额值应大于相应的软限制值,否则软限制将失效
  • 限制方法:软限制、硬限制
    • 磁盘容量:限制用户能够使用的磁盘数据块(Block)大小,也就是限制磁盘空间大小,默认单位为 KB
      软限制:超出系统警告,仍可写入
      硬限制:超出最高容量,无法再写入
      假设软限制为5G,硬限制是8G;若系统指定的目录超过5G,系统会提示已超出,但是还可以继续录入,但是上限是8G,就无法再写入
    • 文件数量:限制用户能够拥有的文件个数。在 Linux 操作系统中,每一个文件都有一个对应的数字标记,称为 i 结点(Inode)编号,这个编号在同一个文件系统内是唯一的,因此 xfs_quota 通过限制 i 结点的数量来实现对文件数量的限制
      软限制:超出系统警告,仍可创建
      硬限制:超出最高容量,无法再创建
      假设软限制为5个,硬限制是10个;若系统创建目录超过5个,系统会提示已超出,但是还可以继续创建,但创建上限是10个,就无法再创建
      在这里插入图片描述

二、磁盘配额配置(ext4)-quota

磁盘配额要求Linux内核支持磁盘配额技术,centos7默认支持
磁盘配额只对一般用户有效,对管理员(root)来说是没有任何作用限制的

1、配置配额功能

  • mount | grep /dev/sdb1:查询当前分区支持的配额功能
  • mount -o remount,usrquota,grpquota /dev/sdb1:增加分区/dev/sdb1用户和组的配额功能

2、激活配额选项

由于ext4文件系统,quota功能默认是不开启的,需要创建磁盘配额的配置文件(aquota.user 和 aquota.group),才可以去启动quota功能,使用 quotacheck 命令的 -c 选项

  • vim /etc/fstab
    /dev/sdb1 /liuchun ext4 defaults,usrquota,grpquota 0 0
  • mount -a 激活测试

3、生成配额文件-quotacheck

  • quotacheck -cugv /dev/sdb1:创建用户和组的磁盘配额的配置文件
    • -c:创建磁盘配额的配置文件
    • -u:用户;针对扫描用户的情况建立aquota.user
    • -g:组;针对扫描用户的情况建立aquota.group
    • -v:详情;显示扫描过程

4、创建用户并设置限制-edquota

  • edquota -u wuhao:对用户wuhao进行限制
    • -u:用户名
    • -g:组名
    • -t:设定宽限时间
    • -p:复制磁盘配额规则,不需要每个用户或者组都手动设置一遍:edquota -p user1 -u user2
      在这里插入图片描述
      参数说明:
  • bloks:磁盘容量,单位是kb
  • inodes:文件数量
  • i进入输入模式
  • :wq 保存退出

5、开启配置-quotaon

  • -u /dev/sdb1:开启用户的磁盘配额
  • -g /dev/sdb1:开启组的磁盘配额
  • -a /dev/sdb1:开启所有分区的磁盘配额
  • -p /dev/sdb1:查看是否开启此功能
  • -p /dev/sdb1:查看是否开启此功能

6、关闭配置-quotaoff

  • -a:关闭所有分区的磁盘配置
  • -u:关闭用户的磁盘配额
  • -g:关闭组的磁盘配额

7、查询配额情况-quota

  • -u 用户名
  • -g 组名
  • -v 显示详情
    -s 以常见耽误显示
    -a 查询所有分区的磁盘配额
    查看当前用户wuhao的配额情况:quota -u wuhao在这里插入图片描述
    参数说明
    inode:可以创建文件或者目录的数量
    block:可以存储的容量大小,*号代表超出
    soft(软限制):最低限制容量,可以被超过,但会有警告信息,超过的部分会保存到宽限时期到期。一般是硬限制的80%,单位为KB
    hard(硬限制):绝对不能被超过限制。达到hard时,系统会禁止继续增加新的文件
    grace:宽限时间(一般为7天)单位为KB
    当用户使用的空间超过了软限制但还没达到硬限制,在这个宽限的时间到期前必须将超过的数据降低到软限制以下(默认是7天),当宽限时间到期,系统将自动清除超过的数据。
    0:表示不限制

8、实例

举例:设置tom 用户(已经创建好的普通用户)在opt 目录下创建文件的最大容量是10240K 最大文件个数6
edquota -u tom
/dev/mapper/vg01/lv02 0 10000 10240 0 5 6
验证:
1、以tom用户登陆
2、在/opt目录下写入10000K大小的文件(dd if=/dev/zero of=文件路径 bs=1K count=10000)
3、再在/opt目录下写入240K大小的文件
4、因为设置了软限制是10M,所以他会警告
5、再在/opt目录下写入440K大小的文件
6、因为已经超过了硬限制所以会报错已经超出了磁盘配额
7、ll -h /opt 查看一下超出10240的部分没写入

其中:
dd:复制
if=/dev/zero:从zero中拿取容量
of=文件路径:将的容量写入设置配额磁盘下的文件中
bs=N:每次写多少容量,默认单位为字节,可带单位K,M
count=N:一共写入几次

三、磁盘配额设置(xfs)-xfs_quota

1、对用户设置配额-xfs_quota

  • -x:启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用
  • -c:直接调用管理命令,如limit,report等
    实例
    xfs_quota -x -c ‘limit -p bhard=100m 1’ /opt/lv03:限制Project 1的配额为100MB

2、调用project命令创建一个project,再调用limit命令设置配额

  • xfs_quota -c ‘quota -p 1’ /opt/lv03:查询某个project的配额使用情况
  • 管理命令limit后相关:
  • -u:对用户限制
  • -g:对组限制
  • bsoft:磁盘容量软限制
  • bhard:磁盘容量硬限制
  • isoft:文件数量软限制
  • ihard:文件数量硬限制

3、管理命令report后相关

  • -u:对用户查看
  • -g:对组查看
  • -a:查看所有可用分区的配额使用报告
  • -b:查看磁盘容量
  • -i:查看文件数

4、实例

4.1、对用户设置配额

创建lv03,在/etc/fstab设置
vim /etc/fstab
/dev/vg01/lv03 /opt xfs defaults,usrquota,grpquota 0 0

例:设置tom 用户最大容量是80M 最大文件个数8
xfs_quota -x -c ‘limit -u bsoft=50M bhard=80M isoft=6 ihard=8 tom’ /opt/lv03
验证:
tom写入90M数据会报错超出磁盘配额限制dd if=/dev/zero of=文件路径 bs=1M count=90

xfs_quota -x -c ‘report -abi’ /opt/lv03:执行report命令,后面跟上挂载点,这样可以列出所有的Project ID以及对应的配额使用情况

4.2、对单一目录设置配额

  • 修改lv03,在/etc/fstab设置挂载参数
    vim /etc/fstab
    /dev/vg01/lv03 /opt xfs defaults,prjquota 0 0
  • 卸载lv03重新挂载
    umount /dev/vg01/lv03
    mount /dev/vg01/lv03
  • 创建测试目录
    mkdir /opt/lv03/test
  • 设置配额
    xfs_quota -x -c 'project -s -p /opt/lv03/test 1’
    #为目录分配ProjectID 1,-p 后跟path

5、无交互式设置磁盘配额命令-setquota

setquota -u 10210 10960 5 10 /opt/data ,常用语脚本
-x:启动专家模式,在当前模式下允许对配额系统进行修改的所有管理

以上是关于linux-磁盘管理与文件系统-磁盘配额的主要内容,如果未能解决你的问题,请参考以下文章

Linux磁盘和文件系统管理:磁盘配额的详细做法

解析Linux中LVM与磁盘配额

linux的磁盘配额问题

高级文件系统管理之mdadm与lvm的创建

Linux的LVM系统与磁盘配额

Linux磁盘和文件系统管理