免费注册 查看新帖 |

Chinaunix

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

在linux2.4系统中实现磁盘配额 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-21 22:11 |只看该作者 |倒序浏览
概述:在linux2.4系统中,磁盘配额(Quota)的实现和以前的相比,在配置方面有了明显的不同,本文将以具体的实例来说明如何在linux2.4中实现磁盘配额。
环境:
RedHat 7.1 quota-3.00-4
目的:
在/dev/hda1(装载点为/)文件系统中实现基于组和用户的磁盘配额。
步骤:
1.安装quota
缺省情况下,在安装系统过程中系统会自动安装quota,可以用以下命令查看您的系统中是否安装了quota:
# rpm –q quota
如果没有安装,请使用rpm –ivh命令从RedHat7.1光盘中安装quota:
# rpm –q quota-3.00-4.rpm
安装完成后可以用以下命令查看quota包含的文件
# rpm -ql quota
/sbin/convertquota
/sbin/quotacheck
/sbin/quotaoff
/sbin/quotaon
/usr/bin/quota
/usr/sbin/edquota
/usr/sbin/quotastats
/usr/sbin/repquota
/usr/sbin/rpc.rquotad
/usr/sbin/setquota
/usr/share/man/man1/quota.1.gz
/usr/share/man/man2/quotactl.2.gz
/usr/share/man/man8/convertquota.8.gz
/usr/share/man/man8/edquota.8.gz
/usr/share/man/man8/quotacheck.8.gz
/usr/share/man/man8/quotaoff.8.gz
/usr/share/man/man8/quotaon.8.gz
/usr/share/man/man8/quotastats.8.gz
/usr/share/man/man8/repquota.8.gz
/usr/share/man/man8/rquotad.8.gz
/usr/share/man/man8/setquota.8.gz
2.建立quota数据文件
在quota-3.00-4版本中,系统使用了新的数据文件。本来根据man quotacheck的说明,假如系统当前没有数据文件存在,quotacheck将为您新建新的数据文件,但是在使用过程中,quotacheck并没有生成相应的数据文件,所以我们必须手工来进行这一工作。我们可以通过convertquota工具来实现这一点。
首先执行以下命令建立旧格式的数据文件:
# cd /
# touch quota.user
# touch quota.group
# chmod 600 quota..user
# chmod 600 quota.group
这样我们就建立了文件权限为600的quota数据文件quota.user和quota.group。
接下来,我们使用convertquota工具生成新格式的quota数据文件:
# convertquota –u /
# convertquota –g /
说明:convertquota –u / 指明将装载点为/ 的quota旧格式的用户磁盘配额数据文件转换成新格式的数据文件;convertquota –g / 指明将装载点为/ 的quota旧格式的组磁盘配额数据文件转换成新格式的数据文件。
这样我们就生成了新格式的quota数据文件。
3.修改/etc/fstab,从而在/dev/hda1文件系统上实现磁盘配额
原来的/etc/fstab文件内容如下所示:
# more /etc/fstab
LABEL=/ / ext2 defaults 1 1
LABEL=/data /data ext2 defaults 1 2
/dev/fd0 /mnt/floppy auto noauto,owner 0 0

修改后的/etc/fstab文件内容如下所示:
# more /etc/fstab
LABEL=/ / ext2 defaults,usrquota,grpquota 1 1
LABEL=/data /data ext2 defaults 1 2
/dev/fd0 /mnt/floppy auto noauto,owner 0 0

说明:/etc/fstab文件的每一行由六个字段组成:
第一个字段:文件系统(分区)的注释(类似卷标);
第二个字段:文件系统的装载点;
第三个字段:文件系统类型(磁盘配额只能在ext2文件系统上实现);
第四个字段:装载文件系统是使用的选项,如果只想实现基于用户的磁盘配额,就加入usrquota关键字,只想实现基于组的磁盘配额,就加入grpqouta关键字,
如果两者都需要,就全写入,中间可以用逗号分隔。
第五个字段:表明该文件系统(分区)是否为只读,如果是0就表示只读,1表示可以读写。
第六个字段:表示系统启动执行fsck时检查的顺序。
注意:请特别注意这里的拼写,是usrquota和grpquota,不要写成userquota和groupquota。
4.在/etc/rc.d/rc.local中加入quota启动脚本
这段脚本如下所示:
#!/bin/bash
if [ -x /sbin/quotacheck ]
then
echo "Checking quotas. This may take some time..."
/sbin/quotacheck -avug
echo "Done"
fi
if [ -x /sbin/quotaon ]
then
echo "Turning on quota"
/sbin/quotaon -avug
echo "OK"
fi
注意:这里需要注意的是quotacheck和quotaon文件的路径,在RedHat7.1中,这些文件的路径和以前的版本不同。请通过rpm –ql quota来确定其路径。
5.重启动系统,如果一切正常的话,quota将开始正常工作。
6.加入对用户的磁盘配额:
在quota-3.00-4可以通过两种方法实现:
a.通过edquota直接编辑数据文件:
比如加入用户bye2000的磁盘配额,执行以下命令:
# edquota –u bye2000
Edit block and inode quota for user bye2000:
Device /dev/hda1 (/):
Used 500KB, limits: soft=2000 hard=2500
Used 10 inodes, limits: soft=100 hard=110
然后直接修改即可。
b.通过setquota工具加入:
比如加入用户bye2000的磁盘配额,执行以下命令:
setquota –u / 2000 2500 100 110 bye2000
以下是setquota命令用法的简单描述:
setquota [ -u|-g ] 装载点 软块数 硬块数 软文件数 硬文件数 用户名/组名
7.其他问题说明:
a.关于所使用到的命令的详细用法,请参考各个命令的man手册;
b.软限制(soft)表示当用户空间超过该值时,系统将警告用户。硬限制(hard),当用户的空间超过该值时,所有操作都无效,并会接到系统的提示


