服务器磁盘配额quota

2019-12-17  本文已影响0人  蜗牛Michael

有些时候为了避免服务器磁盘被写爆,引起系统崩溃,因此有必要对磁盘的使用配额进行限制,尤其是对用户使用磁盘的容量进行限制。这就需要用到quota磁盘配额。

磁盘配额除了监视系统上使用的磁盘空间,你还可以通过实现磁盘配额来限制磁盘空间,因此当用户使用了过多的磁盘空间或分区将要充满时,系统管理员就会接到警告。磁盘配额可以为个体用户配置也可以为用户组配置。这种灵活性既能够给每个用户分配一个较小的配额来处理“个人”文件(如电子邮件和报告),又允许了他们正从事的项目能够拥有较大的配额(假定项目有自己的组群)。

分区挂载

挂载分区:sudo mount /dev/sdd1 /home/mars (故意没有启用quota😁)

注意:分区挂载的时候,必须对分区启用quota,否则是无法对此分区进行quota配额的。例如通过mount命令可以查看各分区的情况,是否启用了quota:

/dev/sdb1 on /home/mercury type ext4 (rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
/dev/sdc1 on /home/venus type ext4 (rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
/dev/sde1 on /home/earth type ext4 (rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
/dev/sdf1 on /home/jupiter type ext4 (rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
/dev/sdg1 on /home/saturn type ext4 (rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
/dev/sdh1 on /home/uranus type ext4 (rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
systemd on /sys/fs/cgroup/systemd type cgroup (rw,noexec,nosuid,nodev,none,name=systemd)
/dev/sdd1 on /home/mars type ext4 (rw)

下面的/home/mars挂载在/dev/sdd1分区,但是并没有启用quota,因此进行quotacheck时就会失败:

ironman@IRONMAN:/home/mars$ sudo quotacheck /home/mars
quotacheck: Mountpoint (or device) /home/mars not found or has no quota enabled.
quotacheck: Cannot find filesystem to check or filesystem not mounted with quota option.

启用quota

  1. 方法一:通过/etc/fatab文件:好处是开启启动会自动挂载与启用
UUID=4af70913-6f47-4b8a-b96d-d0cb3b36b7cb /home/mercury   ext4    defaults,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0 0   1

或者不用UUID,而使用设备名称:

/dev/sdc1               /home/mercury                  ext4    defaults,usrquota,grpquot        0 0
  1. 方法二:直接remount命令启用,必须加上usrquota,grpquota
sudo mount -o remount,usrquota,grpquota /home/mars/

再通过mount查看状态:

ironman@IRONMAN:/home/mars$ mount
/dev/sda1 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/cgroup type tmpfs (rw)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755)
none on /sys/fs/pstore type pstore (rw)
/dev/sda5 on /home type ext4 (rw)
/dev/sda2 on /boot type ext4 (rw)
/dev/sdb1 on /home/mercury type ext4 (rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
/dev/sdc1 on /home/venus type ext4 (rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
/dev/sde1 on /home/earth type ext4 (rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
/dev/sdf1 on /home/jupiter type ext4 (rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
/dev/sdg1 on /home/saturn type ext4 (rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
/dev/sdh1 on /home/uranus type ext4 (rw,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0)
systemd on /sys/fs/cgroup/systemd type cgroup (rw,noexec,nosuid,nodev,none,name=systemd)
/dev/sdd1 on /home/mars type ext4 (rw,usrquota,grpquota)

可以看到/home/mars分区已经启用quota。

检查分区,生成配置文件

启用quota之后,就可以进行quotacheck检查,否则检查会失败。

sudo quotacheck /home/mercury/

配置文件:

aquota.group
aquota.user

启动quota服务

quotaon -vug /home/mercury

quota配额

文件内有七个栏目:

Filesystem => 进行配额管制的文件系统。
blocks => 已经使用的区块数量(单位1KB)
soft => block 使用数量的"软性"限制
hard => block 使用数量的"硬性"限制
inode => 已经使用的 inode 数量
soft => inode 使用数量的"软性"限制
hard => inode 使用数量的"硬性"限制
  1. 通过图形设置容量:sudo edquota -u $username

    quota配额vim编辑.png
  2. 通过命令参数直接设置:setquota -u username 30960 30960 0 0 /home/mercury

为组群分配配额

配额还可以根据组群来分配。例如,要为 devel 组群设置组群配额,使用以下命令(在设置组群配额前,该组群必须存在):

edquota -g devel 以上命令在文本编辑器中显示现存的组群配额:修改限度,保存文件,然后配置配额。要校验组群配额是否被设置,使用以下命令:

quota -g devel

读quota配额情况

repquota /home/mercury 读取指定分区的配额情况。
repquota -auvs 所有启用了配额的文件系统的磁盘用量。

:/home/mercury$ sudo repquota /home/mercury/
*** Report for user quotas on device /dev/sdb1
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --  261904       0       0           4865     0     0
Auser     -- 1496813872       0       0        14802450     0     0
Buser     -- 1107116       0       0           3576     0     0
Cuser    -- 562369132       0       0        1580837     0     0
#1007     -- 133321512       0       0        1106929     0     0

可选,更改时限方法,默认为七天

截屏2019-12-1718.43.48.png

edquota -T username

更改组的时限
edquota -Tg grp02

也可以使用 setquota 命令设置:

setquota -u someone 0 0 3 5 /dev/loop0
setquota -t 864000  864000  /dev/loop0
//ps. 864000 为 10 天的秒数. 一小时=3600秒, 一天=86400秒

PS: 磁盘配额完毕后,必须以 quotaon -av 的命令启用配额管理。

磁盘配额的启用和禁用

要关闭用户和组群配额,使用以下命令:quotaoff –vaug 如果 -u 或 -g 选项没有被指定,只有用户配额被禁用。如果只指定了 -g 选项,只有组群配额会被禁用。

要重新启用配额,使用带有同样选项的 quotaon 命令。要为所有文件系统启用用户和组群配额:quotaon –vaug

要为指定文件系统(如 /home)启用配额:quotaon -vug /home 如果 -u 或 -g 选项没有指定,那么仅用户配额会被启用。如果只指定了 -g 选项,仅组群配额会被启用。

测试方法

切换响应用户su username,进行测试:dd if=/dev/zero of=file1 bs=1k count=50。

关闭quota服务

quotaoff -vug /home

上一篇下一篇

猜你喜欢

热点阅读