引言

这篇文章介绍一下磁盘配额;利用磁盘配额这种技术,系统管理员可以限制某个用户在某个硬盘分区可使用的大小,和可以创建文件数量的多少;目前Linux系统和Windows系统都支持这种技术。

文章目录

0×1.磁盘配额术语介绍

0×2.Linux磁盘配额实例

a.实验环境介绍

b.修改/etc/fstab添加支持磁盘配额选项

c.创建磁盘配额配置文件

d.实现磁盘配额限制

e.关闭磁盘配额

0×1.磁盘配额术语介绍

磁盘配额使用条件:

磁盘配额实施的对象是硬盘分区,并且Linux的内核必须支持磁盘配额这种技术,本例所使用的CentOS7是完全支持的;

磁盘配额的记录文件保存在开启磁盘配额分区的根目录下面,它们是aquota.user和aquota.group;

磁盘配额只对一般身份用户有效,对root权限用户无效;

磁盘配额的相关术语:

最低限制(软限制,soft):最低限制容量(可以被超过,但会出现警告,超过的部分会保存到宽限时间到期);

最高限制(硬限制,hard): 不能被超越的限制;

宽限时间:当用户使用的空间超过了最低限制但还没到达最高限制时,在这个宽限时间到期前必须将超额的数据降低到最低限制以下(默认为7天),当宽限时间到期,系统将自动清除超出的数据;

0×2.Linux磁盘配额实例

a.实验环境介绍

系统:CentOS7;

所用软件:quota,CentOS7默认已安装,CentOS6可能需要yum在线安装此软件,前面的文章已经介绍过yum的使用方法,这里不再赘述;

硬盘及分区:/dev/sda1(系统所在分区),/dev/sdb1(20G),已经格式化为ext4文件系统;

所有的磁盘配额操作都在/dev/sdb1中进行;

b.修改/etc/fstab添加支持磁盘配额选项

首先在系统新建一个用于挂载分区的目录,然后修改/etc/fstab添加一条自动挂载分区条目:

#使用管理员权限在系统根目录,新建一个目录sdb1(并非一定要在根目录创建挂载目录)

qing@qingsword.com:~$ sudo mkdir /sdb1

#使用vi编辑/etc/fstab,在末尾添加一行自动挂载,支持quota

qing@qingsword.com:~$ sudo vi /etc/fstab

#将下面这一行添加到末尾,第一个字段为被挂载的分区,第二个字段为挂载的目录,第三个字段是被挂载的分区的文件系统类型,后面的几个字段是支持quota的参数。各字段用空格分隔

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

#保存,重新启动计算机,查看sdb1挂载信息

qing@qingsword.com:~$ mount | grep /dev/sdb1

.....

#只要括号里面显示"usrquota,grpquota",说明可以使用磁盘配额了

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

c.创建磁盘配额配置文件

#为了让其他用户可以使用这个分区,先将这个实验用的分区权限修改成777

qing@qingsword.com:~$ sudo chmod 777 /sdb1

#创建磁盘配额配置文件,命令参数解释如下:

#-v 显示扫描过程;

#-u 针对扫描情况与目录的使用情况建立aquota.user;

#-g 针对用户扫描文件与使用情况建立aquota.group;

qing@qingsword.com:~$ sudo quotacheck -vug /sdb1

#接着就能看到分区目录中自动生成了两个配置文件

qing@qingsword.com:~$ ls /sdb1

aquota.group aquota.user

d.实现磁盘配额限制

#创建普通测试用户qingsword,配置密码

qing@qingsword.com:~$ sudo useradd qingsword

qing@qingsword.com:~$ sudo passwd qingsword

#配置qingsword用户使用/dev/sdb1分区的限额

qing@qingsword.com:~$ sudo edquota -u qingsword

#输入上面的命令后,会进入一个vi编辑界面

#对其中各字段解释如下:

#Filesystem下显示实现磁盘配额的分区;

#blocks下为当前已经使用的大小,不用修改;

#soft为软限制,超出后会给出警告,超出的部分默认会保存7天;

#hard为硬限制,不可超越的限制(软硬限制默认单位都是KB);

#后面的两个相同的soft、hard分别表示分区中这个用户可以创建的文件数目软硬限制;

#本例中设置,qingsword可以使用/dev/sdb1分区的软限制大小10KB,硬限制20KB,可创建的文件个数软限制是3个,硬限制5个;

Disk quotas for user qingsword (uid 500):

Filesystem blocks soft hard inodes soft hard

/dev/sdb1 0 10 20 0 3 5

#修改保存退出后,开启这个分区的磁盘配额

qing@qingsword.com:~$ sudo quotaon /sdb1