另一篇磁盘配额的文章(本人学习中)如有错误请谅解
要实现磁盘配额,请使用以下步骤:

  • 修改 /etc/fstab 来启用每个文件系统的配额

  • 重新挂载文件系统

  • 创建配额文件,重新生成磁盘用量表

  • 分配配额
    以上步骤在下面各节中被详细讨论。
    1. 启用配额
    以根用户身份使用你喜欢的编辑器来给需要配额的文件系统添加 usrquota 和(或) grpquota 选项:
    LABEL=/ / ext3 defaults 1 1 LABEL=/boot /boot ext3 defaults 1 2 none /dev/pts devpts gid=5,mode=620 0 0 LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2 none /proc proc defaults 0 0 none /dev/shm tmpfs defaults 0 0 /dev/hda2 swap swap defaults 0 0 /dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro 0 0 /dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 00
    在上面的例子中, /home 文件系统上启用了用户和组群配额。
    2. 重新挂载文件系统
    添加了 userquota 和 grpquota 选项后,重新挂载每个相应 fstab 条目被修改的文件系统。如果某文件系统没有被任何进程使用,使用 umount 命令后再紧跟着 mount 命令来重新挂载这个文件系统。如果某文件系统正在被使用,要重新挂载该文件系统的最简捷方法是重新引导系统。
    3. 创建配额文件
    重新挂载了每个启用了配额的文件系统后,系统现在就能够使用磁盘配额了。不过,文件系统本身尚且不能支持配额。下一步是运行 quotacheck 命令。
    quotacheck 命令检查启用了配额的文件系统,并为每个文件系统建立一个当前磁盘用来的表。该表会被用来更新
    操作系统
    的磁盘用量文件。此外,文件系统的磁盘配额文件也被更新。
    要在文件系统上创建配额文件( aquota.user 和 aquota.group ),使用 quotacheck 命令的 -c 选项。例如,如果用户和组群配额都为 /home 分区启用了,在 /home 目录下创建这些文件:
    quotacheck -acug /home
    -a 选项意味着在 /etc/mtab 中所有挂载了的非 NFS 文件系统都会被检查来决定是否启用了配额。 -c 选项指定每个启用了配额的文件系统都应该创建配额文件, -u 选项指定检查用户配额, -g 选项指定检查组群配额。
    如果 -u 或 -g 选项被指定,只有用户配额文件被创建。如果只指定了 -g 选项,只有组群配额文件会被创建。
    文件被创建后,运行以下命令来生成每个启用了配额的文件系统的当前磁盘用量表:
    quotacheck -avug
    所用选项如下:


    • a — 检查所有启用了配额的在本地挂载的文件系统

    • v — 在检查配额过程中显示详细的状态信息

    • u — 检查用户磁盘配额信息

    • g — 检查组群磁盘配额信息

    quotacheck 运行完毕后,和启用配额(用户和/或组群)相应的配额文件中就会写入用于每个启用了配额的文件系统(如 /home )的数据。
    4. 为每用户分配配额
    最后一步是使用 edquota 命令分配磁盘配额。
    要为用户配置配额,以根用户身份在 shell 提示下执行以下命令:
    edquota username
    为每个你想实现配额的用户执行该步骤。例如,如果在 /etc/fstab 中为 /home 分区( /dev/hda3 )启用了配额,执行了 edquota testuser 命令后,系统默认的编辑器中就会有如下显示:
    Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/hda3 440436 0 0 37418 0 0
    注记:edquota 使用 EDITOR 环境变量所定义的文本编辑器。要改变这个编辑器,把 EDITOR 环境变量设置为到你选中的编辑器的完整路径。
    第一列是启用了配额的文件系统的名称。第二列显示了用户当前使用的块数。随后的两列用来设置用户在该文件系统上的软硬块限度。 inodes 列显示了用户当前使用的内节点数量。最后两列用来设置用户在该文件系统上的软硬内节点限度。
    硬限是用户或组群可以使用的磁盘空间的绝对最大值。达到了该限度后,磁盘空间就不能再被用户或组群使用了。
    软限定义可被使用的最大磁盘空间量。和硬限不同的是,软限可以在一段时期内被超过。这段时期被称为 过渡期(grace period) 。过渡期可以用秒钟、分钟、小时、天数、周数、或月数表示。
    如果以上值中的任何一个被设置为 0,那个限度就不会被设置。在文本编辑器中,改变想要的限度。如:,
    Disk quotas for user testuser (uid 501): Filesystem blocks soft hard inodes soft hard /dev/hda3 440436 500000 550000 37418 0 0
    要校验用户的配额是否被设置,使用以下命令:
    quota testuser
    5. 为每组群分配配额
    配额还可以根据组群来分配。例如,要为 devel 组群设置组群配额,使用以下命令(在设置组群配额前,该组群必须存在):
    edquota -g devel
    以上命令在文本编辑器中显示现存的组群配额:
    Disk quotas for group devel (gid 505): Filesystem blocks soft hard inodes soft hard /dev/hda3 440400 0 0 37418 0 0
    修改限度,保存文件,然后配置配额。
    要校验组群配额是否被设置,使用以下命令:
    quota -g devel
    6. 为每文件系统分配配额
    要根据每个启用了组群的文件系统来分配配额,使用以下命令:
    edquota -t
    和另一个 edquota 命令相似,这个命令也会在文本编辑器中打开当前的文件系统配额:
    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/hda3 7days 7days
    改变块过渡期或内节点过渡期,保存对文件的改变,然后退出文本编辑器。
    A. 管理磁盘配额
    如果配额被实现,它们就需要被维护 — 主要维护方式是观察。查看配额是否被超出并确保配额的正确性。 当然,如果用户屡次超出他们的配额或者持续地达到他们的软限, 系统管理员就可以根据用户类型和磁盘空间对他们工作的影响来做出几种决策。管理员可以帮助用户来检索对磁盘空间的使用,也可以按需要增加用户的配额。
    B. 报告磁盘配额
    创建磁盘用量报告需要运行 repquota
    工具
    。例如, repquota /home 命令会生成以下输出:
    *** Report for user quotas on device /dev/hda3 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 36 0 0 4 0 0 tfox -- 540 0 0 125 0 0 testuser -- 440400 500000 550000 37418 0 0
    要查看所有启用了配额的文件系统的磁盘用量,使用以下命令:
    repquota -a
    这份报告虽然看起来很简单,有几点仍需要做一下说明。显示在每个用户后面的 -- 是一种判断用户是否超出其块限度或内节点限度的快速方法。如果任何一个软限被超出,相应的 - 行就会被 - 代替;第一个 - 代表块限度,第二个代表内节点限度。
    grace 列通常是空白。如果某个软限被超出,这一列就会包含过渡期中的剩余时间。如果过渡期已超过了,其中就会显示 none 。
    C. 保持配额的正确性
    当某文件系统没有被完整地卸载(如,由于系统崩溃),这就有必要运行 quotacheck 。不过,即便系统没有崩溃, quotacheck 也可以被定期经常运行。定期运行以下命令来保持配额的正确性(所用选项在 第 6.1.1 节 中被描述):
    quotacheck -avug
    要定期运行它的最简单方法是使用 cron 。以根用户身份,你既可以使用 crontab -e 命令来调度定期的 quotacheck ,也可以在以下目录之一内放置一个运行 quotacheck 的脚本(使用最时候你需要的间隔期间):

    • /etc/cron.hourly
    • /etc/cron.daily
    • /etc/cron.weekly
    • /etc/cron.monthly

    最精确的配额统计数据可以在所分析的文件系统没有被活跃使用时获得。因此,cron 任务应该在文件系统被最少使用时调度。如果这一时间在使用配额的文件系统中并不统一,则使用多个 cron 任务在不同的时间为每个文件系统运行 quotacheck 。
    D. 启用和禁用
    你可以不必把配额设置为 0 来禁用它们。要关闭用户和组群配额,使用以下命令:
    quotaoff -vaug
    如果 -u 或 -g 选项没有被指定,只有用户配额被禁用。如果只指定了 -g 选项,只有组群配额会被禁用。
    要重新启用配额,使用带有同样选项的 quotaon 命令。
    例如,要为所有文件系统启用用户和组群配额:
    quotaon -vaug
    要为指定文件系统(如 /home )启用配额:
    quotaon -vug /home
    如果 -u 或 -g 选项没有指定,那么仅用户配额会被启用。如果只指定了 -g 选项,仅组群配额会被启用。


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

    本版积分规则 发表回复

      

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

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP