认识Linux的磁盘配额

对于管理Windows系统的网络管理员来说,配置磁盘配额是一件比较容易的事情,那么,如何在Linux下配置磁盘配额,在配置磁盘配额时需要注意哪些问题,可能有些读者朋友就不太清楚了,本文将为大家介绍Linux下磁盘配额的知识和技巧。
  
Linux系统在默认情况下,并不限制每个用户使用磁盘空间的大小,如果某个用户疏忽或恶意将磁盘占满,将导致系统无法进行写操作甚至崩溃。
我们可以做一个磁盘爆满测试,一个没有设置磁盘配额的Linux系统中,使用某一普通用户登录,执行命令:
$ dd if=/dev/zero of=quotatest bs=1024k count=10240000
命令将生成一个固定大小的文件。其中“if”表示输入,伪设备/dev/zero不断生成字符串“0”,初始化文件;“of”表示输出,此例为在用户当前目录下生成文件“quotatest”;“bs”为“block size”指定数据块大小,单位设定为“1024k”即1MB;“count”为总计生成的文件(“quotatest”)大小,若“bs”为1MB,则“10240000”为10000GB。
大多数服务器磁盘空间没有这么大,上面的命令没执行完空间就耗光了。笔者用一台一般配置的笔记本电脑测试,写入速度约为60MB/s ,一分钟就可以写3GB,如果您的服务器是100GB的,半个小时后磁盘空间就会达到100%,此时用户无法创建文件、管理员无法添加用户、系统无法写入日志……甚至系统重启后将无法正常启动,因为磁盘空间爆满,启动过程中临时文件无法生成。
如果您真的做了上述的测试,系统无法正常启动,可以使用Linux安装光盘引导,在安装界面输入“linux rescue”进入修复模式后删掉文件“quotatest”,即可恢复。
由此可见,若不设置磁盘配额,即使不是黑客,任一普通用户都可以随时摧毁我们的系统。

磁盘配额的基本设置

设置磁盘配额时,“某用户在系统中共计只能使用50MB磁盘空间”,这样的限制要求是无法实现的;只能设置“某用户在/home分区能使用30MB,在/backup分区能使用20MB”。磁盘配额的设置单位是分区,针对分区启用配额限制功能后才可以对用户设置,其他系统,如Unix、Windows,原理与Linux相同。
磁盘配额设置有两种措施:硬限制和软限制。硬限制是对空间使用的绝对限制,在任何情况下用户都不允许超过此限制;软限制允许用户在一定时间范围内(默认为一周,可以使用命令“edquota -t”重新设置,时间单位可以为天、小时、分钟、秒)超过其限制的额度,在不超出硬限制的范围内可以继续使用空间,系统会发出警告(警告信息设置文件为“/etc/warnquota.conf”),但如果用户达到时间期限仍未释放空间到限制的额度下,系统将不再允许该用户使用更多的空间。
磁盘配额限制空间使用的方法也有两种,即分别对inode和block进行限制。磁盘配额可以限定用户在分区中使用的空间大小(blocks),也可以限定用户可以在分区中最多创建的文件数(inodes),需要注意的是,只要用户所创建的文件超过他可以使用的inode数额,即使这些文件是空的,他再次创建文件的行为也将被限制。
此处说明一下inode的概念。在Linux中创建一个文件,系统就为该文件分配一个惟一的inode ,文件的inode用于访问文件的属性。也就是说,Linux系统中每个文件都要对应一个inode,通俗点说Linux内核不认识字母,所以用户要有UID、用户组要有GID、进程要有PID……,文件要有inode ,一旦inode丢失文件将无法被访问。
使用命令“ls -i”可以查看到文件的inode号。
# ls -i
163523 inittab  163524 services  163525 a b
Linux系统中的硬链接文件与原文件大小一样,且可同步更新,因为硬链接是一个指向文件的指针,它与原文件的inode相同。
如果系统中有名称特殊的文件,如“a b”,使用“rm”命令无法对其操作(因“rm”会判断为要删除两个文件“a”和“b”),此时可以利用inode的原理,假设“a b”的inode为163535,查看详细信息执行:
# find . -inum 163535 -exec ls -l {} \;
-rw-r--r-- 1 root root 0 Nov 27 15:21 ./a b
删除此文件执行:
# find . -inum 163535 -exec rm {} \;
选项“-inum”即为查找文件的inode ,选项“-exec”为find命令的连接符。
另外,在部署磁盘配额前,要考虑哪些分区需要设置。一般而言,保存用户宿主目录的分区(一般为/home)一定要设置磁盘配额,公共存储用户数据的分区要设置磁盘配额(如公司的网络备份应用服务器)。
  
