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 设置,这是一个内核级别的安装选项。我们必须重新配置我们的内核启动选项。
代码语言:javascript复制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
。
这是默认文件。
代码语言:javascript复制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"
我们要修改以下行 -
代码语言:javascript复制GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet"
至
代码语言:javascript复制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
代码语言:javascript复制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]#
重启
代码语言:javascript复制[root@localhost rdc]#reboot
如果所有的修改都是准确的,我们就不应该有可用性来为 xfs 文件系统添加配额。
代码语言:javascript复制[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 同一个物理磁盘。
代码语言:javascript复制/dev/mapper/cl-root/xfs
defaults,usrquota,grpquota 0 0
现在让我们启用配额数据库。
代码语言:javascript复制[root@localhost rdc]# quotacheck -acfvugM
确保配额已启用。
代码语言:javascript复制[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]#
重新安装文件系统
如果分区或磁盘与主动引导的分区分离,我们可以重新安装而无需重新引导。如果在根目录/中引导的磁盘/分区上配置了配额,我们可能需要重新引导操作系统。强制重新装入并应用更改,重新装入文件系统的需求可能会有所不同。
代码语言:javascript复制[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命令,其次是用户名
代码语言:javascript复制[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限制
要检查我们当前的配额作为用户
代码语言:javascript复制[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 ~]$
以下是硬限额超出时给用户的错误。
代码语言:javascript复制[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 命令检查配额使用 情况 。
代码语言:javascript复制[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 上使用更多的磁盘空间。
- 表示文件系统上已超出硬配额。