逻辑卷LVM和磁盘配额管理

1,110 阅读17分钟

1 LVM逻辑卷

1.1 LVM概述

LVM 是 Logical Volume Manager 的简称,译为中文就是逻辑卷管理。它是 Linux 下对硬盘分区的一种管理机制。LVM 适合于管理大存储设备,并允许用户动态调整文件系统的大小。此外,LVM 的快照功能可以帮助我们快速备份数据。LVM 为我们提供了逻辑概念上的磁盘,使得文件系统不再关心底层物理磁盘的概念。

  • 物理卷(Physical Volume,PV):就是真正的物理硬盘或分区。
  • 卷组(Volume Group,VG):将多个物理卷合起来就组成了卷组。组成同一个卷组的物理卷可以是同一块硬盘的不同分区,也可以是不同硬盘上的不同分区。我们可以把卷组想象为一块逻辑硬盘。
  • 逻辑卷(Logical Volume,LV):卷组是一块逻辑硬盘,硬盘必须分区之后才能使用,我们把这个分区称作逻辑卷。逻辑卷可以被格式化和写入数据。我们可以把逻辑卷想象为分区。
  • 物理扩展(Physical Extend,PE):PE 是用来保存数据的最小单元,我们的数据实际上都是写入 PE 当中的。PE 的大小是可以配置的,默认是 4MB。

LVM的优点:

  • LVM是可以允许对卷组进行方便操作的抽象层,包括重新设定文件系统的大小。
  • 允许在多个物理设备间重新组织文件系统。
  • 可以弹性的更改LVM的容量。

注意:

/boot分区用于存放引导文件,不能基于LVM创建。

image-20220223011049360.png

1.2 LVM的管理命令

主要命令:

功能物理卷管理卷组管理逻辑卷管理
scan 扫描pvscanvgscanlvscan
create 建立pvcreatevgcreatelvcreate
display 显示pvdisplayvgdisplaylvdisplay
remove 删除pvremovevgremovelvremove
extend 扩展——vgextendlvextend
reduce 减少——vgreducelvreduce

命令格式:

1)创建命令:

 pvcreate 设备名1 设备名2 [设备名3]...                //创建物理卷
 ​
 vgcreate 卷组名  物理卷名1 物理卷名2 [物理卷3]...    //创建卷组
 ​
 lvcreate -L 容量大小 -n 逻辑卷名 卷组名             //创建逻辑卷
 ​
 mkfs.xfs 逻辑卷名(/dev/卷组名/逻辑名)             //将逻辑卷格式化
 ​
 mount 逻辑卷名(/dev/卷组名/逻辑名) 挂载点          //将逻辑卷挂载
 ​
 vim /etc/fstab                                    //将逻辑卷永久挂载

2)扩展容量命令:

 pvcreate 设备名4...                        //创建新的物理卷
 ​
 vgextend 卷组名 物理卷名4                   //扩容卷组
 ​
 lvextend -L +大小  /dev/卷组名/逻辑卷名     //扩容逻辑卷
 ​
 xfs_growfs  挂载点                         //XFS文件系统扩容
 ​
 resize2fs /dev/VG_NAME/LV_NAME            //EXT4文件系统扩容
 ​
 #针对不同的文件系统,需使用对应的命令来扩容

微信图片_20220225232517.png

2 LVM的应用

2.1 逻辑卷配置示例

2.1.1 实验内容:

1)创建物理卷:将/dev/sdb3和/dev/sdc1创建成物理卷;

2)创建卷组:创建卷组vg01,将2个物理卷分配给vg01

3)创建逻辑卷:从vg01中取8G容量创建逻辑卷lvmail

4)格式化逻辑卷:将逻辑卷lvmail格式化为XFS文件系统

5)挂载逻辑卷:将逻辑卷lvmail挂载到/data/mail 目录下

2.1.2 实验步骤:

