第15章、 磁盘配额(Quota)与进阶文件系统管理

15.1. 磁盘配额 (Quota) 的应用与实作
Quota 就是有多少『限额』的意思!在 Linux 来说,就是有多少容量限制的意思。我们可以使用 quota 来让磁盘的容量使用较为公平!

15.1.1. 什么是 Quota:一般用途, 限制, 规范 (inode/block, soft/hard, grace time)
在 Linux 系统中,由于是多人多任务的环境,所以会有多人共同使用一个硬盘空间的情况发生, 如果其中有少数几个使用者大量的占掉了硬盘空间的话,那势必压缩其他使用者的使用权力! 因此管理员应该适当的限制硬盘的容量给用户,以妥善的分配系统资源!这个时候就得要靠 quota 的帮忙了!

一、Quota 的一般用途
quota 比较常使用的几个情况是:

  • 针对 WWW server ,例如:每个人的网页空间的容量限制!
  • 针对 mail server,例如:每个人的邮件空间限制。
  • 针对 file server,例如:每个人最大的可用网络硬盘空间 (教学环境中最常见!)

上头讲的是针对网络服务的设计,如果是针对 Linux 系统主机上面的设定那么使用的方向有底下这一些:

  • 限制某一群组所能使用的最大磁盘配额 (使用群组限制):
    你可以将你的主机上的用户分门别类。
  • 限制某一用户的最大磁盘配额 (使用用户限制):
    在限制了群组之后,你也可以再继续针对个人来进行限制,使得同一群组之下还可以有更公平的分配!
  • 以 Link 的方式,来使邮件可以作为限制的配额 (更改 /var/spool/mail 这个路径):

如果是分为付费与免付费会员的『邮件主机系统』,不需要重新再规划一个硬盘!直接使用 Link 的方式指向 /home (或者其他已经做好的 quota 磁盘) 就可以! 这通常是用在原本磁盘分区的规划不好,但是却又不想要更动原有主机架构的情况中!

二、Quota 的使用限制
使用上还是有些限制要先了解的:

  • 仅能针对整个 filesystem:
    quota 实际在运作的时候,是针对『整个 filesystem』进行限制的, 例如:如果你的 /dev/sda5 是挂载在 /home 底下,那么在 /home 底下的所有目录都会受到限制!
  • 核心必须支持 quota :
    Linux 核心必须有支持 quota 这个功能才行:如果你是使用 CentOS 5.x 的预设核心, 你的系统已经默认有支持 quota 这个功能!如果你是自行编译核心的, 那么请特别留意你是否已经『真的』开启了 quota 这个功能?否则底下的功夫将全部都视为『白工』。
  • Quota 的记录文件:
    目前新版的 Linux distributions 使用的是 Kernel 2.6.xx 的核心版本,这个核心版本支持新的 quota 模块,使用的默认档案 (aquota.user, aquota.group )将不同于旧版本的 quota.user, quota.group ! (多了一个 a !) 而由旧版本的 quota 可以藉由 convertquota 这个程序来转换!
  • 只对一般身份使用者有效:
    并不是所有在 Linux 上面的账号都可以设定 quota ,例如 root 就不能设定 quota , 因为整个系统所有的数据几乎都是他的!

所以你不能针对『某个目录』来进行 Quota 的设计,但你可以针对『某个文件系统(filesystem) 』来设定。 如果不明白目录与挂载点还有文件系统的关系,请回到第八章去瞧瞧再回来!

