Linux管理员 - 配额管理

可以同时启用CentOS磁盘配额;警告系统管理员并在超出磁盘容量之前拒绝对用户进行进一步的磁盘存储访问.当磁盘已满时,根据磁盘上的内容,整个系统可能会暂停,直到恢复为止.

在CentOS Linux中启用配额管理基本上是一个4步骤 :

  • 第1步 : 在/etc/fstab中为组和用户启用配额管理.

  • 步骤2 : 重新安装文件系统.

  • 第3步 : 创建配额数据库并生成磁盘使用表.

  • 步骤4 : 分配配额政策.

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

首先,我们要备份我们的/etc/fstab filen :

 
 [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

我们在/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"

to

 
 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 以包含/since /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开关.

SwitchAction
-  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 : 应用于

  • 的用户的文件系统配额

  • : 用户当前在每个文件系统上使用了多少块

  • soft : 设置软限制块.软限制允许用户在给定时间段内携带配额

  • hard : 设置块以获得硬限制.硬限制是允许的总配额

  • inodes : 用户当前使用的inode数量

  • soft : 软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 上使用更多磁盘空间.

-  +表示很难文件系统已经超出了.

在计划配额时,有必要做一些数学运算.管理员需要知道的是:系统中有多少用户?在用户/组中分配多少可用空间?在文件系统上构成一个块的字节数是多少?

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

SwitchAction
-  u支票用户配额
-  g检查组配额
-  c应为启用配额的每个文件系统启用配额
-v显示详细输出