1)使用fdisk工具规划分区,将/dev/sdb3和/dev/sdc1的分区格式设置为Linux LVM(对应系统ID为8e)。

 [root@localhost ~]# fdisk /dev/sdb     //管理磁盘分区,将sdb3的格式修改为LVM
 欢迎使用 fdisk (util-linux 2.23.2)。
 ​
 更改将停留在内存中,直到您决定将更改写入磁盘。
 使用写入命令前请三思。
 ​
 ​
 命令(输入 m 获取帮助):t
 分区号 (1-3,5,6,默认 6):3
 Hex 代码(输入 L 列出所有代码):8e        
 已将分区“Linux”的类型更改为“Linux LVM”
 ​
 命令(输入 m 获取帮助):w
 ​
 [root@localhost ~]# fdisk /dev/sdc    //管理磁盘分区,将sdc1的格式修改为LVM
 欢迎使用 fdisk (util-linux 2.23.2)。
 ​
 更改将停留在内存中,直到您决定将更改写入磁盘。
 使用写入命令前请三思。
 ​
 ​
 命令(输入 m 获取帮助):t
 已选择分区 1
 Hex 代码(输入 L 列出所有代码):8e
 已将分区“Linux”的类型更改为“Linux LVM”
 ​
 命令(输入 m 获取帮助):w
 [root@localhost ~]# partprobe       //刷新分区,使系统识别
 Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。

微信图片_20220225184835.png

2) pvcreate命令,将/dev/sdb3和/dev/sdc1创建物理卷。

 [root@localhost ~]# pvcreate /dev/sdb3 /dev/sdc1    //创建物理卷
   Physical volume "/dev/sdb3" successfully created.
   Physical volume "/dev/sdc1" successfully created.
 [root@localhost ~]# pvscan       //扫描查看物理卷
   PV /dev/sda2   VG centos          lvm2 [14.00 GiB / 0    free]
   PV /dev/sdb3                      lvm2 [<2.00 GiB]
   PV /dev/sdc1                      lvm2 [8.00 GiB]
   Total: 3 [<24.00 GiB] / in use: 1 [14.00 GiB] / in no VG: 2 [<10.00 GiB]

微信图片_20220225185136.png

3)vgcreate命令,创建卷组vg01,并将2个物理卷分配给vg01。

 [root@localhost ~]# vgcreate vg01 /dev/sdb3 /dev/sdc1    //创建卷组
   Volume group "vg01" successfully created
 [root@localhost ~]# vgscan                               //扫描卷组
   Reading volume groups from cache.
   Found volume group "centos" using metadata type lvm2
   Found volume group "vg01" using metadata type lvm2
 [root@localhost ~]# vgdisplay vg01   //显示卷组列表
   --- Volume group ---
   VG Name               vg01
   System ID             
   Format                lvm2
   Metadata Areas        2
   Metadata Sequence No  1
   VG Access             read/write
   VG Status             resizable
   MAX LV                0
   Cur LV                0
   Open LV               0
   Max PV                0
   Cur PV                2
   Act PV                2
   VG Size               9.99 GiB            //卷组总容量
   PE Size               4.00 MiB
   Total PE              2558
   Alloc PE / Size       0 / 0   
   Free  PE / Size       2558 / 9.99 GiB      //空余容量
   VG UUID               fl0023-VHwK-3OiQ-y1wT-DCnS-t7f2-E5aTWn
 ​

微信图片_20220225185641.png

微信图片_20220225185947.png

4)lvcreate 命令,从vg01中取8G容量创建逻辑卷lvmail

 [root@localhost ~]# lvcreate -L 8G -n lvmail vg01   //从vg01中取8G容量创建逻辑卷lvmai
   Logical volume "lvmail" created.
 [root@localhost ~]# lvdisplay       //显示逻辑卷的具体信息
  --- Logical volume ---
   LV Path                /dev/vg01/lvmail
   LV Name                lvmail
   VG Name                vg01
   LV UUID                hdrCEI-TAMj-0XSc-0V0v-vCDM-lhUJ-8JlUo4
   LV Write Access        read/write
   LV Creation host, time localhost.localdomain, 2022-02-25 19:02:45 +0800
   LV Status              available
   # open                 0
   LV Size                8.00 GiB       //逻辑卷容量
   Current LE             2048
   Segments               2
   Allocation             inherit
   Read ahead sectors     auto
   - currently set to     8192
   Block device           253:2

微信图片_20220225190819.png

