Linux管理员配额管理


CentOS磁盘配额可以同时启用; 提醒系统管理员并在超过磁盘容量之前拒绝对用户进一步的磁盘存储访问。当磁盘已满时,取决于磁盘上驻留的内容,整个系统可能会暂停,直到恢复。

在CentOS中启用配额管理Linux基本上是一个4步骤的过程 -

  • 步骤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 ~]$

我们已经通过了 usrquota已经grpquota 通过grub的参数。

现在,再次编辑 / etc / fstab 以包含/自 / homeon 同一个物理磁盘。

/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

我们来看看每一列。

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

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

  • soft - 为软限制设置块。 软限制允许用户在给定的时间段内执行配额

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

  • inodes - 用户当前正在使用多少个inode

  • soft - 软inode限制

  • hard - 硬inode限制

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

[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 上使用更多的磁盘空间。

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

在规划配额时,有必要做一些小算术。管理员需要知道的是:系统上有多少用户?用户/组之间可分配多少空闲空间?文件系统上有多少个字节组成一个块?

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