本文主要介绍Linux系统磁盘配额工具quota。磁盘配额是指限制用户对磁盘的使用量。由于Linux是一个多用户、多任务的操作系统,多个用户公用磁盘空间,为了公平、合理的使用磁盘空间,于是就有了磁盘配额工具quota。

磁盘配额的限制条件:对EXT系列文件系统,quota仅能针对整个文件系统进行设计,无法对单一的目录进行磁盘配额;而在最新的xfs的文件系统中,可以使用quota对目录进行磁盘配额,因此在进行磁盘配额前,一定要对文件系统进行检查。

Linux内核必须支持quota。

磁盘配额只对一般用户有效,因为root拥有全部的磁盘空间。

quota的可以设置内容:可以分别针对用户、群组进行磁盘配额。

可以限制inode和block的用量。

soft/hard,表示具体限制的数值大小,当磁盘容量达到soft时,系统会发出警告,要求降低至soft值以下,当达到hard时,系统会禁止继续增加新的文件。

宽限时间(一般为7天),当某一用户使用磁盘容量达到soft时,系统会给出一个grace time,若超过这个天数,soft值会变成hard值并禁止该用户对磁盘增加新的文件。

0. 实验条件

操作系统:CentOS 6.5 (kernel 2.6.32-431.el6.i686 , 默认支持磁盘配额quota功能)

磁      盘:/dev/sdb1   (文件系统ext4,空间大小10G)

Selinux  :Disabled

用户和组:普通用户quota1,quota2   加入 myquota组

1. 查看内核支持quota功能[root@localhost ~]# grep -i quota /boot/config-2.6.32-431.el6.i686

CONFIG_NETFILTER_XT_MATCH_QUOTA=m

CONFIG_QUOTA=y

CONFIG_QUOTA_NETLINK_INTERFACE=y

CONFIG_PRINT_QUOTA_WARNING=y

# CONFIG_QUOTA_DEBUG is not set

CONFIG_QUOTA_TREE=y

CONFIG_QUOTACTL=y

其中CONFIG_QUOTA=y(此行y代表支持quota功能)

2. 准备文件系统[root@localhost ~]# fdisk -l /dev/sdb

[root@localhost ~]# fdisk /dev/sdb

Device Boot      Start         End      Blocks       Id  System

/dev/sdb1            1        1306     10490413+     83  Linux

[root@localhost ~]# mkfs.ext4 /dev/sdb1

[root@localhost ~]# mkdir /mnt/data

[root@localhost ~]# mount /dev/sdb1 /mnt/data/

[root@localhost ~]# mount -o remount,usrquota,grpquota /mnt/data/

[root@localhost ~]# mount | grep quota

/dev/sdb1 on /mnt/data type ext4 (rw,usrquota,grpquota)

首先创建一个可用的磁盘分区设备/dev/sdb1 ,格式化为ext4文件系统,挂载到/mnt/data目录。然后重新挂/dev/sdb1文件系统,并添加usrquota,grpquota选项。

如果需要开机自动挂载,请vim /etc/fstab 并将挂载选项usrquota,grpquota加入其中。

3. 添加用于磁盘配额的用户和组[root@localhost ~]# groupadd myquota

[root@localhost ~]# useradd -g myquota quota1

[root@localhost ~]# useradd -g myquota quota2

4. 生成磁盘配额配置文件quotacheck[root@localhost data]# quotacheck -cug .

[root@localhost data]# ls

aquota.group  aquota.user  lost+found

其中各选项及生成的配置文件解释如下:-c 创建磁盘配额的配置文件

-u 针对用户配额的配置文件aquota.user

-g 针对用户组配额的配置文件aquota.group

-v 显示扫描过程信息

-a 检测系统中所有已经挂载支持quota功能的分区

aquota.user 用户配额quota配置文件

aquota.group 组配额quota配置文件

5. 启用磁盘配额quotaon

[root@localhost data]# quotaon /dev/sdb1            # 启用/dev/sdb1的磁盘配额quota功能

