標題: linux 磁盘配额 [打印本頁] 作者: perl0302 時間: 2011-12-3 07:55 標題: linux 磁盘配额 Linux中的磁盘限额利用软件对特殊用户账号所使用的磁盘空间进行限制。本教程说明如何在系统上建立磁盘限额。
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下载并进行安装。
引导配置
/etc下的rc*.d都是链接到/etc/rc.d/下的对应rc*.d文件
而它们下面的S或K打头的文件又链接到/etc/init.d下的文件
ctrlaltdel:允许init在用户于控制台键盘上按下C t r l + A l t + D e
l组合键时,重新启动系统。注意,如果该系统放在一个公共场所,系统管理员可将Ctrl + Alt + Del组合键配置为别的行为,比如忽略等。我是设置成打印一句骂人的话了^o^。
kbrequest:监视到特定的键盘组合键被按下时采取的动作,现在还不完善。
ondemand:A process marked with an ondemand runlevel will be
executed whenever the specified ondemand runlevel is called. However,
no runlevel change will occur (ondemand runlevels are ‘a’, ‘b’,and
‘c’),(英语太菜,那个however不知道该怎么翻译才好。惭愧!)
一个重要的运行级别就是单用户模式(运行级别1),该模式中,只有一个系统管理员使用特定的机器,而且尽可能少地运行系统服务,其中包含登录。单用户模式对少数管理任务(比如在/usr分区上运行fsck)而言,是很有必要的,因为这需要卸载分区,但这是不可能的,除非所有的服务系统已被杀死。
一个正在运行的系统可以进入单用户模式,具体做法是利用init,请求运行级别1。内核启动时,在内核命令行指定single或emergency关键字,就可进入运行级别1了。内核同时也为init指定命令行, init从关键字得知自己不应该采用默认的运行级别(内核命令行的输入方式和你启动系统的方式有关)。
有时,以单用户模式进行启动是必要的,这样一来,用户在装入分区之前,或至少在装入分散的/usr分区之前,能手工运行fsck(在分散的文件系统上,任何活动都可能使其更为分散,所以应该尽可能地运行fsck)。
如果自动化的fsck在启动时失败了,启动脚本init的运行将自动进入单用户模式。这样做是为了防止系统使用不连贯的文件系统,这个文件系统是f s c k不能自动修复的。文件系统不连贯的现象极为少见,而且通常会导致硬盘的不连贯或实验性的内核释放,但最好能做到防患于未然。
由于安全上的考虑,在单用户模式下,启动外壳脚本之前,配置得当的系统会要求用户提供root密码。否则,它会简单地为L I L O输入合适的一行代码,以r o o t的身份登录(当然,如果/etc/passwd已经由于文件系统的问题而不连贯了,就不适合这里的原则了,为对付这种情况,你最好随时准备一张启动盘)。