服务器磁盘配额quota
有些时候为了避免服务器磁盘被写爆,引起系统崩溃,因此有必要对磁盘的使用配额进行限制,尤其是对用户使用磁盘的容量进行限制。这就需要用到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
- 方法一:通过/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
- 方法二:直接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 使用数量的"硬性"限制
-
通过图形设置容量:
quota配额vim编辑.pngsudo edquota -u $username
-
通过命令参数直接设置:
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.pngedquota -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