liunx磁盘配额管理

作为运维人员,很多时候我们需要对用户使用磁盘的空间进行限定,比如用户家目录的空间使用限制,邮箱空间使用限制,共享磁盘空间的使用限制,甚至说云盘空间,都需要给每个用户做相应的空间使用限制。否则,服务器磁盘空间就无法进行管理了。要想使用配额首先必须明白两个问题,第一,就是系统内核必须支持配额功能;第二,就是配额只能作用于磁盘分区上;所以我们要想使用配额,就必须先行准备这两大条件。

一、环境检查

  第一步:检查当前系统是否支持配额功能:

grep CONFIG_QUOTA /boot/config-[kernel-version]

如果结果如下:

CONFIG_QUOTA=y

CONFIG_QUOTACTL=y

    恭喜你!当前的内核支持配额功用!如果出现的不是这个结果的话那必须对内核进行重新编译了,让内核启用配额功能

示例代码:

[[email protected] boot]# grep CONFIG_QUOTA /boot/config-3.10.0-327.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

[[email protected] boot]#

  第二步:准备需要启用配额功能的磁盘分区

如果是想对用户的家目录做配额,就必须对用户家目录做单独分区,如果安装系统的时候没有做单独分区,可以重建分区,迁移家目录(具体操作在我的上一篇博文中有详解)

如果想对用户的邮箱启用配额,就必须对用户存储邮件的目录做单独分区,共享磁盘以及其它使用场景同样

环境展示:

[[email protected] home]# lsblk

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

sda      8:0    0   20G  0 disk

├─sda1   8:1    0  200M  0 part /boot

├─sda2   8:2    0    5G  0 part /

└─sda3   8:3    0    5G  0 part /test

sdb      8:16   0   20G  0 disk

└─sdb1   8:17   0   20G  0 part /home

sr0     11:0    1  7.2G  0 rom

[[email protected] home]#

我的家目录目前已经是独立硬盘独立分区,所以我就直接用家目录分区开始演示配额操作了

二、配置用户家目录分区的磁盘配额功能

第一步:修改文件系统自动挂载配置文件/etc/fstab,修改如下一行,在默认挂载选项后面添加usrquota,grpquota两个挂载选项(多选项之间用,分隔开),启用用户家目录分区的磁盘配额功能

/dev/sdb1 /home ext4 defaults,usrquota,grpquota 0 0

第二步:重新挂载一下家目录的独立分区,让刚刚配置的配额功能启用,免去了重启生效的麻烦(曾经看过一些教程,都写的是配置完重启,试想一下,实际生产环境中的服务器允许你随便重启吗)

[[email protected] test]# mount -o remount /dev/sdb1

[[email protected] test]# mount

/dev/sda2 on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

/dev/sda3 on /test type ext4 (rw,relatime,seclabel,data=ordered)

/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

tmpfs on /run/user/42 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=186872k,mode=700,uid=42,gid=42)

tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=186872k,mode=700)

/etc/auto.misc on /misc type autofs (rw,relatime,fd=6,pgrp=8821,timeout=300,minproto=5,maxproto=5,indirect)

-hosts on /net type autofs (rw,relatime,fd=12,pgrp=8821,timeout=300,minproto=5,maxproto=5,indirect)

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

[[email protected] test]#

当mount返回值中sdb1分区的挂载选项中有quota,usrquota,grpquota三个选项时,说明配额功能已经生效

quotacheck:创建磁盘配额配置文件

quotacheck [options] filesystem

-v:显示扫描过程;

-u:针对扫描情况与目录的使用情况建立aquota.user配置文件

-g:针对用户扫描文件与使用情况建立aquota.group配置文件

-a:扫描任何在/etc/mtab中开启quota的文档系统

第三步:使用quotacheck生成aquota.user,aquota.group两个配置文件

[[email protected] test]# quotacheck -vug /dev/sdb1

quotacheck: Your kernel probably supports journaled quota but you are not using it. Consider switching to journaled quota to avoid running quotacheck after an unclean shutdown.

quotacheck: Scanning /dev/sdb1 [/home] done

quotacheck: Cannot stat old user quota file /home/aquota.user: No such file or directory. Usage will not be subtracted.

quotacheck: Cannot stat old group quota file /home/aquota.group: No such file or directory. Usage will not be subtracted.

quotacheck: Cannot stat old user quota file /home/aquota.user: No such file or directory. Usage will not be subtracted.

