一、什么是磁盘配额

磁盘配额从字面意思上看就是给一个磁盘配置多少额度,而quota就是有多少限额的意思,所以总的来说就是限制用户对磁盘空间的使用量。

因为Linux是多用户多任务的操作系统,许多人公用磁盘空间,举个例子像/home目录是存放普通用户家目录的地方,我们假如home目录一共有10G空间,而home下一共有三个用户,那么正常划分的话每个人应该是分得大概333M空间,但是其中有个用户在家目录下存放了很多音频文件占了8G的空间,这样的话对其他用户就显得不公平,而如果想要磁盘容量公平的分配,这个时候就要靠quota来实现了。

二、quota的常见类型及注意事项

(1)注意事项

1.针对 www server,例如对个人的网页空间的容量限额。

2.针对mail server,例如对个人的邮件空间进行限额。

3.针对file server,例如对个人最大的可用网络硬盘空间限额。

在这里我们就主要讲解下第三种对硬盘空间进行限额

(2)注意事项

1.核心必须支持quota:Linux核心必须有支持quota这个功能才行,在centos7版本中系统都预设支持quota功能,但如果你是自行编译的核心,那你就要留意是否真的开启了quota功能,否则后面做的可能都会白做。

2.只适用于ext2.ext3.ext4文件系统,对于目录是不起作用的,虽然我们的挂载点是一个目录,但实际上它是个文件系统设备。

3.只针对普通用户和组有效:因为在Linux系统中root身份的特殊所以这些设定对root是不起作用的因为整个系统都归他管啊。

4.针对用户组使用的限额是指某个组中的所有成员一起使用的限额,而不是每个人使用的限额。

关于quota的几个配置

inode:限制用户可以建立的文件数量

block:限制用户磁盘容量(默认以KB为单位)

而不论是inode还是block它们都有一个soft/hard,也就是软限制和硬限制。

soft:这是最低容量的意思,在用户宽限期内他的容量可以超过这个值,但不能超过硬限制,也必须在规定的宽限期内将容量降到soft容量限制之下。

hard:这是最高的限制,是绝对不能超过的,通常hard值都会比soft值高,如果用户超过了hard值那么系统就会锁定该用户对该磁盘的使用权限。

grace time:这就是上面提到的宽限时间,这个宽限时间只有用户对磁盘的使用量介于soft和hard之间时才会出现,这是为了提醒用户,因为磁盘容量一旦达到hard,使用者的磁盘使用权限将会被锁住,为了担心使用者没有注意到这个问题,因此设计了soft,而当你的磁盘使用量超过soft即将达到hard时,系统会给予警告,但也会给使用者一段时间让使用者自行管理磁盘,一般预设的宽限时间为7天,但如果你7天内都不对磁盘进行管理,那么soft限制将会取代hard限制来作为quota的限制。

三、quota限额的操作演示

1.quota的安装包

quota在centos7里是默认安装的,但如果你对系统里没有可以使用rpm安装,安装如下:

rpm -q quota

quota-4.01-14.el7.x86_64

2.首先我们要创建一个普通用户,因为quota对root是无效的。我们就创建一个普通用户myquota1作为演示,然后我们看要演示的磁盘是否开启quota,这里我对/dev/sda6分区进行操作,我们先查看/dev/sda6是否开启quota

[root@localhost ~]# mount

/dev/sda6 on /disk2 type ext4 (rw,relatime,seclabel,data=ordered)

我们可以看到quota没有开启,所以我们需要重新挂载。为了使下次开机也起作用,我们把挂载写到/etc/fstab文件中

[root@localhost ~]# vim /etc/fstab

/dev/sda6 /disk2 ext4 defaults,usrquota,grpquota 0 0

#由于我们增加了用户和组的配额,所以这里我们要重新mount一次,使我们的修改生效

[root@localhost ~]# mount -o remount /disk2

[root@localhost ~]# mount

/dev/sda6 on /disk2 type ext4 (rw,relatime,seclabel,quota,usrquota,grpquota,data=ordered)

现在已经开启了对用的磁盘配额

3.生成磁盘配额数据库

[root@localhost disk2]# quotacheck -acgu

