Chinaunix首页 | 论坛 | 博客
  • 博客访问: 94739
  • 博文数量: 42
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 480
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-16 13:39
文章分类

全部博文(42)

文章存档

2011年(1)

2010年(6)

2009年(35)

我的朋友

分类: LINUX

2009-08-18 10:36:44

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
阅读(1610) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~