quotacheck: Cannot stat old group quota file /home/aquota.group: No such file or directory. Usage will not be subtracted.

quotacheck: Checked 30 directories and 21 files

quotacheck: Old file not found.

quotacheck: Old file not found.

以上报错不必理会,我的sdb1分区是ext4的文件系统,但挂载选项中并没有启用日志功能,这是第一处报错内容,下面是在将要启用配额的分区的一级目录下没有找到aquota.user和aquota.group这两个配置文件,从来都没启用过配额,当然找不到了,所以这些报错,不会影响我们最终效果。只要运行quotacheck命令后,能在sdb1目录下生成这aquota.user和aquota.group这两个配置文件,就可以继续配置

[[email protected] test]# ll /home

total 44

-rw-------. 1 root   root  7168 Aug 27 22:31 aquota.group

-rw-------. 1 root   root  7168 Aug 27 22:31 aquota.user

drwx------. 5 hacker test  4096 Aug 27 19:42 hacker

drwx------. 2 root   root 16384 Aug 27 20:03 lost+found

drwx------. 5 share  test  4096 Aug 27 19:43 share

drwx------. 6 test   test  4096 Aug 26 15:31 test

[[email protected] test]#

第四步:使用edquota命令设置具体用户的具体配额参数

edquota:设定磁盘配额具体参数

-u: 编辑user的quota

-g: 编辑group的quota

-t: 设定超过限定的保留时间(用户和组都有效)

-p: 复制指定用户的quota资料到另一用户上

-T:修改指定用户或组的宽限时间

1、设定test和hacker用户使用空间限定模式

[[email protected] test]# edquota -u test

Disk quotas for user test (uid 1000):

Filesystem           blocks       soft       hard     inodes     soft     hard

/dev/sdb1                88     409600     512000         22        0        0

[[email protected] test]#

选项释义:

blocks :用户test的家目录(在/dev/sdb1)已使用的空间,单位:KB (系统生成)

soft :soft limit 磁盘空间警告值 单位:KB (需要设定)——超过该值发警告消息

hard :hard limit 磁盘空间限定值 单位:KB (需要设定)——超过该值拒绝写入数据

inodes :用户test的家目录已使用的节点数,由于inode控制不方便,所以不要修改它

soft :soft limit 节点数警告值 (根据需要修改)——超过该值发警告消息

hard :hard limit 节点数限定值 (根据需要修改)——超过该值拒绝新建文件

soft limit :软限制,在宽限期(grace period)之内,使用空间可以超过soft limit,但必须在宽限期之内将使用容量降低到soft limit以下

hard limit :硬限制,当用户使用空间超过hard limit时,将无法再写入数据

grace period:宽限期,使用容量超过soft limit,宽限时间自动启动,使用者将容量降低到soft limit以下,宽限时间自动关闭,假如使用者没有在宽限时间内将容量降低到soft limit,那么他将无法再写入数据,即使使用容量没有到达hard limit

复制test用户的配额参数给hacker

[[email protected] test]# edquota -p test hacker

[[email protected] test]# edquota -u hacker

Disk quotas for user hacker (uid 1001):

Filesystem           blocks       soft       hard     inodes     soft     hard

/dev/sdb1                56     409600     512000         14        0        0

[[email protected] test]#

2、设定share用户使用节点数限定模式

[[email protected] test]# edquota -u share

Disk quotas for user share (uid 1002):

Filesystem            blocks       soft       hard     inodes     soft     hard

/dev/sdb1                 52          0          0         13       18       20