[root@localhost disk2]# ls

aquota.group aquota.user lost+found

这里的参数意思分别是

-a 所有分区(已支持配额)

-c 创建

-u 用户

-g 组

4.启动磁盘配额

[root@localhost disk2]# quotaon -a //启动所有分区的磁盘配额

5.编辑磁盘配额文件

[root@localhost ~]# edquota myquota1

Disk quotas for user myquota1 (uid 1002):

Filesystem blocks soft hard inodes soft hard

/dev/sdb1 0 0 0 0 0 0

/dev/sda6 0 5120 10240 1 5 10

这里我们可以看到/dev/sda6对用户myquota1的空间软限额为5M,硬限额为10M,创建文件数量软限制为5硬限制为10

edquota -t

Grace period before enforcing soft limits for users:

Time units may be: days, hours, minutes, or seconds

Filesystem Block grace period Inode grace period

/dev/sdb1 7days 7days

/dev/sda6 5days 6hours

edquota -t 将打开磁盘对限额日期的宽限修改时间

可以使用天、小时、分、秒为单位来设定宽限期。默认的都为7天,在这里,/dev/sda6磁盘空间限制的宽限期为5天,而文件数量限制的宽限期只有6个小时。

6.测试

我们切换到myquota1用户先看查看自身限额情况

[myquota1@localhost disk2]$ quota

Disk quotas for user myquota1 (uid 1002):

Filesystem blocks quota limit grace files quota limit grace

/dev/sda6 0 5120 10240 1 5 10

然后我们来测试效果

[myquota1@localhost disk2]$ touch file2

[myquota1@localhost disk2]$ dd if=/dev/zero of=file2 bs=1M count=2

[myquota1@localhost disk2]$ dd if=/dev/zero of=file3 bs=1M count=2

[myquota1@localhost disk2]$ dd if=/dev/zero of=file4 bs=1M count=2

sda6: warning, user block quota exceeded.

2+0 records in

2+0 records out

2097152 bytes (2.1 MB) copied, 0.00488266 s, 430 MB/s

我们可以看到我们在创建file4时系统给出了警告,这时候我们再来看一下配额情况

[myquota1@localhost disk2]$ quota

Disk quotas for user myquota1 (uid 1002):

Filesystem blocks quota limit grace files quota limit grace

/dev/sda6 6144* 5120 10240 4days 4 5 10

#我们可以看到使用磁盘使用量已经达到了6144KB超过了软限制,而且6144还带上了*号,宽限时间为4天,我们在创建两个文件,让他文件数超过软限制,看看是不是也是这个效果

[myquota1@localhost disk2]$ touch file{5,6}

sda6: warning, user file quota exceeded.

[myquota1@localhost disk2]$ quota

Disk quotas for user myquota1 (uid 1002):

Filesystem blocks quota limit grace files quota limit grace

/dev/sda6 6144* 5120 10240 4days 6* 5 10 06:00

#我们可以看到在创建两个文件后系统同样给出了警告,inode使用数也带上了*号,宽限时间出现了为6个小时。

在目前情况下我们最多还能创建4个文件,最多还有4M空间,下面我们继续测试,继续加大使用空间。

[myquota1@localhost disk2]$ dd if=/dev/zero of=file7 bs=1M count=3

3+0 records in

3+0 records out

3145728 bytes (3.1 MB) copied, 0.00578637 s, 544 MB/s

[myquota1@localhost disk2]$ dd if=/dev/zero of=file8 bs=1M count=3

sda6: write failed, user block limit reached.

dd: error writing ‘file8’: Disk quota exceeded

2+0 records in

1+0 records out

1048576 bytes (1.0 MB) copied, 0.00451473 s, 232 MB/s

#在我们创建第二个文件的时候系统又一次进行了报警,提示已超出磁盘配额。

[myquota1@localhost disk2]$ ll

total 10272

-rw-------. 1 root root 7168 Mar 3 01:25 aquota.group

-rw-------. 1 root root 7168 Mar 3 01:25 aquota.user

-rw-rw-r--. 1 myquota1 myquota1 0 Mar 3 01:44 file1

-rw-rw-r--. 1 myquota1 myquota1 2097152 Mar 3 17:04 file2