如果操作无误,现在磁盘配额就已经开始起作用了,使用qingsword用户登录测试如下:

#切换到qingsword用户

qing@qingsword.com:~$ su qingsword

#进入/dev/sdb1分区

qingsword@qingsword.com:~$ cd /sdb1

#使用dd命令进行文件写入测试,

# if=/dev/zero 表示从"/dev/zero"文件输出,of=/sdb1/testfile1 表示输入到"/sdb1/testfile1"文件中,也就是,从/dev/zero这个文件中读取垃圾数据写入/sdb1/testfile1这个文件中;

# bs=1K 表示一次读取写入的大小是1KB,count=12 表示读取12次;

#所以理论上最后写入/sdb1/testfile1的数据应该是12KB

qingsword@qingsword.com:/sdb1$ dd if=/dev/zero of=/sdb1/testfile1 bs=1K count=12

sdb1: warning, user block quota exceeded.

#因为针对qingsword用户在这个分区的软限制设置是10KB,所以这里给出了警告信息

12+0 records in

12+0 records out

12288 bytes (12 kB) copied

#可以查看到testfile1的大小是12KB

qingsword@qingsword.com:/sdb1$ ls -l testfile1

-rw-rw-r--. 1 qingsword qingsword 12288 Jan 13 16:24 testfile1

#测试向第二个文件/sdb1/testfile2写入10KB垃圾数据

qingsword@qingsword.com:/sdb1$ dd if=/dev/zero of=/sdb1/testfile2 bs=1K count=10

sdb1: write failed, user block limit reached.

dd: writing `/sdb1/testfile2': Disk quota exceeded

#出现了一个警告,并且下方显示只有8K的数据被复制,这是因为我们设置的硬限制是20KB

9+0 records in

8+0 records out

8192 bytes (8.2 kB) copied

#第一个文件已经占用了12KB的数据,第二个文件仅写入了8KB的数据,硬限制是不能被超越的,而软限制10KB是可以被超越的,超越的数据,会在这个分区中默认保存7天,然后系统将自动删除这些数据

qingsword@qingsword.com:/sdb1$ ls -l testfile1 testfile2

-rw-rw-r--. 1 qingsword qingsword 12288 Jan 13 16:33 testfile1

-rw-rw-r--. 1 qingsword qingsword 8192 Jan 13 16:33 testfile2

#下面测试文件数量限制,按照前面的介绍和我们的配置,超过3个文件的软限制时会给出警告,而无法超过5个文件的硬限制,使用touch来创建空文件

qingsword@qingsword.com:/sdb1$ touch testfile3

#超过3个文件时出现了警告

qingsword@qingsword.com:/sdb1$ touch testfile4

sdb1: warning, user file quota exceeded.

qingsword@qingsword.com:/sdb1$ touch testfile5

#touch第6个文件的时候提示创建失败

qingsword@qingsword.com:/sdb1$ touch testfile6

sdb1: write failed, user file limit reached.

touch: cannot touch `testfile6': Disk quota exceeded

#超过文件数量软限制的部分同样会被保存7天,然后被系统自动删除

qingsword@qingsword.com:/sdb1$ ls

aquota.group testfile2 testfile4

aquota.user testfile1 testfile3 testfile5

#查看当前用户的磁盘配额使用情况,两个已经超出的配置分别是文件大小和文件数量,宽限时间还有6天

qingsword@qingsword.com:/sdb1$ quota -vugs

Disk quotas for user qingsword (uid 1002):

Filesystem space quota limit grace files quota limit grace

dev/sdb1 20K* 10K 20K 6days 5* 3 5 6days

#可以使用root权限修改宽限时间

qing@qingsword.com:~$ sudo edquota -t

e.关闭磁盘配额

#关闭单个磁盘的磁盘配额

qing@qingsword.com:~$ sudo quotaoff /sdb1

#关闭所有已经开启的磁盘配额

qing@qingsword.com:~$ sudo quotaoff -a

#反之,开启所有磁盘配额

qing@qingsword.com:~$ sudo quotaon -a

#如果不再使用磁盘配额,可以将配置文件也删除

qing@qingsword.com:~$ sudo rm -rf /sdb1/aquota.*

#最后删除/etc/fstab中的自动挂载即可

