Linux磁盘配额(内含配置案例)

点击蓝色目录查看相应内容

  • 磁盘配额的概述
    • 实现磁盘限额的条件
  • 磁盘配额步骤
    • 1、启用文件系统的配额支持
      • 添加usrquota、grpquota挂载参数
    • 2、编辑用户和组账号的配额设置
    • 3、查看配额使用情况
    • 4、验证磁盘配额功能

磁盘配额的概述

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

磁盘配额可以限制指定账户能够使用的磁盘空间,这样可以避免因某个用户的过度使用磁盘空间造成其他用户无法正常工作甚至影响系统运行。在服务器管理中此功能非常重要。

实现磁盘限额的条件

需要Linux内核支持
安装xfsprogs与quota软件包
##Linux磁盘限额的特点
作用范围:针对指定的文件系统(分区)

限制对象:用户账号、组账号

限制类型:磁盘容量、文件数量

限制方法:软限制(可允许超限额,有时间限制,超出规定时间将直接把超出内容直接删除)、硬限制

磁盘配额步骤

以支持配额功能的方式挂载文件系统
编辑用户和组账号的配额设置
验证磁盘配额功能
查看磁盘配额使用情况

安装xfsprogs与quota软件包

1、先开启支持磁盘配额的功能

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

3、验证磁盘配额功能

4、查看磁盘配额使用情况

1、启用文件系统的配额支持

添加usrquota、grpquota挂载参数

方法一:在配置文件中永久设置开机自动挂载(推荐)

[root@localhost ~]#vim /etc/fstab               //进入配置文件
…………//省略部分信息

/dev/kgc/ky02	/zb	xfs	defaults,usrquota,grpquota	0 0   //启动配额支持

方法二:使用命令挂载,重启后需重新挂载

[root@localhost ~]#mount -o usrquta,grpquota /dev/kgc/ky02 /zb   //挂载

[root@localhost ~]#mount                       //查询挂载内容是否启动配额支持

…………//省略部分信息

/dev/kgc/ky02 on /zb type xfs (rw,relatime,atte2,inose64,usrquota,grpquta) //已启动

[root@localhost ~]#chmod 777 /zb                   //设置/zb权限为777(可读可写可执行)

如图:
Linux磁盘配额(内含配置案例)_第1张图片

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

使用xfs_quota命令编辑配额设置
xfs_quota -x -c ‘limit -u bsoft=N bhard=N isoft=N ihard=N 用户名’ 挂载点

limit 上限
常用选项
-x 开启专家模式

-g 指定组

-u 指定用户

-c 命令
限制字段
容量软限制:bsoft

容量硬限制:bhard

数量软限制:isoft

数量硬限制:ihard

软限制<=硬限制

软限制在硬限制的范围内允许超额,但有时间限制

[root@localhost ~]# xfs_quota -x -c 'limit -u bsoft=50M bhard=100M isoft=4 ihard=6 ml' /zb                           //编辑配额设置

3、查看配额使用情况

​ xfs_quota -x -c 'report选项 '挂载点
report常用选项

-a 所有

-i inode 限制数量

-b block 限制大小

-u 用户

-g 组

-p proj 对象
方法一:

  [root@localhost ~]# xfs_quota -x -c 'report -ib' /zb     //对所有用户和组查看数量及容量限制
  User quota on /zb (/dev/mapper/kgc-ky02)
                                 Blocks                                          Inodes                     
  User ID          Used       Soft       Hard    Warn/Grace           Used       Soft       Hard    Warn/ Grace     

------

  root                0          0          0     00 [--------]          3          0          0     00 [--------]
  ml                  0      51200     102400     00 [--------]          0          4          6     00 [--------]

  Group quota on /zb (/dev/mapper/kgc-ky02)
                                 Blocks                                          Inodes                     
  Group ID         Used       Soft       Hard    Warn/Grace           Used       Soft       Hard    Warn/ Grace     

------
  [root@localhost ~]# xfs_quota -x -c 'quota -iuv ml' /zb     //查看对ml用户容量的限制
  Disk quotas for User ml (1000)
  Filesystem               Files      Quota      Limit  Warn/Time      Mounted on
  /dev/mapper/kgc-ky02          0          4          6   00 [--------] /zb
  [root@localhost ~]# xfs_quota -x -c 'quota -uv ml' /zb      //查看对ml用户节点数量的限制
  Disk quotas for User ml (1000)
  Filesystem              Blocks      Quota      Limit  Warn/Time      Mounted on
  /dev/mapper/kgc-ky02          0      51200     102400   00 [--------] /zb

4、验证磁盘配额功能

切换到设置配额的分区(挂载目录)

创建指定数量的文件:使用touch命令,或cp命令

创建指定容量的文件:使用dd命令,或cp命令
验证数量限制:

  [ml@localhost ~]$ cd /zb                   //切换ml用户到/zb目录下
  [ml@localhost zb]$ ls                      //目录无内容
  [ml@localhost zb]$ touch test{1..4}.txt    //创建4个文件
  [ml@localhost zb]$ ls
  test1.txt  test2.txt  test3.txt  test4.txt
  [ml@localhost zb]$ touch test5.txt         //创建第5个文件
  [ml@localhost zb]$ touch test6.txt         //创建第6个文件
  [ml@localhost zb]$ touch test7.txt         //上限6个,尝试创建第7个文件
  touch: 无法创建"test7.txt": 超出磁盘限额      //创建失败,提示超出限额
  [ml@localhost zb]$ ls
  test1.txt  test2.txt  test3.txt  test4.txt  test5.txt  test6.txt

验证容量限制:

  [ml@localhost zb]$ ls
  test1.txt  test2.txt                     //目录下仅有两个文件
  [ml@localhost zb]$ dd if=/dev/zero of=/zb/test1.txt bs=1M count=80    //复制80M内容进来
  记录了80+0 的读入
  记录了80+0 的写出
  83886080字节(84 MB)已复制,0.0357496 秒,2.3 GB/秒
  [ml@localhost zb]$ dd if=/dev/zero of=/zb/test2.txt bs=1M count=50    //再次复制50M
  dd: 写入"/zb/test2.txt" 出错: 超出磁盘限额                          //提示超出限额
  记录了21+0 的读入                                               
  记录了20+0 的写出
  20971520字节(21 MB)已复制,0.0482307 秒,435 MB/秒                  //但有写入20M
  [ml@localhost zb]$ cd 
  [ml@localhost ~]$ ls -lh /zb
  总用量 100M                                                   //统计容量,共100M
  -rw-rw-r--. 1 ml ml 80M 11月  5 09:38 test1.txt
  -rw-rw-r--. 1 ml ml 20M 11月  5 09:39 test2.txt
  [ml@localhost ~]$ cd /zb
  [ml@localhost zb]$ touch test3.txt          //目前仅有2个文件,但容量以达限制,尝试创建文件3
  touch: 无法创建"test3.txt": 超出磁盘限额    //提示超出限额

当容量达到上限后,即使文件未达限制,也无法继续创建文件

你可能感兴趣的:(linux,linux,经验分享)