[[email protected] test

3、对用户组设定磁盘配额

有时候对单个用户设备磁盘配额不好控制,这时就可以把同一个部门的用户放在同一个组里面,然后对组进行额磁盘配额

[[email protected] test]# edquota -g test

Disk quotas for group test (gid 1000):

Filesystem         blocks       soft       hard     inodes     soft     hard

/dev/sdb1             204    4096000    5120000         56        0        0

和用户配置没什么区别,只是作用对象是组而已,至于每个用户能用多少空间,只要所有的用户使用的空间总计不大于hard的值时,所剩余的空间任何用户都可以使用。至于每个组需要分配多大的硬盘空间,你可以直接去咨询一下他们的部门领导。这样以来就可以很好的解决这个用户磁盘空间管理的问题了

3、设定超出软限制的保留期限(用户组的默认值都是7天)

注意:所以超过软限制的部分(space、inode都一样有效),超过宽限时间都会被自动删除,所以设置一个合理的宽限期限也是很有必须。以免造成用户不必须的数据损失

[[email protected] test]# 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

三、验证配额使用效果

第一步、用户配额参数高额完毕,正式开启home目录独立分区的磁盘配额功能

[[email protected] test]# quotaon -vug /dev/sdb1

quotaon: using /home/aquota.group on /dev/sdb1 [/home]: Device or resource busy

quotaon: using /home/aquota.user on /dev/sdb1 [/home]: Device or resource busy

[[email protected] test

有报错,不用担心,因为home目录是sdb1分区的挂载点,所以会提示设备资源繁忙

  第二步、登录进做过配额的用户的家目录下,测试配额警告与限定

1、首先测试使用空间限定模式的情况

[[email protected] test]# su - test

Last login: Sat Aug 27 20:32:53 CST 2016 on pts/0

[[email protected] ~]$ du -h

8.0K./.cache/abrt

12K./.cache

16K./.local/share/lftp

20K./.local/share

24K./.local

4.0K./.config/lftp

4.0K./.config/abrt

12K./.config

4.0K./.mozilla/extensions

4.0K./.mozilla/plugins

12K./.mozilla

88K.

[[email protected] ~]$ dd if=/dev/zero of=test1 bs=1M count=399

399+0 records in

399+0 records out

418381824 bytes (418 MB) copied, 0.75313 s, 556 MB/s

[[email protected] ~]$ du -sh

400M.

[[email protected] ~]$

没有超过警告值,所以没有发出警告消息

[[email protected] ~]$ dd if=/dev/zero of=test2 bs=1M count=1

sdb1: warning, user block quota exceeded.

1+0 records in

1+0 records out

1048576 bytes (1.0 MB) copied, 0.0110259 s, 95.1 MB/s

[[email protected] ~]$

在警告值400M的基础上多出了1M,警告消息立即触发

[[email protected] ~]$ du -sh

401M.

[[email protected] ~]$ dd if=/dev/zero of=test3 bs=1M count=100

sdb1: write failed, user block limit reached.

dd: error writing ‘test3’: Disk quota exceeded

100+0 records in

99+0 records out

104767488 bytes (105 MB) copied, 0.414018 s, 253 MB/s

[[email protected] ~]$ du -h

8.0K./.cache/abrt

12K./.cache

16K./.local/share/lftp

20K./.local/share

24K./.local

4.0K./.config/lftp

4.0K./.config/abrt

12K./.config

4.0K./.mozilla/extensions

4.0K./.mozilla/plugins

12K./.mozilla

500M.

[[email protected] ~]$ dd if=/dev/zero of=test4 bs=1M count=1

dd: error writing ‘test4’: Disk quota exceeded

1+0 records in

0+0 records out

0 bytes (0 B) copied, 0.00184169 s, 0.0 kB/s

[[email protected] ~]$

忽略警告,继续写入数据,只要没有超过限定值500M,是可以继续写入的,一但达到限定值,就无法写入超出限定值的数据了

2、测试使用节点数限定模式的情况

[[email protected] ~]$ quota -su share

Disk quotas for user share (uid 1002):

Filesystem   space   quota   limit   grace   files   quota   limit   grace

/dev/sdb1     52K      0K      0K              13      18      20

[[email protected] ~]$

查看磁盘配额使用情况的选项释义:

space:用户已使用的磁盘空间

quota:soft limit(软限制)用户设定的磁盘空间警告值

limit:hard limit(硬限制)用户设定的磁盘空间限定值

grace:grace period磁盘空间超出警告部分的保留天数(默认7天)

files:用户已创建的节点数

quota:soft limit(软限制)用户设定的节点数的警告值

limit:hard limit(硬限制)用户设定的节点数的限定值

grace:grace period节点数超出警告部分的保留天数(默认7天)

[[email protected] ~]$ touch file{1..5}

[[email protected] ~]$ ll

total 0

-rw-r--r--. 1 share test 0 Aug 28 12:40 file1

-rw-r--r--. 1 share test 0 Aug 28 12:40 file2

-rw-r--r--. 1 share test 0 Aug 28 12:40 file3

-rw-r--r--. 1 share test 0 Aug 28 12:40 file4

-rw-r--r--. 1 share test 0 Aug 28 12:40 file5

新建了5个文件,也即增加了5个节点,还没有超过Inodes的警告值18,所以没有发出警告信息

[[email protected] ~]$ touch file6

sdb1: warning, user file quota exceeded.

[[email protected] ~]$ ll

total 0

-rw-r--r--. 1 share test 0 Aug 28 12:40 file1

-rw-r--r--. 1 share test 0 Aug 28 12:40 file2

-rw-r--r--. 1 share test 0 Aug 28 12:40 file3

-rw-r--r--. 1 share test 0 Aug 28 12:40 file4

-rw-r--r--. 1 share test 0 Aug 28 12:40 file5

-rw-r--r--. 1 share test 0 Aug 28 12:41 file6

[[email protected] ~]$ quota -su share

Disk quotas for user share (uid 1002):

Filesystem   space   quota   limit   grace   files   quota   limit   grace

/dev/sdb1     52K      0K      0K              19*     18      20   6days

[[email protected] ~]$

又增加了一个节点,刚好超过了inode的警告值18,立即触发了警告消息

[[email protected] ~]$ touch file{7..8}

sdb1: write failed, user file limit reached.

touch: cannot touch ‘file8’: Disk quota exceeded

[[email protected] ~]$ ll

total 0

-rw-r--r--. 1 share test 0 Aug 28 12:40 file1

-rw-r--r--. 1 share test 0 Aug 28 12:40 file2

-rw-r--r--. 1 share test 0 Aug 28 12:40 file3

-rw-r--r--. 1 share test 0 Aug 28 12:40 file4

-rw-r--r--. 1 share test 0 Aug 28 12:40 file5

-rw-r--r--. 1 share test 0 Aug 28 12:44 file6

-rw-r--r--. 1 share test 0 Aug 28 12:58 file7

[[email protected] ~]$ quota -su share

Disk quotas for user share (uid 1002):

Filesystem   space   quota   limit   grace   files   quota   limit   grace

/dev/sdb1     52K      0K      0K              20*     18      20   6days

[[email protected] ~]$

    忽略警告,继续添加节点,只要没有超过Inode限定值20,是可以继续添加的,一但超过Inode限定值,就无法继续增加节点了(等同于无法创建文件了)

3、验证节点数超出配额,能否使用磁盘空间

[[email protected] ~]$ echo test >> file1

[[email protected] ~]$ cat file1

test

[[email protected] ~]$

Inode不能再增加了,但空间使用没有限制,所以还可以使用硬盘空间(增加原有文件的内容

四、查询磁盘配额使用情况

  quota [options] username|groupname

-u:查询用户的配额使用详情

-g:查询用户组的配额使用详情

-q:简洁方式显示查询信息

-v:显示详细查询信息

-s:显示单位换算后的结果

1、查询用户的磁盘配额使用详情

[[email protected] test]# quota -u test share

Disk quotas for user test (uid 1000):

Filesystem  blocks   quota   limit   grace   files   quota   limit   grace

/dev/sdb1      88  409600  512000              22       0       0

Disk quotas for user share (uid 1002):

Filesystem  blocks   quota   limit   grace   files   quota   limit   grace

/dev/sdb1      60       0       0              20*     18      20   6days

[[email protected] test]#

2、查询用户组的磁盘配额使用详情

[[email protected] test]# quota -g test

Disk quotas for group test (gid 1000):

Filesystem  blocks   quota   limit   grace   files   quota   limit   grace

/dev/sdb1     204  4096000 5120000              56       0       0

[[email protected] test]#

五、关闭磁盘配额功能

1、关闭单个磁盘的磁盘配额

quotaoff /dev/sd#

关闭所有开启的磁盘配额的分区

quotaoff -a

2、如果不打算再次启用磁盘配额功能,可以将配置文件一并删除

rm -rf /mount_point/aquota.*

3、最后删除/etc/fstab中的自动挂载选项中的(usrquota,grpquota)两项即可

关于磁盘配额的问题,就给大家分享到这里,不足之处,还望高人指点。

时间: 2024-10-06 17:39:15

liunx磁盘配额管理的相关文章

quota - linux磁盘配额管理

磁盘管理系列 linux磁盘管理系列一:磁盘配额管理   http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_040_quota.html linux磁盘管理系列二:软RAID的实现  http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_041_raid.html linux磁盘管理系列三:LVM的使用        http://www.cnblogs.com/zhaojiedi

openstack cinder - 磁盘配额管理

磁盘配额由 Swift 1.8 (OpenStack Grizzly) 管理 Container Quotas: Limits the total size (in bytes) or number of objects that can be stored in a single container.Account Quotas: Limits the total size (in bytes) that a user has available in the Object Storage s

linux中磁盘配额管理

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

Linux磁盘配额管理

▲为什么要使用磁盘配额quota? ????在linux系统中,由于是多人多任务的环境,所以会有多人共同使用一个硬盘空间的情况.然而系统资源是有限的,因此管理员应该适当的开放硬盘的权限给使用者,以妥善的分配系统资源 ? 磁盘配额程序对硬盘配额的限制项目: soft:软限制,也称最低容量限制.在宽限时间之内,使用者的容量可以超过最低容量限制.但必须在宽限时间之内将磁盘容量降低到最低容量的限制之下 hard:硬限制,也称最高容量限制.是绝对不能超过的容量 soft到hard之间的容量就是宽限容量 宽

磁盘配额管理

步骤: 新建分区,并格式化. 以支持配额功能的方式挂载文件系统 检测磁盘配额并生成配置文件 编辑用户和组账号的配额设置 启动文件系统的磁盘配额功能 验证磁盘配额功能 查看用户或分区的配额使用情况 实验过程: 1.新建分区,并格式化. 2.以支持配额功能的方式挂载文件系统 3.检测磁盘配额并生成配置文件 4.编辑用户和组账号的配额设置 5.启动文件系统的磁盘配额功能 6.验证磁盘配额功能 7.查看用户或分区的配额使用情况 总结:quota配额对组的设置限定为基本组,不能为附加组.

【Red Hat linux】quota软件磁盘配额管理

磁盘配额介绍 quota软件设置的磁盘配额功能,只在指定的文件系统(分区)有效,磁盘配额的限制对象为系统中指定的用户账号.组账号进行限制. 磁盘配额的限制类型分为: 磁盘容量:限制用户能够使用的磁盘数据块大小,也就是限制磁盘空间的大小,默认单位为KB. 文件数量:限制用户能够拥有的文件个数,在linux中每一个文件都有一个对应的数字标记,称为i节点            号,这个编号在同一个文件系统内是唯一的. 磁盘配额的限制方法: 软限制:指在固定期限内暂时允许这个用户超过这个限制,但是系统会

Linux入门之磁盘管理(6)磁盘配额

在linux中使用向磁盘中存入数据时,如果有多个用户对同个磁盘进行操作,其中一个用户放了很大数据的文件导致硬盘容量用光,那么其他用户将无法再存入数据,这时就需要对每个用户进行存入数据大小的限制,linux中提供了一种磁盘配额的功能来实现. 初始化: 添加分区挂载选项:usrquota.grpquota 初始化数据库:quotacheck 命令 使用命令 开启或取消配额:quotaon.quotaoff 直接编译配额:edquota  [username] 案例说明: 创建配额数据库 #/home

Linux怎么创建逻辑卷和管理磁盘配额

一.什么是LVM逻辑卷LVM是Linux操作系统中对磁盘分区进行管理的一种逻辑机制,建立在硬盘和分区之上,文件系统之下的一个逻辑层.它能够在保持现有数据不必那的情况下动态调整磁盘容量,从而增强磁盘管理的灵活性.想要建立逻辑卷的过程如下:首先,将普通分区或整个硬盘创建为物理卷:然后,将物理上比较分散的各物理卷的存储空间组成一个逻辑整体,即卷组:最后,基于卷组这个整体,分割出不同的数据存储空间,形成逻辑卷.逻辑卷才是最终用户可以格式化并挂载使用的存储单位.如下图所示: 二.LVM的管理命令LVM 管

Linux中如何针对用户及组设置磁盘配额

在centos系统中,不同的文件系统使用不同磁盘配额管理工具.例如,xfs文件系统通过 xfs_quota 工具进行管理:EXT3/4 文件系统通过 quota 工具进行管理,这里我们使用的是xfs文件系统.所以使用 xfs_quota 管理工具. 除了内核和 xfs_quota 软件的支持以外,指定的分区必须已经挂载且支持磁盘配额功能.注意:xfs文件系统只有在首次挂载时才启动磁盘限额功能,下面为设置磁盘配额的具体过程: 下面开始设置配额: 其中需要限制什么就写入限制字段即可,(0表示无限制)