-rw-rw-r--. 1 myquota1 myquota1 2097152 Mar 3 17:05 file3

-rw-rw-r--. 1 myquota1 myquota1 2097152 Mar 3 17:05 file4

-rw-rw-r--. 1 myquota1 myquota1 0 Mar 3 17:15 file5

-rw-rw-r--. 1 myquota1 myquota1 0 Mar 3 17:15 file6

-rw-rw-r--. 1 myquota1 myquota1 3145728 Mar 3 17:21 file7

-rw-rw-r--. 1 myquota1 myquota1 1048576 Mar 3 17:21 file8

drwx------. 2 root root 16384 Mar 3 00:57 lost+found

我们可以看到虽然file8也创建成功了但是只有1M的数据,在实际应用中如果这是个3M的数据文件而只拷贝了1M是无法使用的,这个时候我们的空间限额已经达到了最高因为我们文件数量限额还没达到所以我们还可以继续创建空文件

[myquota1@localhost disk2]$ touch file9

[myquota1@localhost disk2]$ quota

Disk quotas for user myquota1 (uid 1002):

Filesystem blocks quota limit grace files quota limit grace

/dev/sda6 10240* 5120 10240 4days 9* 5 10 05:49

我们可以看到file9也创建成功了,而这时候文件可创建数量只剩一个了,我们来试试看看能不能创建11个

[myquota1@localhost disk2]$ touch file10

[myquota1@localhost disk2]$ touch file11

sda6: write failed, user file limit reached.

touch: cannot touch ‘file11’: Disk quota exceeded

[myquota1@localhost disk2]$ ls

aquota.group file1 file2 file4 file6 file8 lost+found

aquota.user file10 file3 file5 file7 file9

我们可以看到file10创建成功了,而在创建file11时给出了警告,我们查看一下发现file11并没有创建成功

接下来我们再测试下如果到宽限时间仍然不删除会怎样。

首先我们删除几个文件让他的文件数不超过硬限制,但仍超过软限制。

[myquota1@localhost disk2]$ rm -f file{7,8,9,10}

[myquota1@localhost disk2]$ quota

Disk quotas for user myquota1 (uid 1002):

Filesystem blocks quota limit grace files quota limit grace

/dev/sda6 6144* 5120 10240 4days 6* 5 10 05:25

[myquota1@localhost disk2]$ touch test1

[myquota1@localhost disk2]$ ls

aquota.group file1 file3 file5 lost+found

aquota.user file2 file4 file6 test1

在删除几个文件后我们就又可以创建文件了,接下来我们把时间修改下,让它过了宽限时间看会变成怎样。

我们先切换到root身份对时间进行修改

[root@localhost ~]# date

Sat Mar 3 18:45:25 CST 2018

[root@localhost ~]# date -s 2018-03-04

Sun Mar 4 00:00:00 CST 2018

[root@localhost ~]# clock -w

[root@localhost ~]# su - myquota1

Last login: Sat Mar 3 18:37:37 CST 2018 on pts/0

[myquota1@localhost ~]$ cd /disk2

[myquota1@localhost disk2]$ ls

aquota.group file1 file3 file5 lost+found

aquota.user file2 file4 file6 test1

[myquota1@localhost disk2]$ quota

Disk quotas for user myquota1 (uid 1002):

Filesystem blocks quota limit grace files quota limit grace

/dev/sda6 6144* 5120 10240 4days 7* 5 10 none

[myquota1@localhost disk2]$ touch test2

sda6: write failed, user file quota exceeded too long.

touch: cannot touch ‘test2’: Disk quota exceeded

[myquota1@localhost disk2]$ ls

aquota.group file1 file3 file5 lost+found

aquota.user file2 file4 file6 test1

我们可以看到时间改完后宽限时间那里变成了none,我们这个时候已经创建了7个文件,它本来的软限制为5,硬限制为10,而我们现在创建文件却无法创建,这就是超过宽限日期后软限制就会变成硬限制,这个时候用户必须对磁盘进行清理。

[myquota1@localhost disk2]$ rm -rf file{1,2,3,4,5,6}

