layout: post
title: 磁盘配额
date: 2017-12-05
tags: [“Linux”,”磁盘管理”]


磁盘配额

配额允许您控制用户或者组织的磁盘使用。它能防止个体用户和组织使用文件系统中超过自己所允许的部分,或者造成系统完全拥堵。XFS 文件系统也支持项目配额,它限制了一个项目所能使用的空间大小,无论哪个用户在项目的目录树中创建文件。

配额必须由 root 用户或者有 root 权限的用户启用和管理。它们往往用于多用户系统,不常用于单一用户的工作站。

以下为设置磁盘配额的操作方法,分为两个例子,ext4和xfs

ext4:

用/dev/sdb2 分区和ian用户来做实验

  1. mkfs.ext4 /dev/sdb2 #创建ext4文件系统

  2. mkdir /mnt/ext4 #创建一个挂载点

  3. mount -o ursquota,grpquota /dev/sdb2 /mnt/ext4 #临时实验,直接用mount进行挂载 ,也可以在fstab中添加记录”/dev/sdb2 /mnt/ext4 ext4 usrquota,grpquota 0 0 “ 然后使用mount -a 进行挂载

  4. quotacheck -cug /mnt/ext4 #创建配额数据库

  5. quotaon -p /mnt/ext4 #查看是否启用了配额

  6. quotaon /mnt/ext4 #启用配额

  7. edquota ian #打开一个以vim为编辑器的文本

  8. edquota ian
    Disk quotas for user wang (uid 500):
    Filesystem blocks soft hard inodes soft hard
    /dev/sda6 1164 800000 1000000 159 162 165


第一个 soft 为警告配额,第一个hard的为最大上限配额,当soft值达到之后,用户在7天之内还可以写入文件,当达到hard上限时,将直接不能进行写操作。

inodes为可以使用的 inodes个数,第二个soft为inodes个数的警告额度用户在7天之内还可以使用inode的个数,第二个hard为上限额度

 

xfs的磁盘配额:

用/dev/sdb3 分区和ian用户来做实验

对 XFS 文件系统来说,配额数据是文件系统元数据的一部分。对其他文件系统来说,用户配额信息存储在文件系统 root 的 aquota.user 文件,组配额也同样存储在 aquota.group。版本 1 配额使用 quota.user 和 quota.group。对这些文件系统来说,重新安装完文件系统之后,您必须创建配额文件,并启用配额进行检测。quotacheck 命令检查所有文件系统上的配额,如果 aquota.user 和 aquota.group 文件不存在,就会创建所需的 aquota.user 和 aquota.group 文件。

当执行quotacheck -cug 的时候会跳过,xfs的配额功能默认是开启的。

  1. mkdir /mnt/xfs
    mkfs.xfs /dev/sdb3
    mount -o usrquota,grpquota /mnt/xfs
    quotacheck -acug # xfs的检查会跳过

  2. XFS 文件系统来说,配额检查是默认启动的,除非文件安装了 uqnoenforcegqnoenforce 或者 pqnoenforce 设置。
    使用 xfs_quota 命令和 -x(适用于 专家)选项控制 xfs 配额。没有 -x 选项,您显示配额信息会受到限制。
    命令还有一些子命令,包括 help,用于显示可用的子命令清单,state,用于显示整体状况,enable,用于启用配额检测,还有 disable,用于停止。
    选项 -u、-g -p 分别限制用户、组或项目的行为。
    使用 -v 获得 verbose 输出。您可以在命令行模式运行命令,命令行中独立的子命令由 -c 选项指明。
    您可以多次指定多种子命令的该选项。如果您将指定子命令的选项,可能就需要引用命令。

  3. 清单中显示了一些例子。

  4. [root@echidna ~]# xfs_quota -x /mnt/xfs
    xfs_quota> state
    User quota state on /mnt/xfs (/dev/sda3)
    Accounting: ON
    Enforcement: ON
    Inode: #131 (3 blocks, 3 extents)
    Group quota state on /mnt/xfs (/dev/sda3)
    Accounting: ON
    Enforcement: ON
    Inode: #132 (3 blocks, 3 extents)
    Project quota state on /mnt/xfs (/dev/sda3)
    Accounting: OFF
    Enforcement: OFF
    Inode: #132 (3 blocks, 3 extents)
    Blocks grace time: [7 days 00:00:30]
    Inodes grace time: [7 days 00:00:30]
    Realtime Blocks grace time: [7 days 00:00:30]
    xfs_quota> disable #禁用配额功能
    xfs_quota> quit
    [root@echidna ~]# xfs_quota -x -c enable -gu -v /mnt/xfs #启用配额功能
    User quota state on /mnt/xfs (/dev/sda3)
    Accounting: ON
    Enforcement: ON
    Inode: #131 (3 blocks, 3 extents)
    Group quota state on /mnt/xfs (/dev/sda3)
    Accounting: ON
    Enforcement: ON
    Inode: #132 (3 blocks, 3 extents)
    Blocks grace time: [7 days 00:00:30]
    Inodes grace time: [7 days 00:00:30]
    Realtime Blocks grace time: [7 days 00:00:30]

  5. edquota ian #进行配额,配置和ext4的一样


edquota -p user1 user2 #该命令可以将user1的配额的配置,按照同样的配置,配置给user2

setquota usename 4096 5120 40 50 /foo #省略vim编辑器的配置,直接在命令行进行配置,与edquota 内的值一一对应

文档更新时间: 2018-12-13 18:03   作者:张尚