免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1024 | 回复: 0
打印 上一主题 下一主题

quota [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-24 15:13 |只看该作者 |倒序浏览

查看磁盘配额:quota –auvg
描述磁盘情况:quotachck –auvgm 可产生quota.user/aquota.user和quota.group/aquota.group
打开或关闭磁盘配额:quotaon –auvg   quotaoff –auvg
编辑磁盘配额:edquota –ugtp
动手作 quota:
quota 可以作用的功能有很多,包括了:
 • 限制某一群组所能使用的最大磁盘配额(使用 群组 限制):你可以将你的主机上的使用者分门别类,有点像是目前很流行的付费与免付费会员制的情况,你比较喜好的那一群的使用配额就可以给高一些!呵呵! ^_^...
 • 限制某一使用者的最大磁盘配额(使用 使用者 限制):在限制了群组之后,您也可以再继续针对个人来进行限制,使得同一群组之下还可以有更公平的分配!
 • 以 Link 的方式,来使邮件可以作为限制的配额(更改 /var/spool/mail 这个路径):如果是分为付费与免付费会员的『邮件主机系统』,是否需要重新再规划一个硬盘呢?也不需要啦!直接使用 Link 的方式指向 /home (或者其它已经做好的 quota 磁盘)就可以啦! 
底下先列出几个主要的步骤来说明: 
• 开启磁盘的 quota 功能:编辑 /etc/fstab ,使得准备要开放的 quota 磁盘可以支持 quota 啰;
• 预扫瞄磁盘的使用情况:使用 quotacheck 来扫瞄一下我们要使用的磁盘啰;
• 建立使用者的 quota :使用 edquota 来编辑每个使用者或群组的可使用空间啰;
• 启动 quota :使用 quotaon 吧! 
整个步骤大致上就只有这几步,我们来瞧一瞧如何使用吧!!底下我们以一个简单的范例来进行 quota 的说明啰!整个范例的说明如下:
 • 我们假设 test 这部主机里头有 test 与 test2 这两个使用者,且他们两个都挂在 test 这个群组下;
• 每个使用者总共有 50MB 的磁盘空间(不考虑 inode )限制!并且 soft limit 为 45 MB;
• 而宽限时间设定为 1 天,也就是说,这四个人可以突破 40MB 的限制,但是在一天之内必须要将多余的档案砍掉,否则将无法使用剩下的空间(也就是说,这个账号大概就不能使用了?);
• test 这个群组考虑最大限额,所以设定为 90 MB 好了!
 整个执行步骤可以照下面来执行看看:
1. 建立 test2 这个使用者:
由于我们之前只有 test 这个使用者挂在 test 群组之中,所以必需要先设定一下 test2 这个使用者!因为他的群组必需是 test 这个,而我们去查了一下 /etc/group 发现 test 的 uid 为 501 ,因此,我们可以这样来设定 test2 呢! 
[root @test root]# useradd –m –g 501 test2
[root @test root]# passwd test2
Changing password for user test2.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
2. 开启磁盘的 quota 功能:
由于 quota 需要在 ext 的 Linux 延伸格式档案才可以启动,所以你就必须要将准备开启 quota 的磁盘启动参数,写进入 quota 的磁盘设定才行 ( /etc/fstab )!以我的例子而言,我想要在 /home 底下进行 quota 的限制test, test2 这两个人!正巧 /home 是一个独立的扇区,这可以使用 df 来查询:此外,必需要特别留意的是,最好不要以根目录亦即是 / 进行 quota 啦!否则容易有些问题呢!另外,不要针对 root 做 quota 喔!
[root @test root]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda1 1904920 1088136 720020 61% /
/dev/hdb1 976344 71504 854444 8% /backup
/dev/hdb2 101540 4252 92048 5% /home 
嗯!我的 home 是独立的 partition ,并且他的装置名为 /dev/hdb2 ,好了!那么我就必须要启动 /home 这个/dev/hdb2 的 quota 档案格式,好了!那么由于档案格式的设定是写在 /etc/fstab 里头,所以我们以 vi 来编辑他吧!只要在 /etc/fstab 里头增加了 usrquota, grpquota 就可以啦!『注:请特别留意,这两个项目请『务必』不要写错了!请再写入 /etc/fstab 之前好好的再次检查,因为写错之后,很有可能造成系统无法开机(虽然机率不高,但是有可能!?)』 
[root @test root]# vi /etc/fstab
# device MountPoint filesystem parameters dump fsck
/dev/hda1 / ext3 defaults 1 1
/dev/hda2 swap swap defaults 0 0
/dev/hdb1 /backup ext3 defaults 1 1
/dev/hdb2 /home ext3 defaults 1 1
none /dev/pts devpts mode=0620 0 0
none /proc proc defaults 0 0
上面的黄色字体改成底下的样子!
/dev/hdb2 /home ext3 defaults,usrquota,grpquota 1 1 
多了 usrquota,grpquota 注意,由 defaults,usrquota,grpquota 之间都没有空格! 
这样就算加入了 quota 的磁盘格式了!不过,由于真正的 quota 在读取的时候是读取 /etc/mtab 这个档案的,偏偏这一个档案需要重新开机之后才能够以 /etc/fstab 的新数据进行改写!所以这个时候你可以选择: 
(1)重新开机==>reboot;也可以选择
(2)重新 remount filesystem 来驱动设定值! 
我是不太喜欢重新开机的人啦!所以我就这么做: 
[root@test /]# umount /dev/hdb2
[root@test /]# mount -a
[root@test /]# more /etc/mtab
/dev/hda1 / ext3 rw 0 0
none /proc proc rw 0 0
none /proc/bus/usb usbdevfs rw 0 0
none /dev devfs rw 0 0
none /dev/pts devpts rw,mode=0620 0 0
/dev/hdb1 /backup ext3 rw 0 0
/dev/hdb2 /home ext3 rw,usrquota,grpquota 0 0
或者以下列的方式重新 mount 所有的磁盘:
[root @test /root ]# mount -a -o remount 这个指令可以重新将 /etc/fstab 的咚咚 mount 下来! 
嘿嘿嘿嘿!这样我们就已经成功的将 quota 的功能写入 partition 当中啰!另外,我们这里是以 ext3 这个磁盘格式来测试 quota 的呦!
3. 扫瞄磁盘的使用者使用状况,并产生重要的 aquota.group 与 aquota.user:
接着下来就是要来扫瞄一下我们所需要的磁盘到底有没有多余的空间可以让我们来设定 quota 呢?并且将扫瞄的结果输出到这个磁盘的最顶层去(也就是 /home 底下)这个时候就需要 quotacheck 这个指令的帮忙了!使用quotacheck 就可以轻易的将所需要的数据给他输出了!现在就 OK 啦!并且在 /home 底下会产生 aquota.group 与aquota.user 这两个档案! 
注:此处有可能会报错,视内核版本而定,可先创建quota.user和quota.group文件,另加在-m参数,还可多执行一次。还有一个值得注意的问题就是,quota现有v1和v2两个版本,v2只支持aquota*,2.6的内核中只支持V2,可使convertquota 命令把 quota.user 转换为 aquouta.user ,再执行 quotacheck。
[root@test /]# quotacheck -avug
quotacheck: Scanning /dev/hdb2 [/home] done
quotacheck: Checked 10 directories and 22 files
[root@test /]# ll /home
total 44
-rw------- 1 root root 7168 Oct 28 14:05 aquota.group
-rw------- 1 root root 7168 Oct 28 14:05 aquota.user
drwx------ 2 root root 16384 Oct 22 16:54 lost+found/
drwxr-xr-x 3 test test 4096 Oct 28 01:45 test/
drwxr-xr-x 3 test2 test 4096 Oct 28 13:37 test2/ 
使用 quotacheck 就可以轻易的将所需要的数据给他输出了!现在就 OK 啦!并且在 /home 底下会产生 aquota.group与 aquota.user 这两个档案!注:但是很奇怪的是,在某些 Linux 版本中,我不能够以 aquota.user(group) 来启动我的 quota ,真的是很奇怪呢!所以我就另外做了一个 link 档案来欺骗 quota 啰: 
[root @test /root ]# cd /home
[root @test /root ]# ls -l aquota*
-rw------- 1 root root 7168 May 6 22:16 aquota.group
-rw------- 1 root root 7168 May 6 22:16 aquota.user
[root @test /root ]# ln -s aquota.group quota.group
[root @test /root ]# ln -s aquota.user quota.user 
4. 启动 quota 的限额!
再来就是要启动 quota 啦!启动的方式也是很简单的!就是使用 quotaon -av 即可: 
[root@test /]# quotaon -av
/dev/hdb2 [/home]: group quotas turned on
/dev/hdb2 [/home]: user quotas turned on 
注意:要看到上面有个 turned on 的出现,才是真的成功了! 
5. 编辑使用者的可使用空间:
由于我们有两个使用者要设定,先来设定 test 好了,使用 edquota 就对了 
[root @test /]# edquota –u test
Disk quotas for user test (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/hdb2 32 0 0 8 0 0
将上面的原本设定改为底下的模样:
Disk quotas for user test (uid 501):
Filesystem blocks soft hard inodes soft hard
/dev/hdb2 32 40000 50000 8 0 0 
要特别留意的是,上面的黑体数值代表的是 KB 呦!转成 MB 是需要乘上 1024 倍,这里简单的计算一下就好了!
这样就算编辑完毕了!接下来我们就需要将这个设定同时复制给 test2 这个家伙! 
[root@test /]# edquota -p test test2 
接下来要来设定宽限时间,还是使用 edquota ! 
[root@test /]# 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/hdb2 1days 1days 
将时间改为 1 天(原本是 7days 改成 1days ),好了!查询一下是否真的有设定进去呢?使用 quota -v 来查询 
[root@test /]# quota –vu test test2
Disk quotas for user test (uid 501):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdb2 32 40000 50000 8 0 0
Disk quotas for user test2 (uid 502):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdb2 28 40000 50000 7 0 0 
特别注意到,由于我们的使用者尚未超过 40 MB,所以 grace ( 宽限时间 )就不会出现啦!这样很够清楚了吧?! 
6. 编辑群组使用空间:
其实也差不多,还是使用 edquota: 
[root@test /]# edquota -g test
Disk quotas for group test (gid 501):
Filesystem blocks soft hard inodes soft hard
/dev/hdb2 60 0 0 15 0 0
修改成底下这样:
Disk quotas for group test (gid 501):
Filesystem blocks soft hard inodes soft hard
/dev/hdb2 60 80000 90000 15 0 0
[root@test /]# quota -vg test
Disk quotas for group test (gid 501):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdb2 60 80000 90000 15 0 0 
7. 设定开机时启动:
开机的时候自动启动的设定在哪里还记得吗?没错!就是在 /etc/rc.d/rc.local 底下:所以你可以使用 vi 在这个档案的最后面加上一行: 
[root @test /root ]# vi /etc/rc.d/rc.local
/sbin/quotaon -aug 
如果要关闭 qutoa 就是用 quotaoff 吧!没错!这样就将 quota 设定完毕了!很简单吧!!使用邮件主机进行 quota 的实例:
好了,我们前面 账号管理 的部分曾经提到 e-mail 这个东西嘛!好了,如果我们要设定一个对外开启的邮件主机的时候,那么最好对于邮件空间有点限制比较好,免得如同上面提到的一些问题一样,造成使用者的使用权不一!所以说,使用quota 确实是一个好建议!这个时候该怎么办呢?什么怎么办?嗯!是这样的,由于 quota 『只能针对一个 partition 进行整体的磁盘配额,无法针对某个目录进行磁盘配额!』针对这个观念,我们不难发现,『(1)将邮件存在个人的家目录与(2)将邮件统一放在 /home 下的一个共享目录』是一样的!为什么呢?这是因为 quota 针对的是一个磁盘呀!呵呵!所以啰,您必须先确定『您的 /home 是一个独立的 partition 』才行!当然啰,您也可以使用其它的独立的 partition 来进行底下的步骤!但是在这里,我们预设以 /home 这一个目录来假定这一个目录是一个独立的 partition !
如此则在 /home 底下,由于每个人的磁盘配额已经设定好了!所以当然啰!该信件就可以得到完整的 quota 限额的限制了!
所以呢,就需要进行下面的步骤:
1. 以 上面设定 的方式设定好使用者 quota 的所有工作(即是在 /home 这个 partition );
2. 将 /var/spool/mail 这个邮件预设的数据夹备份到其它的目录去;
3. 建立 /home/mail,这是因为假设我们的邮件放置在这个目录中;
4. 修改 /home/mail 的属性,使成为 拥有者 root ,群组 mail ,及属性为 775 才行!
5. 将 /home/mail 给他 Link 到 /var/spool/mail 去即可!
6. 以后每个人的邮件将都会放置 /home/mail 这个目录中!
1. 建立并修改 /home/mail 这个目录:
[root @test /root ]# mkdir /home/mail
[root @test /root ]# chown root:mail /home/mail
[root @test /root ]# chmod 775 /home/mail
2. 备份并移动原本的 mail 到 /home/mail 底下去:
[root @test /root ]# cp -r /var/spool/mail /var/spool/mail.back
[root @test /root ]# mv /var/spool/mail/* /home/mail
[root @test /root ]# rmdir /var/spool/mail
3. 建立连结:
[root @test /root ]# ln -s /home/mail /var/spool/mail
只要这样的一个小步骤,嘿嘿!您家主机的邮件就有一定的限额啰!当然啰!您也可以依据不同的使用者与群组来设定quota 然后同样的以上面的方式来进行 link 的动作!嘿嘿嘿!就有不同的限额针对不同的使用者提出啰!很方便吧!! ^_^__


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/91047/showart_1877905.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP