centos7磁盘配额管理

1、什么是磁盘配额管理
当一个磁盘空间被多个用户使用时,为了公平,防止某些用户占用过多的空间,我们就需要对磁盘进行配额管理,对可用存储空间进行限制。
2、Linux磁盘配额管理
Linux系统磁盘配额管理只能针对整个文件系统设置,即该磁盘分区的所有目录或者文件受配额限制,不能针对某个目录进行配额限制。同时Linux系统的磁盘配额功能可以针对用户,也可以针对组设置,在Linux系统中root用户不受配额限制,也就是说Linux系统上的磁盘配额管理只针对普通用户和组有效。
3、Linux系统上磁盘配额限制方式
磁盘容量限制:通过限制用户或者组使用的磁盘空间大小
文件数量限制:通过iNode索引节点数限制用户或者组使用空间大小
4、配置磁盘配额功能
操作平台:VMware workstation
操作环境:centos7 计算机一台,硬盘一块/dev/sdc
首先检查是否安装了quota软件包,默认已经安装,如果没有自行安装
5、对于Linux系统磁盘配额,会因为磁盘分区文件系统格式不同有小小的差异,这里我们主要说一下ext系列和xfs两种
首先我们现在以下ext系列的:
1、对于一个已经自动挂载到目录的磁盘分区,我们需要编辑/etc/fstab/文件,添加usrquota或者grpquota,表示启用用户配额功能或者组配额功能

	[root@lab-236 ~]# cat  /etc/fstab 
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=a4afdc45-11ae-4ea5-afd4-394e94d3b2da /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/sdc                       /mnt                             ext4       defaults,usrquota,grpquota           0 0   

如果是手动挂载的磁盘分区,我们可以手动的重新挂载一次,通过-o选项指定用户和组启用磁盘配额功能

[root@lab-236 ~]# mount -o remount,usrquota,grpquota /dev/sdc1

因为挂载目录启用了磁盘配额,所以这其中就伴随着有关磁盘配额的设置值以及使用等信息的配额存储文件,这其中有两个配额文件aquota.user和aquota.group,分别是用户配额文件和组配额文件。Linux系统会分析整个文件系统中每个用户和组拥有的文件数量和总容量,并把它们分别记录到对应aqouta.user和aquota.group文件中,为什么说这个,就是在ext系列文件系统中,这些有关配额结构信息不再分区的元数据中,配额的检查也不是自动启动的,需要首先初始化一下,检查并生成配额文件。

[root@lab-236 ~]# quotacheck  -cvug /mnt/

选项介绍:
-c:创建新的配额文件
-u:检查并更新用户配额文件
-g:检查并更新组配额文件
上述检查的目的,就是让配额文件拿到最新的用户或组的磁盘使用量的情况,然后根据每个用户或组的限制值来规范磁盘使用空间
而对于xfs文件系统就不存在初始化的情况,因为配额的整体结构都是在创建文件系统时直接包含到元数据中,并且会自动配额检查,更新配额文件信息,所以我们只需开启文件系统的配额功能即可

[root@lab-236 ~]# quotaon /dev/sdc1
quotaon: Enforcing group quota already on /dev/sdc1
quotaon: Enforcing user quota already on /dev/sdc1

这里有几个选项可以记一下:
-a:会将所有启用了配额选项的挂载点全部启用文件系统配额
-u:针对指定用户启动
-g:针对指定组启动
关闭启动:quotaoff,上述选项同样适用
Linux系统的配额限制值有两种
1、硬性限制值:用户和组磁盘使用量绝对不能超过的值,即最大值
2、软性限制值:用户和组磁盘使用量警告值,类似库存告警线,当超过这个值时,配额选项中有一个叫宽限期的机制,如果在宽限期内没有采取措施,将会停止磁盘的使用权,这个宽限期一般默认7天,如果需要修改可以使用edquota -t进行修改。接下来配置用户和组的磁盘配额限制值
针对指定用户限制值:

	[root@lab-236 ~]# edquota -u zhangsan 
Disk quotas for user zhangsan (uid 1002):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sdc1                      3000       2000       3000          2        0        0

blocks表示用户可以使用的数据块,soft表示软性限制值,hard表示硬性限制值,单位为KB
针对指定用户组限制值:

[root@lab-236 ~]# edquota -g lisi 
Disk quotas for group lisi (gid 1003):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sdc1                         0       2000       3000          0        0        0

2、测试上述用户配额限制值效果
首先我们要针对挂载点,让zhangsan这个用户有写入权限

[root@lab-236 ~]# chmod o+w /mnt/

然后我们切换到zhangsan

[root@lab-236 ~]# su  - zhangsan 

接下来我们创建一个大小为1000KB的文件

[zhangsan@lab-236 ~]$ dd if=/dev/zero of=test1 bs=1K count=1000

最后我们将这个文件cp到/mnt目录中,当我们连续cp到/mnt三次后,提示超额,因为我们硬性限制值3000KB

[zhangsan@lab-236 ~]$ cp  test1 /mnt/test
[zhangsan@lab-236 ~]$ cp  test1 /mnt/test1
[zhangsan@lab-236 ~]$ cp  test1 /mnt/test2
cp: 无法创建普通文件"/mnt/test1": 超出磁盘限额

总结:
介绍几种查看磁盘配额使用情况的方式
1、quota

[zhangsan@lab-236 ~]$ quota
Disk quotas for user zhangsan (uid 1002): 
Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
/dev/sdc1    3000*   2000    3000   6days       2       0       0 

有几个选项可以记一下:
-s:表示以1024的倍数显示,单位会变成MB
-u:指定用户显示
-g:指定用户组显示
2、requota 用于查看文件系统的使用情况,可以查所有启动配额的文件系统的使用情况,只有管理员可以查看所有的

		[root@lab-236 ~]# repquota -a
*** Report for user quotas on device /dev/sdc1
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --   27860       0       0           1025     0     0       
zhangsan  +-    3000    2000    3000  6days       2     0     0

也有几个选项可以记一下:
-v:显示详细信息
-s:使用M、G为单位显示
-u:显示指定用户信息
-g:显示指定组信息
对于xfs系统,还可以使用xfs_quota,这个命令支持子命令:
state:显示整体情况
print:列出文件系统配额情况

上一篇:2021/3/23剑指面试3 数组中重复的数字


下一篇:面试题03. 数组中重复的数字