SUSE 10磁盘配额限制演练
love:~ # rpm -qa|grep quota
quota-3.13-17.2
1、为达到清晰简单的效果,现直接增加一张盘,并通过该盘来做配额限制
2、检查磁盘详细情况,可发现新增加的sdb这张盘没有分区和格式化
love:~ # fdisk -l
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 1 57 457821 82 Linux swap / Solaris
/dev/sda2 * 58 1305 10024560 83 Linux
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
3、分区,格式化
love:~ # fdisk /dev/sdb
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
Command (m for help): n --创建一个新分区
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-261, default 1): --回车
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-261, default 261): 100
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Partition number (1-4): 2
First cylinder (101-261, default 101): --回车
Using default value 101
Last cylinder or +size or +sizeM or +sizeK (101-261, default 261): --回车
Using default value 261
Command (m for help): n --在扩展分区上创建逻辑分区
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (101-261, default 101): --回车
Using default value 101
Last cylinder or +size or +sizeM or +sizeK (101-261, default 261): --回车
Using default value 261
Command (m for help): p --打印出分区结果
Disk /dev/sdb: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 100 803218+ 83 Linux
/dev/sdb2 101 261 1293232+ 5 Extended
/dev/sdb5 101 261 1293201 83 Linux
Command (m for help): w --保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
love:~ # mkfs -t ext3 /dev/sdb1 --格式化
love:~ # mkfs -t ext3 /dev/sdb5
love:~ # mkdir /shanghai
love:~ # mkdir /hongkong
love:~ # mount -t ext3 /dev/sdb1 /shanghai/ --挂载
love:~ # mount -t ext3 /dev/sdb5 /hongkong/
love:~ # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 9.6G 2.5G 7.1G 27% /
udev 148M 116K 148M 1% /dev
/dev/sdb1 773M 17M 717M 3% /shanghai
/dev/sdb5 1.3G 33M 1.2G 3% /hongkong
4、编辑
love:~ # vi /etc/fstab
添加
/dev/sdb1 /shanghai ext3 defaults,usrquota 1 2
/dev/sdb5 /hongkong ext3 defaults,grpquota 1 2
love:~ # mount -a
love:~ # init 6 ---一定要这步
love:~ # quotacheck -cu /shanghai/ ---为启用磁盘限额的文件系统创建限额文件
love:~ # quotacheck -cg /hongkong/
然后分别在两个目录下会多出两个不同的文件
love:~ # cd /shanghai/
love:/shanghai # ls
aquota.user lost+found
love:/shanghai # cd ../hongkong/
love:/hongkong # ls
aquota.group lost+found
5、开启磁盘配额
love:/hongkong # quotaon -augv
/dev/sdb1 [/shanghai]: user quotas turned on
/dev/sdb5 [/hongkong]: group quotas turned on
6、建立一个测试用户
love:~ # useradd -d /home/test/ -m -s /bin/bash test
love:~ # passwd test
为test用户分配磁盘配额
love:~ # edquota -u test
Disk quotas for user test (uid 1002):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 5 7 0 4 6
love:/ # chmod -R 777 shanghai/
chmod: changing permissions of `shanghai/aquota.user': Operation not permitted
7、测试
以test用户登陆
> touch aa bb cc dd 创建4个文件时,没有告警提示
> touch ee 创建第5个文件,已经超过第4个了,就有告警提示
sdb1: warning, user file quota exceeded.
> ls 此时查看,文件还是可以创建成功的
aa aquota.user bb cc dd ee lost+found
> touch ff 创建第6个仍然是可以成功
> ls
aa aquota.user bb cc dd ee ff lost+found
> touch gg 当创建第1个时,会提示超出限额,也就无法创建成功
sdb1: write failed, user file limit reached.
touch: cannot touch `gg': Disk quota exceeded
> ls
aa aquota.user bb cc dd ee ff lost+found
查看test用户的配额,文件数目已经达到了6个
love:~ # quota -u test
Disk quotas for user test (uid 1002):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb1 0 5 7 6* 4 6
拷贝一个4K的文件内容到aa里面,并没报错,正常
> du -h aa
4.0K aa
往bb里面写入文件,准备保存时提示超出限额
> vi bb
bbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbbb
bbbbbbbbbbbbbbbbbbbbbbbbbbb
"bb"sdb1: write failed, user block limit reached.
"bb" E514: write error (file system full?)
love:~ # quota -u test
Disk quotas for user test (uid 1002):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb1 4 5 7 6* 4 6
若一次性往aa里拷贝大于7K的文件的话也会报错,无法写入
8、建立测试组
love:/shanghai # groupadd tg
love:/shanghai # tail /etc/group
trusted:x:42:
tty:x:5:
utmp:x:22:
uucp:x:14:
video:x:33:tianyu,zkdu,test,test1,test2,test3
wheel:x:10:
www:x:8:
xok:x:41:
users:x:100:
tg:!:1000:
love:/shanghai # usermod -G 1000 test1
love:/shanghai # usermod -G 1000 test2
love:/shanghai # usermod -G 1000 test3
love:~ # usermod -g 1000 test1
love:~ # usermod -g 1000 test2
love:~ # usermod -g 1000 test3
love:/shanghai # tail /etc/group
trusted:x:42:
tty:x:5:
utmp:x:22:
uucp:x:14:
video:x:33:tianyu,zkdu,test
wheel:x:10:
www:x:8:
xok:x:41:
users:x:100:
tg:!:1000:test1,test2,test3
love:/ # chmod 777 /hongkong/
chmod: changing permissions of `hongkong/aquota.group': Operation not permitted
love:/hongkong # edquota -g tg
Disk quotas for group tg (gid 1000):
Filesystem blocks soft hard inodes soft hard
/dev/sdb5 0 10 15 0 6 9
9、测试
分别以test1,test2,test3登陆都建立两个文件
love:/shanghai # su - test1
> touch aa bb
> su - test2
> touch cc dd ee
> su - test3
> touch ff gg hh ii ---这个时候文件数量已经超过6并超达到9,会有组的告警信息出现
sdb5: warning, group file quota exceeded.
> touch kk ---再回到test1来创建1个文件,已经无法成功了
sdb5: write failed, group file limit reached.
touch: cannot touch `kk': Disk quota exceeded
> ls ---现在已经有9个是属于这3个测试用户所建的文件
aa aquota.group bb cc dd ee ff gg hh ii lost+found
love:/ # quota -g tg ---查看组的配额详细情况
Disk quotas for group tg (gid 1000):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb5 0 10 15 9* 6 9
love:/ #
以test1登陆往 aa里写入4K,强制保存
> du -h aa
4.0K aa
love:/home/tianyu/cacti/freetype-2.1.10 # quota -g tg
Disk quotas for group tg (gid 1000):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb5 4 10 15 9* 6 9
以test1登陆往 bb里写入4K,强制保存
> du -h bb
4.0K bb
love:/home/tianyu/cacti/freetype-2.1.10 # quota -g tg
Disk quotas for group tg (gid 1000):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb5 8 10 15 9* 6 9
以test2登陆往 cc里写入4K,强制保存,会有提示超过,因为超过10K
"cc"sdb5: warning, group block quota exceeded.
> du -h cc
4.0K cc
love:/home/tianyu/cacti/freetype-2.1.10 # quota -g tg
Disk quotas for group tg (gid 1000):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb5 12* 10 15 6days 9* 6 9
以test2登陆往 cc里再写入4K,强制保存,但也不能写入,因为已经超过15K了
"dd" E509: Cannot create backup file (add ! to override)
"dd"
"dd" E514: write error (file system full?)
WARNING: Original file may be lost or damaged
don't quit the editor until the file is successfully written!
Hit ENTER or type command to continue
> du -h dd
0 dd
love:/home/tianyu/cacti/freetype-2.1.10 # quota -g tg
Disk quotas for group tg (gid 1000):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb5 12* 10 15 6days 9* 6 9
10、复制配额到其他用户和组
love:~ # useradd chenglong
love:~ # useradd liudehua
love:~ # useradd haha
love:~ # quota -u test
Disk quotas for user test (uid 1002):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb1 4 5 7 6* 4 6
love:~ # edquota -p test chenglong liudehua haha ----复制配额到其他用户
love:~ # edquota -u chenglong ----直接编辑,发现已经配置好了并且和test用户的一样
Disk quotas for user chenglong (uid 1006):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 5 7 0 4 6
love:~ # edquota -u liudehua
Disk quotas for user liudehua (uid 1007):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 5 7 0 4 6
love:~ # edquota -u haha
Disk quotas for user haha (uid 1008):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 0 5 7 0 4 6
love:~ # groupadd taiwan
love:~ # edquota -g -p tg taiwan ----复制配额到其他用户
love:~ # edquota -g taiwan ----直接编辑,发现已经配置好了并且和tg组的一样
Disk quotas for group taiwan (gid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/sdb5 0 10 15 0 6 9
11、补充
查看某个文件系统的磁盘限额(包括用户和组限额)
love:~ # repquota -ugv /shanghai
*** 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 -- 16428 0 0 3 0 0
test -+ 4 5 7 6 4 6 6days
chenglong -- 0 5 7 0 4 6
liudehua -- 0 5 7 0 4 6
haha -- 0 5 7 0 4 6
Statistics:
Total blocks: 7
Data blocks: 1
Entries: 5
Used average: 5.000000
repquota: Not all specified mountpoints are using quota.
love:~ # repquota -uv /shanghai ---也可单独查看针对用户的配额
*** 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 -- 16428 0 0 3 0 0
test -+ 4 5 7 6 4 6 6days
chenglong -- 0 5 7 0 4 6
liudehua -- 0 5 7 0 4 6
haha -- 0 5 7 0 4 6
Statistics:
Total blocks: 7
Data blocks: 1
Entries: 5
Used average: 5.000000
love:~ # repquota -gv /hongkong/ ---也可单独查看针对组的配额
*** Report for group quotas on device /dev/sdb5
Block grace time: 7days; Inode grace time: 7days
Block limits File limits
Group used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 32828 0 0 3 0 0
tg ++ 12 10 15 6days 9 6 9 6days
taiwan -- 0 10 15 0 6 9
Statistics:
Total blocks: 7
Data blocks: 1
Entries: 3
Used average: 3.000000
特别要说明的是,当实际使用的空间未超过软(soft)限制,宽限(grace)时间是不会出现在quota -u username输出中的。如
love:~ # edquota -g tg
Disk quotas for group tg (gid 1000):
Filesystem blocks soft hard inodes soft hard
/dev/sdb5 12 10 15 9 6 9
实际使用空间已经超过了soft 10
love:~ # quota -g tg
Disk quotas for group tg (gid 1000):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb5 12* 10 15 6days 9* 6 9
love:~ # edquota -u test
Disk quotas for user test (uid 1002):
Filesystem blocks soft hard inodes soft hard
/dev/sdb1 4 5 7 6 4 6
实际使用空间已经超过了soft 5
love:~ # quota -u test
Disk quotas for user test (uid 1002):
Filesystem blocks quota limit grace files quota limit grace
/dev/sdb1 4 5 7 6* 4 6
love:/hongkong # quotaon -augv 开启磁盘配额
love:/hongkong # quotaoff -augv 关闭磁盘配额
可以使用crontab来调度进行检查文件系统的磁盘使用量
每周六早6点执行一次:
0 6 * * 6 /sbin/quotacheck -avug