三、Quota 的规范设定项目:
quota 对整个 filesystem 的限制项目主要分为底下几个部分:

  • 容量限制或档案数量限制 (block 或 inode):
    我们在第八章谈到文件系统中,说到文件系统主要规划为存放属性的 inode 与实际档案数据的 block 区块,Quota 既然是管理文件系统,所以当然也可以管理 inode 或 block ! 这两个管理的功能为:
    o 限制 inode 用量:可以管理使用者可以建立的『档案数量』;
    o 限制 block 用量:管理用户磁盘容量的限制,较常见为这种方式。

  • 柔性劝导与硬性规定 (soft/hard):
    既然是规范,当然就有限制值。不管是 inode/block ,限制值都有两个,分别是 soft 与 hard。 通常 hard 限制值要比 soft 还要高。举例来说,若限制项目为 block ,可以限制 hard 为 500MBytes 而 soft 为 400MBytes。这两个限值的意义为:
    o hard:
    表示使用者的用量绝对不会超过这个限制值,以上面的设定为例, 用户所能使用的磁盘容量绝对不会超过 500Mbytes ,若超过这个值则系统会锁住该用户的磁盘使用权;
    o soft:
    表示使用者在低于 soft 限值时 (此例中为 400Mbytes),可以正常使用磁盘,但若超过 soft 且低于 hard 的限值 (介于 400~500Mbytes 之间时),每次用户登入系统时,系统会主动发出磁盘即将爆满的警告讯息, 且会给予一个宽限时间 (grace time)。不过,若使用者在宽限时间倒数期间就将容量再次降低于 soft 限值之下, 则宽限时间会停止。

  • 会倒数计时的宽限时间 (grace time):
    这个宽限时间只有在用户的磁盘用量介于 soft 到 hard 之间时,才会出现! 由于达到 hard 限值时,用户的磁盘使用权可能会被锁住。为了担心用户没有注意到这个磁盘配额的问题, 因此设计了 soft 。当你的磁盘用量即将到达 hard 且超过 soft 时,系统会给予警告,但也会给一段时间让用户自行管理磁盘。 一般预设的宽限时间为七天,如果七天内你都不进行任何磁盘管理,那么 soft 限制方式会即刻改变为 hard 来作为 quota 的限制。
    以上面设定的例子来说,假设你的容量高达 450MBytes 了,那七天的宽限时间就会开始倒数, 若七天内你都不进行任何删除档案的动作来替你的磁盘用量瘦身, 那么七天后你的磁盘最大用量将变成 400MBytes (那个 soft 的限制值),此时你的磁盘使用权就会被锁住而无法新增档案了。

整个 soft, hard, grace time 的相关性我们可以用底下的图示来说明:
这里写图片描述
图中的直方图为用户的磁盘容量,soft/hard 分别是限制值。只要小于 400M 就一切 OK , 若高于 soft 就出现 grace time 并倒数且等待使用者自行处理,若到达 hard 的限制值,就被锁定!

15.1.2. 一个 Quota 的实作范例
这里我们使用一个范例来设计一下如何处理 Quota 的设定流程:
1. 目的与账号:现在我想要让我的专题生五个为一组,这五个人的账号分别是 myquota1, myquota2, myquota3, myquota4, myquota5,这五个用户的密码都是 password ,且这五个用户所属的初始群组都是 myquotagrp 。 其他的账号属性则使用默认值。
2. 账号的磁盘容量限制值:我想让这五个用户都能够取得 300MBytes 的磁盘使用量(hard),档案数量则不予限制。 此外,只要容量使用率超过 250MBytes ,就予以警告 (soft)。
3. 群组的限额:由于我的系统里面还有其他用户存在,因此我仅承认 myquotagrp 这个群组最多仅能使用 1GBytes 的容量。 这也就是说,如果 myquota1, myquota2, myquota3 都用了 280MBytes 的容量了,那么其他两人最多只能使用 (1000MB - 280x3 = 160MB) 的磁盘容量!这就是使用者与群组同时设定时会产生的后果。
4. 宽限时间的限制:最后,我希望每个使用者在超过 soft 限制值之后,都还能够有 14 天的宽限时间。

Quota 设定方法:
首先,在这个小节我们先来将账号相关的属性与参数搞定!
这里写图片描述
接下来,就让我们来实作 Quota 的练习吧!

15.1.3. 实作 Quota 流程-1:文件系统支援 (/etc/fstab, /etc/mtab)
前面我们就谈到,要使用 Quota 必须要核心与文件系统支持才行!假设你已经使用了预设支持 Quota 的核心, 那么接下来就是要启动文件系统的支持!不过,由于 Quota 仅针对整个文件系统来进行规划,所以我们得先查一下, /home 是否是个独立的 filesystem 呢?
这里写图片描述
这部主机的 /home 确实是独立的 filesystem,因此可以直接限制 /dev/hda3 。 如果你的系统的 /home 并非独立的文件系统,那么可能就得要针对根目录 (/) 来规范了!不过,不太建议在根目录设定 Quota。 此外,由于 VFAT 文件系统并不支持 Linux Quota 功能,所以我们得要使用 mount 查询一下 /home 的文件系统为何? 看起来是 Linux 传统的 ext2/ext3 ,这种文件系统肯定有支援 Quota !
如果只是想要在这次开机中实验 Quota ,那么可以使用如下的方式来手动加入 quota 的支持:
这里写图片描述
事实上,当你重新挂载时,系统会同步更新 /etc/mtab 这个档案, 所以你必须要确定 /etc/mtab 已经加入 usrquota, grpquota 得支持到你所想要设定的文件系统中。 另外也要特别强调,使用者与群组的 quota 文件系统支持参数分别是:usrquota, grpquota !千万不要写错了!这一点非常多初接触 Quota 的朋友常常搞错。
不过手动挂载的数据在下次重新挂载就会消失,因此最好写入配置文件中!在这部主机的案例中, 我可以直接修改 /etc/fstab 成为底下这个样子:
这里写图片描述
还是要再次的强调,修改完 /etc/fstab 后,务必要测试一下!若有发生错误得要赶紧处理! 因为这个档案如果修改错误,是会造成无法开机完全的情况!最好使用 vim 来修改! 因为会有语法的检验,就不会让你写错字了!启动文件系统的支持后,接下来让我们建立起 quota 的记录文件吧!

