磁盘配额(quota)(代码片段)

author author     2022-10-22     121

关键词:

一、什么是磁盘配额

磁盘配额从字面意思上看就是给一个磁盘配置多少额度,而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

[[email protected] ~]# mount
/dev/sda6 on /disk2 type ext4 (rw,relatime,seclabel,data=ordered)

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

[[email protected] ~]# vim /etc/fstab
/dev/sda6       /disk2          ext4    defaults,usrquota,grpquota  0 0
#由于我们增加了用户和组的配额,所以这里我们要重新mount一次,使我们的修改生效
[[email protected] ~]# mount -o remount /disk2
[[email protected] ~]# mount
/dev/sda6 on /disk2 type ext4 (rw,relatime,seclabel,quota,usrquota,grpquota,data=ordered)

现在已经开启了对用的磁盘配额
3.生成磁盘配额数据库

[[email protected] disk2]# quotacheck -acgu
[[email protected] disk2]# ls
aquota.group  aquota.user  lost+found

这里的参数意思分别是
-a 所有分区(已支持配额)
-c 创建
-u 用户
-g 组
4.启动磁盘配额

[[email protected] disk2]# quotaon -a //启动所有分区的磁盘配额
5.编辑磁盘配额文件

[[email protected] ~]# 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用户先看查看自身限额情况

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

然后我们来测试效果

