Chinaunix首页 | 论坛 | 博客
  • 博客访问: 488607
  • 博文数量: 82
  • 博客积分: 3003
  • 博客等级: 中校
  • 技术积分: 1285
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-11 15:27
文章分类

全部博文(82)

文章存档

2011年(1)

2010年(5)

2009年(63)

2008年(13)

我的朋友

分类: LINUX

2009-10-08 14:56:30

Quota磁盘配额

Quota在运作的时候,是针对这个分区进行限制的。例如,如果/dev/sda5是挂载在/home下的,那么/home下的所有目录都会受到限制。

旧版的quotaquota.userquota.group)与新版的quotaaquota.useraquota.group)不同,但是旧版的quota可以由convertquota这个程序转换。

并不是所有的用户都可以设定Quota,例如root,因为整个系统的所有数据几乎都是他的。

Quota针对整个分区的限制主要分为以下几个部分:

Soft Limit:最低限制容量,使用者在宽限期间之内,容量可以超过soft,但必须在宽限时间 之内将磁盘容量降低到soft的容量限制之下。

Hard Limit:这是绝对不能超过的容量。通常hard limit会比soft limit高。Soft LimitHard  Limit之间的容量其实就是宽限容量。

宽限时间:当使用者使用的空间超过了Soft Limit,却还没有到底Hard Limit时,那么在这 个宽限时间内,使用者就必须将使用的磁盘容量降低到Soft Limit之下。当使用者使用 磁盘的空间超过了Soft Limit时,宽限时间会被自动启动,而在使用磁盘容量降低到Soft  Limit之下,那么宽限时间就会自动取消。

使用Quota的时候,系统回去搜索系统上具有Quota参数的分区,所以要使用Quota的功能时,File System必须已经支持Quota。一般来说,先编辑/etc/fstab,再重新挂载File System,用这种方法让File System支持Quota

 

基本操作:

一、使用quota命令显示当前用户的Quota限制值

-u 后面接username,默认是当前用户。

-g 后面接groupname

-v 显示每个File SystemQuota值。

# quota -guvs 

如果没有任何信息列出来,原因可能是:

1. 没有支持QuotaFile System

2. Quota功能没有打开

二、使用quotacheck命令生成aquota.useraquota.group

-a 扫描所有在/etc/mtab文件中,含有Quota支持的File System,加上此参数后,挂载点可 以不写,因为扫描了所有的File System

-u 针对使用者扫描文件与目录的使用情况,建立aquota.user

-g 针对群组扫面文件与目录的使用情况,建立aquota.group

-v 显示扫描过程的信息。

-M 强制进行扫描。

# quotacheck -avug

quotacheck: Scanning /dev/sda9 [/mnt] done

quotacheck: Checked 3 directories and 4 files

在扫描到带支持QuotaFile System中会生成两个文件:

-rw------- 1 root root 6144 Oct 5 23:57 aquota.group

-rw------- 1 root root 6144 Oct 5 23:57 aquota.user

(如果在/etc/fstab文件里只有usrquota,那么只生成aquota.user文件)

注意:做此操作时必须使用quotaoff命令将Quota功能停下。

如果出现下面的错误信息:

quotacheck: Cannot get quotafile name for /dev/sda9

解决方法:

1. 可以加上-m参数强制扫描。

2. 也可以手动建立记录文件,然后再扫描

# touch /mnt/aquota.user /mnt/aquota.group

# quotacheck -avug

三、使用edquota命令设置Quota限制值

-u 后面接用户名,可以进入Quota的编辑画面(vi)去设定用户的限制值。

-g 后面接群组名,可以进入Quota的编辑画面(vi)去设定群组的限制值。

-t 修改宽限时间。

-p 复制范本,需要两个用户做参数。前者是已经存在并且已经设定好Quota的用户。

# edquota -u jaylin

Disk quotas for user jaylin(uid 500):
Filesystem  blocks  soft  hard  inodes  soft  hard
/dev/sda9  25000  30000        0
(单位是KB,其中blocksinodes分别是目前用户jaylin/dev/sda9这个File System上所使用的磁盘容量和inode个数,它们是Quota自己计算出来的,所以请不要修改)

# edquota -p jaylin test

