Linux管理员 - 配额管理



CentOS磁盘配额可以同时启用;在磁盘容量超过限制之前,提醒系统管理员并拒绝用户进一步访问磁盘存储。当磁盘已满时,根据磁盘上驻留的内容,整个系统可能会完全停止运行,直到恢复为止。

在CentOS Linux中启用配额管理基本上是一个四步过程:

  • 步骤1 - 在`/etc/fstab`中为组和用户启用配额管理。

  • 步骤2 - 重新挂载文件系统。

  • 步骤3 - 创建配额数据库并生成磁盘使用情况表。

  • 步骤4 - 分配配额策略。

在`/etc/fstab`中启用配额管理

首先,我们要备份我们的`/etc/fstab`文件:

[root@centosLocal centos]# cp -r /etc/fstab ./

现在,我们在当前工作目录中拥有已知正常工作的`/etc/fstab`的副本。

# 
# /etc/fstab 
# Created by anaconda on Sat Dec 17 02:44:51 2016 
# 
# Accessible filesystems, by reference, are maintained under '/dev/disk' 
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
# 
/dev/mapper/cl-root        /         xfs     defaults                      0 0
UUID = 4b9a40bc-9480-4     /boot     xfs     defaults                      0 0

/dev/mapper/cl-home        /home     xfs     defaults,usrquota,grpquota    0 0

/dev/mapper/cl-swap        swap      swap    defaults                      0 0

我们在要为用户和组应用配额的卷或标签的`/etc/fstab`选项部分进行了以下更改。

  • usrquota
  • grpquota

如您所见,我们使用的是xfs文件系统。使用xfs时,会涉及额外的步骤。/home与`/`位于同一磁盘。进一步调查显示`/`设置为`noquota`,这是一个内核级别的挂载选项。我们必须重新配置内核启动选项。

root@localhost rdc]# mount | grep ' / ' 
/dev/mapper/cl-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

[root@localhost rdc]#

重新配置XFS文件系统的内核启动选项

此步骤仅在以下两种情况下才需要:

  • 当我们正在启用配额的磁盘/分区使用xfs文件系统时
  • 当内核在启动时将noquota参数传递给`/etc/fstab`时

步骤1 - 备份`/etc/default/grub`。

cp /etc/default/grub ~/

步骤2 - 修改`/etc/default/grub`。

这是默认文件。

GRUB_TIMEOUT=5 
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" 
GRUB_DEFAULT=saved 
GRUB_DISABLE_SUBMENU=true 
GRUB_TERMINAL_OUTPUT="console" 
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet" 
GRUB_DISABLE_RECOVERY="true"

我们要修改以下行:

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet" 

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv 
=cl/swap rhgb quiet rootflags=usrquota,grpquota"

注意 - 正确复制这些更改非常重要。重新配置grub.cfg后,如果配置中出现任何错误,系统将无法启动。请在非生产系统上尝试本教程的这一部分。

步骤3 - 备份您的工作grub.cfg

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak

创建一个新的`grub.cfg`

[root@localhost rdc]# grub2-mkconfig -o /boot/grub2/grub.cfg 
Generating grub configuration file ... 
Found linux image: /boot/vmlinuz-3.10.0-514.el7.x86_64 
Found initrd image: /boot/initramfs-3.10.0-514.el7.x86_64.img 
Found linux image: /boot/vmlinuz-0-rescue-dbba7fa47f73457b96628ba8f3959bfd 
Found initrd image: /boot/initramfs-0-rescuedbba7fa47f73457b96628ba8f3959bfd.img 
done

[root@localhost rdc]#

重启

[root@localhost rdc]#reboot

如果所有修改都精确无误,我们应该无法向`xfs`文件系统添加配额。

[rdc@localhost ~]$ mount | grep ' / ' 
/dev/mapper/cl-root on / type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)
 
[rdc@localhost ~]$

我们已经通过grub传递了`usrquota`和`grpquota`参数。

现在,再次编辑`/etc/fstab`以包含`/`,因为`/home`位于同一物理磁盘上。

/dev/mapper/cl-root/xfs
defaults,usrquota,grpquota        0 0

现在让我们启用配额数据库。

[root@localhost rdc]# quotacheck -acfvugM

确保配额已启用。

[root@localhost rdc]# quotaon -ap 
group quota on / (/dev/mapper/cl-root) is on 
user quota on / (/dev/mapper/cl-root) is on 
group quota on /home (/dev/mapper/cl-home) is on 
user quota on /home (/dev/mapper/cl-home) is on 
[root@localhost rdc]#

重新挂载文件系统

如果分区或磁盘与正在积极引导的分区分开,则无需重新引导即可重新挂载。如果在根目录`/`中引导的磁盘/分区上配置了配额,则可能需要重新引导操作系统。强制重新挂载并应用更改,重新挂载文件系统的需要可能会有所不同。

[rdc@localhost ~]$ df 
Filesystem              1K-blocks     Used      Available      Use%     Mounted on
/dev/mapper/cl-root     22447404      4081860   18365544       19%         /
devtmpfs                903448        0         903448         0%          /dev
tmpfs                   919308        100       919208         1%          /dev/shm
tmpfs                   919308        9180      910128         1%          /run
tmpfs                   919308        0         919308         0%          /sys/fs/cgroup
/dev/sda2               1268736       176612    1092124        14%         /boot
/dev/mapper/cl-var      4872192       158024    4714168        4%          /var
/dev/mapper/cl-home     18475008      37284     18437724       1%          /home
tmpfs                   183864        8         183856         1%          /run/user/1000

[rdc@localhost ~]$

如我们所见,正在使用LVM卷。因此,只需重新引导即可。这将重新挂载`/home`并将`/etc/fstab`配置更改加载到活动配置中。

创建配额数据库文件

CentOS现在能够在`/home`上使用磁盘配额。要启用完全配额支持,我们必须运行`quotacheck`命令。

`quotacheck`将创建两个文件:

  • aquota.user
  • aquota.group

这些用于存储已启用配额的磁盘/分区的配额信息。

以下是常见的quotacheck开关。

开关 动作
-u 检查用户配额
-g 检查组配额
-c 应为每个启用了配额的文件系统启用配额
-v 显示详细输出

添加每个用户的配额限制

为此,我们将使用`edquota`命令,后跟用户名:

[root@localhost rdc]# edquota centos

Disk quotas for user centos (uid 1000):  
Filesystem                   blocks       soft       hard     inodes     soft     hard 
/dev/mapper/cl-root              12          0          0         13        0        0  
/dev/mapper/cl-home            4084          0          0        140        0        0

让我们看看每一列。

  • 文件系统 - 这是应用于用户的文件系统配额

  • - 用户当前在每个文件系统上使用的块数

  • 软限制 - 设置软限制的块数。软限制允许用户在给定时间段内使用配额

  • 硬限制 - 设置硬限制的块数。硬限制是允许的总配额

  • 索引节点 - 用户当前使用的索引节点数

  • 软限制 - 软索引节点限制

  • 硬限制 - 硬索引节点限制

要检查我们当前作为用户的配额:

[centos@localhost ~]$ quota 
Disk quotas for user centos (uid 1000):  
Filesystem             blocks     quota      limit grace    files   quota   limit   grace 
/dev/mapper/cl-home    6052604    56123456   61234568       475     0       0       [centos@localhost ~]$

以下是当用户超过硬配额限制时给出的错误。

[centos@localhost Downloads]$ cp CentOS-7-x86_64-LiveKDE-1611.iso.part ../Desktop/

cp: cannot create regular file ‘../Desktop/CentOS-7-x86_64-LiveKDE-
1611.iso.part’: Disk quota exceeded

[centos@localhost Downloads]$

如我们所见,我们非常接近该用户的磁盘配额。让我们设置一个软限制警告。这样,用户将在配额限制过期之前收到提前通知。根据经验,当用户上班时需要花费45分钟清理文件才能实际开始工作时,您会收到最终用户的投诉。

作为管理员,我们可以使用`repquota`命令检查配额使用情况。

[root@localhost Downloads]# repquota  /home  
                    Block limits                            File limits  
User            used     soft     hard     grace       used     soft     hard     grace 
----------------------------------------------------------------------------------------
root      --       0         0        0                   3        0        0        
centos    -+ 6189824  56123456 61234568                 541      520      540      6days 

[root@localhost Downloads]#

如我们所见,用户centos已超过其硬块配额,并且无法再在`/home`上使用任何磁盘空间。

-+ 表示在文件系统上已超过硬配额。

在规划配额时,需要进行一些计算。管理员需要知道:系统上有多少用户?在用户/组之间分配多少可用空间?文件系统上的一个块包含多少字节?

根据与可用磁盘空间相关的块来定义配额。建议在文件系统上保留一个“安全”的可用空间缓冲区,这将在最坏情况下保留:所有配额同时超过。这尤其适用于系统用于写入日志的分区。

广告