QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8068|回复: 25

用户磁盘空间的限制 (ext3)

[复制链接]
发表于 2002-11-22 08:13:51 | 显示全部楼层 |阅读模式
不管磁盘空间有多么大,磁盘空间不够使用似乎是一个永远的事实。Linux提供了限制用户磁盘空间的手段,以便促使每个用户合理有效地使用分配给他的空间。用户磁盘空间的限制是以文件系统(分区)为单位,而不理会用户文件放在该文件系统中的哪个目录中。


1. 修改 /etc/fstab 文件.在文件系统相应的 mount 命令行中加入限额选项(如下的例子)。
  /dev/hda7 /home ext3 defaults,usrquota,grpquota 1 2



2. 重新装载 Linux 分区,例如:
[root@fileserver root]# mount -o remount /home
继续。



3. 在欲加磁盘限额的文件系统的安装点目录建立 aquota.user 和 aquota.group 文件:
[root@fileserver root]# cd /home (/home 为单个分区 /dev/hda7 的装载点)
[root@fileserver home]# touch aquota.user  (为用户设置磁盘限额)
[root@fileserver home]# touch aquota.group (为用户组设置磁盘限额)
这时生成 的 aquota.user 和 aquota.group 是空的,不符合系统的要求。
请看下一步。



4. 生成符合系统要求的 aquota.user 和 aquota.group
[root@fileserver home]# quotacheck /home (生成符合系统要求 的 aquota.user)
[root@fileserver home]# quotacheck -g /home (生成符合系统要求 的 aquota.group)
生成时,有错误提示。这不要紧。因为 先前 touch 生成的是一个空文件,肯定格式不对。


这样 正确的 aquota.user 和 aquota.group 生成啦。
继续下一步:



5. 为用户设置磁盘空间限额:
[root@fileserver home]# edquota [-u] user_name
[root@fileserver home]# edquota -g group_name (对于用户组)
本命令开启一个 vi 窗口,为用户设置磁盘空间和i节点数目的限额.其中 soft 限额为一个临时性的限额;hard 限额为一个永久性限额(soft 限额可略大于 hard 限额),编辑方法与 vi 完全相同,以 ZZ 或 :wq 命令退出.如要给若干用户 user1, user2,user3 指定相同的磁盘限额,可用下面的命令给这些用户赋予与 protuser 相同的限额:
[root@fileserver home]# edquota [-u] -p protuser user1 user2 user3
[root@fileserver home]# edquota -g -p protgroup group1 group2 group3

设定soft quota和hard quota之间的时间:
[root@fileserver home]# edquota -t
出现一个 vi 窗口:
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/hda7 7days 7days
修改成自己所需要的,并保存退出就设置这个时间啦。
您在这之后可能需要重新启动,以使磁盘限额生效。
您可以啦,不过还要注意一些问题,请继续看下去。



6. 检查磁盘空间限制的一致性,系统会自动每次重新启动时,在检查硬盘后进行( /etc/rc.sysinit ),无须您亲手进行。
假若 分区 已经以“读写”方式挂上时,您要小心,例如:
[root@fileserver root]# quotacheck /home
quotacheck: Quota for users is enabled on mountpoint /home so quotacheck might damage the file.
Please turn quotas off or use -f to force checking.

这时, 由于某种需要,或者在某种情况,“不得不”运行这个命令
[root@fileserver home]# quotacheck -mf [-u] /dev/hda7
[root@fileserver home]# quotacheck -mf -g /dev/hda7
参数 -m[M] 意思是:强迫在“读、写”模式下检查硬盘的 quota  (有一定的“正在写”的数据丢失可能,应确保没有进程在写这个分区。建议在单用户模式下进行。)。
例如:(在平时检查)
2002年11月25日下午15时25分48秒[root@mail gugong]# quotacheck /var/spool/ -f
quotacheck: Cannot remount filesystem mounted on /var/spool read-only so counted values might not be right.
Please stop all programs writing to filesystem or use -m flag to force checking.
2002年11月25日下午15时25分53秒[root@mail gugong]# quotacheck /var/spool/ -m
quotacheck: Quota for users is enabled on mountpoint /var/spool so quotacheck might damage the file.
Please turn quotas off or use -f to force checking.
2002年11月25日下午15时25分57秒[root@mail gugong]# quotacheck /var/spool/ -mf
2002年11月25日下午15时25分59秒[root@mail gugong]#