5)mkfs命令,将逻辑卷lvmail格式化为XFS文件系统

 [root@localhost ~]# mkfs.xfs /dev/vg01/lvmail       //将lvmail格式化为XFS文件系统
 meta-data=/dev/vg01/lvmail       isize=512    agcount=4, agsize=524288 blks
          =                       sectsz=512   attr=2, projid32bit=1
          =                       crc=1        finobt=0, sparse=0
 data     =                       bsize=4096   blocks=2097152, imaxpct=25
          =                       sunit=0      swidth=0 blks
 naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
 log      =internal log           bsize=4096   blocks=2560, version=2
          =                       sectsz=512   sunit=0 blks, lazy-count=1
 realtime =none                   extsz=4096   blocks=0, rtextents=0

6)修改/etc/fstab 文件,将逻辑卷lvmail挂载到/data/mail 目录下

 [root@localhost ~]# mkdir /data/mail   
 [root@localhost ~]# blkid | grep lvmail    //查看逻辑卷lvmail的UUID
 /dev/mapper/vg01-lvmail: UUID="14e500d0-867d-470c-b4ed-b5b758db7996" TYPE="xfs" 
 [root@localhost ~]# vim /etc/fstab     //修改配置文件,将lvmail设置为每次开机后自动挂载到/data/mail 目录下
 UUID=14e500d0-867d-470c-b4ed-b5b758db7996 /data/mail xfs defaults       0 0
 [root@localhost ~]# mount -a          //重新挂载所有磁盘
 [root@localhost ~]# df -Th            //查看磁盘信息,可以看到lvmail已成功挂载
 文件系统                类型      容量  已用  可用 已用% 挂载点
 /dev/mapper/centos-root xfs        10G  4.9G  5.2G   49% /
 devtmpfs                devtmpfs  897M     0  897M    0% /dev
 tmpfs                   tmpfs     912M     0  912M    0% /dev/shm
 tmpfs                   tmpfs     912M  9.1M  903M    1% /run
 tmpfs                   tmpfs     912M     0  912M    0% /sys/fs/cgroup
 /dev/sdb1               xfs        10G   33M   10G    1% /data/aa
 /dev/sdb5               xfs       2.0G   33M  2.0G    2% /data/bb
 /dev/sda1               xfs      1014M  179M  836M   18% /boot
 tmpfs                   tmpfs     183M   12K  183M    1% /run/user/42
 tmpfs                   tmpfs     183M     0  183M    0% /run/user/0
 /dev/mapper/vg01-lvmail xfs       8.0G   33M  8.0G    1% /data/mail

微信图片_20220225194432.png

微信图片_20220225233400.png

2.2 逻辑卷扩容示例

2.2.1 实验内容

lvmail当前容量只有8G,不够实际使用,现要求再扩容5G。

2.2.2 操作思考

1)因为卷组vg01剩余容量只有不到2G,不满足扩容5G的要求,所以需要再为vg01分配新的物理卷,物理卷总容量需至少超过3G(保险起见最少添加4G的物理卷)。

2)因为当前所有物理卷都已被使用,所以需要创建新的物理卷。

3)此前新加的硬盘/dev/sdc只创建了一个分区,且已被使用。故现在要设置新的分区。

2.2.2 实验步骤

1)使用fdisk工具,为硬盘 /dev/sdc 创建第二个分区。分区类型设置为LVM,系统ID为8e。

 [root@localhost ~]# fdisk /dev/sdc      //规划磁盘分区,新建第二个分区
 欢迎使用 fdisk (util-linux 2.23.2)。
 ​
 更改将停留在内存中,直到您决定将更改写入磁盘。
 使用写入命令前请三思。
 ​
 ​
 命令(输入 m 获取帮助):n                      //新建分区
 Partition type:
    p   primary (1 primary, 0 extended, 3 free)
    e   extended 
 Select (default p): p
 分区号 (2-4,默认 2):2        
 起始 扇区 (16779264-41943039,默认为 16779264):
 将使用默认值 16779264
 Last 扇区, +扇区 or +size{K,M,G} (16779264-41943039,默认为 41943039):+5G
 分区 2 已设置为 Linux 类型,大小设为 5 GiB
 ​
 命令(输入 m 获取帮助):t                     //更改分区类型
 分区号 (1,2,默认 2):2
 Hex 代码(输入 L 列出所有代码):8e             //选择8e,将分区类型修改为LVM            
 已将分区“Linux”的类型更改为“Linux LVM”
 ​
 命令(输入 m 获取帮助):w
  
 [root@localhost ~]# partprobe        //刷新分区,使系统识别到新建的分区
 Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。

