Linux下要实现磁盘空间限制,需要安裝 quota 套件来实现。用户磁盘空间限制是以文件系统(分区)为单位的,想要限制在/home目录空间大小,那么必须为/home单独挂载一个分区。
一、规划文件系统
1.1、查看文件系统的容量等信息
df -h /
1.2、查看文件系统是否已加入quota支持
mount | grep /
1.3、为文件系统添加quota支持
编辑fstab文件,选择要设定 Quota 的文件系统,然后加入 usrquota 和 grpquota 选项:
vim /etc/fstab
/dev/sda1 / ext3 defaults,usrquota,grpquota 1 1
其中 /dev/sda1 可以用 uuid 标识信息来代替
UUID=a8454012-1fff-4d33-baa5-b57fb7d3e1e2 / ext3 defaults,usrquota,grpquota 1 1
那如何查看磁盘与分区的标识信息?
ls -all /dev/disk/by-uuid
1.4、临时添加quota支持(选做)
mount -o remount,usrquota,grpquota /
1.5、重新挂载文件系统
mount -o remount /
1.6、查看文件系统挂载是否正确
mount -a
1.7、添加新硬盘挂载到/home目录(选做)
如果你/home目录没有独立挂载一个分区,后期你可能想增加一个新的分区
mkfs.ext3 /dev/sda6 #格式化并加载一个新分区
mkdir /media/home
mount /dev/sda1 /media/home
cp -rf /media/home/* /home #复制旧/home的内容到新/home目录
umound /media/home fdisk -l #查看硬盘数及分区情况
fdisk /dev/sda #操作硬盘的命令
d:删除分区、l:列出所有分区类型、m:列出帮助信息、n:添加一个分区、p:列出分区表信息、q:不保存退出、t:改变分区类型、w:把分区表写入硬盘并退出
二、安装、初始化、启动、关闭 Quota
2.1、安裝硬盘 quota 套件
aptitude install quota quotatool
其中 quotatool 是一个基于命令行的磁盘配额设置和管理工具
2.2、初始化 quota 规则文件
quotacheck -avugm
chmod 600 /quota.* #修改规则文件权限
-a 为所有添加了quota支持的文件系统,建立 quota 规则文件
-v 显示建立 quota 规则文件过程中的信息
-u 建立 aquota.user 规则文件
-g 建立 aquota.group 规则文件
-m 强制初始化
2.3、启动关闭 quota 的服务
quotaon -avug #启动 quota 的服务
quotaoff -auvg #关闭 quota 的服务
三、配置 Quota 规则
3.1、为用户/组设置磁盘空间限额:
edquota -u username
edquota -g groupname
filesystem:说明该限制值是针对哪个分区,例如""/"或"/home"
blocks:使用者已使用的磁盘区块数量,该值由quota自动算出
soft:单位为KB,一个非强制性磁盘空间限额
hard:单位为KB,一个强制性磁盘空间限额
inodes:使用者已使用的档案数目
soft:非强制性的inode的限制
hard:强制性的inode的限制
3.2、为批量用户复制规则
edquota -p group1 user1,user2,user3 ..
3.3、为用户/组设置宽限期
通常将 hard 值设置大于 soft 值,就是为了让宽限期发挥作用,默认超额宽限期为7天。
edquota -t
四、Quota 报表
4.1、用户/组限额报表
-s 使用1024倍数来指定单位,会显示如M 之类的单位。
quota -uvs user1 user2 user3
quota -gvs group1 group2 group3
4.2、文件系统限额报表
查看所有使用者的 quota 限制情況
repquota -auvs
五、Quota 测试与管理
1、切换到user1用户
2、向当前目录的bigfile文件写入10次,每次1m的数据
3、如果写入大小没有超过 hard 值,那么进入宽限期倒计时。
4、如果写入超过hard值,那么写入失败。
su user1
dd if=/dev/zero of=bigfile bs=1M count=10