2010-05-21 07:33:15 阅读17 评论7 字号:大中小
quota 就字面上的意思来看,呵呵!就是有多少『限额』的意思啦!如果是用在零用钱上面,就是『有多少零用钱一个月』的意思之类的。如果是在容量空间上面呢?以 Linux 来说,呵呵!就是有多少容量限制的意思。
在 Linux 系统中,由于是多人多任务的环境,所以会有多人共同使用一个硬盘空间的情况发生,如果其中有少数几个使用者大量的占掉了硬盘空间的话,那势必压缩其它使用者的使用权力!因此管理员应该适当的开放硬盘的权限给使用者,以妥善的分配系统资源!避免有人抗议呀!比较常使用的几个情况是:在 Linux 当中,使用来作为硬盘空间管理的就是所谓的 quota 这个咚咚啦!使用这个模块要有几个步骤,底下就分别说说吧!另外要特别注意的是,使用 quota 时有几个基本的限制需要谈一谈:
- (1) 例如每个人的网页空间的容量限制!
- (2) 每个人的邮件空间限制。
- quota 实际在运作的时候,是针对『整个 partition』进行限制的,例如:如果你的 /dev/hda5 是挂载在 /home 底下,那么在 /home 底下的所有目录都会受到限制!
- Linux 系统核心必须有支持 quota 这个模块才行:如果您是使用 Mandrake 的预设核心,嘿嘿!那恭喜你了,你的系统已经预设有开放 quota 这个模块啰!如果您是自行编译核心的,那么请特别留意您是否已经『真的』开启了 quota 这个模块?否则底下的功夫将全部都视为『白工』。至于核心编译的过程我们会在未来进行说明呦!
quota 这支程序的限制内容主要分为底下几个部分:
- 目前新版的 Linux distributions 如: Mandrake 9.0 与 Red Hat 8.0 等使用的是 Kernel 2.4.xx 的核心版本,这个核心版本支持新的 quota 模块,使用的预设档案( aquota.user, aquota.group )将不同于旧版本的 quota.user, quota.group !(多了一个 a 呦!)而由旧版本的 quota 可以藉由 convertquota 这个程序来转换呢!
- soft :这是{zd1}限制容量的意思,使用者在宽限期间之内,他的容量可以超过 soft ,但必需要宽限时间之内将磁盘容量降低到 soft 的容量限制之下!
- hard :这是『{jd1}不能超过』的容量!跟 soft 相比的意思为何呢?通常 hard limit 会比 soft limit 为高,例如网络磁盘空间为 30 MB ,那么 hard limit 就设定为 30MB ,但是为了让使用者有一定的警戒心,所以当使用空间超过 25 MB 时,例如使用者使用了 27 MB 的空间时,那么系统就会警告使用者,让使用者可以在『宽限时间内』将他的档案量降低至 25 MB ( 亦即是 soft limit )之内!也就是说, soft 到 hard 之间的容量其实就是宽限的容量啦!可以达到针对使用者的『警示』作用!
- 宽限时间:那么宽限时间就可以很清楚的知道含意是什么了!也就是当您的使用者使用的空间超过了 soft limit ,却还没有到达 hard limit 时,那么在这个『宽限时间』之内,就必需要请使用者将使用的磁盘容量降低到 soft limit 之下!而当使用者将磁盘容量使用情况超过 soft limit 时,『宽限时间』就会自动被启动,而在使用者将容量降低到 soft limit 之下,那么宽限时间就会自动的取消啰!
在开始进行 quota 的实作之前,我们得来了解一下 quota 要使用的指令啰!基本上分为两种,一种是查询功能(quota, quotacheck, quotastats, warnquota, repquota),另一种则是编辑 quota 的内容( edquota, setquota )。底下我们来谈一谈这些基本的指令吧!
[root @test /root ]# quota [-guvs] [user,group] 参数说明: -g :显示 group 群组 -u :显示 user -v :显示 quota 的值 -s :选择 inod 或 硬盘空间来显示 范例: [root @test /root ]# quota -guvs <==显示目前执行者(就是 root )的 quota 值 [root @test /root ]# quota -uvs test <==显示 test 这个使用者的 quota 值 |
[root @test /root ]# quotacheck [-auvg] /yourpath 参数说明: -a :扫瞄所有在 /etc/mtab 里头已经 mount 的具有 quota 支持的磁盘 -u :扫瞄使用者的档案与目录 -v :显示扫瞄过程 -g :扫瞄群组使用的档案与目录 -m :强制进行 quotacheck 范例: 范例一、要针对 /home 这个 partition 进行 quota 的规划: [root@test root ]# quotacheck -uvg /home <==开始扫瞄 /home 这一个独立扇区的目录 quotacheck: Scanning /dev/hda3 [/home] done <==显示 /home 扇区为 /dev/hda3 ! quotacheck: Checked 35 directories and 342 files <==扫瞄完毕,有 35 目录与 342 档案。 [root@test root ]# ls -l /home <==查看一下 /home 这个目录底下,两个档案产生了! -rw------- 1 root root 7168 May 6 18:37 aquota.group -rw------- 1 root root 7168 May 6 18:37 aquota.user 关于 quotacheck 发生错误的解决方法: # 有些时候,在新版的 Linux distribution 当中,进行 quotacheck 时,可能会出现 # quotacheck: Cannot get quotafile name for /dev/hda3 # quotacheck: Cannot get quotafile name for /dev/hda3 # 这可能是新版的 quota 在设计时的小问题,解决的方法有两个: [root@test root]# quotacheck -uvgm # 加上 -m 的参数来强制进行,或者是: [root@test root]# touch /home/aquota.user; touch /home/aquota.group [root@test root]# quotacheck -uvg # 既然 quotacheck 找不到 quotafile ,那么我就手动将 quotafile 建立起来即可! # 然后再重新进行 quotacheck 一次即可! # 注意喔!因为我的 /dev/hda3 对应到 /home ,所以当然就是在 /home 底下建立起 qoutafile 了! |
[root @test /root ]# edquota [-u user] [-g group] [-t] [root @test /root ]# edquota -p user_demo -u user 参数说明: -u :编辑 user 的 quota -g :编辑 group 的 quota -t :编辑宽限时间(就是超过 quota 值后,还能使用硬盘的宽限期限) -p :copy 模板(以建立好的使用者或群组)到另一个使用者(或群组) 范例: [root @test /root ]# edquota -u test <==设定 test 这个使用者的 quota 数值,会直接进入 vi 画面 Disk quotas for user test (uid 501): Filesystem blocks soft hard inodes soft hard /dev/hda3 8 0 0 5 0 0 修改一下成为: Disk quotas for user test (uid 501): Filesystem blocks soft hard inodes soft hard /dev/hda3 8 50005000 5 50005000 [root @test /root ]# edquota -p test -u test2 <==将 test 这个人的 quota 资料复制给 test2 这个人! [root @test /root ]# edquota -t <==设定宽限时间,也就是超过 quota 值之后的修正时间啦! |
[root @test /root ]# quotaon [-a] [-uvg directory] 参数说明: -a :全部的 quota 设定都启动(会自动去寻找 /etc/mtab 的设定) -u :使用者的 quota 启动 -g :群组的 quota 设定启动 -s :显示讯息 范例: [root @test /root ]# quotaon -a <==全部的 quota 限制都启动 [root @test /root ]# quotaon -uv /home <==只有xx /home 底下的使用者 quota 限额,group 不xx! |
[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 |
[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 上面的黄色字体改成底下的样子! |
[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 /]# 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/ |
[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 |
[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 将上面的原本设定改为底下的模样: |
[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 |
[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 |
[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 修改成底下这样: [root@test /]# quota -vg test |
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 底下去: 3. 建立连结: |
只要这样的一个小步骤,嘿嘿!您家主机的邮件就有一定的限额啰!当然啰!您也可以依据不同的使用者与群组来设定 quota 然后同样的以上面的方式来进行 link 的动作!嘿嘿嘿!就有不同的限额针对不同的使用者提出啰!很方便吧!! ^_^