在Linux上创建磁盘配额

xharvard 2017-07-25

磁盘配额的概述及管理

为什么创建磁盘配

    在Linux根分区的磁盘空间耗尽时,Linux将无法再创建新的文件(包括程序运行的临时文件),从而导致服务程序崩溃,系统无法启动等故障现象。

    为了避免出现类似问题,可以设置启用磁盘配额功能,对用户在指定文件系统(分区)中使用磁盘空间、文件数量进行限制,以防止个别用户恶意或无意间占用大量磁盘空间,从而保证系统存储空间的稳定性和持续可用性。

使用磁盘配额的前提条件

   设置磁盘配额,需要安装 quota 软件包,用于配置和管理磁盘配额,在RHEL 6中,系统默认安装了 quota 软件包。

磁盘配额的作用范围

   quota软件设置的磁盘配额功能,只在指定的文件系统(分区)内有效,用户使用其他未设置配额的文件系统时,将不受限制。

磁盘配额的限制对象

    quota 主要针对系统中的指定用户账号、组账号进行限制,没有被设置限额的用户或组将不受影响。对组账号设置配额后,组内所有成员使用的磁盘容量、文件数量的总和不能超过限制。

磁盘配额的限制类型

  # 磁盘容量:限制用户能够使用的磁盘空间的大小,默认单位为KB

  # 文件数量:限制用户能够使用的文件个数

磁盘配额的限制方法

  # 软限制:指定一个软性的配额数值(如100MB的磁盘空间、80个文件),在固定的宽限期限(默认为七天)内允许超过这个限制,但系统会给出警告信息

  # 硬限制:指定一个硬性的配额数值(如120MB的磁盘空间、100个文件),是绝对禁止用户超过限制值,当达到硬限制值时,系统会给出警告信息并禁止继续写入数据。硬限制的配额值应该大于软限制值,否则软限制将失效

实验:

    下面将上篇创建的 yang 逻辑卷 /dev/ysf/yang 挂载到 /mailbox 目录下 ,然后在该文件中配置实现磁盘配额功能。

1.以支持磁盘配额功能的方式挂载文件系统

   将usrquota, grpquota挂载参数写入到“/etc/fstab”文件中。

   # chmod   777   /mailbox               //为后续测试方便,允许任何用户写入数据    

   # vim   /etc/fstab                     //修改 yang 逻辑卷的挂载配置              

     /dev/ysf/yang      /mailbox     ext4     defaules,usrquota,grpquota     0 0  

2.检测磁盘配额并生成配额文件

   使用 quotacheck 命令可以对指定的文件系统进行磁盘配额检测,也可以用来建立配额文件,以便保存用户、组在该分区的配额设置

   例如:执行以下操作将扫描系统中的所有文件系统,并在支持配额的文件系统中建立配额文件

   # quotacheck   -augcv                                                

   -a  表示扫描所有分区,如果不使用,将必须指定一个分区或挂载点目录作为命令参数

   -u   表示检测用户配额信息

   -g   表示检测组配额信息

   -c   表示创建新的配额文件

   -v   表示显示命令执行过程中的细节信息

   # ls  -l   /mailbox/aquota.*                                    

  可以看到新建立的配置文件,包括“aquota.user”、“aquota.group”,分别用于保存用户、组的配额设置,配置文件保存在该文件系统根下,默认权限为600

3.编辑用户和组账号的配额设置

  使用 edquota 命令结合 -u、-g 选项可用于编辑用户和组的配额设置,(默认调用 vi 作为编辑程序),可设置磁盘容量、文件大小的软、硬限制数值。

   例如:执行以下操作可以对用户 zhangsan 的配额进行编辑

   # edquota   -u    zhangsan                          

   Filesystem              blocks       soft      hard     inodes      soft      hard

   /dev/mapper/ysf-yang     0            0         0        0           0          0 

 Filesystem:表示本行配置记录文件对应的文件系统(分区),即配额的作用范围

 blocks:表示用户已使用的磁盘容量,默认单位为KB

 inodes:表示用户当前已拥有的文件数量

 soft:第3列对应为磁盘容量的软限额数值,单位KB;第6列对应文件数量软限额数值,单位个

 hard:第3列对应为磁盘容量的硬限额数值,单位KB;第6列对应文件数量硬限额数值,单位个

   例如:若要为 zhangsan 设置配额,磁盘容量软限制为80MB、硬限制为100MB,文件数量软限制40个、硬限制40个,可执行以下操作

   # edquota   -u    zhangsan                          

   Filesystem              blocks       soft      hard     inodes      soft      hard

   /dev/mapper/ysf-yang     0          80000     100000     0           40        50 

 可以设置软限制的宽限期限,默认为7天,可以修改。

 例如:可以将宽限期限改为10天。

   # edquota    -t                          

   Filesystem              Block grace period       Inode grace period    

   /dev/mapper/ysf-yang        10days                      10days          

4.启动文件系统的磁盘配额功能

    启动和关闭文件系统的磁盘配额功能分别使用 quotaon、quotaoff 命令执行,需要指定设备文件名或文件系统的挂载点作为参数。quotaon 命令使用的选项与 quotacheck 的选项类似。

   例如:执行以下操作可启用“/mailbox”文件系统的用户、组磁盘配额功能,并显示命令执行的过程信息。

   # quotaon   -ugv     /mailbox                                  

5.查看用户或分区的配额使用情况

    可使用 quota 命令、repquota命令,其中,quota 命令可以结合 -u、-g 选项分别查看指定用户和组的配额使用情况;而 repquota 命令主要指定文件系统输出配额使用情况报告,结合 -a 选项可查看所有可用分区的配额使用情况报告。

   例如:查看用户账号 zhangsan、组账号 users 的配额使用情况

   # quota   -u   zhangsan              

   # quota   -g   users                  

  查看 /mailmox 文件系统的配额使用情况

   # repquota    /mailmox                  

6.验证磁盘配额功能

    可使用 dd 转换工具,dd 命令是设备转换和复制命令

  例如:向 /mailmox 目录下写入一个名为 a.txt 的测试文件,大小为10MB(分10次读取,每次1MB),复制来源为设备 /dev/zero

   # dd  if=/dev/zero   of=/mailmox/a.txt   bs=1M   count=10          

   if=   指定输入设备(或文件)

   of=   指定输出设备(或文件)

   bs=   指定读取数据块的大小

   count=   指定读取数据块的数量

相关推荐