[myquota1@localhost disk2]$ ls

aquota.group aquota.user lost+found test1

[myquota1@localhost disk2]$ quota

Disk quotas for user myquota1 (uid 1002):

Filesystem blocks quota limit grace files quota limit grace

/dev/sda6 0 5120 10240 1 5 10

我们对磁盘进行清理后发现那些*号没有了,宽限时间也不见了。

同理对于用户组的限额设定和对用户设置的方法一样,只是dequota user 变成了edquota group而已。但针对的是用户整个组的限额,而不是单个成员。

四、quota的实用命令

测试完quota的效果,我们再来说几个quota的实用命令

1.不用edquota编辑文件,直接使用命令配置

[myquota1@localhost disk2]$ quota

Disk quotas for user myquota1 (uid 1002):

Filesystem blocks quota limit grace files quota limit grace

/dev/sda6 0 5120 10240 1 5 10

[myquota1@localhost disk2]$ exit

logout

[root@localhost ~]# setquota myquota1 20480 40960 50 100 /dev/sda6

[root@localhost ~]# quota myquota1

Disk quotas for user myquota1 (uid 1002):

Filesystem blocks quota limit grace files quota limit grace

/dev/sda6 0 20480 40960 1 50 100

setquota使用格式:

setquota user blocks限制 inode限制 文件系统

setquota myquota1 20480 40960 50 100 /dev/sda6

2.复制磁盘配额配置文件给多个用户

[root@localhost ~]# edquota -p myquota1 myquota2

[root@localhost ~]# quota myquota2

Disk quotas for user myquota2 (uid 1003): none

[root@localhost ~]# quota -v myquota2

Disk quotas for user myquota2 (uid 1003):

Filesystem blocks quota limit grace files quota limit grace

/dev/sda6 0 20480 40960 0 50 100

/dev/sdb1 0 0 0 0 0 0

复制命令为eqquota -p user1 user2 user3

把user1的磁盘限额设置复制给user2,user3.

在这里要注意一点刚复制完后用quota user2是没法查看配额情况的,我们需要加上-v参数(显示该用户在所有挂入系统的储存设备的空间限制),或者切换到该用户到限额目录下创建个文件也能使用quota看到信息了。

3.查看磁盘配额报表情况

[root@localhost ~]# repquota -a

*** Report for user quotas on device /dev/sda6

Block grace time: 5days; Inode grace time: 06:00

Block limits File limits

User used soft hard grace used soft hard grace

----------------------------------------------------------------------

root -- 20 0 0 2 0 0

myquota1 -- 0 20480 40960 1 50 100

myquota2 -- 0 20480 40960 1 50 100

*** Report for user quotas on device /dev/sdb1

Block grace time: 7days; Inode grace time: 7days

Block limits File limits

User used soft hard grace used soft hard grace

----------------------------------------------------------------------

root -- 13 0 0 2 0 0

4.关掉磁盘配额

[root@localhost ~]# quotaoff -a

[root@localhost ~]# repquota -a

*** Report for user quotas on device /dev/sda6

Block grace time: 5days; Inode grace time: 06:00

Block limits File limits

User used soft hard grace used soft hard grace

----------------------------------------------------------------------

root -- 20 0 0 2 0 0

myquota1 -- 0 20480 40960 1 50 100

myquota2 -- 0 20480 40960 1 50 100

*** Report for user quotas on device /dev/sdb1

Block grace time: 7days; Inode grace time: 7days

Block limits File limits

User used soft hard grace used soft hard grace

----------------------------------------------------------------------

root -- 13 0 0 2 0 0

quotaoff -a 是关掉所有的磁盘配额

也可以在quotaoff后跟指定分区关掉指定分区配额。