linux中查看磁盘配额的数量,[Linux实用命令]-11-磁盘配额实例详解相关推荐

  1. java中的装饰模式讲解,java 中设计模式(装饰设计模式)的实例详解

    搜索热词 java 中设计模式(装饰设计模式)的实例详解 应用场景: 在不对原有对象类进行修改的基础上,给一个或多个已有的类对象提供增强额外的功能. 我觉得可以从字面理解,装饰,装饰房子.房子可以看成 ...

  2. linux中查看lvm的名称,关于Linux中LVM的使用总结

    首先借鉴一段图文,如下: LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和 分区之上的一个逻辑层,来提高磁 ...

  3. linux中如果编译二进制,在linux中把汇编或c程序交叉编译成二进制文件烧录开发板过程详解...

    嵌入式开发中在宿主机中要编译能在目标机中运行的程序文件需要用到一种工具:交叉工具链.其中我们常用的交叉工具有以下几种:交叉编译器,交叉连接器,交叉转换器,交叉ELF文件工具,交叉反汇编器.以下通过实例 ...

  4. 在linux中查看端口信息,怎样在 Linux 上查看某个端口的相关信息?

    C#用扩展方法进行自动生成添加删除对象转换的功能 public static class ExtendedModel { #region 实体类的增删改查 #region 添加 public stat ...

  5. Linux从入门到精通系列之SHELL编程循环语句语法及实例详解(forwhileuntil)

    前言 Shell作为一种脚本编程语言,同样了包含了循环,分支等其他程序控制结构,从而能够轻松完成更加复杂.强大的功能.我们今天就来认识for.while.case语句的具体应用. 插个小广告吧,虽然我 ...

  6. python中quad_python用quad、dblquad实现一维二维积分的实例详解

    背景: python函数库scipy的quad.dblquad实现一维二维积分的范例.需要注意dblquad的积分顺序问题. 代码: import numpy as np from scipy imp ...

  7. linux mysql 进程查看工具_linux查看正在运行的进程(如何在Linux中查看所有正在运行的进程)...

    如何在Linux中查看所有正在运行的进程 名称:ps 使用权限:所有使用者 使用方式:ps [options] [--help] 说明:显示瞬间行程 (process) 的动态 参数:ps的参数非常多 ...

  8. linux中查看端口号使用情况

    目录 linux中查看端口号使用情况 netstat linux中查看端口号使用情况 linux中查看端口号使用情况使用netstat命令 命令如下: netstat -tunpl | grep 端口 ...

  9. Linux中查看socket进程状态

    Linux中查看socket进程状态 Linux中查看socket状态: cat /proc/net/sockstat #(这个是ipv4的) sockets: used 137 TCP: inuse ...

  10. linux中查看文件大小命令

    要查看Linux中文件夹的大小,可以使用以下命令之一: du命令:该命令用于显示目录中文件和子目录的磁盘使用情况.要查看文件夹的大小,可以使用以下命令: du -sh foldername 该命令将以 ...

最新文章

  1. Spring Boot 教程(三): Spring Boot 整合Mybatis
  2. Pwntools---fmtstr_payload()介绍
  3. Django(part7)--请求及HttpRequest对象
  4. Springboot 之 Hibernate自动建表(Mysql)
  5. 我最喜欢的科目是计算机课英语,初一英语作:my favorite subject(我最喜欢的科目)要求写美术课(art),80词以上,拜托啦!...
  6. 两天连续送五国 马云援欧物资加速运抵eWTP枢纽
  7. python字典和集合对象可以进行索引_python集合和字典
  8. 班尼路信息化系统基础选型的简单分析
  9. javascript_php 正则匹配 转
  10. E-Prime教程 | 打mark标记
  11. 超市库存管理系统 (SSM JAVA)
  12. 计算机里的及格率和有优秀率怎么算,Excel中怎么用函数计算成绩的及格率和优秀率?_excle优秀率及格率...
  13. 智能人物画像综合分析系统——Day16
  14. precision 为什么和recall成反比
  15. 华硕笔记本X450JB拆机及加装固态硬盘
  16. 360安装 css3插件,Omi官方插件系列 。。支持CSS3 Transform设置
  17. 小程序-demo:知乎日报
  18. C#将文件复制到另一个目录下
  19. 79页智慧应急指挥平台1 6 N体系建设方案
  20. kaldi windows安装_kaldi 在 Windows 下的使用

热门文章

  1. Redis大数据应用场景
  2. 微信小程序之短信验证码
  3. 敏捷管理 -- 时间和成本管理
  4. keil5下载仿真出现Flash download failed-Cortex-M3的原因与方案
  5. 2021-02-02美赛前MATLAB的学习笔记(机器学习(分类、聚类、深度学习))
  6. 创业者、如何可以投资小,又可以依附互联网去创业?
  7. openjdk1.8的下载与安装
  8. 移远BC28_opencpu方案_pin脚分配
  9. [BT_Books]《无线蓝牙技术深入探讨》笔记
  10. python中θ符号怎么打出来_各种符号在键盘上怎么打出来?