7. 以后您如果要取消磁盘空间和i节点数目的限制,可用以下命令,请看:
[root@fileserver root]# quotaoff /home (取消磁盘空间限制。)
[root@fileserver root]# quotaon /home (现在启动磁盘空间限制。)
[root@fileserver root]# quotaon /home (已经启动磁盘空间限制啦,所以出现以下错误:)
quotaon: using /home/aquota.group on /dev/hda7: Device or resource busy
quotaon: using /home/aquota.user on /dev/hda7: Device or resource busy





贴上来“磁盘限额”的效果:


The original message was received at Sun, 6 Oct 2002 17:58:51 +0800
from localhost.localdomain [127.0.0.1]
with id g969wp302751
----- The following addresses had transient non-fatal errors -----

----- Transcript of session follows -----
procmail: Quota exceeded while writing "/var/spool/mail/zhengtx"
... Deferred: local mailer (/usr/bin/procmail) exited with EX_TEMPFAIL
Warning: message still undelivered after 4 hours
Will keep trying until message is 5 days old
550 5.1.1 ... User unknown




具体见:

http://shcore.com.cn/gugong/gugong/html/quota.php
发表于 2002-11-22 10:23:14 | 显示全部楼层
我现在使用的RH8。0已经将文件系统升级为ext3了,上面所说的操作还有效吗(是不是直接把ext2换成ext3就行了?)
回复

使用道具 举报

 楼主| 发表于 2002-11-22 10:31:13 | 显示全部楼层
是有效的。

我上面说的其实是 ext3 的  quota ,不好意思,没有注明 !

我原来也是使用 ext2 。后来使用 ext3 。

在 ext2 上建立 quota 同 ext3 上的建立 quota 的方法 是不一样的。



>>> 是不是直接把ext2换成ext3就行了?

ext3 的符合系统要求的 是: aquota.user 和 aquota.group
好像 ext2 的 不一样,不记得啦 ,好像是  quota.user 和 quota.group
回复

使用道具 举报

 楼主| 发表于 2002-11-22 10:33:53 | 显示全部楼层
也正是原来的 ext2 的 quota 不同于 ext3 。

所以我总结出了以上的方法同大家探讨。
回复

使用道具 举报

发表于 2002-11-23 19:31:12 | 显示全部楼层

Re: 用户磁盘空间的限制 (ext3)

[quote:2e8c443b38="gugong"]1. 修改 /etc/fstab 文件.在文件系统相应的 mount 命令行中加入限额选项(如下的例子)。
/dev/hda7 /home ext2 defaults,usrquota,grpquota 1 2 [/quote]

再证实一下,是否应该是
/dev/hda7 /home ext3 defaults,usrquota,grpquota 1 2
回复

使用道具 举报

 楼主| 发表于 2002-11-23 19:49:34 | 显示全部楼层
谢谢,当初我写了很久了,一直没有注意到这个笔误呢 。
回复

使用道具 举报

发表于 2002-11-24 11:12:28 | 显示全部楼层
我的rh80的fstab文件是如下的格式:
LABEL=/home             /home                   ext3    defaults        1 2
none                    /proc                   proc    defaults        0 0
none                    /dev/shm                tmpfs   defaults        0 0
LABEL=/usr              /usr                    ext3    defaults        1 2
LABEL=/var              /var                    ext3    defaults        1 2
/dev/hda7               swap                    swap    defaults        0 0
/dev/cdrom              /mnt/cdrom              iso9660 noauto,owner,kudzu,ro 0 0
我在文件尾部加了一段:
/dev/hda5               /home                   ext3    defaults,usrquota,grpquota      1 2
然后按照你写的操作进行,当进行到
quotacheck /home
quotacheck -g /home
(也进行了
edquota [-u] user_name
edquota -g group_name
操作)
步骤的时候,错误提示如期出现,可是我用file aquota.user(aquota.group)指令来检测的时候,提示文件为empty,而后面的步骤也无法进行下去,提示:
No filesystems with quota detected.
,哪里不对,请指正,谢谢。
回复

使用道具 举报

 楼主| 发表于 2002-11-24 13:11:46 | 显示全部楼层