2) pvcreate 命令,创建新的物理卷 /dev/sdc2。

 [root@localhost ~]# pvcreate /dev/sdc2              //创建物理卷/dev/sdc2
   Physical volume "/dev/sdc2" successfully created.
 [root@localhost ~]# pvdisplay  /dev/sdc2           //查看物理卷
   "/dev/sdc2" is a new physical volume of "5.00 GiB"
   --- NEW Physical volume ---
   PV Name               /dev/sdc2
   VG Name               
   PV Size               5.00 GiB
   Allocatable           NO                  //该物理卷是否已分配        
   PE Size               0             
   Total PE              0          
   Free PE               0                    
   Allocated PE          0                   //已分配的容量  
   PV UUID               KCXU0R-2ZU6-txXR-JXBU-6VCc-WaWh-UQwk0h
   

3)vgextend 命令,将物理卷 /dev/sdc2 加入卷组 vg01。

 [root@localhost ~]# vgextend vg01 /dev/sdc2     //将物理卷/dev/sdc2加入卷组 vg01
   Volume group "vg01" successfully extended
 [root@localhost ~]# vgdisplay vg01              //显示卷组vg01的信息
   --- Volume group ---
   VG Name               vg01
   System ID             
   Format                lvm2
   Metadata Areas        3
   Metadata Sequence No  7
   VG Access             read/write
   VG Status             resizable
   MAX LV                0
   Cur LV                1
   Open LV               1
   Max PV                0
   Cur PV                3  
   Act PV                3
   VG Size               <14.99 GiB             //卷组总容量     
   PE Size               4.00 MiB
   Total PE              3837
   Alloc PE / Size       2048 / 8.00 GiB        //卷组中已被分配的容量
   Free  PE / Size       1789 / <6.99 GiB       //卷组中的空余容量
   VG UUID               fl0023-VHwK-3OiQ-y1wT-DCnS-t7f2-E5aTWn
 ​

4)lvextend 命令,为逻辑卷/dev/vg01/lvmail 增加5G的容量。

 [root@localhost ~]# lvextend -L +5G /dev/vg01/lvmail    //为逻辑卷扩容5G
   Size of logical volume vg01/lvmail changed from 8.00 GiB (2048 extents) to 13.00 GiB (3328 extents).
   Logical volume vg01/lvmail successfully resized. 
 [root@localhost ~]# lvdisplay  /dev/vg01/lvmail        //显示逻辑卷信息
   --- Logical volume ---
   LV Path                /dev/vg01/lvmail
   LV Name                lvmail
   VG Name                vg01
   LV UUID                8WqFMf-1DXl-zCjy-qtnt-AQsw-JBVO-iNNBIb
   LV Write Access        read/write
   LV Creation host, time localhost.localdomain, 2022-02-25 19:06:20 +0800
   LV Status              available
   # open                 1
   LV Size                13.00 GiB                //逻辑卷总容量变为13G
   Current LE             3328
   Segments               3
   Allocation             inherit
   Read ahead sectors     auto
   - currently set to     8192
   Block device           253:2