[[email protected] disk2]$ touch file2
[[email protected] disk2]$ dd if=/dev/zero of=file2 bs=1M count=2
[[email protected] disk2]$ dd if=/dev/zero of=file3 bs=1M count=2
[[email protected] 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时系统给出了警告,这时候我们再来看一下配额情况
[[email protected] 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天,我们在创建两个文件,让他文件数超过软限制,看看是不是也是这个效果
[[email protected] disk2]$ touch file5,6
sda6: warning, user file quota exceeded.
[[email protected] 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空间,下面我们继续测试,继续加大使用空间。

[[email protected] 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
[[email protected] 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
#在我们创建第二个文件的时候系统又一次进行了报警,提示已超出磁盘配额。
[[email protected] 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是无法使用的,这个时候我们的空间限额已经达到了最高因为我们文件数量限额还没达到所以我们还可以继续创建空文件

[[email protected] disk2]$ touch file9
[[email protected] 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个

[[email protected] disk2]$ touch file10
[[email protected] disk2]$ touch file11
sda6: write failed, user file limit reached.
touch: cannot touch ‘file11’: Disk quota exceeded
[[email protected] disk2]$ ls
aquota.group  file1   file2  file4  file6  file8  lost+found
aquota.user   file10  file3  file5  file7  file9

我们可以看到file10创建成功了,而在创建file11时给出了警告,我们查看一下发现file11并没有创建成功
接下来我们再测试下如果到宽限时间仍然不删除会怎样。
首先我们删除几个文件让他的文件数不超过硬限制,但仍超过软限制。

[[email protected] disk2]$ rm -f file7,8,9,10
[[email protected] 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
[[email protected] disk2]$ touch test1
[[email protected] disk2]$ ls
aquota.group  file1  file3  file5  lost+found
aquota.user   file2  file4  file6  test1

在删除几个文件后我们就又可以创建文件了,接下来我们把时间修改下,让它过了宽限时间看会变成怎样。
我们先切换到root身份对时间进行修改

[[email protected] ~]# date 
Sat Mar  3 18:45:25 CST 2018
[[email protected] ~]# date -s 2018-03-04
Sun Mar  4 00:00:00 CST 2018
[[email protected] ~]# clock -w
[[email protected] ~]# su - myquota1
Last login: Sat Mar  3 18:37:37 CST 2018 on pts/0
[[email protected] ~]$ cd /disk2
[[email protected] disk2]$ ls
aquota.group  file1  file3  file5  lost+found
aquota.user   file2  file4  file6  test1
[[email protected] 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
[[email protected] disk2]$ touch test2
sda6: write failed, user file quota exceeded too long.
touch: cannot touch ‘test2’: Disk quota exceeded
[[email protected] disk2]$ ls
aquota.group  file1  file3  file5  lost+found
aquota.user   file2  file4  file6  test1

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

[[email protected] disk2]$ rm -rf file1,2,3,4,5,6
[[email protected] disk2]$ ls
aquota.group  aquota.user  lost+found  test1
[[email protected] 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编辑文件,直接使用命令配置

[[email protected] 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       
[[email protected] disk2]$ exit
logout
[[email protected] ~]#  setquota myquota1 20480 40960 50 100 /dev/sda6
[[email protected] ~]# 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.复制磁盘配额配置文件给多个用户

[[email protected] ~]# edquota -p myquota1  myquota2
[[email protected] ~]# quota myquota2
Disk quotas for user myquota2 (uid 1003): none
[[email protected] ~]# 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.查看磁盘配额报表情况

[[email protected] ~]# 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.关掉磁盘配额

[[email protected] ~]# quotaoff -a
[[email protected] ~]# 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后跟指定分区关掉指定分区配额。

linuxcentos8(磁盘容量配额(quota))(代码片段)

LinuxCentOS8(磁盘容量配额(Quota))目录一、项目介绍二、相关概念2.1配额(Quota)的概念2.2配额(Quota)的功能作用三、任务操作任务1-quota的主要模块任务2-磁盘配额的应用任务3-实验测试一、项目... 查看详情

磁盘配额(quota)(代码片段)

一、什么是磁盘配额磁盘配额从字面意思上看就是给一个磁盘配置多少额度,而quota就是有多少限额的意思,所以总的来说就是限制用户对磁盘空间的使用量。因为Linux是多用户多任务的操作系统,许多人公用磁盘空间,举个例... 查看详情

quota磁盘配额(代码片段)

一、什么是磁盘配额磁盘配额从字面意思上看就是给一个磁盘配置多少额度,而quota就是有多少限额的意思,所以总的来说就是限制用户对磁盘空间的使用量。因为Linux是多用户多任务的操作系统,许多人公用磁盘空间,举个例... 查看详情

磁盘配额(代码片段)

磁盘配额限定用户或组对磁盘空间的使用。安装quota[[email protected]dev]#yuminstallquota-y以支持磁盘配额的方式挂载,查看[[email protected]dev]#mount-oremount,usrquota,grpquota/dev/sdb3[[email protected]dev]#mount|grepusrquot 查看详情

quota磁盘配额

quota磁盘配额(user)1.开启配额功能:[[email protected]/]#mount-ousrquota/dev/sda5/mnt/2.设置用户配额:[[email protected]/]#edquota-urobin/mnt3.查询配额的使用情况[[email protected]/]#repquota-u/mnt4.启动配额:[[email 查看详情

磁盘配额quota

磁盘配额1启用磁盘配额首先创建新的分区/dev/sd5,并创建文件系统。[[email protected]~]#mkfs.ext4/dev/sda5由于xfs不磁盘配额能成功,这里使用ext4.然后把/dev/sda5分区挂载到/home[[email protected]~]#mount/dev/sda5/home[[email protected]~]#blki 查看详情

磁盘配额-quota

本文内容实现从lvm创建文件系统到实现磁盘配额目的。一、LVM利用两块20G的硬盘Lvm的管理命令功能物理卷管理卷组管理逻辑卷管理Scan扫描pvscanvgscanlvscanCreate建立pvcreatevgcreatelvcreateDisplay显示pvdisplayvgdisplaylvdisplayRemove删除pvremovevgrem... 查看详情

高级文件系统管理磁盘配额,raid

磁盘配额    quota命令显示磁盘使用情况和限额。quota命令报告文件中列出的所有文件系统的限额。如果quota命令以非零状态退出,一个或多个文件系统超过限额。1、ext系列文件系统的quota的步骤方式1.1、开启quota(e... 查看详情

基于lvm逻辑卷下的磁盘配额操作(代码片段)

我们继续接上篇进行的LVM逻辑卷进行接下来的磁盘配额的学习本章操作内容接上篇lvm逻辑卷,如果没有看过上篇博客操作的小伙伴,可在操作完逻辑卷的内容时候再继续跟着本篇内容进行磁盘配额的操作!磁盘配额概述:1.需要... 查看详情

磁盘配额(quota)的应用与实践

...该适当限制硬盘的空间给用户,以妥善分配系统资源,使磁盘的容量使用较为公平;举例来说,我们用户的默认主文件夹都是在/home下 查看详情

quota就是在redhatlinux下实现磁盘配额的工具

...新的版本请关注RedHat的官方站点安装好软件包后就可以对磁盘配额进行配置了    配置系统的磁盘配额支持  首先磁盘配额是区域性的我们可以决定哪块分区进行磁盘配额哪块分区不用  (自然也就不用配置了)一般而... 查看详情

linux磁盘限额配置:quota命令

LINUX下也有类似WINDOWSNTFS所用的磁盘限额,用的是quota来实现通过rpm-qquota确定是否已安装用quota只能对patation做限额,要做到针对某个目录来做只能靠ln-s来实现了。所以一开始就规划好使用还是比较重要的。举例,给用户yuyii增加... 查看详情

quota和lvm

...nux是多用户任务的操作系统,所以就会出现多个用户共享磁盘的情况,如何解决不同用户合理使用磁盘的问题,就可以通过磁盘配额来解决。  针对用户,设置用户的磁盘配置。  相关知识点     ... 查看详情

磁盘容量配额(转)

...的硬盘空间,一旦超出预算就不再允许他们使用。quota的磁盘配额可以限制用户的硬盘可用空间或最大创建文件数量,并且还有软/硬限制的区别:软限制 查看详情

磁盘配额限制

磁盘配额的限制类型磁盘容量文件数量思路以支持配额功能的方式挂载文件系统 mount-o vi/etc/fstab检测磁盘配额并生成配额文件 quotacheck-augcvls-l编辑用户和组账号的配额设置edquota-u edquota-g启动文件系统的磁盘配额功... 查看详情

ext4文件系统quota

quota配额什么是磁盘配额?限制磁盘资源的使用。 限制原因就是因为资源不是无限的。应用场景:1.网络存储空间有限网盘2.邮件服务器3.公司的文件共享服务器能限制谁?1.限制普通用户2.限制用户组注意:不能限制root用户root... 查看详情

【xfs&quota】xfs文件系统中quota的使用

...help#yuminfoxfsprogs#man xfs_quota如果用户需要使用大容量的磁盘空间,需要使用volume.Quota主要来限制容器的rootfs, 这个rootfs一般是在host的磁盘会和别的容器共享,所以需要对它做限制。容器实战高手课/在实战中深入理解容器技... 查看详情

磁盘配额

磁盘配额在Linux系统中一般都是多用户同时进行,多个用户使用同一块磁盘会不会发生一个很尴尬的事情。用户A大量使用磁盘空间,等到B使用的时候没怎么用就满了。这不就尴尬了,对于B用户来说也很不公平。那么今天就说说... 查看详情