磁盘配额 linux,磁盘配额(quota)相关推荐

  1. linux+目录+配额,Linux磁盘配额管理

    最近在做基于mesos+marathon 的docker 容器云服务项目.需要限制每个容器的数据卷磁盘使用,对此作了一些调研工作. 基本说明 必要条件XFS ext4 均可支持Quota 操作 需要内 ...

  2. linux 进入其他磁盘分区,Linux磁盘分区,及磁盘的其他操作

    硬盘主要分为:IDE   SCSI  STAT IDE――适用于个人PC――/dev/hd SCSI/STAT――适用于服务器――/dev/sd 磁盘使用流程 查看磁盘――fdisk �Cl/dev/ ...

  3. linux为什么要磁盘限额,Linux磁盘限额

    Linux磁盘限额 目录 一.home迁移 二.磁盘限额 三.实施配置 一.home迁移 在已有系统之上在有许多用户且用户/home目录并非独立分区,此时/根文件系统在挂载时默认尚未配置userquo ...

  4. linux下用户和组的管理 磁盘限额,linux磁盘限额管理

    linux磁盘限额管理 1.磁盘限额的相关知识 (1)打开磁盘限额的基本条件. 要使用磁盘限额,必须注意以下几点. • 针对分区. 磁盘限额不能针对某个分区下的具体目录,它必须是针对某个分区进行的. ...

  5. linux磁盘混乱,Linux磁盘设备文件混乱源于Linux内核自身

    在Linux下往往会碰到这样的问题,磁盘的设备文件,比如/dev/sda, sdb, sdc等等在某些情况下会混乱掉,比如sda变成了sdb或者sdc变成了sdb等等,这样无形中会导致磁盘设备管理的混 ...

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

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

  7. linux保存数据超出磁盘限额,Linux磁盘限额(quota)

    这样,就在三个磁盘分区上启动了磁盘配额功能. 新建用户组,用户. 为用户分配磁盘配额容量edquota –u user1: 说明:Filesystem对应的分区,blocks是指用户在这个分区上所消耗 ...

  8. 模拟linux磁盘满,linux 磁盘满了简单处理一下

    我这边是测试虚拟机系统是CentOS7 删东西请多加考虑确定了在进行操作,linux一般来说不配置是没有回收站机制的!!!!!!! 1.查看磁盘信息 df -h 发现/centos-root空间已经使 ...

  9. php 文件写入磁盘错误,Linux磁盘读写故障的通常处理流程

    问题 使用Linux作为服务器操作系统的时候 维护少不需要重新启动的优势非常明显 但有时候会遇到莫明其妙的故障 例如数据无法写入,执行某程序报错 这个时候建议检查一下,是否是磁盘子系统的故障 例如SC ...

最新文章

  1. ubuntu 新建一个root用户
  2. 字库点阵测试程序代码
  3. uva 232 Crossword Answers
  4. [Vuejs] 关于vue-router里面的subRoutes
  5. linux下静态链接库和动态链接库
  6. Win10 64位安装SQL2000(个人版)
  7. 一次线上商城系统高并发优化,涨姿势了~
  8. 侯捷 - C++ Startup 揭密:C++ 程序的生前和死后 (二)
  9. 服务器虚拟机迁移的6个步骤,KVM 虚拟机迁移(示例代码)
  10. 【菜鸟练习】用Java实现高尔顿瓶
  11. python爬取拉勾网_使用requests爬取拉勾网python职位数据
  12. 平安性格测试题及答案_平安人寿做性格测试怎么?
  13. java海贼王_Java 学以致用--为我的海贼王统一命名
  14. 与激光雷达死磕的毫米波雷达,除了无人驾驶还有更多归宿
  15. verilog简单奇校验
  16. 中兴通讯携手CLAA合作伙伴,开创共享共建物联网新时代
  17. L2-039 清点代码库 - java
  18. 互联网人:我太太太太太太太太太太难了!
  19. Linux Alsa
  20. 找不到该项目无法删除

热门文章

  1. 关于围棋围住的最大面积问题
  2. JAVA-dispose()方法
  3. Uncaught SyntaxError: Unexpected token < in JSON at position 0 at JSON.parse (<anonymous>) a
  4. 体验了一天企业微信,你的工作以后可能离不开它
  5. ABAP 关键字:SPLIT
  6. 几维安全CEO范俊伟:对代码进行加密或能更有效应对网络攻击
  7. COOIS选择屏幕增强
  8. 乐1S 5.8(Android 6.0) 刷第三方recovery并刷入root权限
  9. html+js实现日期倒计时
  10. awstats mysql_awstats显示国家和IP