5)xfs_growfs 命令,使XFS文件系统识别到新增的空间,实现文件系统扩容。

 [root@localhost ~]# xfs_growfs /data/mail    //将文件系统扩容
 meta-data=/dev/mapper/vg01-lvmail isize=512    agcount=4, agsize=524288 blks
          =                       sectsz=512   attr=2, projid32bit=1
          =                       crc=1        finobt=0 spinodes=0
 data     =                       bsize=4096   blocks=2097152, imaxpct=25
          =                       sunit=0      swidth=0 blks
 naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
 log      =internal               bsize=4096   blocks=2560, version=2
          =                       sectsz=512   sunit=0 blks, lazy-count=1
 realtime =none                   extsz=4096   blocks=0, rtextents=0
 data blocks changed from 2097152 to 3407872
 ​
 [root@localhost ~]# df -Th          //查看磁盘信息,lvmail容量已变为13G
 文件系统                类型      容量  已用  可用 已用% 挂载点
 /dev/mapper/centos-root xfs        10G  4.9G  5.2G   49% /
 devtmpfs                devtmpfs  897M     0  897M    0% /dev
 tmpfs                   tmpfs     912M     0  912M    0% /dev/shm
 tmpfs                   tmpfs     912M  9.1M  903M    1% /run
 tmpfs                   tmpfs     912M     0  912M    0% /sys/fs/cgroup
 /dev/sdb1               xfs        10G   33M   10G    1% /data/aa
 /dev/sdb5               xfs       2.0G   33M  2.0G    2% /data/bb
 /dev/sda1               xfs      1014M  179M  836M   18% /boot
 tmpfs                   tmpfs     183M   12K  183M    1% /run/user/42
 tmpfs                   tmpfs     183M     0  183M    0% /run/user/0
 /dev/mapper/vg01-lvmail xfs        13G   33M   13G    1% /data/mail

2 磁盘配额

2.1 磁盘配额概述

2.1.1 磁盘配额综述

磁盘配额(Quota)就是 Linux 系统中用来限制特定的普通用户或用户组在指定的分区上占用的磁盘空间或文件个数的。

在此概念中,有以下几个重点需要注意:

  1. 磁盘配额限制的用户和用户组,只能是普通用户和用户组,也就是说超级用户 root 是不能做磁盘配额的;
  2. 磁盘配额限制只能针对分区,而不能针对某个目录,换句话说,磁盘配额仅能针对文件系统进行限制,举个例子,如果你的 /dev/sda5 是挂载在 /home 底下,那么,在 /home 下的所有目录都会受到磁盘配额的限制;
  3. 我们可以限制用户占用的磁盘容量大小(block),当然也能限制用户允许占用的文件个数(inode)

磁盘配额就好像我们出租写字楼,虽然整栋楼的空间非常大,但是酬整栋楼的成本太高。我们可以分开出租,用户如果觉得不够用,则还可以租用更大的空间。不过租用是不能随便进行的,其中有几个规矩必须遵守:

  • 我的楼是租给外来用户的(普通用户),可以租给一个人(用户),也可以租给一家公司(用户 组),但是这栋楼的所有权是我的,所以不能租给我自己(root 用户);
  • 如果要租用,则只能在每层租用一定大小的空间,而不能在一个房间中再划分出子空间来租用(配额只能针对分区,而不能限制某个目录);
  • 租户可以决定在某层租用多大的空间(磁盘容量限制),也可以在某层租用几个人员名额,这样只有这几个人员才能进入本层(文件个数限制)。

2.1.2 磁盘配额的使用条件

磁盘配额要想正常使用,有以下几个前提条件:

  1. 内核必须支持磁盘配额。
  2. 系统中必须安装了 Quota 工具。我们的 Linux 中默认安装了 Quoted 工具
  3. 要支持磁盘配额的分区必须开启磁盘配额功能。这项功能可以手动开启,不再是默认开启的。

2.1.3 磁盘配额中的常见概念

磁盘容量限制和文件个数限制

我们除了可以通过限制用户可用的 block 数量来限制用户可用的磁盘容量,也可以通过限制用户可用的 inode 数量来限制用户可以上传或新建的文件个数。

软限制和硬限制

软限制可理解为警告限制,硬限制就是真正的限制了。比如,规定软限制为 100MB,硬限制为 200MB,那么,当用户使用的磁盘空间为 100~200MB 时,用户还可以继续上传和新建文件,但是每次登录时都会收到一条警告消息,告诉用户磁盘将满。

2.2 启用磁盘配额支持

1)检查CentOS 7系统中是否已安装 xfsprogs 和 xfs_quota 软件包。

 [root@localhost ~]# rpm -q xfsprogs quota   //检查软件包是否安装,发现都已安装
 xfsprogs-4.5.0-12.el7.x86_64
 quota-4.01-14.el7.x86_64

