- 论坛徽章:
- 0
|
磁盘配额
磁盘配额可以用来限制系统用户使用磁盘容量的大小,使用户更加方便地管理大型系统。
磁盘配额允许用户在两种磁盘管理方式下定义磁盘限制:一种是限制用户的最多文件节点数,另一种是限制用户可以使用的最大磁盘空间。
Quota 从开始准备 filesystem 的支持到整个设定结束的主要的步骤大概是:
1.设定 partition 的 filesystem 支持 quota 参数:
由于 quota 必须要让 partition 上面的 filesystem 支持才行,一般来说, 支持度最好的是 ext2/ext3 ,启动 filesystem 支持 quota 最简单就是编辑 /etc/fstab ,使得准备要开放的 quota 磁盘可以支持 quota 啰;
2.建立 quota 记录文件:
,整个 quota 进行磁盘限制值记录的文件是 aquota.user/aquota.group, 要建立这两个文件就必须要先利用 quotacheck 扫瞄才行喔!所以啰,接下来的步骤就是: 使用 quotacheck 来扫瞄一下我们要使用的磁盘啰;
3.编辑 quota 限制值数据:
再来就是使用 edquota 来编辑每个使用者或群组的可使用空间啰;
4.重新扫瞄与启动 quota :
设定好 quota 之后,建议可以再进行一次 quotacheck ,然后再以 quotaon 来启动吧!
整个 quota 设定的步骤就只是这样而已,简单吧!我们底下就直接来用一个范例介绍一下整个流程, 好让您更清楚的了解到整个步骤喔!
我范例是这样的:
1.设这部 Linux 主机里面主要针对 quser1 及 quser2 两个使用者来进行磁盘配额, 且这两个使用者都是挂在 qgroup 群组里面的喔。
2.每个使用者总共有 50MB 的磁盘空间 (不考虑 inode) 限制!并且 soft limit 为 45 MB;
3.而宽限时间设定为 1 天,也就是说,这两个人可以突破 45MB 的限制, 但是在一天之内必须要将多余的档案砍掉,否则将无法使用剩下的空间 (也就是说,这个账号大概就不能进行档案新增的工作了);
4.gquota 这个群组考虑最大限额,所以设定为 90 MB 好了!
多说无用,我们就实际来进行啰!
操作步骤:
1.准备好测试的环境,使用者与群组的建立:
这两个账号应该是不存在我们的系统的,所以,赶紧将他设定上去吧!
[root@linux ~]# groupadd qgroup
[root@linux ~]# useradd -m -g qgroup quser1
[root@linux ~]# useradd -m -g qgroup quser2
[root@linux ~]# passwd quser1
[root@linux ~]# passwd quser2
2.建立好 filesystem 的 quota 支持:
由于 quota 较完整的支持是需要在 ext2/ext3 的 Linux 格式文件才可以启动, 所以建议你就必须要将准备开启 quota 的磁盘启动参数,写进入 quota 的磁盘设定才行 ( /etc/fstab )!设我想要在 /disk2 底下进行 quota 的限制 quser1, quser2 这两个人!这是因为我的 /disk2 是一个独立的扇区,这可以使用 df 来查询。 此外,必需要特别留意的是,最好不要以根目录亦即是 / 进行 quota 啦!否则容易有些问题呢! 另外,不要针对 root 做 quota 喔!反正做了也没用!
[root@linux ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda1 5952252 3193292 2451720 57% /
/dev/hdb1 28267608 77904 26730604 1% /disk2
/dev/hda5 9492644 227252 8775412 3% /disk1
嗯!我的 /disk2 是独立的 partition ,并且他的装置名为 /dev/hdb1 ,好了!那么我就必须要启动 /disk2 这个 /dev/hdb1 的 quota 档案格式,好了!那么由于档案格式的设定是写在 /etc/fstab 里头,所以我们以 vi 来编辑他吧!只要在 /etc/fstab 里头增加了 usrquota, grpquota 就可以啦! (注:请特别留意,这两个项目请『务必』不要写错了!请在写入 /etc/fstab 之前好好的再次检查,因为写错之后,很有可能造成系统无法开机,虽然机率不高,但是有可能!)
[root@linux ~]# vi /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/disk1 /disk1 ext3 defaults 1 2
LABEL=/disk2 /disk2 ext3 defaults,usrquota,grpquota 1 2
/dev/hda3 swap swap defaults 0 0
注意到我们所需要设定的那个 /disk2 的那一行,在第四字段多了 usrquota,grpquota 注意,在『 defaults,usrquota,grpquota 』之间都没有空格!
这样就算加入了 quota 的磁盘格式了!不过,由于真正的 quota 在读取的时候是读取 /etc/mtab 这个档案的,偏偏这一个档案需要重新开机之后才能够以 /etc/fstab 的新数据进行改写!所以这个时候你可以选择:
1. 重新开机 (reboot) ;
2. 重新 remount filesystem 来驱动设定值!
我是不太喜欢重新开机的人啦!所以我就这么做:
[root@linux ~]# umount /dev/hdb1
[root@linux ~]# mount -a
[root@linux ~]# grep '/disk2' /etc/mtab
/dev/hdb1 /disk2 ext3 rw,usrquota,grpquota 0 0
# 事实上,也可以利用 mount 的 remount 功能!
[root@linux ~]# mount -o remount /disk2
嘿嘿嘿嘿!这样我们就已经成功的将 filesystem 的 quota 功能加入啰!另外,鸟哥这里是以 ext3 这个磁盘格式来测试 quota 的呦!
3.扫瞄磁盘的使用者使用状况,并产生重要的 aquota.group 与 aquota.user:
接着下来就是要来扫瞄一下我们所需要的磁盘到底有没有多余的空间可以让我们来设定 quota 呢?并且将扫瞄的结果输出到这个磁盘的最顶层去(也就是 /disk2 底下)这个时候就需要 quotacheck 这个指令的帮忙了!使用 quotacheck 就可以轻易的将所需要的数据给他输出了! 并且在 /disk2 底下会产生 aquota.group 与 aquota.user 这两个档案!
[root@linux ~]# quotacheck -avug
quotacheck: Scanning /dev/hdb1 [/disk2] done
quotacheck: Checked 3 directories and 4 files
[root@linux ~]# ll /disk2
-rw------- 1 root root 6144 Sep 6 11:44 aquota.group
-rw------- 1 root root 6144 Sep 6 11:44 aquota.user
使用 quotacheck 就可以轻易的将所需要的数据给他输出了!但是很奇怪的是,在某些 Linux 版本中,我不能够以 aquota.user(group) 来启动我的 quota ,这有可能是因为旧版 quota 的关系, 所以我就另外做了一个 link 档案来欺骗 quota 啰:
[root@linux ~]# cd /disk2
[root@linux ~]# ln -s aquota.user quota.user
[root@linux ~]# ln -s aquota.group quota.group
# 除非您的 Linux distributions 是比较旧的版本,否则不会有这个问题,
# 所以,这个动作你不必进行的!
4.启动 quota 的限额:
再来就是要启动 quota 啦!启动的方式也是很简单的!就是使用 quotaon -av 即可:
[root@linux ~]# quotaon -avug
/dev/hdb1 [/disk2]: group quotas turned on
/dev/hdb1 [/disk2]: user quotas turned on
注意:要看到上面有个 turned on 的出现,才是真的成功了!
5.编辑使用者的可使用空间:
由于我们有两个使用者要设定,先来设定 quser1 好了,使用 edquota 就对了:
[root@linux ~]# edquota -u quser1
Disk quotas for user quser1 (uid 502):
Filesystem blocks soft hard inodes soft hard
/dev/hdb1 0 45000 50000 0 0 0
再次强调的是,因为我的 /disk2 里面并没有任何数据存在,所以,在上面这个表格当中, blocks 与 inodes 才会都是 0 ,如果您是使用 /home 来进行 quota 设定的, 那么 blocks/inodes 肯定不会是 0 ,这里要特别留意的。好了,上面特殊字体的部分就是我们的设定了, 分别是 45000 及 50000 ,那个单位是 KBytes 啦,转成 MBytes 应该是要乘上 1024 才对, 不过,简单算一下就好了,不要太介意喔!^_^。然后将 quser1 的设定直接复制给 quser2 吧!
[root@linux ~]# edquota -p quser1 quser2
接下来要来设定宽限时间,还是使用 edquota !
[root@linux ~]# 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/hdb1 1days 7days
将时间改为 1 天(原本是 7days 改成 1days ),好了!查询一下是否真的有设定进去呢?使用 quota -v 来查询:
[root@linux ~]# quota -vu quser1 quser2
Disk quotas for user quser1 (uid 502):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdb1 0 45000 50000 0 0 0
Disk quotas for user quser2 (uid 503):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdb1 0 45000 50000 0 0 0
特别注意到,由于我们的使用者尚未超过 45 MB,所以 grace ( 宽限时间 ) 就不会出现啦!这样很够清楚了吧?!
6.编辑群组可使用的空间:
[root@linux ~]# edquota -g qgroup
Disk quotas for group qgroup (gid 502):
Filesystem blocks soft hard inodes soft hard
/dev/hdb1 0 80000 90000 0 0 0
[root@linux ~]# quota -vg qgroup
Disk quotas for group qgroup (gid 502):
Filesystem blocks quota limit grace files quota limit grace
/dev/hdb1 0 80000 90000 0 0 0
这样就设定好了 group 的 quota 啰!同样的,因为整个群组的总使用量还没有到达 80000 KBytes, 当然那个 grace 就不会有任何信息显示了!但这个地方倒是有很多朋友来信问到一个小问题, 那就是『为什么我两个使用者 quser1, quser2 的设定值在 soft 与 hard 分别是 45/50MB ,但为何你的 group 总量 (hard) 设定仅有 90MB 呢?』,也就是说, 当我的某个使用者用了 50MB 的量,那另一个不就最多可以使用到 40MB 而已?原因何在啊?
这么说好了,如果是小型的系统,由于使用者并不是很多,我们可以针对每个人来进行 quota 的设定值,所以,当然针对 users 来进行设定即可,不需要额外的设定 group 的 quota 设定啦。
但如果换个角度来思考,假设您所处的公司人员比较多且分工较细,因此, 我们可能无法真正了解每个使用者的需求,此时,针对每个使用者来设定可能就比较麻烦一点。 那么我们反过来说,可以针对每个部门 (group) 来进行 quota 的设定, 因为部门的需求直接跟部门的负责人询问就好了,比较容易,而该部门的使用者 quota 设定当然可以高一点, 因为,可能某些使用者有较为独特的需求啊!反正只要符合 group 的限制即可, 该部门如果超过整个 group quota 限制值,呵呵!让他们自己去处理即可! ^_^
7.设定开机时启动 quota:
这个部分就不需要担心了,因为 FC4 与 Red Hat 系列的开机 script (/etc/rc.d/rc.sysinit) 已经将 quota 的侦测写入在里头,因此,在预设的情况下, quota 是会主动的被启动的。 不过,如果你想要手动的强制 quota 在开机启动一遍,那么可以使用 vi 去编辑 /etc/rc.d/rc.local ,在里面加入一行 (直接加在最后一行即可):
[root@linux ~]# vi /etc/rc.d/rc.local
/sbin/quotaon -avug
如果要关闭 qutoa 就是用 quotaoff 吧!没错!这样就将 quota 设定完毕了!很简单吧!! ( 如果是 SuSE Server 9 的话,可能就要去修改 /etc/init.d/boot.local 这个档案啰! )
8.利用 repquota 显示更完整的 quota 结果报告:
事实上,除了 quota 可以用来观察使用者与群组使用的 quota 限制值之外,其实, 我们还可以使用更详细的 quota 报告指令,就是 repquota 这个指令呢!他的基本用法是这样的:
[root@linux ~]# repquota -a [-vug]
参数:
-a :直接到 /etc/mtab 搜寻具有 quota 标志的 filesystem ,并报告 quota 的结果;
-v :输出所有的 quota 结果,而非仅下达指令者自己的 quota 限值;
-u :显示出使用者的 quota 限值 (这是默认值);
-g :显示出个别群组的 quota 限值。
范例:
范例一:查阅系统内所有的具有 quota 的 filesystem 的限值状态:
[root@linux ~]# repquota -av
*** Report for user quotas on device /dev/hdb1
Block grace time: 24:00; Inode grace time: 7days
Block limits File limits
User used soft hard grace used soft hard grace
----------------------------------------------------------------------
root -- 77888 0 0 4 0 0
quser1 -- 0 45000 50000 0 0 0
quser2 -- 0 45000 50000 0 0 0
Statistics:
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/23460/showart_186311.html |
|