centos用户磁盘使用配额

简介:

 磁盘配额是对每个用户可以使用的磁盘空间进行限制,限制每个用户可以使用的磁盘空间的大小。磁盘配额的设定对象是能够实施读写操作的块设备,而且必须要有正确的文件系统。磁盘配额可以限制用户和组的访问行为,比如为指定用户限制磁盘使用量,通过磁盘空间进行限制(一个block的限制,代表1KB存储空间)或者通过inode进行限制。也可以直接通过组的方式来限制指定组中所有成员的磁盘使用量的总和。

    在进行磁盘配额的限制的时候可以有两种方式,第一种比较人性化,叫做soft limit——软限制,这种限制是当用户的磁盘使用量达到软配额限制,将会启动宽限期倒计时;在倒计时归0之前,用户可以正常使用剩余的配额量,但一旦倒计时归0,用户将不能继续使用磁盘空间,除非将数据进行清理,低于软限制,而后可以继续使用磁盘空间。也就是说当一个用户使用的磁盘空间达到了限制的上限之后,先进行提醒,如果一段时间之后还是没有改变,再对其进行处理。与此相对的就是 hard limit——硬限制了,这种限制是用户所能够使用的磁盘空间的真正上限,一旦达到这个上限了,不再提醒,直接对用户进行处理,处理的方法可以是关闭用户使用磁盘的权利。一般来讲,软限制要比硬限制的数值要小一些,比如软限制可以是90M,硬限制可以是120M。一般在一个系统中软、硬限制都会存在,也就是先对用户进行提醒,用户可以继续使用,但是用户不能达到硬限制。 在Linux中默认的宽限期为7天,当一个用户达到了软限制,还能够在这7天中继续使用磁盘,直到到了7天这个期限之后,就会强制的对用户进行处理。

    如果想要让分区或卷能够支持磁盘配额的设定,需要单独的挂载选项,也就是在挂载的时候加上usrquota和grpquota这两个选项


    首先建立一个能够挂载的磁盘,比如在我的系统中有磁盘/dev/sdc,在这个磁盘中使用fdisk /dev/sdc 命令来建立一个 /dev/sdc1 磁盘:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@localhost ~] # fdisk /dev/sdc
欢迎使用  fdisk  (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x9de7a864 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition  type :
    p   primary (0 primary, 0 extended, 4  free )
    e   extended
Select (default p): 
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re- read  partition table.
正在同步磁盘。
[root@localhost ~] #


在建立之后将其进行格式化,装上ext4文件系统:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@localhost ~] # mkfs.ext4 /dev/sdc1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS  type : Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242624 blocks
262131 blocks (5.00%) reserved  for  the super user
第一个数据块=0
Maximum filesystem blocks=2153775104
160 block  groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
4096000
Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

然后建立一个挂载点:

1
[root@localhost ~] # mkdir /tmp/sdc


    在建立之后就可以将刚才的磁盘挂载到这个挂载点上,但是在这里需要注意的是必须加上usrquota和grpquota选项才能使用用户配额,格式如下:

1
~] # mount -o usrquota,grpquota DEVICE MOUNT_POINT

或者在/etc/fstab文件中写入以下内容:

1
DEVICE MOUNT_POINT FSTYPE defaults,usrquota,grpquota 0 0


举例如下:

1
[root@localhost ~] # mount -o usrquota,grpquota /dev/sdc1 /tmp/sdc/

    此时使用mount命令查看挂载的详细内容就会发现多了/dev/sdc1的挂载信息,并且有了usrquota和grpquota选项:    

1
2
3
[root@localhost ~] # mount | grep "/sdc1"
/dev/sdc1  on  /tmp/sdc  type  ext4 (rw,relatime,seclabel, quota ,usrquota,grpquota,data=ordered)
[root@localhost ~] #


    在进行了以上的挂载操作之后就可以在这块磁盘上进行用户的配额管理了。进行配额管理使用需要两个重要的文件,一个是aquota.group,这个文件是为了对组进行配额;另一个是aquota.user,这个文件是为了对用户进行配额。在一个磁盘新挂载的之后是没有这两个文件的,需要使用下面这个命令来进行创建:

quotacheck命令:

quotacheck  -  scan  a filesystem for disk usage, create, check and repair quota files

选项:

-v, --verbose:显示整个操作过程的详细信息

-u, --user:创建,检测和修复用户配额文件

