Total Pageviews

Monday, 28 November 2011

Linux 用户磁盘空间配额管理

Linux下要实现磁盘空间限制,需要安裝 quota 套件来实现。用户磁盘空间限制是以文件系统(分区)为单位的,想要限制在/home目录空间大小,那么必须为/home单独挂载一个分区。

一、规划文件系统

1.1、查看文件系统的容量等信息

1
df -h /

1.2、查看文件系统是否已加入quota支持
1
mount | grep /

1.3、为文件系统添加quota支持

编辑fstab文件,选择要设定 Quota 的文件系统,然后加入 usrquota 和 grpquota 选项:
1
2
vim /etc/fstab
/dev/sda1 /     ext3    defaults,usrquota,grpquota 1 1
其中 /dev/sda1 可以用 uuid 标识信息来代替
1
UUID=a8454012-1fff-4d33-baa5-b57fb7d3e1e2  /   ext3  defaults,usrquota,grpquota 1 1
那如何查看磁盘与分区的标识信息?
1
ls -all /dev/disk/by-uuid

1.4、临时添加quota支持(选做)

1
mount -o remount,usrquota,grpquota /

1.5、重新挂载文件系统

1
mount -o remount /

1.6、查看文件系统挂载是否正确

1
mount -a

1.7、添加新硬盘挂载到/home目录(选做)

如果你/home目录没有独立挂载一个分区,后期你可能想增加一个新的分区
1
2
3
4
5
6
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:把分区表写入硬盘并退出
参考资料:
实例解说 fdisk 使用方法
umount 出現 "Device is busy"解法

二、安装、初始化、启动、关闭 Quota

2.1、安裝硬盘 quota 套件

1
aptitude install quota quotatool
其中 quotatool 是一个基于命令行的磁盘配额设置和管理工具

2.2、初始化 quota 规则文件

1
2
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、为用户/组设置磁盘空间限额:

1
2
edquota -u username
edquota -g groupname
filesystem:说明该限制值是针对哪个分区,例如""/"或"/home"
blocks:使用者已使用的磁盘区块数量,该值由quota自动算出
soft:单位为KB,一个非强制性磁盘空间限额
hard:单位为KB,一个强制性磁盘空间限额
inodes:使用者已使用的档案数目
soft:非强制性的inode的限制
hard:强制性的inode的限制

3.2、为批量用户复制规则

1
edquota -p group1 user1,user2,user3 ..

3.3、为用户/组设置宽限期

通常将 hard 值设置大于 soft 值,就是为了让宽限期发挥作用,默认超额宽限期为7天。
1
edquota -t

四、Quota 报表

4.1、用户/组限额报表

-s 使用1024倍数来指定单位,会显示如M 之类的单位。
1
2
quota -uvs user1 user2 user3
quota -gvs group1 group2 group3

4.2、文件系统限额报表

查看所有使用者的 quota 限制情況
1
repquota -auvs

五、Quota 测试与管理

1、切换到user1用户
2、向当前目录的bigfile文件写入10次,每次1m的数据
3、如果写入大小没有超过 hard 值,那么进入宽限期倒计时。
4、如果写入超过hard值,那么写入失败。
1
2
su user1
dd if=/dev/zero of=bigfile bs=1M count=10
参考资料:
磁碟配額(Quota)與進階檔案系統管理

No comments:

Post a Comment