zoukankan      html  css  js  c++  java
  • Linux磁盘限额配置(Ext3)

    不管磁盘空间有多么大,磁盘空间不够使用似乎是一个永远的事实。Linux提供了限制用户磁盘空间的手段,以便促使每个用户合理有效地使用分配给他的空间。用户磁盘空间的限制是以文件系统(分区)为单位,而不理会用户文件放在该文件系统中的哪个目录中。 

    1. 修改 /etc/fstab 文件.在文件系统相应的 mount 命令行中加入限额选项(如下的例子)。 
    /dev/hda7 /home ext3 defaults,usrquota,grpquota 1 2 

    2. 重新装载 Linux 分区,例如: 
    [root@fileserver root]# mount -o remount /home 
    继续。 

    3. 在欲加磁盘限额的文件系统的安装点目录建立 aquota.user 和 aquota.group 文件: 
    [root@fileserver root]# cd /home (/home 为单个分区 /dev/hda7 的装载点) 
    [root@fileserver home]# touch aquota.user (为用户设置磁盘限额) 
    [root@fileserver home]# touch aquota.group (为用户组设置磁盘限额) 
    这时生成 的 aquota.user 和 aquota.group 是空的,不符合系统的要求。 
    请看下一步。 

    4. 生成符合系统要求的 aquota.user 和 aquota.group 
    [root@fileserver home]# quotacheck /home (生成符合系统要求 的 aquota.user) 
    [root@fileserver home]# quotacheck -g /home (生成符合系统要求 的 aquota.group) 
    生成时,有错误提示。这不要紧。因为 先前 touch 生成的是一个空文件,肯定格式不对。 

    这样 正确的 aquota.user 和 aquota.group 生成啦。 
    继续下一步: 

    5. 为用户设置磁盘空间限额: 
    [root@fileserver home]# edquota [-u] user_name 
    [root@fileserver home]# edquota -g group_name (对于用户组) 
    本命令开启一个 vi 窗口,为用户设置磁盘空间和i节点数目的限额.其中 soft 限额为一个临时性的限额;hard 限额为一个永久性限额(soft 限额可略小于 hard 限额),编辑方法与 vi 完全相同,以 ZZ 或 :wq 命令退出.如要给若干用户 user1, user2,user3 指定相同的磁盘限额,可用下面的命令给这些用户赋予与 protuser 相同的限额: 
    [root@fileserver home]# edquota [-u] -p protuser user1 user2 user3 
    [root@fileserver home]# edquota -g -p protgroup group1 group2 group3 

    设定soft quota和hard quota之间的时间: 
    [root@fileserver home]# edquota -t 
    出现一个 vi 窗口: 
    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/hda7 7days 7days 
    修改成自己所需要的,并保存退出就设置这个时间啦。这个时间的意义就是当soft quota达到后多少天之后,如果使用空间还是超过soft quota的话,就无法写入数据了。 
    您在这之后可能需要重新启动,以使磁盘限额生效。 
    您可以啦,不过还要注意一些问题,请继续看下去。 

    6. 检查磁盘空间限制的一致性,系统会自动每次重新启动时,在检查硬盘后进行( /etc/rc.sysinit ),无须您亲手进行。 
    假若 分区 已经以“读写”方式挂上时,您要小心,例如: 
    [root@fileserver root]# quotacheck /home 
    quotacheck: Quota for users is enabled on mountpoint /home so quotacheck might damage the file. 
    Please turn quotas off or use -f to force checking. 

    这时, 由于某种需要,或者在某种情况,“不得不”运行这个命令 : 
    [root@fileserver home]# quotacheck -mf [-u] /dev/hda7 
    [root@fileserver home]# quotacheck -mf -g /dev/hda7 
    参数 -m[M] 意思是:强迫在“读、写”模式下检查硬盘的 quota (有一定的“正在写”的数据丢失可能,应确保没有进程在写这个分区。建议在单用户模式下进行。)。 
    例如:(在平时检查) 
    2003年05月25日下午15时25分48秒[root@mail gugong]# quotacheck /var/spool/ -f 
    quotacheck: Cannot remount filesystem mounted on /var/spool read-only so counted values might not be right. 
    Please stop all programs writing to filesystem or use -m flag to force checking. 
    2003年05月25日下午15时25分53秒[root@mail gugong]# quotacheck /var/spool/ -m 
    quotacheck: Quota for users is enabled on mountpoint /var/spool so quotacheck might damage the file. 
    Please turn quotas off or use -f to force checking. 
    2003年05月25日下午15时25分57秒[root@mail gugong]# quotacheck /var/spool/ -mf 
    2003年05月25日下午15时25分59秒[root@mail gugong]# 

    7. 以后您如果要取消磁盘空间和i节点数目的限制,可用以下命令,请看: 
    [root@fileserver root]# quotaoff /home (取消磁盘空间限制。) 
    [root@fileserver root]# quotaon /home (现在启动磁盘空间限制。) 
    [root@fileserver root]# quotaon /home (已经启动磁盘空间限制啦,所以出现以下错误:) 
    quotaon: using /home/aquota.group on /dev/hda7: Device or resource busy 
    quotaon: using /home/aquota.user on /dev/hda7: Device or resource busy 


    贴上来“磁盘限额”的效果: 

    The original message was received at Sun, 6 Oct 2002 17:58:51 +0800 
    from localhost.localdomain [127.0.0.1] 
    with id g969wp302751 
    ----- The following addresses had transient non-fatal errors ----- 

    ----- Transcript of session follows ----- 
    procmail: Quota exceeded while writing "/var/spool/mail/zhengtx" 
    ... Deferred: local mailer (/usr/bin/procmail) exited with EX_TEMPFAIL 
    Warning: message still undelivered after 4 hours 
    Will keep trying until message is 5 days old 
    550 5.1.1 ... User unknown
    实践心得: 

    1、使用edquota -u <username>时,那个blocks和inodes两项都不用填,这是系统自动生成的,当前已经使用的blocks和inodes,只需要填后面的soft和hard就OK了。在Block部分中填写的数字以KB为单位,表示容量限制。在inode部分填写的数字表示用户可存取的文件数量。 

    2、有的时候不需要自己手动编辑rc.local,把quotaon -aug这个命令加进去,因为象Rocks的rc.sysinit脚本中就有Enabling local file system quota的代码。 

    3、quota对root用户没限制,所以做好quota之后不要拿root用户来做测试。应该切换到普通用户帐户下测试 

    4、正如第二点所说,RedHat和Rocks在rc.sysinit中就有启动quotaon的脚本,所以,不需要我们自己把quotaon加到启动里面去。不过,在配置过程中,发现nfs这个脚本也有一个Starting NFS quota这样的脚本代码,这里的quota指的是什么呢?仔细研究这段脚本后发现,这段脚本是启动了一个叫rpc.rquotad的程序,查看了这个程序的man手册之后,发现这个程序原来是一个NFS的rpc服务,比如,我们做quota的这个分区是一个NFS分区,发布到了cluster上,那么,在其他节点上的用户应该可以查看自己的一些磁盘限额信息,这就是通过这个程序看到的。简言之,这个程序给cluster上的各节点能提供限额的配置信息。

  • 相关阅读:
    iOS常用第三方库之Masonry
    iOS超全面试题,面试前看一看,不错
    自学安卓练习作品单词APP(1)-安卓的hello word与有道字典防爬虫破解
    shrio的rememberMe不起作用
    上传组件uploadify在spring中返回406 / Not Acceptable 问题解决
    由max_allowed_packet引发的mysql攻防大战
    又到毕业季你为什么没有工作
    mavan下scala编译中文乱码的问题.以及内存溢出问题解决
    @RestController失效
    BeanInstantiationException: Failed to instantiate [java.time.LocalDateTime]
  • 原文地址:https://www.cnblogs.com/super119/p/1910107.html
Copyright © 2011-2022 走看看