磁盘配额的概述及管理
为什么创建磁盘配额
在Linux根分区的磁盘空间耗尽时,Linux将无法再创建新的文件(包括程序运行的临时文件),从而导致服务程序崩溃,系统无法启动等故障现象。
为了避免出现类似问题,可以设置启用磁盘配额功能,对用户在指定文件系统(分区)中使用磁盘空间、文件数量进行限制,以防止个别用户恶意或无意间占用大量磁盘空间,从而保证系统存储空间的稳定性和持续可用性。
使用磁盘配额的前提条件
设置磁盘配额,需要安装 quota 软件包,用于配置和管理磁盘配额,在RHEL 6中,系统默认安装了 quota 软件包。
磁盘配额的作用范围
quota软件设置的磁盘配额功能,只在指定的文件系统(分区)内有效,用户使用其他未设置配额的文件系统时,将不受限制。
磁盘配额的限制对象
quota 主要针对系统中的指定用户账号、组账号进行限制,没有被设置限额的用户或组将不受影响。对组账号设置配额后,组内所有成员使用的磁盘容量、文件数量的总和不能超过限制。
磁盘配额的限制类型
# 磁盘容量:限制用户能够使用的磁盘空间的大小,默认单位为KB
# 文件数量:限制用户能够使用的文件个数
磁盘配额的限制方法
# 软限制:指定一个软性的配额数值(如100MB的磁盘空间、80个文件),在固定的宽限期限(默认为七天)内允许超过这个限制,但系统会给出警告信息
# 硬限制:指定一个硬性的配额数值(如120MB的磁盘空间、100个文件),是绝对禁止用户超过限制值,当达到硬限制值时,系统会给出警告信息并禁止继续写入数据。硬限制的配额值应该大于软限制值,否则软限制将失效
实验:
下面将上篇创建的 yang 逻辑卷 /dev/ysf/yang 挂载到 /mailbox 目录下 ,然后在该文件中配置实现磁盘配额功能。
1.以支持磁盘配额功能的方式挂载文件系统
将usrquota, grpquota挂载参数写入到“/etc/fstab”文件中。
# chmod 777 /mailbox //为后续测试方便,允许任何用户写入数据
# vim /etc/fstab //修改 yang 逻辑卷的挂载配置
/dev/ysf/yang /mailbox ext4 defaules,usrquota,grpquota 0 0
2.检测磁盘配额并生成配额文件
使用 quotacheck 命令可以对指定的文件系统进行磁盘配额检测,也可以用来建立配额文件,以便保存用户、组在该分区的配额设置
例如:执行以下操作将扫描系统中的所有文件系统,并在支持配额的文件系统中建立配额文件
# quotacheck -augcv
-a 表示扫描所有分区,如果不使用,将必须指定一个分区或挂载点目录作为命令参数
-u 表示检测用户配额信息
-g 表示检测组配额信息
-c 表示创建新的配额文件
-v 表示显示命令执行过程中的细节信息
# ls -l /mailbox/aquota.*
可以看到新建立的配置文件,包括“aquota.user”、“aquota.group”,分别用于保存用户、组的配额设置,配置文件保存在该文件系统根下,默认权限为600
3.编辑用户和组账号的配额设置
使用 edquota 命令结合 -u、-g 选项可用于编辑用户和组的配额设置,(默认调用 vi 作为编辑程序),可设置磁盘容量、文件大小的软、硬限制数值。
例如:执行以下操作可以对用户 zhangsan 的配额进行编辑
# edquota -u zhangsan
Filesystem blocks soft hard inodes soft hard
/dev/mapper/ysf-yang 0 0 0 0 0 0
Filesystem:表示本行配置记录文件对应的文件系统(分区),即配额的作用范围
blocks:表示用户已使用的磁盘容量,默认单位为KB
inodes:表示用户当前已拥有的文件数量
soft:第3列对应为磁盘容量的软限额数值,单位KB;第6列对应文件数量软限额数值,单位个
hard:第3列对应为磁盘容量的硬限额数值,单位KB;第6列对应文件数量硬限额数值,单位个
例如:若要为 zhangsan 设置配额,磁盘容量软限制为80MB、硬限制为100MB,文件数量软限制40个、硬限制40个,可执行以下操作
# edquota -u zhangsan
Filesystem blocks soft hard inodes soft hard
/dev/mapper/ysf-yang 0 80000 100000 0 40 50
可以设置软限制的宽限期限,默认为7天,可以修改。
例如:可以将宽限期限改为10天。
# edquota -t
Filesystem Block grace period Inode grace period
/dev/mapper/ysf-yang 10days 10days
4.启动文件系统的磁盘配额功能
启动和关闭文件系统的磁盘配额功能分别使用 quotaon、quotaoff 命令执行,需要指定设备文件名或文件系统的挂载点作为参数。quotaon 命令使用的选项与 quotacheck 的选项类似。
例如:执行以下操作可启用“/mailbox”文件系统的用户、组磁盘配额功能,并显示命令执行的过程信息。
# quotaon -ugv /mailbox
5.查看用户或分区的配额使用情况
可使用 quota 命令、repquota命令,其中,quota 命令可以结合 -u、-g 选项分别查看指定用户和组的配额使用情况;而 repquota 命令主要指定文件系统输出配额使用情况报告,结合 -a 选项可查看所有可用分区的配额使用情况报告。
例如:查看用户账号 zhangsan、组账号 users 的配额使用情况
# quota -u zhangsan
# quota -g users
查看 /mailmox 文件系统的配额使用情况
# repquota /mailmox
6.验证磁盘配额功能
可使用 dd 转换工具,dd 命令是设备转换和复制命令
例如:向 /mailmox 目录下写入一个名为 a.txt 的测试文件,大小为10MB(分10次读取,每次1MB),复制来源为设备 /dev/zero
# dd if=/dev/zero of=/mailmox/a.txt bs=1M count=10
if= 指定输入设备(或文件)
of= 指定输出设备(或文件)
bs= 指定读取数据块的大小
count= 指定读取数据块的数量