-g, --group:创建,检测和修复组配额文件

-c, --create-files:经过检测,如果没有用户配额文件和或组配额文件,就安装用户给定的选项来进行文件的创建;

-a, --all:所有的在/etc/fstab文件中包含了与配额有关的挂载选项的设备上,是否有对应选项的配额文件;


    在使用了这个命令之后就会产生两个文件:

1
2
3
4
[root@localhost ~] # quotacheck -u -g /tmp/sdc/
[root@localhost ~] # ls /tmp/sdc/
aquota.group  aquota.user  lost+found
[root@localhost ~] #


    这两个文件分别有自己的功能,当然如果只是需要对用户进行配额,则不需要aquota.group这个文件,反过来也是,在使用的时候根据自己的需要来进行命令的使用。

    在这两个文件创建完毕了之后,就可以对用户或组进行磁盘配额了,使用的命令是:

edquota

-u, --user:编写用户配额,默认的功能;

-g, --group:编写组配额,不推荐使用;

-t, --edit-period:设置超出软限制的宽限期;默认7天,可以选择以秒,分钟,小时,天等时间单位;


    在使用这个命令时,比如为一个用户“test”的配额进行限制:

1
[root@localhost ~] # edquota -u test

    在这条命令执行之后就会进入vim的界面,我们可以在这个界面中对用户的配额进行修改:

1
2
3
4
5
6
Disk quotas  for  user  test  (uid 1006):
Filesystem                   blocks       soft       hard     inodes     soft     hard
/dev/sdc1                         0         0         0        0        0        0
~                                                                                                                                                                          
~                                                                                                                                                                          
~

                                                                                                                                         

    在这个vim界面中我们可以看到能够修改的选项有块数(文件的大小,单位是KB)的软限制和硬限制还有inode的软限制和硬限制,在这里我对块数的软限制和硬限制进行修改,修改的方法是直接对数值进行修改,然后保存这个文件即可:

1
2
3
4
5
6
Disk quotas  for  user  test  (uid 1006):
Filesystem                   blocks       soft       hard     inodes     soft     hard
/dev/sdc1                        0       1000       2000        0        0        0
~                                                                                                    
~                                                                                                    
~

 

   在进行了修改保存后,必须使用以下命令来使配额功能生效或失效:

        quotaon(是配额功能生效), quotaoff(是配额功能失效)

    quotaon, quotaoff - turn filesystem quotas on and off


第一种用法是不指定磁盘:

1
2
3
4
[root@localhost ~] # quotaon -avug
/dev/sdc1  [ /tmp/sdc ]: group quotas turned on
/dev/sdc1  [ /tmp/sdc ]: user quotas turned on
[root@localhost ~] #
1
2
3
4
[root@localhost ~] # quotaoff -avug
/dev/sdc1  [ /tmp/sdc ]: group quotas turned off
/dev/sdc1  [ /tmp/sdc ]: user quotas turned off
[root@localhost ~] #

    或者直接指定磁盘:

1
quotaon|quotaoff  /dev/sdb1


查看配额的使用情况

quota:显示用户的磁盘配额,后头要跟上用户的名称

quota - display disk usage and limits

1
2
3
4
5
[root@localhost sdc] # quota test
Disk quotas  for  user  test  (uid 1006): 
      Filesystem  blocks    quota    limit   grace   files    quota    limit   grace
       /dev/sdc1     2000*   1000    2000   6days       2       0       0        
[root@localhost sdc] #



在这个例子中,我将块数的软限制改为1M,硬限制改为2M,在保存之后将当前用户切换到test,之后可以使用这个用户通过dd命令建立一个1M的文件(在创建之前首先要确保这个用户对这个文件拥有写入权限,如果没有要赋予):

1
2
3
4
[ test @localhost sdc]$  dd  if = /dev/zero  bs=1024 count=2000 of= /tmp/sdc/FILE1_2M
记录了2000+0 的读入
记录了2000+0 的写出
2048000字节(2.0 MB)已复制,0.00675606 秒,303 MB/秒


此时在/tmp/sdc文件中test用户使用的磁盘空间就占去了2M的空间,如果再次使用这个命令就会报错:

1
2
3
4
5
6
7
[ test @localhost sdc]$  dd  if = /dev/zero  bs=1024 count=2000 of= /tmp/sdc/FILE2_2M
sdc1: write failed, user block limit reached.
dd : 写入 "/tmp/sdc/FILE2_2M"  出错: 超出磁盘限额
记录了1+0 的读入
记录了0+0 的写出
0字节(0 B)已复制,0.000285576 秒,0.0 kB/秒
[ test @localhost sdc]$



