配置XFS配额(用户,组和项目配额)CentOS/RHEL 7/8
centos 7 xfs启用配额。
centos 7配额xfs。
如何在rhel/centos 7和8中配置xfs配额。
更改XFS配额的宽限期。
修改xfs配额的宽限期。
在rhel/centos 8中的文件夹上设置配额。
xfs quotacheck。
挂载xfs pquota。
rhel xfs配额。
xfs项目配额。
xfs用户配额。
xfs groupquota。
启用xfs配额。
在CentOS 7中使用示例禁用xfs配额。
XFS配额子系统管理磁盘空间(块)和文件(inode)使用的限制。
XFS配额在用户,组,目录或者项目级别控制或者报告这些项目的使用情况。
在本文中,我将分享配置xfs用户配额,xfs组guota和xfs项目配额的步骤,这些配额也可以称为xfs磁盘配额,因为该配额应用于目录级别。
与ext4文件系统配额相比,实现xfs配额的步骤和命令是不同的。
实验室环境
我正在使用Oracle VirtualBox通过CentOS 8创建虚拟机,其中我将执行所有命令来配置xfs配额。
为此,我添加了一个添加磁盘/dev/sdb
并将其创建为XFS文件系统。
启用XFS配额
使用挂载选项uquota,gquota和pquota挂载文件系统/dev/sdb1,以启用xfs用户配额,xfs组配额和xfs项目配额(xfs磁盘配额)。
说明:
必须先卸载目标分区,然后才能启用xfs配额再次安装目标分区。
如果计划对" /"(根)分区执行此操作,则必须更新"/etc/fstab"并重新启动节点以启用xfs配额。
例如,我已经为/dev/sdb1
启用了xfs配额。
# grep quota /etc/fstab /dev/sdb1 /xquota xfs defaults,uquota,gquota,prjquota 0 0" /etc/fstab
如果我们具有与我的设置类似的数据分区,则可以在不重新启动节点的情况下将其卸载
[root@centos-8 ~]# umount /xquota
接下来使用xfs配额指令安装它
[root@centos-8 ~]# mount -o uquota,gquota,pquota /dev/sdb1 /xquota
验证是否为/dev/sdb1
启用了xfs配额:
[root@centos-8 ~]# mount | grep quota /dev/sdb1 on /xquota type xfs (rw,relatime,attr2,inode64,usrquota,prjquota,grpquota)
在RHEL/CentOS 7/8中配置xfs用户配额和xfs组配额
xfs用户配额和xfs qroup配额的主要目的是跟踪和监视文件系统的块和索引节点使用情况。
XFS文件系统确实有助于根据用户和组来管理存储。
这样可以为单个用户或者组设置配额。
其中我将分享在CentOS/RHEL 7/8中使用同一命令启用xfs用户配额和xfs组配额的步骤。
对块应用XFS用户配额限制
首先,我们将在/xquota
设备上为用户'hynman'配置和应用xfs用户配额。
其中我将软限制设置为1GB,将硬限制设置为1.5GB。
使用xfs配额,我们不能使用十进制值,因此我的软限制以GB为单位,而硬限制以MB为单位,因为我不能在此处使用1.5GB的值。
[root@centos-8 ~]# xfs_quota -x -c 'limit bsoft=1g bhard=1536m hynman' /xquota
说明:
我们可以为用户/组的inode和块设置这些限制。
- 配额块限制(bhard/bsoft)
- inode计数限制(ihard/isoft)
- 实时块限制(rtbhard/rtbsoft)
其中
-x Enable expert mode. All of the administrative commands (see the ADMINISTRATOR COMMANDS section below) which allow modifications to the quota system are available only in expert mode. -c xfs_quota commands Jan be run interactively (the default) or as arguments on the command line. Multiple -c arguments Jan be given. The commands are run in the sequence given, then the program exits.
要检查xfs配额的状态,可以在xfs_quota
命令中使用report
:
[root@centos-8 ~]# xfs_quota -x -c report /xquota/ User quota on /xquota (/dev/sdb1) Blocks User ID Used Soft Hard Warn/Grace ---------- ------------------------------------------------- root 0 0 0 00 [--------] hynman 0 1048576 1572864 00 [--------]
目前,如我们所见,hynman用户没有使用任何块,也没有xfs用户配额的软限制和硬限制。
另请阅读:
概述不同的磁盘类型(HDD,SSD和光盘)和磁盘接口类型(SATA,IDE,FC,SCSI)使用Linux中的示例监控磁盘IO性能的前15种工具
验证用户hynman的XFS用户配额
我将为其他用户授予/xquota的完全权限,因此我可以允许hynman用户在此路径内进行写操作。
[root@centos-8 ~]# chmod o+rwx /xquota/
我们将使用fallocate
创建一个大小为1.2GB的虚拟文件。
由于我们的xfs用户配额硬限制为1.5GB,因此应该可以成功。
[hynman@centos-8 ~]$fallocate -l 1.2G /xquota/test_file_1.2G
再次验证/xquota
的xfs用户配额状态
[root@centos-8 ~]# xfs_quota -x -c report /xquota/ User quota on /xquota (/dev/sdb1) Blocks User ID Used Soft Hard Warn/Grace ---------- ------------------------------------------------- root 0 0 0 00 [--------] hynman 1253376 1048576 1572864 00 [7 days]
接下来,我们将尝试创建另一个1GB的文件,但我们知道根据我们的xfs用户配额硬限制,我们只剩下300MB,这应该会失败
[hynman@centos-8 ~]$fallocate -l 1G /xquota/test_file_1.2G fallocate: fallocate failed: Disk quota exceeded
正如预期的那样,一旦达到xfs用户配额限制,我们将收到"磁盘配额超出"错误
修改XFS用户配额限制
如果我们觉得需要修改xfs用户配额限制,则可以重新运行与设置xfs配额相同的命令,但要使用新的限制值。
例如,我添加了1G的软限制和1.5G的硬限制,我希望将其更改为900M作为软块限制,将1G作为硬块限制
[root@centos-8 ~]# xfs_quota -x -c 'limit bsoft=900M bhard=1000M hynman' /xquota
验证新的XFS配额限制
[root@centos-8 ~]# xfs_quota -x -c "report -h" /xquota/ User quota on /xquota (/dev/sdb1) Blocks User ID Used Soft Hard Warn/Grace ---------- -------------------------------- root 300M 0 0 00 [------] hynman 0 900M 1000M 00 [------]
将xfs用户配额限制应用于inode
类似于块限制,我们也可以使用isoft
和ihard
为inode添加xfs配额限制,如下所示。
其中我为用户hynman添加了一个软inode限制,将其设为500,将硬限制设为700
[root@centos-8 ~]# xfs_quota -x -c 'limit isoft=500 ihard=700 hynman' /xquota
检查用户hynman的xfs配额限制
[root@centos-8 ~]# xfs_quota -x -c "report -bih" /xquota/ User quota on /xquota (/dev/sdb1) Blocks Inodes User ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace ---------- --------------------------------- -------------------------------- root 300M 0 0 00 [------] 5 0 0 00 [------] hynman 0 900M 1000M 00 [------] 0 500 700 00 [------]
说明:
配置xfs组配额的步骤与cfs用户配额几乎相同,因此我在此处跳过了xfs组配额的演示。
我们可以使用xfs_quota -x -c'limit -g bsoft = 500M bhard = 700M quotagroup'/quotacheck
来配置xfs组配额限制。
其中quotagroup是我要为其实现xfs组配额的组,其软块限制为500M,硬限制为700M。
在同一命令中配置xfs用户配额和组配额
使用-u为用户定义xfs配额,使用-g为组定义xfs配额。
使用以下语法在单个命令中为用户和组配置xfs配额。
# xfs_quota -x -c 'limit -u bsoft= bhard= user '-c' limit -g bsoft= bhard= group'
例如,其中我为用户hynman添加了500M的软块限制和800M的硬限制,并且在同一命令中,为组admin添加了600M的软块限制和900M的硬限制
[root@centos-8 ~]# xfs_quota -x -c 'limit -u bsoft=500M bhard=800M hynman' -c 'limit -g bsoft=600M bhard=900M admin' /xquota/
在/xquota目录中打印并检查用户和组的xfs配额报告
[root@centos-8 ~]# xfs_quota -x -c "report -bih" /xquota/ User quota on /xquota (/dev/sdb1) Blocks Inodes User ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace ---------- --------------------------------- -------------------------------- root 300M 0 0 00 [------] 5 0 0 00 [------] hynman 0 500M 800M 00 [------] 0 500 700 00 [------] Group quota on /xquota (/dev/sdb1) Blocks Inodes Group ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace ---------- --------------------------------- -------------------------------- root 300M 0 0 00 [------] 5 0 0 00 [------] admin 0 600M 900M 00 [------] 0 0 0 00 [------]
在RHEL/CentOS 7/8中配置XFS项目配额(或者XFS磁盘配额)
项目配额的主要目的是跟踪和监视目录的磁盘使用情况。
按每个目录或者每个项目进行管理时,XFS会管理与特定项目关联的目录层次结构的磁盘使用情况。
通过这样做,XFS可以识别项目之间的跨组织"组"边界。
这提供了比管理用户或者组配额时更有效的控制级别。
为了为单个目录而不是用户或者xfs组配额启用xfs磁盘配额,我们必须向包含该目录的卷中添加名为pquota的xfs项目配额指令。
xfs项目配额用于添加和配置目录的xfs配额。
xfs磁盘配额基本上是xfs项目配额。
在本文开头,我分享了启用xfs项目配额的步骤,因此我将在此处跳过该部分。
创建XFS项目配额相关文件
在配置项目控制目录的限制之前,请先将它们添加到/etc/projects
中。
我们需要添加一个项目名称和一个关联的新的唯一ID/etc/projectid
,以"项目名称:项目ID"格式将项目ID映射到项目名称。
[root@centos-8 ~]# echo testquota:11 >> /etc/projid
这里的testquota是我的项目名称,而11
是项目ID,可以是映射到项目的任何数值。
接下来,将项目控制的目录以"项目ID:项目控制的目录"的格式添加到"/etc/projects"中。
[root@centos-8 ~]# echo 11:/xquota >> /etc/projects
初始化项目目录
将项目添加到/etc/projects
之后,使用以下语法初始化其项目目录:
# xfs_quota -x -c 'project -s projectname' project_path
初始化我们的testquota
项目目录
[root@centos-8 ~]# xfs_quota -x -c 'project -s testquota' Setting up project testquota (path /xquota)... Processed 1 (/etc/projects and cmdline) paths for project testquota with recursion depth infinite (-1).
我们可以使用以下命令来检查我们设置的项目:
[root@centos-8 ~]# xfs_quota -x -c "print" /xquota/ Filesystem Pathname /xquota /dev/sdb1 (pquota) /xquota /dev/sdb1 (project 11, testquota)
打印出此设备的xfs配额规则,由于当前未设置xfs项目配额,因此我们看到软限制和硬限制的值为空。
[root@centos-8 ~]# xfs_quota -x -c "report -pbih" /xquota/ Project quota on /xquota (/dev/sdb1) Blocks Inodes Project ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace ---------- --------------------------------- -------------------------------- #0 0 0 0 00 [------] 2 0 0 00 [------] testquota 0 0 0 00 [------] 1 0 0 00 [------]
其中
-p project quota -b blocks used -i inodes used -h report in human-readable format
套用XFS专案配额限制
然后可以使用以下命令配置具有初始化目录的项目的XFS配额:
[root@centos-8 ~]# xfs_quota -x -c 'limit -p bsoft=200m bhard=300m testquota' /xquota/
打印xfs磁盘配额报告(pquota
)。
现在,正如我们所看到的,我们为xfs配额定义了一个软限制和硬限制
[root@centos-8 ~]# xfs_quota -x -c 'report -pbih' /xquota/ Project quota on /xquota (/dev/sdb1) Blocks Inodes Project ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace ---------- --------------------------------- -------------------------------- #0 0 0 0 00 [------] 2 0 0 00 [------] testquota 0 200M 300M 00 [------] 1 0 0 00 [------]
验证XFS项目配额
现在,既然我们完成了设置xfs磁盘配额的配置,就该验证xfs配额限制了。
对于/xquota目录,我们的软限制为200MB,硬限制为400MB。
我们尝试使用dd命令创建一个虚拟文件:
[root@centos-8 ~]# dd if=/dev/urandom of=/xquota/test_file dd: writing to '/xquota/test_file': No space left on device 614401+0 records in 614400+0 records out 314572800 bytes (315 MB, 300 MiB) copied, 7.74771 s, 40.6 MB/s
如我们所见,创建了300MB的文件后,该命令失败,并显示dd:写入'/xquota/test_file':设备上没有剩余空间"。
因此,我们的xfs磁盘配额可以按预期工作。
XFS配额宽限期如何工作?
在XFS配额中,宽限期称为timer
。
当用户超出软限制时,将启用计时器。
每当配额下降到软限制以下时,都会禁用计时器。
如果弹出计时器,则将已超过的特定限制视为已达到硬限制,并且不会为用户分配更多资源。
重置此条件的唯一方法(不关闭限制执行或者增加限制)是将使用量减少到配额以下。
更新或者修改XFS配额宽限期(计时器)
要检查当前的xfs配额宽限期使用状态
[root@centos-8 ~]# xfs_quota -x -c "state" /xquota/ User quota state on /xquota (/dev/sdb1) Accounting: ON Enforcement: ON Inode: #131 (2 blocks, 2 extents) Group quota state on /xquota (/dev/sdb1) Accounting: ON Enforcement: ON Inode: #135 (2 blocks, 2 extents) Project quota state on /xquota (/dev/sdb1) Accounting: ON Enforcement: ON Inode: #132 (1 blocks, 1 extents) Blocks grace time: [7 days] Inodes grace time: [7 days] Realtime Blocks grace time: [7 days]
默认情况下,所有块,inode和实时块的xfs配额宽限期均为7天。
如下所示,要更改块的宽限期,请使用(-b),inode(-i)和实时块(-r)。
其中我已将阻止限制的宽限期增加到10天
[root@centos-8 ~]# xfs_quota -x -c 'timer -p -b 10days' /xquota
计时器允许修改配额强制执行超时(即在将软限制强制为硬限制之前允许通过的时间)。
验证新的阻止限制:
[root@centos-8 ~]# xfs_quota -x -c "state -p" /xquota Project quota state on /xquota (/dev/sdb1) Accounting: ON Enforcement: ON Inode: #132 (1 blocks, 1 extents) Blocks grace time: [10 days] Inodes grace time: [7 days] Realtime Blocks grace time: [7 days]
暂时停用xfs配额
要临时禁用xfs配额以使用xfs用户配额
[root@centos-8 ~]# xfs_quota -x -c "disable -uv" /xquota/ User quota state on /xquota (/dev/sdb1) Accounting: ON Enforcement: OFF Inode: #131 (2 blocks, 2 extents) Blocks grace time: [7 days] Inodes grace time: [7 days] Realtime Blocks grace time: [7 days]
如我们所见,"计费"仍处于"开"状态,这意味着我们仍然可以设置配额,但这些限制将不再执行。
现在,我可以使用用户hynman在/xquota下创建任何大小的文件
[hynman@centos-8 ~]$fallocate -l 2G /xquota/test_file12
如我们所见,即使用户hynman的硬块限制为1G,用户hynman仍能够创建2Gb大小的文件
类似地,要禁用组和项目的配额,分别使用-g
和-p
。
提示:
要启用xfs配额,我们可以使用~]#xfs_quota -x -c" enable -ugpv"/xquota /
,其中u表示xfs用户配额,g表示xfs组配额,p表示xfs项目数据
要完全关闭/xquota
用户" hynman"的xfs配额,
[root@centos-8 ~]# xfs_quota -x -c "off -uv" /xquota/ User quota state on /xquota (/dev/sdb1) Accounting: OFF Enforcement: OFF Inode: #131 (2 blocks, 2 extents) Blocks grace time: [7 days] Inodes grace time: [7 days] Realtime Blocks grace time: [7 days]
接下来,我们只能看到/xquota
的xfs组配额值
[root@centos-8 ~]# xfs_quota -x -c "report -bih" /xquota/ Group quota on /xquota (/dev/sdb1) Blocks Inodes Group ID Used Soft Hard Warn/Grace Used Soft Hard Warn/Grace ---------- --------------------------------- -------------------------------- root 0 0 0 00 [------] 3 0 0 00 [------] admin 0 600M 900M 00 [------] 0 0 0 00 [------]
验证在安装下是否相同。
因此,对于我们来说,现在仅启用组配额。
[root@centos-8 ~]# mount | grep quota /dev/sdb1 on /xquota type xfs (rw,relatime,attr2,inode64,grpquota)
永久禁用XFS配额
要禁用xfs配额,请从/etc/fstab
中永久删除xfs配额安装选项。
从/etc/fstab
下的文件系统设备中删除所有xfs配额指令。
最好在默认情况下添加noquota
以确保正确禁用xfs配额
# grep quota /etc/fstab /dev/sdb1 /xquota xfs defaults,noquota 0 0
接下来,我们必须重新启动节点才能激活更改以禁用xfs配额。
如果我们还希望禁用当前会话的xfs配额(不进行重新引导),则可以使用以下命令:
[root@centos-8 ~]# xfs_quota -x -c "off -ugpv" /xquota/
这也将禁用当前会话的xfs uquota,gquota和pquota。