Linux 磁盘配额 quota
Quota一直就是个很有用的东西。如果您曾经申请过网络的mail服务时,那么肯定就会明白什么是20MB的邮件空间、 30MB的免费网页空间,这个20MB,30MB就是quota这个东西搞出来的。如果我们要限制用户使用硬盘的容量使用大小,就需要quota来处理。
一、什么是quota
简单的说就是限制用户对磁盘空间的使用量。
在Linux系统中,由于是多人多任务的环境,所以会有多人共同使用一个硬盘空间的情况发生,如果其中有少数几个使用者大量的占掉了硬盘空间的话,那势必压缩其它使用者的使用权力,因此管理员应该适当的开放硬盘的权限给使用者,以妥善的分配系统资源。为了合理的分配磁盘空间,于是就有了quota的出现。
二、quota的用途
quota命令用于显示用户或者工作组的磁盘配额信息。输出信息包括磁盘使用和配额限制。
作用对象:
针对Web服务器,例如:每个人的网页空间的容量限制。
针对Mail服务器,例如:每个人的邮件空间限制。
针对File服务器,例如:每个人最大的可用网络硬盘空间。
三、quota的使用限制
仅针对整个partition:quota实际在运作的时候,是针对『整个partition』进行限制的,例如:如果你的/dev/hda5是挂载在/home底下,那么在/home底下的所有目录都会受到限制!
核心必须支持quota:Linux系统核心必须有支持quota这个模块才行。如果您是使用FC4的预设核心,系统已经预设有开放quota这个模块。如果您是自行编译核心的,那么请特别留意您是否已经开启了quota这个模块。
只对一般身份使用者有效:并不是所有在Linux上面的账号都可以设定quota,例如root就不能设定quota,因为整个系统所有的数据几乎都是他的。
四、quota的使用
quota 选项 参数
选项:
-g:列出群组的磁盘空间限制;
-q:简明列表,只列出超过限制的部分;
-u:列出用户的磁盘空间限制;
-v:显示该用户或群组,在所有挂入系统的存储设备的空间限制;
-V:显示版本信息。
参数:
用户或者工作组:指定要显示的用户或者工作组[root@localhost(yuaning)~]#quota-vs-uliubei#查看指定用户quota
quota:Cannotopenquotafile/mydata/aquota.user:Nosuchfileordirectory
quota:Cannotopenquotafile/root/ccc/aquota.user:Nosuchfileordirectory
Diskquotasforuserliubei(uid1001):
Filesystemspacequotalimitgracefilesquotalimitgrace
/dev/md60K0K0K000
[root@localhost(yuaning)~]#quota-guvs#查看当前用户的quota限制
quota:Cannotopenquotafile/mydata/aquota.user:Nosuchfileordirectory
quota:Cannotopenquotafile/root/ccc/aquota.user:Nosuchfileordirectory
Diskquotasforuserroot(uid0):
Filesystemspacequotalimitgracefilesquotalimitgrace
/dev/md60K0K0K300
quota:Cannotopenquotafile/mydata/aquota.group:Nosuchfileordirectory
quota:Cannotopenquotafile/root/ccc/aquota.group:Nosuchfileordirectory
Diskquotasforgrouproot(gid0):
Filesystemspacequotalimitgracefilesquotalimitgrace
/dev/md60K0K0K300
五、quota的相关命令
1. 扫描指令,quotacheck 参数
参数:
-a :扫瞄所有在/etc/mtab内,含有quota支持的filesystem
-u :针对使用者扫描文件与目录的使用情况,会建立aquota.user
-g :针对群组扫描文件与目录的使用情况,会建立aquota.group
-v :显示扫描过程的信息;
-M :强制进行quotacheck的扫描。[root@localhost(yuaning)~]#quotacheck-avug
quotacheck:Yourkernelprobablysupportsjournaledquotabutyouarenotusingit.Considerswitchingtojournaledquotatoavoidrunningquotacheckafteranuncleanshutdown.
quotacheck:Scanning/dev/md4[/mydata]done
quotacheck:Checked3directoriesand2files
quotacheck:Skipping/dev/md6[/backup]
quotacheck:Scanning/dev/mapper/vgcyn-lvcyn[/root/ccc]done
quotacheck:Checked3directoriesand2files
2. 配置指令,edquota 参数
参数:
-u :后面接账号名称。可以进入quota的编辑画面(vi)去设定username的限制值;
-g :后面接群组名称。可以进入 quota 的编辑画面(vi)去设定groupname的限制值;
-t :可以修改宽限时间(就是超过quota的soft limit值后,还能使用硬盘的宽限期限)
-p :复制范本。那个username_demo为已经存在并且已设定好quota的使用者[root@localhost(yuaning)~]#edquota-uliubei#给用户配置quota
Diskquotasforuserliubei(uid1001):
Filesystemblockssofthardinodessofthard#blocks是文件大小限制,inodes是文件个数限制
/dev/md4000000#soft是警戒线,当使用的值不小于这个值的时候会警告用户
/dev/md6000000#hard是底线,一旦达到这个值,停止使用
/dev/mapper/vgcyn-lvcyn000000
[root@localhost(yuaning)~]#edquota-t#修改系统宽恕时间
Graceperiodbeforeenforcingsoftlimitsforusers:
Timeunitsmaybe:days,hours,minutes,orseconds
FilesystemBlockgraceperiodInodegraceperiod
/dev/md47days7days
/dev/md614days7days
/dev/mapper/vgcyn-lvcyn7days7days
3. 开启指令,quotaon 参数
参数:
-u :针对用户启动quota(aquota.user)
-g :针对群组启动 quota(aquota.group)
-v :显示启动过程的相关讯息;
-a :根据/etc/mtab内的filesystem设定启动有关的quota,若不加-a的话,则后面就需要加上特定的那个filesystem![root@localhost(yuaning)~]#quotaon-auvg#启动所有的有quota限制的文件系统
/dev/md4[/mydata]:groupquotasturnedon
/dev/md4[/mydata]:userquotasturnedon
/dev/mapper/vgcyn-lvcyn[/root/ccc]:groupquotasturnedon
/dev/mapper/vgcyn-lvcyn[/root/ccc]:userquotasturnedon
4. 关闭指令,quotaoff 参数
参数:
-a :全部的filesystem的quota都关闭(根据/etc/mtab)
-u :仅针对后面接的那个/mount_point关闭user quota
-g :仅针对后面接的那个/mount_point关闭group quota
六、quota举例
那么quota从开始准备filesystem的支持到整个设定结束的主要的步骤大概是:
1. 设定partition的filesystem支持quota参数
由于quota必须要让partition filesystem支持才行,一般来说,支持度最好的是ext2/ext3,启动filesystem支持quota最简单就是编辑/etc/fstab,使得准备要开放的quota磁盘可以支持quota
2. 建立quota记录文件
整个quota进行磁盘限制值记录的档案是aquota.user/aquota.group,要建立这两个档案就必须要先利用quotacheck扫描才行。接下来的步骤就是:使用quotacheck来扫描一下我们要使用的磁盘
3. 编辑quota限制值数据
使用edquota来编辑每个使用者或群组的可使用空间
4. 重新扫描与启动quota
设定好quota之后,建议可以再进行一次quotacheck,然后再以quotaon来启动
注意:当开启quota的时候,配置好参数,扫描磁盘的时候,有时候会quotacheck失败,是因为在生成quota数据库的时候,没有关闭selinux,操作如下:[root@localhost(yuaning)~]#setenforce0
setenforce:SELinuxisdisabled
[root@localhost(yuaning)~]#vim/etc/selinux/config
#ThisfilecontrolsthestateofSELinuxonthesystem.
#SELINUX=cantakeoneofthesethreevalues:
#enforcing-SELinuxsecuritypolicyisenforced.
#permissive-SELinuxprintswarningsinsteadofenforcing.
#disabled-NoSELinuxpolicyisloaded.
SELINUX=disabled#将enforcing改为disabled即可
#SELINUXTYPE=cantakeoneofthreetwovalues:
#targeted-Targetedprocessesareprotected,
#minimum-Modificationoftargetedpolicy.Onlyselectedprocessesareprotected.
#mls-MultiLevelSecurityprotection.
SELINUXTYPE=targeted