[root@localhost data]# quotaoff /dev/sdb1       # 关闭/dev/sdb1的磁盘配额quota功能

其中可以使用选项解释如下:-a 开启所有quota设定,根据/etc/mtab设定

-v 开启quota时显示信息

6. 编辑用户和组磁盘配额edquota[root@localhost data]# edquota -u quota1

[root@localhost data]# edquota -u quota2

[root@localhost data]# edquota -g myquota

其中可以使用选项解释如下:-u 编辑用户磁盘配额quota.user

-g 编辑组磁盘配额quota.grp

-t : 编辑宽限时间

-p : 复制quota磁盘配额给其他用户

复制用户quota1的磁盘配额给用户quota2:[root@localhost data]# edquota -p quota1 quota2

[root@localhost data]# quota -u quota2

Disk quotas for user quota2 (uid 502):

Filesystem  blocks   quota   limit   grace   files   quota   limit   grace

/dev/sdb1       0   50000  100000               1       0       0

[root@localhost data]# quota -u quota1

Disk quotas for user quota1 (uid 501):

Filesystem  blocks   quota   limit   grace   files   quota   limit   grace

/dev/sdb1       0   50000  100000               1       0       0

quota配置相关的内容:inode:限制用户可以建立的文件数量

block:限制用户磁盘的容量,以KB为单位

soft:软限制。就是在超过这个值后,会提醒用户,但用户的权限还没有被限制。

hard:硬限制。这是最高的限制,用户或组绝对不会超过这个限制值。如果超过了,就限制死了用户的使用权限了。

grace time:宽限时间。这个就是当达到soft限制时,还没有到达hard限制的时候,用来提醒用户的。如果在警告的天数之内,用户都不进行任何磁盘管理操作,那么    soft限制值会即刻取代hard限值来作为quota的限制,就算你没有达到hard限制,也用不了了。

这里修改用户quota1的软限制soft为50M,硬限制hard为100M。用户组myquota的软限制soft为50M,硬限制hard为100M。[root@localhost data]# edquota -u quota1

Disk quotas for user quota1 (uid 501):

Filesystem                   blocks       soft       hard     inodes     soft     hard

/dev/sdb1                         0      50000     100000          0        0        0

[root@localhost data]# edquota -g myquota

Disk quotas for group myquota (gid 501):

Filesystem                   blocks       soft       hard     inodes     soft     hard

/dev/sdb1                         0      50000     100000          0        0        0

7. 检查用户和组磁盘配额quota

为了方便检查测试磁盘配额效果,我们给/mnt/data目录赋予666权限,以方便普通用户quota1 和 quota2 创建文件。[root@localhost data]# chmod 777 /mnt/data/

[root@localhost data]# ls -ld

drwxrwxrwx 3 root root 4096 1月  31 13:29 .

[root@localhost data]# su - quota1

[quota1@localhost ~]$ cd /mnt/data/

[quota1@localhost data]$ touch test1.txt

[quota1@localhost data]$ quota

Disk quotas for user quota1 (uid 501):

Filesystem  blocks   quota   limit   grace   files   quota   limit   grace

/dev/sdb1       0   50000  100000               1       0       0

可以看到对用户quota1设置的磁盘配额软限制50M,硬限制100M已经生效。

检查用户quota1 和 组myquota 的磁盘配额:[root@localhost data]# quota -u quota1

Disk quotas for user quota1 (uid 501):

Filesystem  blocks   quota   limit   grace   files   quota   limit   grace

/dev/sdb1       0   50000  100000               1       0       0

[root@localhost data]# quota -g myquota

Disk quotas for group myquota (gid 501):

Filesystem  blocks   quota   limit   grace   files   quota   limit   grace

/dev/sdb1       0   50000  100000               2       0       0

8. 测试用户磁盘配额效果[root@localhost data]# su quota1

[quota1@localhost data]$ dd if=/dev/zero of=quota1.dat bs=1M count=50