2)添加磁盘配额属性,启用文件系统的配额支持。

方式一:使用 mount 命令,添加usrquota、grpquota挂载参数。

 [root@localhost ~]# umount /dev/sdb1    //因为sdb1之前已经挂载过,需要先解挂
 [root@localhost ~]# mount -o usrquota,grpquota /dev/sdb1 /data/aa

方式二:手动添加的方式,会在下次重新挂载时消失,因此我们可以直接修改 /etc/fstab 文件,将挂载参数写入到配置文件中,这样,即便重新挂载也不会消失。

 [root@localhost ~]# vim /etc/fstab     //修改配置文件,启用磁盘配额支持
 UUID=e0b714cd-c33e-42b2-a051-1e1f3333b4b7 /data/aa xfs  defaults,usrquota,grpquota        0 0
 [root@localhost ~]# mount -a           //重新挂载

微信图片_20220225214421.png

2.3 磁盘配额管理

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

使用 xfs_quota 命令编辑配额设置:

 xfs_quota -x -c "limit -u bsoft=N bhard=N isoft=N ihard=N 用户名" 挂载点

常用选项:

  • -x:表示启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用。
  • -c:表示直接调用管理命令。
  • -u:指定用户账号对象。
  • -g:指定组账号对象。

限制字段:

  • bsoft:设置磁盘容量的软限制数值(默认单位为KB)。
  • bhard:设置磁盘容量的硬限制数值(默认单位为KB)。
  • isoft:设置磁盘文件数的软限制数值。
  • ihard:设置磁盘文件数的硬限制数值。

示例:

 [root@localhost ~]# xfs_quota -x -c "limit -u bsoft=80M bhard=100M nancy" /data/aa     
 #限制nancy用户最多使用100M的磁盘容量
 
 [root@localhost ~]# xfs_quota -x -c "limit -u isoft=4 ihard=5 nancy" /data/aa      
 #限制nancy用户最多创建5个文件

微信图片_20220228160019.png

2.3.2 查看磁盘配额使用

xfs_quota 命令查看磁盘配额的设置和使用情况:

 xfs_quota -x -c "report 选项" 挂载点

report 常用选项:

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

示例:

 [root@localhost ~]# xfs_quota -x -c "report -ubih" /data/aa  //查看/data/aa对用户作的配额限制
 User quota on /data/aa (/dev/sdb1)
                         Blocks                            Inodes              
 User ID      Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
 ---------- --------------------------------- --------------------------------- 
 root            0      0      0  00 [------]      3      0      0  00 [------]
 nancy           0    80M   100M  00 [------]      0      4      5  00 [------]
 ​
 #可看到针对nancy用户的容量硬限制是100M,文件数硬限制是5个,还未创建任何文件。

微信图片_20220228160204.png

2.3.3 验证磁盘配额功能

1)验证nancy用户的容量硬限制100M

 [root@localhost ~]# chmod 777 /data/aa     //设置所有人对/data/aa目录都有读写执行的全新
 [root@localhost ~]# su nancy               //切换为nancy用户
 [nancy@localhost root]$ cd /data/aa        //切换到/data/aa目录下
 [nancy@localhost aa]$ dd if=/dev/zero of=/data/aa/yuji.txt bs=10M count=11  //复制110M的内容到aa目录下的文件中,提示超出磁盘限额,只能写入100M
 dd: 写入"/data/aa/yuji.txt" 出错: 超出磁盘限额
 记录了11+0 的读入
 记录了10+0 的写出
 104857600字节(105 MB)已复制,1.2945 秒,81.0 MB/秒
 ​
 [nancy@localhost aa]$ exit          //退出nancy用户,回到root用户
 exit
 [root@localhost ~]# xfs_quota -x -c "report -ubih" /data/aa   //查看磁盘配额使用情况,nancy用户已使用100M容量,已创建1个文件
 User quota on /data/aa (/dev/sdb1)
                         Blocks                            Inodes              
 User ID      Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
 ---------- --------------------------------- --------------------------------- 
 root            0      0      0  00 [------]      3      0      0  00 [------]
 nancy        100M    80M   100M  00 [6 days]      1      4      5  00 [------]
 ​