[quote:4dcbd71df3="csjonline"]我的rh80的fstab文件是如下的格式:
LABEL=/home             /home                   ext3    defaults        1 2
我在文件尾部加了一段:
/dev/hda5               /home                   ext3    defaults,usrquota,grpquota      1 2
[/quote]


是不是重复了 ?
回复

使用道具 举报

发表于 2002-11-24 21:00:12 | 显示全部楼层
真的是可以了(直接修改LABEL那一栏就行),非常感谢!!!
不过还有一点问题,aquota.user的配置文件
Disk quotas for user postgres (uid 502):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/hda5                        32          0          4          9        0        0
看不大懂,能给解释一下吗(你的教程里面好像没说),谢谢 again。
回复

使用道具 举报

 楼主| 发表于 2002-11-25 15:20:11 | 显示全部楼层
Disk quotas for user test (uid 1234:
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/hda7                      1364       2000       1500         24       50       40
  /dev/hda6                      7668       2000       1500          3       50       40

看看例子,你就知道啦 !
回复

使用道具 举报

发表于 2003-3-13 11:32:38 | 显示全部楼层
呵呵,我在一本书上看到的,好像是针对ext2系统文件(现在还有人用ext2系统文件吗?)

  为设置分区的配置,先将usrquota添加到/etc/fstab中相应分区条目的第4个字段中去:

[code:1]
/dev/hda7       /home   ext2    defaults,usrquota       1       2
[/code:1]

   然后为该分区的挂接点创建两个文件:quota.user和quota.group
[code:1]

debian:~# touch /home/quota.user
debian:~# touch /home/quota.group
debian:~# chmod 600 /home/quota.user
debian:~# chmod 600 /home/quota.group

[/code:1]

  然后,重新启动系统,然后用edquota命令为特定有用户设置配额:
[code:1]
debian:~#edquota -u hehe
[/code:1]

该命令激活一个编辑器(vi或者环境变量EDITOR),一般有可能会出现下面的信息:
[code:1]
Quotas for usr hehe:

/dev/hda7:blocks in use:4329,Limits(soft=0,hard=0)
          inodes in use:501,Limits (soft=0,hard=0)
[/code:1]

    通过修改这些信息,可以更改用户hehe软限制和硬限制。软限制设置该用户在系统中
可使用的最大磁盘容量,当达到指定数值时,用户将会被系统警告。硬限制设置该用户不
能超过磁盘容量。如果达到指定数值时,则用户将不能使用任何的额外的磁盘空间。呵呵,
这和古公说的"其中 soft 限额为一个临时性的限额;hard 限额为一个永久性限额(soft 限额可略大于 hard 限额)"有什么不同,
自己琢磨琢磨下。

    呵呵,我没有用过ext2文件系统,只用过ext3和reiserfs,不知道这书说得对不?
回复

使用道具 举报

发表于 2003-6-2 11:25:07 | 显示全部楼层
用户磁盘空间的限制是以文件系统(分区)为单位,而不理会用户文件放在该文件系统中的哪个目录中


这样是否说用户可以随意使用任意个目录,只要他是在所允许的空间大小之内?
回复

使用道具 举报

发表于 2003-6-10 18:50:47 | 显示全部楼层
我怎么老是做不了
回复

使用道具 举报

发表于 2003-6-11 15:54:16 | 显示全部楼层

磁盘限额

各位好:
以下是我的分区情况:
LABEL=/                 /                       ext3    defaults        1 1
none                    /dev/pts                devpts  gid=5,mode=620  0 0
none                    /proc                   proc    defaults        0 0
none                    /dev/shm                tmpfs   defaults        0 0
LABEL=/usr              /usr                    ext3    defaults        1 2
/dev/hda3               swap                    swap    defaults        0 0
/dev/cdrom              /mnt/cdrom              udf,iso9660 noauto,owner,kudzu,ro 0 0

按照上面说的添加
/dev/hda7 /home ext3 defaults,usrquota,grpquota 1 2
系统提示:
mount: /home not mounted already, or bad option
那位能告诉我是怎么回事吗?我该怎么做才可以!
谢谢!
回复

使用道具 举报

发表于 2003-6-16 10:29:50 | 显示全部楼层
不错不错,继续努力
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 11:03 , Processed in 0.051106 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表