sdb1: warning, user block quota exceeded.

sdb1: warning, group block quota exceeded.

记录了50+0 的读入

记录了50+0 的写出

52428800字节(52 MB)已复制,0.155252 秒,338 MB/秒

[quota1@localhost data]$ quota

Disk quotas for user quota1 (uid 501):

Filesystem  blocks   quota   limit   grace   files   quota   limit   grace

/dev/sdb1   51200*  50000  100000   7days       2       0       0

可以看到宽限时间grace已经生效7days,表明磁盘配额达到软限制50M的警告线,此时还可以再增加文件,但如果达到100M的硬限制,就无法再创建文件了。[quota1@localhost data]$ dd if=/dev/zero of=quota11.dat bs=1M count=80

sdb1: write failed, user block limit reached.

dd: 正在写入"quota11.dat": 超出磁盘限额

记录了48+0 的读入

记录了47+0 的写出

49971200字节(50 MB)已复制,0.0881028 秒,567 MB/秒

如上“超出磁盘配额”证明对用户quota1的磁盘配额生效。我们在检查一下用户quota1的磁盘配额情况。

[quota1@localhost data]$ touch test.txt

[quota1@localhost data]$ ls

aquota.group  lost+found   quota1.dat  test2.txt

aquota.user   quota11.dat  test1.txt   test.txt

[quota1@localhost data]$ echo helloworld > test.txt

bash: echo: write error: 超出磁盘限额

9. 查看磁盘配额报告情况repquota[root@localhost data]# repquota -aug

repquota一个磁盘配额综合查询命令,以下是对它的一些选项解释,一般这三个选项一起使用:-a 报告所有支持quota的文件系统

-u 报告针对用户的quota信息

-g 包裹针对组的quota信息

10. 系统启动时自动启用磁盘配额及添加计划任务

(1)为了实现系统启动时自动启用磁盘配额,可以在 /etc/rc.d/rc.sysinit 或 /etc/rc.d/rc.local 中加入以下内容:/usr/sbin/quotaon -aug

在系统关机/重启脚本 /etc/rc.d/rc[0,6]/ 中加入关闭quota的命令:/usr/sbin/quotaoff -aug

(2)quotcheck命令用来扫描文件系统的磁盘配额使用情况,更新aquota.user,aquota.group从而保持quota配置到最新的状态。

因此最好能在系统启动时自动执行以下命令:/sbin/quotacheck -avug

或者通过crontab定期执行:0 8 * * * /sbin/quotacheck -avug        # 每天早上七点执行一次扫描文件系统磁盘配额情况

