linux磁盘配额quota

转:http://www.cnblogs.com/wang1988ming/archive/2012/04/19/2457326.html

    http://blog.csdn.net/mybluetiankong/article/details/20357299

    http://www.centoscn.com/CentOS/2014/1013/3935.html

做测试

apt-get install quota

root@yanisyu-Aspire-E1-571G:/home/yanisyu# dd if=/dev/zero of=quotatest  count=10 bs=1M

root@yanisyu-Aspire-E1-571G:/home/yanisyu# mkfs.ext3 quotatest

root@yanisyu-Aspire-E1-571G:/home/yanisyu# mount -o loop,usrquota,grpquota  quotatest   /mnt

这个时候/etc/mtab会新增

/dev/loop0 /mnt ext3 rw,usrquota,grpquota 0 0

root@yanisyu-Aspire-E1-571G:/home/yanisyu# quotacheck -vuga

root@yanisyu-Aspire-E1-571G:/home/yanisyu# quotaon -av

root@yanisyu-Aspire-E1-571G:/home/yanisyu# edquota -u yansiyu

Disk quotas for user yanisyu (uid 1000):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/loop0                        0           1024     2048         3          5         10

root@yanisyu-Aspire-E1-571G:/home/yanisyu# edquota -t

root@yanisyu-Aspire-E1-571G:/home/yanisyu# quota -vu yansiyu

yanisyu@yanisyu-Aspire-E1-571G:/mnt$ sudo chmod -R 777 /mnt

yanisyu@yanisyu-Aspire-E1-571G:/mnt$ ls -rlht
总用量 25K
drwxrwxrwx 2 root root  12K  2月 15 22:41 lost+found
-rw------- 1 root root 6.0K  2月 15 22:44 aquota.group
-rw------- 1 root root 7.0K  2月 15 22:45 aquota.user
yanisyu@yanisyu-Aspire-E1-571G:/mnt$ touch {1..9}.txt
yanisyu@yanisyu-Aspire-E1-571G:/mnt$ ls -rlht
总用量 26K
drwxrwxrwx 2 root    root     12K  2月 15 22:41 lost+found
-rw------- 1 root    root    7.0K  2月 15 22:48 aquota.user
-rw-rw-r-- 1 yanisyu yanisyu    0  2月 15 22:48 9.txt
-rw-rw-r-- 1 yanisyu yanisyu    0  2月 15 22:48 8.txt
-rw-rw-r-- 1 yanisyu yanisyu    0  2月 15 22:48 7.txt
-rw-rw-r-- 1 yanisyu yanisyu    0  2月 15 22:48 6.txt
-rw-rw-r-- 1 yanisyu yanisyu    0  2月 15 22:48 5.txt
-rw-rw-r-- 1 yanisyu yanisyu    0  2月 15 22:48 4.txt
-rw-rw-r-- 1 yanisyu yanisyu    0  2月 15 22:48 3.txt
-rw-rw-r-- 1 yanisyu yanisyu    0  2月 15 22:48 2.txt
-rw-rw-r-- 1 yanisyu yanisyu    0  2月 15 22:48 1.txt
-rw------- 1 root    root    7.0K  2月 15 22:48 aquota.group
yanisyu@yanisyu-Aspire-E1-571G:/mnt$ touch 10.txt
yanisyu@yanisyu-Aspire-E1-571G:/mnt$ ls -rlht
总用量 26K
drwxrwxrwx 2 root    root     12K  2月 15 22:41 lost+found
-rw------- 1 root    root    7.0K  2月 15 22:48 aquota.user
-rw-rw-r-- 1 yanisyu yanisyu    0  2月 15 22:48 9.txt
-rw-rw-r-- 1 yanisyu yanisyu    0  2月 15 22:48 8.txt
-rw-rw-r-- 1 yanisyu yanisyu    0  2月 15 22:48 7.txt
-rw-rw-r-- 1 yanisyu yanisyu    0  2月 15 22:48 6.txt
-rw-rw-r-- 1 yanisyu yanisyu    0  2月 15 22:48 5.txt
-rw-rw-r-- 1 yanisyu yanisyu    0  2月 15 22:48 4.txt
-rw-rw-r-- 1 yanisyu yanisyu    0  2月 15 22:48 3.txt
-rw-rw-r-- 1 yanisyu yanisyu    0  2月 15 22:48 2.txt
-rw-rw-r-- 1 yanisyu yanisyu    0  2月 15 22:48 1.txt
-rw------- 1 root    root    7.0K  2月 15 22:48 aquota.group
-rw-rw-r-- 1 yanisyu yanisyu    0  2月 15 22:48 10.txt
yanisyu@yanisyu-Aspire-E1-571G:/mnt$ touch 11.txt
touch: 无法创建"11.txt": 超出磁盘限额
yanisyu@yanisyu-Aspire-E1-571G:/mnt$

yanisyu@yanisyu-Aspire-E1-571G:/mnt$ dd if=/dev/zero of=testquota.file count=10 bs=1M
dd: 正在写入"testquota.file": 超出磁盘限额
记录了2+0 的读入
记录了1+0 的写出
2084864字节(2.1 MB)已复制,0.0124051 秒,168 MB/秒
yanisyu@yanisyu-Aspire-E1-571G:/mnt$ ls
aquota.group  aquota.user  lost+found  testquota.file
yanisyu@yanisyu-Aspire-E1-571G:/mnt$ ls -rlht
总用量 2.1M
drwxrwxrwx 2 root    root     12K  2月 15 22:41 lost+found
-rw------- 1 root    root    7.0K  2月 15 22:49 aquota.user
-rw-rw-r-- 1 yanisyu yanisyu 2.0M  2月 15 22:50 testquota.file
-rw------- 1 root    root    7.0K  2月 15 22:50 aquota.group
yanisyu@yanisyu-Aspire-E1-571G:/mnt$

一、准备

Linux发行版:SUSE Linux Enterprise Server 10 (X86_64);Kernel 2.6.16-0.21;新添加了2块SCSI硬盘(sdb和sdc);一块IDE硬盘(hda)。

os

quota软件。

通过rpm –qa | grep quota可以查看是否安装了quota软件,一般默认都是安装的。

quota

二、对添加的硬盘进行分区(以sdb为例,把它做成一个分区)并添加磁盘配额参数


入命令fdisk
/dev/sdb,键入n新建一个分区,键入p选择新建主分区。这里我填1,接下来选择扇区的起始,我从1开始,选择扇区的结束,默认的全部。在键入w将
这些信息写入磁盘分区表。在调用mkfs.ext3 /dev/sdb1格式化分区为ext3文件系统格式。同一步骤对sdc,hda进行分区。

fdisk

分区结果如图:可以看出,其中sdb1和sdc1是刚分区的两个SCSI磁盘,hda1是IDE硬盘。

fdiskl


来,我们要把sdb1挂载在/disk1目录下,把sdc1挂载在/disk2目录下,将hda1挂载在/disk3目录下,在启动操作系统的时候自动挂
载这几个磁盘,并且加上磁盘配额的相关参数以确保可以在这几个磁盘上实现磁盘配额功能。先在根目录下建立disk1,disk2,disk3这三个文件
夹。再编辑/etc/fstab文件,添加下面相关3,4,5行内容,其中usrquota和grpquota就是磁盘的磁盘配额参数:

fstab


存退出重启操作系统。进入操作系统执行df
–l可以看到磁盘已经正确挂载到对应目录下。由于quota实际运行的时候读取的是/etc/mtab文件,所以我们重启下操作系统,让/etc
/mtab文件从/etc/fstab文件进行更新,可以查看/etc/mtab内容看磁盘配额参数是否已经更新:mtab

三、执行quotacheck -avug扫描磁盘分析使用者使用情况,生成aquota.group 与 aquota.user文件,每个有磁盘配额参数的磁盘分区下都生成这两个文件。

quotacheck

四、启动quota,编辑使用者的使用空间。

on

这样,就在三个磁盘分区上启动了磁盘配额功能。

新建用户组,用户。

user

为用户分配磁盘配额容量edquota –u user1:

quotauser


明:Filesystem对应的分区,blocks是指用户在这个分区上所消耗的容量,也就是已经使用的空间大小单位是Kbytes,这个是quota自
动算出来的,所以不要去修改它,soft和hard是用户在这个分区上的限制值,soft最低限制容量,在宽限时间内,使用者使用的空间容量可以超过
soft的值,但是在宽限时间结束前必须要将使用的容量降低到soft容量值以下,hard是严格限制的容量,就是说使用者绝对不能超过的使用容量。通常
会设置hard的数值比soft的数值高,这样在使用者使用容量超过soft数值时可以对使用者进行警告,inodes是目前使用掉的inode状态,比
较难控制,所以不用管,也是由quota自己计算的。

设置宽限时间:edquota -t将默认的7天时间修改为1天。保存退出。

time


看用户的磁盘配额信息:quota –vu
user1。这里注意,由于用户使用的空间没有超过soft的数值,所以grace(宽限时间)没有启动,当使用空间超过soft没有超过hard的数值
时,grace会自动启动。当使用空间降低到soft以下时,grace又会自动关闭。

查看用户配额

下来切换到user1用户,复制文件到/disk1下看看包括29个文件和一个文件夹使用容量没有超过soft数值。

1

继续复制,当使用容量超过soft数值时,会出现一个警告用户使用的容量已经超过了限制,磁盘配额的宽限时间会自动启动,刚才设置的是一天,所以这里是24小时。

2

继续复制,当超过hard的数值时,会提示写出错,用户使用的容量已经达到了严格限制的容量。

limit

查看用户的磁盘配额信息,会发现grace的值没有了,这是一个奇怪的问题,大概程序这块有点问题,没有考虑到使用的空间容量等于hard的数值时该怎么办:

3

最后复制的那个文件有一部分写到了磁盘上,有一部分没有写到磁盘上,所以这是个损坏的文件。可以看看这个文件的大小:

file

可以看到最后一个文件的大小和其他正常的不一样大。

 五、收尾

1、群组的磁盘配额和用户的设置方法类似,只是把-u 变成-g就行了。群组的磁盘配额是群组里的用户共用的容量。

2、当用户和它所在的组都设置了磁盘配额时,quota会取小的,就是最先达到限制数值的起作用。

3、复制用户的磁盘配额信息给别的用户:edquota –p user1 user2

4、开机自启动:在/etc/rc.d/rc.local文件里面加上/sbin/quotaon -aug

    A+
发布日期:2015年02月13日  所属分类:未分类

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: