linux学习日记十二 磁盘配额(quota)
磁盘配额(quota)比较常用的几个情况是:
* 针对WWW server,例如:每个人的网页空间的容量限制
* 针对mail server,例如:每个人的邮件空间限制
* 针对file server:每个人最大的可用网络硬盘空间(教学环境中比较常见)
上面的是针对网络服务的设计,如果是针对linux系统主机上面的设置,用途有下面这些:
* 限制某一用户组最大磁盘配额,可用设置普通用户组和VIP用户组,有点类似会员制,VIP用户相应的磁盘空间大小比较大些,普通用户想成为VIP,嘿嘿,交会费就行。
* 限制某一用户磁盘配额,在对用户组进行限制后,继续对该用户组的每个用户进行设置,可以使用户组下有更公平的分配。
* 以Link方式使邮件可以作为限制的配额(更改/var/spool/mail这个路径)
====Quota的规范设置选项====
* 限制文件数量或者容量(inode或者block),以block设置为常见
* soft/hard,hard > soft,超过soft后,在grace time(宽限时间)内登陆系统后会给出磁盘爆满的警告
* 会倒计时的宽限时间 grace time,如果过了这个时间还没降到比soft低,直接锁定磁盘使用,并且hard减少为soft值。
坐而言不如起而行,先来设计一个实际的quota例子:
* 五个人的账号分别为user1,user2,user3,user4,user5,密码都是123456,初始用户组都为quotagroup,其他账号属性为默认。
* 账号的磁盘容量限制:五个用户都能够取得300MB的磁盘使用量(hard),文件数量不予限制。此外,只要容量超过250MB时候给予警告(soft)
* 用户组的限额:由于我的系统里面可能还有其他用户存在,我仅承认quotagroup这个组最多使用1GB的容量。也就是说,如果user1,user2,user3都用了280MB的空间,那么user4,user5就只能使用1000MB – 280MB*3 = 160MB的空间了。
* 宽限日期:14天,达到250MB的soft值后,14天内给予警告,如果14天内磁盘容量还没降到比250MB低,直接锁定用户。丫的叫你放电影到硬盘上又不删。
建立5个账号的shell脚本:
#!/bin/bash
# 使用script新建实验quota所需的环境
groupadd quotagroup
for username in user1 user2 user3 user4 user5
do
useradd -g quotagroup $username
echo "123456" | passwd --stdin $username
done
接下来实践下quota流程:
# df -h /home
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 69G 4.4G 62G 7% /
因为我用的虚拟机,自动被分区,只有一个根分区/挂载sda3文件系统,所以我会针对/来进行,不过一般来讲不建议直接在/下面设置quota。
# mount | grep ‘\s/\s’
/dev/sda3 on / type ext4 (rw,relatime,seclabel,user_xattr,barrier=1,data=ordered)
通过查看/dev/sda3的数据知道是哦那个ext4文件系统,那么肯定支持quota
修改配置文件/etc/fstab,让/支持quota:
UUID=2f08675e-289a-404a-a13e-4802dec910e9 / ext4 defaults,usrquota,grpquota 1 1
重点在上面粗体显示的usrquota,grpquota
# umount / (我勒个擦,根目录你怎么umount,还是重启吧)
# mount -a
# mount | grep “\s/\s”
/dev/sda3 on / type ext4 (rw,relatime,seclabel,user_xattr,barrier=1,data=ordered,usrquota,grpquota)
看到了吧,可以针对用户组和用户进行磁盘配额了。
====新建quota配置文件====
# quotacheck [-avugfM] [/mount_point]
-a:扫描所有在/etc/mtab内,含有quota支持的文件系统,加上此参数后,后面的/mount_point就不用写了
-u:针对用户扫描文件与目录使用情况,会新建aquota.user
-g:针对用户组扫描文件与目录使用情况,会新建aquota.group
-v:显示扫描过程信息
-f:强制扫描文件系统,并写入quota配置文件(危险,慎用)
-M:强制以读写方式扫描文件系统,只有在特殊情况下才会使用。
实际上只需要记住前面四个参数 -augv即可。
# ll -d /a*
-rw——-. 1 root root 8192 10月 27 02:06 /aquota.group
-rw——-. 1 root root 7168 10月 27 02:06 /aquota.user
不要手动去修改这两个quota配置文件啊,这个是quota自己去更新的。
====quota启动、关闭与限制值的设置====
# quotaon [-avug] <===启动quota服务
# quotaon [-vug] /mount_point
上面的参数跟之前的一模一样,这个命令只需要执行一次,下次系统启动后会自动再执行的
# quotaoff [-a] <===关闭quota服务
# quotaoff [-ug] /mount_point
# edquota [-u username] [-g groupname] <===编辑quota的宽限值
# edquota -t <===修改宽限时间
# edquota -p 范本账号 -u 新账号
这些都很简单,不解释
# edquota -u user1