linux内核 quota,Linux系统磁盘配额(quota)相关推荐

  1. (22)Linux基础-系统磁盘配额quota

    一. 磁盘配额概念 Linux系统是多用户任务操作系统,在使用系统时,会出现多用户共同使用一个磁盘的情况,如果其中少数几个用户占用了大量的磁盘空间,势必压缩其他用户的磁盘的空间和使用权限.因此,系统管 ...

  2. linux-如何限制普通用户的磁盘使用空间-磁盘配额quota,Linux系统下如何进行磁盘配额Quota的设置...

    Linux如何进行磁盘配额quota的设置 通过quota进行磁盘配额,可以控制用户对磁盘空间和文件的控制,我们以一个实例作为说明,对2个用户user01.user02分别进行磁盘使用空间和创建文件的 ...

  3. 磁盘管理来安装linux,Linux_在CentOS系统中安装quota来管理磁盘配额,在网络管理的工作中,由于硬 - phpStudy...

    在CentOS系统中安装quota来管理磁盘配额 在网络管理的工作中,由于硬盘的资源是有限的,常常需要为多用户的服务器设定用户的linux磁盘配额.这个功能对公用的多用户服务器(免费的或者收费的)来说 ...

  4. linux 针对目录空间配额,linux磁盘配额quota

    Linux是一个多用户多任务的操作系统,在使用中可能会有几个人对服务器有操作,几个用户共同使用一个共享磁盘的情况,因为我们的硬盘是有限的,我们需要对用户的空间进行限制.这里使用磁盘配额,可以很方便的对 ...

  5. linux磁盘配额edquota,Linux磁盘配额Quota配置详解(2)

    实践quota Quota使用的方面很广,不过,一般的用途有以下这些: 限制某一群组所能使用的最大磁盘配额(使用群组限制): 你可以将你的系统上的用户分门别类,有点像是目前很流行的付费与免付费会员制的 ...

  6. linux磁盘配额quota,Linux磁盘配额-Quota

    写在前面的话: 磁盘配额(quota)一直很有用.举个例子,如果你曾经申请过网络的邮件服务,那么肯定就会明白什么是20M的邮件空间.30M的免费网页空间,这个20M.30M是怎么定义出来的呢?就是通过 ...

  7. linux quota硬盘,Linux 磁盘配额 quota

    Linux 磁盘配额 quota Quota一直就是个很有用的东西.如果您曾经申请过网络的mail服务时,那么肯定就会明白什么是20MB的邮件空间. 30MB的免费网页空间,这个20MB,30MB就是 ...

  8. linux中quota信息查看,linux磁盘配额quota学习笔记

    1.Linux的磁盘配额quota的作用. quota的作用就是限制user和group在磁盘的使用限制,可以限制使用的空间大小block和建立的文件数量inode,一般用于限制block. 2.查看 ...

  9. Linux之旅 13:磁盘配额与高级文件管理

    Linux之旅 13:磁盘配额与高级文件管理 图源:pixels 磁盘配额(quota)的应用与实践 什么是磁盘配额 磁盘配额的一般用途 限制某一用户组能使用的最大磁盘配额 限制某一用户的最大磁盘配额 ...

  10. Linux内核之时间系统

    Linux内核之时间系统 1.Linux时间系统 (1)CMOS时钟 (2)系统时钟 (3)节拍数(jiffies) (4)墙上时间(xtime) 2.重要数据结构 (1)struct tk_read ...

最新文章

  1. 基于容器的ETCD集群脚本
  2. 安装maven之后,cmd提示mvn不是内部命令的解决办法
  3. python Intel Realsense D435 图像自动采集程序 自动剔除模糊图像
  4. 记一次ora-1652错误的解决过程
  5. CountDownLatch线程同步辅助
  6. 通过 .git 目录深入理解 Git!
  7. 干货收藏!小伙做自媒体半年得5万,分享6大必备素材网
  8. bootstrap分辨率
  9. apk文件以及打包流程
  10. 2018手机江湖之战:OPPO的变与不变
  11. python使用代理爬虫_python使用代理爬虫导致无法访问网页
  12. ansj分词器的配置
  13. pcb上钽电容丝印图_avx钽电容的丝印与代码
  14. python 创建画板,Python 实现简单画板
  15. lisp画配筋_请教:CAD中如何用lisp画四棱台?
  16. 网赚项目 - 陌陌引流,变现的步骤和方法
  17. 计算机专业必备:用python实现自动shua课,简直不要太爽
  18. Java实现按键精灵(鼠标篇)
  19. matlab在线版 免费,NeuroSolutions for MATLAB
  20. CF1698B Rising Sand 题解

热门文章

  1. alios是安卓吗_揭秘:阿里云OS和Android的主要区别是什么
  2. c语言编译bss和data,认识bss段和data段
  3. 朱晔的互联网架构实践心得S1E8:三十种架构设计模式(下)
  4. 卫星导航定位误差之电离层、对流层
  5. pmp效益管理计划和做题技巧
  6. Matlab spline
  7. 互联网大厂面试考点————JVM
  8. 函数简介篇——环境变量函数
  9. 【毕业设计】基于单片机的火灾报警系统 -stm32 单片机物联网
  10. Woolies因滥发垃圾邮件被罚款100万澳元