repquota:查看磁盘配额的使用情况,只有root用户可以使用

repquota - summarize quotas for a filesystem

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@localhost sdc] # repquota -avug
*** Report  for  user quotas on device  /dev/sdc1
Block grace  time : 7days; Inode grace  time : 7days
                         Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --      20       0      0               2    0     0       
test       +-     2000    1000    2000  6days      2    0     0       
Statistics:
Total blocks: 7
Data blocks: 1
Entries: 2
Used average: 2.000000
*** Report  for  group quotas on device  /dev/sdc1
Block grace  time : 7days; Inode grace  time : 7days
                         Block limits                File limits
Group           used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --    1020       0      0            3    0    0       
test       --    2000      0      0            2    0    0       
Statistics:
Total blocks: 7
Data blocks: 1
Entries: 2
Used average: 2.000000
[root@localhost sdc] #

    注意:在使用磁盘配额的时候,无论进行怎样的操作, root都不受磁盘配额限制,最多只能对root用户进行提醒,所以root的权限是非常大的,在没有必要的时候尽量不要使用root用户进行登陆。















本文转自正经的青年51CTO博客,原文链接: http://blog.51cto.com/11142243/1940587  ,如需转载请自行联系原作者




相关文章
|
Linux
CentOS卸载LVM磁盘的方法
CentOS卸载LVM磁盘的方法
213 0
|
Linux
CentOS7下使用growpart工具进行磁盘热扩容
CentOS7下使用growpart工具进行磁盘热扩容
935 0
CentOS7下使用growpart工具进行磁盘热扩容
|
4月前
|
存储 监控 Linux
【一键解锁神秘力量!】CentOS 7 磁盘分区与挂载终极指南 —— 从零到英雄的磁盘管理实战秘籍!
【8月更文挑战第9天】随着业务扩展和技术进步,服务器硬盘容量需求增加。本文通过实例介绍如何在CentOS 7中管理大容量硬盘(如1TB)。首先确认未使用的硬盘(如`/dev/sdb`),然后使用`fdisk`创建分区(一个200GB的日志分区和一个剩余空间的用户文件分区)。接着使用`mkfs.ext4`格式化分区,并创建挂载点(如`/mnt/log`和`/mnt/userfiles`)。最后,通过修改`/etc/fstab`实现分区的永久挂载。注意事项包括备份数据、合理规划分区以及定期监控磁盘使用情况等。这些步骤有助于高效管理和利用磁盘空间。
399 1
|
4月前
|
Linux
阿里云CentOS数据盘挂载(磁盘扩容)
阿里云CentOS数据盘挂载(磁盘扩容)
259 0
|
7月前
|
Linux
centos7实现磁盘挂载,解挂,开机自动挂载,解决挂载文件覆盖问题
centos7实现磁盘挂载,解挂,开机自动挂载,解决挂载文件覆盖问题
461 0
|
Linux
Linux centos7.x系统将/home磁盘分配给/
然后再执行umount /home就可以成功了 , 同时执行以下命令把逻辑卷删除了
127 0
|
Linux
Centos7 系列:磁盘挂载和磁盘扩容(新加硬盘方式)
在Centos 7 系统中,新添加硬盘,并将其挂载到自定义的新目录下;新添加硬盘,并为已有硬盘扩容。
3465 0
Centos7 系列:磁盘挂载和磁盘扩容(新加硬盘方式)
|
关系型数据库 MySQL Linux
centos 7 mysql 添加远程访问用户
centos 7 mysql 添加远程访问用户
361 0
centos 7 mysql 添加远程访问用户
|
Linux 网络安全
阿里云centos 挂载新磁盘
阿里云centos 挂载新磁盘
669 2
|
Kubernetes Linux KVM
KVM虚拟机管理工作二(虚拟机磁盘优化,Centos进入dracut模式,报 /dev/centos/swap does not exist,如何恢复)
KVM虚拟机管理工作二(虚拟机磁盘优化,Centos进入dracut模式,报 /dev/centos/swap does not exist,如何恢复)
621 0
KVM虚拟机管理工作二(虚拟机磁盘优化,Centos进入dracut模式,报 /dev/centos/swap does not exist,如何恢复)