- Linux 管理教程
- 家
- CentOS概述
- CentOS Linux 基本命令
- 文件/文件夹管理
- 用户管理
- 配额管理
- Systemd 服务启动和停止
- 使用 systemctl 进行资源管理
- 使用 crgroups 进行资源管理
- 流程管理
- 防火墙设置
- 在 CentOS Linux 中配置 PHP
- 在 CentOS Linux 上设置 Python
- 在 CentOS Linux 上配置 Ruby
- 为 CentOS Linux 设置 Perl
- 安装和配置开放 LDAP
- 创建 SSL 证书
- 安装 Apache Web 服务器 CentOS 7
- CentOS 7 上的 MySQL 设置
- 设置 Postfix MTA 和 IMAP/POP3
- 安装匿名 FTP
- 远程管理
- CentOS中的流量监控
- 日志管理
- 备份与恢复
- 系统升级
- 外壳脚本
- 包管理
- 卷管理
- Linux 管理有用资源
- Linux 管理员 - 快速指南
- Linux 管理员 - 有用的资源
- Linux 管理员 - 讨论
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的选项部分中对要为用户和组应用配额的卷或标签进行了以下更改。
- 用户配额
- 总配额
正如您所看到的,我们正在使用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.用户
- aquota集团
它们用于存储启用配额的磁盘/分区的配额信息。
以下是常见的配额检查开关。
转变 | 行动 |
---|---|
-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
让我们看看每一列。
文件系统- 这是应用到的用户的文件系统配额
块- 用户当前在每个文件系统上使用多少块
soft - 设置软限制块。软限制允许用户在给定时间段内携带配额
硬- 设置硬限制块。硬限制是允许的总配额
inodes - 用户当前正在使用多少个 inode
软- 软 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上的任何磁盘空间。
-+ 表示已超出文件系统上的硬配额。
在规划配额时,有必要做一些数学计算。管理员需要知道的是:系统上有多少用户?在用户/组之间分配多少可用空间?文件系统上的一个块由多少字节组成?
根据与可用磁盘空间相关的块来定义配额。建议在文件系统上保留可用空间的“安全”缓冲区,该缓冲区将在最坏的情况下保留:所有配额同时超出。尤其是在系统用于写入日志的分区上。