15.1.4. 实作 Quota 流程-2:建立 quota 记录文件 (quotacheck)
其实 Quota 是透过分析整个文件系统中,每个使用者(群组)拥有的档案总数与总容量, 再将这些数据记录在该文件系统的最顶层目录,然后在该记录文件中再使用每个账号(或群组)的限制值去规范磁盘使用量的。 所以建置这个 Quota 记录文件就显的非常的重要。扫瞄有支持 Quota 参数 (usrquota, grpquota) 的文件系统, 就使用 quotacheck 这个指令!这个指令的语法如下:

一、quotacheck :扫瞄文件系统并建立 Quota 的记录文件
这里写图片描述
quotacheck 的选项你只要记得『 -avug 』一起下达即可!那个 -f 与 -M 是在文件系统可能已经启动 quota 了, 但是你还想要重新扫瞄文件系统时,系统会要求你加入那两个选项(担心有其他人已经使用 quota 中) !平时没必要不要加上那两个项目。好了,那就让我们来处理我们的任务吧!
这里写图片描述
这个指令只要进行到这里就够了,不要反复的进行!因为等一下我们会启动 quota 功能,若启动后你还要进行 quotacheck , 系统会担心破坏原有的记录文件,所以会产生一些错误讯息警告你。如果你确定没有任何人在使用 quota 时, 可以强制重新进行 quotacheck 的动作。强制执行的情况可以使用如下的选项功能:
这里写图片描述
这样记录文件就建立起来了!你不用手动去编辑那两个档案~因为那两个档案是 quota 自己的数据文件,并不是纯文本档! 且该档案会一直变动,这是因为当你对 /home 这个文件系统进行操作时,你操作的结果会影响磁盘吧! 所以当然会同步记载到那两个档案中!所以要建立 aquota.user, aquota.group,记得使用的是 quotacheck 指令! 不是手动编辑的!

15.1.5. 实作 Quota 流程-3:启动、关闭与限制值设定 (quotaon, quotaoff, edquota)
制作好 Quota 配置文件之后,接下来就是要启动 quota 了!使用 quotaon ,至于关闭就用 quotaoff 即可 :

一、quotaon :启动 quota 的服务
这里写图片描述
这个『 quotaon -auvg 』的指令几乎只在第一次启动 quota 时才需要进行!因为下次等你重新启动系统时, 系统的 /etc/rc.d/rc.sysinit 这个初始化脚本就会自动的下达这个指令了!因此你只要在这次实例中进行一次即可, 未来都不需要自行启动 quota ,因为 CentOS 5.x 系统会自动帮你搞定他!

二、quotaoff :关闭 quota 的服务
这里写图片描述
这里写图片描述
这个指令就是关闭了 quota 的支持!我们这里需要练习 quota 实作,所以这里请不要关闭他! 接下来让我们开始来设定使用者与群组的 quota 限额吧!

三、edquota :编辑账号/群组的限值与宽限时间
edquota 是 edit quota 的缩写,所以就是用来编辑使用者或者是群组限额的指令。我们先来看看 edquota 的语法吧, 看完后再来实际操作一下。
这里写图片描述
好了,先让我们来看看当进入 myquota1 的限额设定时,会出现什么画面:
这里写图片描述
上头第一行在说明针对哪个账号 (myquota1) 进行 quota 的限额设定,第二行则是标头行,里面共分为七个字段, 七个字段分别的意义为:

  1. 文件系统 (filesystem):说明该限制值是针对哪个文件系统 (或 partition);
  2. 磁盘容量 (blocks):这个数值是 quota 自己算出来的,单位为 Kbytes,请不要更动他;
  3. soft:磁盘容量 (block) 的 soft 限制值,单位亦为 KB;
  4. hard:block 的 hard 限制值,单位 KB;
  5. 档案数量 (inodes):这是 quota 自己算出来的,单位为个数,请不要更动他;
  6. soft:inode 的 soft 限制值;
  7. hard:inode 的 hard 限制值;

当 soft/hard 为 0 时,表示没有限制的意思。好,依据我们的范例说明,我们需要设定的是 blocks 的 soft/hard &#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值