微信图片_20220228160551.png

微信图片_20220228160749.png

2)验证nancy用户的文件数量硬限制5个

 [root@localhost ~]# su nancy
 [nancy@localhost root]$ cd /data/aa
 [nancy@localhost aa]$ touch file1.txt  //创建一个文件,因为之前100M的容量已被使用,故即使文件数量限制还未达到,也无法创建
 touch: 无法创建"file1.txt": 超出磁盘限额
 [nancy@localhost aa]$ rm -rf *         //清空目录
 [nancy@localhost aa]$ touch file{1..10}.txt   //一次性创建10个文件,系统提示后5个文件超出磁盘限额
 touch: 无法创建"file6.txt": 超出磁盘限额
 touch: 无法创建"file7.txt": 超出磁盘限额
 touch: 无法创建"file8.txt": 超出磁盘限额
 touch: 无法创建"file9.txt": 超出磁盘限额
 touch: 无法创建"file10.txt": 超出磁盘限额
 [nancy@localhost aa]$ ls             //列出目录内容,发现只有5个文件
 file1.txt  file2.txt  file3.txt  file4.txt  file5.txt
 ​
 [nancy@localhost aa]$ exit          //退出nancy用户,回到root用户
 exit
 [root@localhost ~]# xfs_quota -x -c "report -ubih" /data/aa  //查看磁盘配额使用情况,nancy用户已创建5个文件
 User quota on /data/aa (/dev/sdb1)
                         Blocks                            Inodes              
 User ID      Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
 ---------- --------------------------------- --------------------------------- 
 root            0      0      0  00 [------]      3      0      0  00 [------]
 nancy           0    80M   100M  00 [------]      5      4      5  00 [6 days]

微信图片_20220228161946.png

微信图片_20220228162106.png

2.4 取消磁盘配额

命令格式:

 xfs_quota -x -c "disable -up" 挂载点    
 #暂时取消quota的限制,但其实系统还是在计算quota中,只是没有管制而已。
 
 xfs_quota -x -c "enable -up" 挂载点     
 #恢复到正常管制的状态,与disable相互取消、启用。
 ​
 xfs_quota -x -c "off -up" 挂载点        
 #完全关闭quota的限制,使用了这个状态后,只有卸载再重新挂载才能再次启动quota。(并不移除quota的限制设置,只是关闭。)
 ​
 xfs_quota -x -c "remove -p" 挂载点     
 #必须要在off的状态下才能执行的指令,可以移除quota的限制设置。(注意:"remove -p"会移除所有项目的限制)

示例:

1)"off -up" 关闭quota限制,之后测试nancy用户能否创建文件

 [root@localhost ~]# xfs_quota -x -c "off -up" /data/aa    //完全关闭quota的限制
 [root@localhost ~]# su nancy        //切换为nancy用户
 [nancy@localhost root]$ cd /data/aa
 [nancy@localhost aa]$ mkdir dir1    //创建目录
 [nancy@localhost aa]$ ls            //创建成功,未提示超出磁盘配额
 file1.txt  file2.txt  file3.txt  file4.txt  file5.txt  dir1

微信图片_20220228162434.png

2)卸载再重新挂载,查看磁盘配额表中数据是否仍存在

 [root@localhost ~]# umount /data/aa    //卸载
 [root@localhost ~]# mount -o usrquota,grpquota /dev/sdb1 /data/aa  //重新挂载
 [root@localhost ~]# xfs_quota -x -c "report -ubih" /data/aa   //查看磁盘配额使用,nancy用户共创建6个文件
 User quota on /data/aa (/dev/sdb1)
                         Blocks                            Inodes              
 User ID      Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace  
 ---------- --------------------------------- --------------------------------- 
 root            0      0      0  00 [------]      3      0      0  00 [------]
 nancy           0    80M   100M  00 [------]      6      4      5  00 [-none-]

微信图片_20220228163215.png

3)"off -up" 关闭quota限制,之后"remove -p"移除所有项目的限制。

 [root@localhost ~]# xfs_quota -x -c "off -up" /data/aa
 [root@localhost ~]# xfs_quota -x -c "remove -p" /data/aa