Chinaunix首页 | 论坛 | 博客
  • 博客访问: 385761
  • 博文数量: 74
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 695
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-21 17:34
文章分类
文章存档

2011年(1)

2010年(1)

2009年(72)

我的朋友

分类: LINUX

2009-07-13 10:04:12


不管磁盘空间有多么大,磁盘空间不够使用似乎是一个永远的事实。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

[root@fileserver home]# quotacheck -mf [-u] /dev/hda7 
[root@fileserver home]# quotacheck -mf -g /dev/hda7 
参数 -m[M] 意思是:强迫在"读、写"模式下检查硬盘的 quota (有一定的
"正在写"的数据丢失可能,应确保没有进程在写这个分区。建议在单用户模式下进行。)。 
例如:(在平时检查) 

[root@fileserver root]# 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.
 


[root@fileserver root]# 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. 


[root@fileserver root]# quotacheck /var/spool/ -mf 
[root@fileserver root]#


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 


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