设置磁盘配额的步骤
  
明白了上面的基本概念,我们就可以配置磁盘配额了。
设置磁盘配额的步骤:
(1)启动分区配额功能;
(2)生成配额信息文件;
(3)设置用户和组配额;
(4)启动磁盘配额服务。
  
启动分区配额功能
用管理员身份登录系统,编辑系统配置文件/etc/fstab中相应分区(以/home分区为例)的设置选项,若开启用户配额添加选项“usrquota”,用户组配额添加选项“grpquota”,中间以逗号隔开。
LABEL=/home  /home  ext3  defaults,usrquota  1  2 
用户组配额用以限定一组用户共计可以使用的空间数,一般应用较少,本例只启动用户配额。
分区配额功能生效需要重新启动系统,或者简单一点,重新挂载此分区,让其新加参数生效:
# mount -o remount /home
  
生成配额信息文件
检测分区中当前用户空间使用情况,并生成保存配额信息的数据库文件:
# quotacheck -F vfsv0 -uv /home
quotacheck: Scanning /dev/hda3 [/home] quotacheck: Cannot stat old user quota file: No such file or directory
quotacheck: Old group file not found. Usage will not be substracted.
done
quotacheck: Checked 5 directories and 9 files
quotacheck: Old file not found.
选项“-F vfsv0”指定磁盘配额功能实现的软件版本,当前流行的Linux版本基本都为Quota 2.0 ,可以使用命令“man quotacheck”查看到此信息,不必像绝大多数的文章和书籍资料中手工“touch”创建。
选项“-u”指定生成用户配额信息文件“aquota.user”(Quota 1.0为quota.user),如果设置了用户组配额则添加选项“-g”生成配额信息文件“aquota.group”,选项“-v”表示执行时显示详细信息。执行结果中自动报告了分区/home的空间使用情况,并自动生成了配额信息文件“aquota.user”,其权限为600 。
若较老的Linux系统(Quota 1.0)要升级到Quota 2.0 ,可以使用命令“convertquota”将老格式文件“quota.user”和“quota.group”转换为新格式“aquota.user”和“aquota.group”。

设置用户和组配额
使用edquota命令为每个用户设置磁盘配额,如下例为用户Sam设置配额:
# edquota Sam
系统会调用Vim/Vi生成一临时文件,在此文件中可对用户Sam配额信息进行编辑,默认文件内容如下:
Disk quotas for user Sam (uid 500):
Filesystem     blocks       soft       hard     inodes     soft     hard
/dev/hda3        5          0         0         5        0       0
其中“Filesystem”字段表明使用磁盘配额的分区对应的设备名称,“blocks”和“inodes”分别表明了用户当前已经使用的磁盘空间(以KB为单位)和建立的文件数(此限制一般较少应用),“soft”和“hard”即为前文提及的软限制和硬限制(大多数应用不设置软限制)。 
编辑此文件,把软、硬限制设置到合适的数值,保存退出,可以看到“aquota.user”文件的大小改变,说明用户的配额已经储存。设置组配额可以使用命令“edquota -g 组名”。
设置大量用户的磁盘配额,若分配给用户的配额相同,可以使用命令edquota的“-p” 选项在用户之间复制配额设置,如将用户Sam的配额信息复制给Helen和Jack:
# edquota -p Sam Helen Jack
可将配额模板用户设置复制给任意多用户,或可利用此命令编写shell脚本批量复制。此外,也可以使用命令“setquota”来设置磁盘配额,如:
# setquota Mary 0 20480 0 0 /home
限定用户Mary可以在/home分区使用空间20MB ,具体用法在此不在赘述,可查看其帮助获得更多信息。
 
