Linux中的磁盘限额利用软件对特殊用户账号所使用的磁盘空间进行限制。本教程说明如何在系统上建立磁盘限额。
Linux,以及其它以Unix为基础的操作系统的一个优点在于它的多用户处理能力。用户账号从严格特权分离这种增强的安全性中受益,多个用户可同时处于活动状态,并可从本地通过输入与输出设备或由远程通过网络服务进行访问。这种优点使得Linux成为多用户工作站、应用服务器与远程测试平台的理想系统。
这些应用可能会面临在单用户计算机上不会出现的社会挑战。挑战之一为共享存储空间,也就是一些用户,不管出于什么原因,无法与他人共享空间这一事实。这可能源自“逃避”某种后果的期望,就像在生日晚会上总想得到最大的那块蛋糕一样;或者这些问题用户可能只是忘记了共享一台计算机这件事,并不去或不愿注意他们自己的磁盘使用情况。当用户开始独占磁盘空间,并因而损害了其它用户的利益,多用户计算机的系统管理员就有必要思考如何用预先设定的限制来控制磁盘的使用情况。实际上,在建立一个多用户系统时,提前考虑(磁盘限额)可能是个好主意,不能等到有人已经越过了合理的界限才采取行动。
你可以与磁盘空间囤积者接触并与他们理论,但是,如果他们通情达理的话,他们一开始就不会让你陷入现在的这种境地。如果你不提前做出计划,那么在你开始应用自动化的方法进行限制,并使他们符合你打算设置的限制前,你得小心翼翼地要求他们减少磁盘使用空间。你还可以应用公开困窘的方法:在某个地方发行大家可以相互访问的各人磁盘空间使用空间统计数据,希望同辈压力帮助你的问题用户遵守磁盘使用限制。但这种方法在大多数情况下都不会成功,对那些你无法限制其意愿的人——可能出于政治原因,你的老板——这可能是你的唯一选择。通常,与上述这些解决办法相比,技术解决方案是更好的选择。幸运地是,由于大多数社会问题都涉及到计算机,代码黑客已着手应对提供多种方式让计算机处理其它用户的挑战,这样普通用户就没有必要这样做。
如果你的用户足够少,有理由这样做,并且你系统的用户名册不会发生改变,你可以为每个用户建立一个独立的分区,并将他们单独安置在你的多用户计算机文件系统的主目录区域内。但是,如果用户群体不断变化,或是有许多用户,则这种方法可能很快会失去控制,且非常难以管理。但是,万一每个用户需要大量的存储空间,应用网络连接存储就是合理的管理方案。实际上,你可以应用一用户一磁盘的方法解决问题。不幸的是,大多数的多用户系统管理员并未意识到自己处在这一境地。
对多数系统管理员而言,磁盘限额是最好的解决办法。Linux中的磁盘限额利用软件对特殊用户账号所使用的磁盘空间进行限制。尽管有许多包含花哨装置的免费而又复杂的限额管理系统,以及昂贵的商业限额管理系统可以解决这一问题,但是最简单且可能最方便的解决办法,是所有主流Linux产品管理员可免费应用的基本命令行quota工具集。应用这种常用的磁盘限额系统,操作系统自身就可对不同用户账号进行存储空间限制。
磁盘限额可以为每个用户账号单独配置。并且,当有成批的用户需要在同样的限制下进行操作时,这种配置还可以方便地进行复制。系统自动运行,并可进行设置,向那些超出限制,但在预先设定的较高限额内的用户发出警告与宽限时间,以一种有益、宽大但依然高效的方式保证用户对限额的遵守。与为每个用户账号应用单独分区、或整个单独物理磁盘不同,在这种情况下,对磁盘限额进行必要的修改只是小事一桩。这种方法的最大优点在于,你不必直接面对用户,因为磁盘限额系统一旦设定,系统即会自行进行管理。
准备磁盘限额
为系统的磁盘限额做准备包括几个简短的步骤。在你决定执行限额系统时,这些是必需的一次性步骤。一旦系统的磁盘限额设置完毕,你就不必再次执行这些步骤。
安装
首先,你得安装限额系统。如何进行安装因所使用的Linux 系统而异,但如果该系统没有被默认安装的话,你的Linux软件包管理系统应可提供简单方便的限额系统安装方法。要检查限额系统是否已安装,你可以打开一个外壳界面,在其中输入quato命令;或者使用kterm或gterm这样的终端模拟器;或是在TTY控制台上登记。如果quato已安装,且用户名为foo,你将会看到下列代码:
$ quota
Disk quotas for user foo (uid 1000): none
如果限额系统没有安装,你将得到一个“命令未发现”响应。如果你得到磁盘限额信息,则表明有人已在你的机器上执行了磁盘限额。
以下是一个应用APT软件管理系统的apt-get命令在Debian GUN/Linux系统上安装quota的例子:
$ apt-get install quota
Reading package lists... Done
Building dependency tree... Done
The following NEW packages will be installed
quota
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 439kB of archives.
After unpacking 1188kB of additional disk space will be used.
安装以后,会出现更多与安装有关的信息,你的Debian系统还会问你许多处理限额违反报告的问题。在其它Linux产品上的安装过程与上述过程十分相似。
如果因为某种原因,你的Linux产品无法提供通过软件包管理器安装quota的方法,那么,你得从sourceforge.net/projects/linuxquota下载并进行安装。
引导配置
接下来,你需要保证系统在引导时能够进行限额管理。大多数的产品,如RHEL/Fedora、Novell/SuSE、Mandrake和Debian系统默认情况下就拥有这种功能,这样,你根本就不必做任何事情。
例如,在Debian系统中,安装限额为你在/etc/init.d处增加一个启动脚本,然后你最多只要在rc[n].d目录下为这个启动脚本添加一个符号链接(symlink),在这里,[n]中的数字与系统运行的runlevel相匹配。欲了解更多有关runlevel的信息,可输入man init并阅读出现的页面,以及init说明文件结尾“参见”(SEE ALSO)部分的参考说明文件。
为找出当前runlevel,你可在登录根账号时简单输入runlevel命令,它会告诉你之前与当前的runlevel。对大多数系统而言,之前的runlevel大多为一个大写的N,表明当前的runlevel是系统运行的唯一一个runlevel。
如果由于某种原因,系统在引导时没有配置限额系统,那你得自己编辑引导脚本。如果你的系统应用/etc/init.d目录来存放服务脚本,你可以使用那里已有的脚本指导你建立一个新的bash脚本来激活quota,为从相应的rc[n].d目录为其建立符号链接。如果你的系统应用的是rc.local脚本,你可能希望将限额系统的启动文件增加到那个文件中。不管哪种情况,你都必须添加如下所示的bash脚本代码:
# first, check to see if quota is running, then turn it on if not
if [ -x /sbin/quotaon ]
then
/sbin/quotaon -avug
fi
你应当仔细检查quotaon命令的位置,在一些系统中,它可能不在/sbin目录中。
分区配置
第三步,你必须配置分区设置来激活限额,并详细说明如何在各个分区上执行限额。在建立磁盘限额时,你可以将它们应用到用户或用户组中。每个配备妥当的分区都有其自己的限额配置,你可以在fstab文件中对其进行指定。例如,你可以在一个分区上建立限额来限制用户主目录的大小,并在另一个分区上建立一个某一特定的项目组的所有成员能够访问的目录,以限制整组成员所使用的目录的大小。
为激活某个分区的限额,你必须对/etc/fstab文件进行编辑。在那个文件的每个条目中,都有一个包含配备选项——如ro(代表“只读”)、rw(代表“读/写”)或默认——的竖栏。这些选项形成一个以逗号间隔的,没有空格的列表。如果你希望激活一个特定分区上的用户限额,增加usrquota选项;如果你希望激活组限额,增加grpquota选项。
为准备分区,你必须在使用限额的每个分区上建立限额数据库。你需要建立空白的数据文件,将每个使用限额的分区根目录中的用户与组信息存储在里面。
例如,如果你要装备/dev/hda2 at /home,在那个分区装备时你得转到/home并建立两个空白文件quota.user和quota.group。你应以根用户登录并这样做:用touch quota.user与touch quota.group命令建立两个空白文件。文件建立后,你就可以用chmod命令来改变这些数据库文件的文件许可,以便只有根用户能对其进行读写。总的来说,你输入的命令以及输出的结果如下所示:
$ su
Password:
# cd /home
# touch quota.user
# touch quota.group
# chmod 666 quota.user
# chmod 666 quota.group
限额
最后,你需要准备为用户和用户组建立限额设置。要建立限额设置,须使用edquota命令。应用这个命令,你可以配置软限制限额、硬限制限额与超出软限制的宽限时间。
输入edquota命令即可打开外壳$EDITOR变量指定的默认文本编辑器。如果你不喜欢所调用的编辑器——例如,你是一个vi用户,edquota命令调用了emacs——你就可以用export EDITOR=vi命令来修改$EDITOR变量。
与vi和emacs相比,nano与pico总是在屏幕底部显示简单、公共的命令帮助信息,因此它们更适合初学者使用。如果你不小心“闯入”vi或emacs之中,可以输入Ctrl X ,接着输入Ctrl C>退出emacs。
在不保存意外改变的情况下退出vi,只需点击ESC键再确定即可回到命令模式(如果机器在嘟嘟作响,你可能已回到命令模式),然后输入:q!再单击回车键。在编辑限额设置时才试图学习如何使用编辑器可不是个好办法,所以你最好现在就开始学习使用nano或pico。
要编辑宽限时间设置,你可以使用edquota的-t选项,输入:
edquota –t
这一命令允许你为使用磁盘限额的各个分区设定不同的宽限时间。
可编辑用户或用户组软硬限制,可应用-u或-g选项,再加上你希望编辑限额的用户账号或用户组账号即可。例如,edquota -u foo允许你编辑用户foo的限额设置,而edquota -g bar允许你编辑用户组bar的限额设置。
-p选项允许你将一个用户的设置复制给另一个用户。例如,如果用户baz要使用与用户foo一样的设置,可以输入:
edquota -p foo -u baz
在一台每个人都使用同样的限额设置的机器上建立新的用户账号限额,这个方法可以节省许多时间。我们可以用-p命令选项来生成一个简单的一行bash脚本,同时处理大量的账号。不过,这要等到你精通bash脚本时才能使用。
在编辑限额设置时,你会发现存在有“块”(block)与inodes设置。在典型的Linux系统中,块为千字节单元。它决定你正在编辑限额的用户或用户组账号可以使用多少磁盘存储空间。inode设置可用来限制一个指定的用户允许使用的文件数目(一般来说,每个文件都需要几个inode),与block设置一样,它也有硬限制与软限制,并使用同样的宽限时间设置。显示为零的限制设置则表明那个用户或用户组账号没有执行限额。通常block要进行硬限制与软限制,而inode则没有这些限制。
当你初次开始为用户与用户组编辑限额设置时,每个账号的配置将显示少量的已使用的block与inode(如果在一个已运行一段时间的系统上执行限额,时会出现大量的block与inode)。这些数字不能进行编辑:在改变限额配置时,只能编辑硬限制与软限制数目。完成编辑与设置后,用在调用edquota时给定的默认文件名对它们进行保存——你根本不必选择文件名,只需从你所使用的编辑器中进行保存与编辑。
限额管理
一旦设定了限制,你可以使用其它许多工具来对限额进行管理。例如,可以用quotacheck来检查限额数据库的完整性,用repquota来报告限额使用状况,用户还可以调用quota本身来查看他们的限额使用情况;根用户还可用它来获得用户账号信息。欲了解更多与这些应用有关的信息,请查看相关说明文件。
最后,一些Linux产品还提供一个附加的工具集,称为quotatool。根据你应用磁盘限额管理的时间长短,你可能值得花一些时间来研究如何使用这个工具集。
上一页 [1] [2] [3]