将用户jaylinQuota限制值复制给用户test。查看用户test的限制值,和用户jaylin的一样:

# edquota -u test

Disk quotas for user test(uid 501):
Filesystem  blocks  soft  hard  inodes  soft  hard
/dev/sda9  25000  30000        0
设定宽限时间

edquota -t
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem  Block grace period  Inode grace period
/dev/sda9  7days  7days

四、使用quotaon命令启动Quota

-u 针对用户启动Quotaaquota.user)。

-g 针对群组启动Quotaaquota.group)。

-v 显示启动过程的相关信息。

-a 根据/etc/mtab文件内的File System设定,启动有关的Quota。若不加此选项,则后面要 加特定的File System

# quotaon -avug

/dev/sda9 [/mnt]: group quotas turned on
/dev/sda9 [/mnt]: user quotas turned on

# quotaon -uv /mnt

只启动/mntusrquota功能。

quotaon命令是在启动Quota的,不过由于这个命令时启动aquota.useraquota.group的,所以就必须要先完成quotacheck的工作。

五、使用quotaoff命令关闭Quota

-a 根据/etc/mtab文件的内容,关闭所有File SystemQuota

-u 仅针对后面的挂载点关闭usrquota

-g 仅针对后面的挂载点关闭grpquota

六、使用repquota命令显示完整的quota结果报告

-a 直接到/etc/mtab文件里搜索具有Quota标志的File System,并报告Quota的结果。

-v 输出所有的Quota结果,而不仅仅是当前用户自己的Quota限制值。要和参数-a一起使 用。

-g 显示某个群组的Quota限制值。

 

设定Quota的主要步骤

一、设定分区的File System支持Quota参数

Quota支持最好的是ext2/ext3文件系统。启动File System支持Quota可以编辑/etc/fstab文件,使得要开放的Quota磁盘可以支持Quota

例如:

LABEL=/mnt  /mnt  ext3  defaults,usrquota,grpquota 1 2

defaults,usrquota,grpquota之间没有空格)

注意:就算加入了Quota的参数,也不能起作用,因为Quota真正读取的是/etc/mtab文件。所以要更新/etc/mtab文件的内容,有两张方法:

1. 重新启动系统。

2. 重新挂载对应的File System

# mount -o remount /mnt

二、建立Quota记录文件

这两个文件就是aquota.useraquota.group,使用quotacheck命令扫描就可以。

三、编辑Quota的限制值和宽限时间

使用edquota命令来编辑每个用户或者群组的Quota限制值和宽限时间。

四、重新扫描与启动Quota

设定好quota之后,建议可以再进行一次quotacheck,然后再以quotaon来启动

 

测试

# setquota -u jaylin 25000 40000 0 0 /mnt

或者通过edquota -u jaylin来设置也可。

# su - jaylin

/mnt/目录下:

第一次,

$ dd if=/dev/zero of=test1 bs=1M count=20

20+0 records in

20+0 records out

20971520 bytes (21 MB) copied, 0.138902 seconds, 151 MB/s

一切正常,因为文件没有Soft Limit

第二次,(先将刚才的文件删除)

$ dd if=/dev/zero of=test1 bs=1M count=26

sdb: warning, user block quota exceeded.

26+0 records in

26+0 records out

27262976 bytes (27 MB) copied, 0.263475 seconds, 103 MB/s

超过了Soft Limit但是没有超过Hard Limit,只是有warning

第三次,(先将刚才的文件删除)

$ dd if=/dev/zero of=test1 bs=1M count=41

sdb: warning, user block quota exceeded.

sdb: write failed, user block limit reached.

dd: writing `test1': Disk quota exceeded

40+0 records in

39+0 records out

40914944 bytes (41 MB) copied, 0.322799 seconds, 127 MB/s

超过了Hard Limit,报错,生成的test1文件只有40M

 

某些旧版的Linux不支持aquota.useraquota.group,所以在启动Quota之前要做链接:

(挂载的目录下)

# ln -s aquota.user quota.user

# ln -s aquota.group quota.group

 

开机启动quota

Red Hat在开机的脚本里(/etc/rc.d/rc.sysinit)加入了自动启动的代码。

阅读(1406) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~