启动磁盘配额服务
使用命令quotaon用来激活配额系统并允许配额检查:
# quotaon /home
若关闭配额服务则使用命令“quotaoff”。
分区的磁盘配额功能设置后,每次开机会自动加载并启动服务,务须另行在启动脚本中设置。
  
磁盘配额测试
  
在第三步中设置用户Sam配额为10MB ,如下:
Disk quotas for user Sam (uid 500):
Filesystem     blocks       soft       hard     inodes     soft     hard
/dev/hda3        5          0        10240      5        0       0
切换到用户Sam ,做磁盘爆满测试:
# dd if=/dev/zero of=quotatest bs=1024k count=10240000
hda3: write failed, user block limit reached.
dd: writing `quotatest‘: Disk quota exceeded
1+0 records in
0+0 records out
1036288 bytes (1.0 MB) copied, 0.0174559 seconds, 59.4 MB/s
用户Sam达到限定的磁盘空间,出现了上面的提示信息,他将不能再创建文件,有效的控制了用户磁盘空间的使用。

查看磁盘配额

用户查看自己当前的配额信息,可使用命令“quota”:
$ quota
Disk quotas for user Sam (uid 500): 
Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
/dev/hda3    1022     0    1024            6      0      0     
其中“quota”字段为软限制,“limit”字段为硬限制,“grace”字段为软限制达到后宽限期(前文“edquota -t”设定的时间)。
若管理员查看各个用户的磁盘配额使用情况,可以使用命令“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  --        10545        0        0        4        0        0       
sam  --                1024        0        1024        8        0        0       
helen  --        5        0        10240        5        0        0
…………
从结果中可以方便的查看到用户的配额使用情况。如果想获得其他更多信息还可以执行命令“quotastats”,详见帮助。
Linux系统上如何实现磁盘配额就介绍完了,本文所有操作在Red Hat Fedora Core 6上测试通过。

时间: 2024-10-03 23:12:27

认识Linux的磁盘配额的相关文章

linux初学者-磁盘配额篇

linux初学者-磁盘配额篇 在使用磁盘时,只要有权限,不管什么用户都可以在其中写入数据,但是如果是多人在一个磁盘中写入数据,就会出现争议,如果一个用户将磁盘空间用完,那么其他人无法再使用.如下图所示,we用户在一个500M的磁盘中写入了500M的数据,其他用户无法再在这个磁盘中写入数据.为了解决这个问题,可以在磁盘中对每个用户设置磁盘配额,使得每个用户可以分到适当的空间. 在磁盘挂载时,输入命令"mount -o usrquota 磁盘 挂载目录",可以在挂载上的同时开启开启磁盘配额

Linux学习—磁盘配额工具quota

磁盘配额--Linux作为一个多用户的操作系统,实际生活中会发生多人共同使用一个磁盘的情况,,为了保证一个磁盘的有效利用,必须对磁盘进行使用率的限制,因此磁盘配额(quota)会是一个非常有用的工具 目录 quota的使用限制 quota的设置内容(xfs) 使用quota的案例(重点) 一.quota的使用限制 对EXT系列文件系统,quota仅能针对整个文件系统进行设计,无法对单一的目录进行磁盘配额:而在xfs的文件系统中,可以使用quota对目录进行磁盘配额,因此在进行磁盘配额前,一定要对

Linux的磁盘配额详解(Quota)

1. 检查内核情况 检查当前内核是否支持quota,当前内核配置文件在/boot下 如果当前内核不支持quota,需要重新编译内核将quota support编译进核心: File systems  --->  [*] Quota support 2. 修改/etc/fstab,对所选文件系统激活配额选项 vim/etc/fstab 3. 重新挂载文件系统 添加了 usrquota 和 grpquota 选项后,重新挂载每个相应 fstab 条目被修改的文件系统.如果某文件系统没有被任何进程使用

linux中磁盘配额管理

一,磁盘管理的概念: Linux系统是多用户任务操作系统,在使用系统时,会出现多用户共同使用一个磁盘的情况,如果其中少数几个用户占用了大量的磁盘空间,势必压缩其他用户的磁盘的空间和使用权限.因此,系统管理员应该适当的开放磁盘的权限给用户,以妥善分配系统资源. 二,什么是磁盘配额: 磁盘配额是一种磁盘空间的管理机制,使用磁盘配额可限制用户或组在某个特定文件系统中所能使用的最大空间. 三,磁盘配额的步骤: 1,首先创建要磁盘配额的用户(add) 2,首先编辑/etc/fstab文件 使用vi编辑器对

Linux用户磁盘配额

一:内核中支持QUOTA: [[email protected] /]# grep  CONFIG_QUOTA /boot/config-3.10.0-123.el7.x86_64 CONFIG_QUOTA=y CONFIG_QUOTA_NETLINK_INTERFACE=y # CONFIG_QUOTA_DEBUG is not set CONFIG_QUOTA_TREE=y CONFIG_QUOTACTL=y CONFIG_QUOTACTL_COMPAT=y 如果有上列输出,则表示当前内核已

Linux的磁盘配额

一.文件服务器:通过共享存储空间,让用户能够随时利用网络进行数据存储的服务器 FTP HTTP NFS Samba .. 磁盘配额主要是针对于这种文件服务器进行的用户磁盘空间的限制而提出的解决方案 磁盘配额的设定对象: 能够通过网络进行实时写操作的块设备,要求其文件系统必须支持磁盘配额功能 二.针对用户账户和组账户进行磁盘配额设定 对于用户账户: 为指定的用户账户设置特定的磁盘使用量: 1) 磁盘空间使用量 2) inode节点使用量(文件的数量) 对于组账户: 限制指定的组中所有成员的磁盘使用

linux之磁盘配额(quota)

1.什么是quota 简单的说就是限制用户对磁盘空间的使用量. 因为Linux是多用户多任务的操作系统,许多人共用磁盘空间,为了合理的分配磁盘空间,于是就有了quota的出现. 2.quota的用途    显示磁盘使用情况和配额 3.quota的一般作用对象     (1)针对WWW server     (2)针对mail server     (3)针对file server4.quota的限制    (1)仅能针对整个文件系统     (2)需要kernel的支持     (3)只对一般用

VMware+Linux更改磁盘配额(使用gparted LiveCd) 实用!!!

转载:http://blog.csdn.net/microad_liy/article/details/7667670 写这篇文章的原因: 最近要给服务器Centos上的ruby版本升级,由于是第一次升级,不敢直接在服务器上操作. 所以在我的winxp上装了Vmware ,又在Vmware中装了Centos5.2. 用yum install装一些补丁包后,Centos的根目录空间就不够了,其他的操作也就进行不下去了. 这个问题困扰了我一周的时间,网上也有很多人遇到过这个问题,但在如海的转载式回答

linux磁盘配额quota学习笔记

1.Linux的磁盘配额quota的作用. quota的作用就是限制user和group在磁盘的使用限制,可以限制使用的空间大小block和建立的文件数量inode,一般用于限制block. 2.查看分区是否支持quota功能,如何建立quota. 查看分区是否开启quota,查看/etc/fstab文件,在文件选项增加usrquota和grpquota参数. 然后使用mount -a命令重新挂载fstab的设备. 3.建立quota记录文件. 建立quota记录文件:quotacheck -a