Linux磁盘配额的设置与检测(1)


本文帮助您了解 Linux 系统管理任务相关知识。对 Linux Professional Institute Certification 级别 1(LPIC-1)考试的资料准备有所帮助。下面我们就开始学习如何管理用户的磁盘配额。

概述

在本文中,了解如何管理用户的磁盘配额。学习:

  • 设置一个文件系统的磁盘配额
  • 设置配额限制
  • 检查配额
  • 生成配额报告

除非有特殊说明,本文中的例子都使用 2.6.34 内核的 Fedora 13。您在其他系统上的结果可能有所不同。

本文帮助您准备 Linux Professional Institute's Junior Level Administration(LPIC-1)考试 101 中主题 104 下的目标 104.4。该目标的权值为 1。

先决条件

为了最有效地利用本系列中的文章,您应该具有基本的 Linux 知识,并需要准备一个 Linux 系统,用于练习本文介绍的命令。有时候不同版本的程序输出格式不同,因此您所得到的结果未必总是与这里所示的清单和图相同。

配额简介

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

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

有 3 种不同的配额支持:

1、vfsold,或者版本 1 配额

2、vfsv0,或者版本 2 配额

3、xfs,XFS 文件系统上的配额

本文包括非 XFS 文件系统上的版本 2 配额和 XFS 文件系统上的 xfs 配额。请注意,LPI 101 考试以版本 2 配额为重点。

配额需要 2.4 内核之后引入的内核支持。2.6 内核也有您所需的支持。

XFS 配额往往是日志化的。内核 2.6.11 及以上版本支持日志化版本 2 配额。

测试设置

首先要说明本文使用的测试分区设置,这样您就能更好地理解部分例子。如果您已经理解了文件所有权和权限,也已经安装了配额包,那么您可以直接跳到 配额的启用 部分。参考 学习 Linux,101:LPIC-1 路线图,获得该系列提供更多命令详细信息的其他文章链接,本文此处只提供简单说明。

测试分区和用户

我们使用 110GB ext4 分区(/dev/sda7)和 40GB XFS 分区(/dev/sda8)来演示。它们分别安装在 /quotatest/ext4 和 /quotatest/xfs。

清单 1. 设置分区

[root@echidna ~]# mkfs -t ext4 /dev/sda7
mke2fs 1.41.10 (10-Feb-2009)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
7159808 inodes, 28637862 blocks
1431893 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
874 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, 7962624, 11239424, 20480000, 23887872

Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 28 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[root@echidna ~]# mkfs -t xfs /dev/sda8
meta-data=/dev/sda8              isize=256    agcount=4, agsize=2622108 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=10488429, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal log           bsize=4096   blocks=5121, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@echidna ~]# mkdir -p /quotatest/ext4
[root@echidna ~]# mkdir -p /quotatest/xfs
[root@echidna ~]# mount /dev/sda7 /quotatest/ext4
[root@echidna ~]# mount /dev/sda8 /quotatest/xfs


在这个例子中,我们希望普通用户能够在新的文件系统中创建文件。这样创建,文件系统归 root 所有,一般用户不能在系统上创建文件或者目录。我们变更所有权,这样新的文件系统就由拥有名为 development 的专用组的用户 development 所有。我们变更权限,这样在 development 组中的用户就能够创建文件和目录。 清单 2 显示了我们如何设置所有权和权限。

清单 2. 变更测试分区的所有权和权限


[root@echidna ~]# # Show default ownership and permissions
[root@echidna ~]# ls -l /quotatest/
total 4
drwxr-xr-x. 3 root root 4096 Nov 18 22:43 ext4
drwxr-xr-x. 2 root root    6 Nov 18 22:43 xfs
[root@echidna ~]# # Change user and group ownership to development
[root@echidna ~]# chown development:development /quotatest/*
[root@echidna ~]# # Allow group members to create files and directories
[root@echidna ~]# chmod g+w /quotatest/*
[root@echidna ~]# ls -l /quotatest/
total 4
drwxrwxr-x. 3 development development 4096 Nov 18 22:43 ext4
drwxrwxr-x. 2 development development    6 Nov 18 22:43 xfs
[root@echidna ~]# # Set default group of new files and directories
[root@echidna ~]# # to development
[root@echidna ~]# chmod g+s /quotatest/ext4/
[root@echidna ~]# ls -l /quotatest/
total 4
drwxrwsr-x. 3 development development 4096 Nov 19 11:39 ext4
drwxrwxr-x. 2 development development    6 Nov 18 22:43 xfs

我们利用 3 位用户,ian、gretchen 和 tom,他们每人都拥有和用户名一样的专用组,同时也是 development 组的成员。


相关内容