您好,欢迎来到保捱科技网。
搜索
您的当前位置:首页AIX_下_JFS2_文件系统的配额管理介绍

AIX_下_JFS2_文件系统的配额管理介绍

来源:保捱科技网
AIX 下 JFS2 文件系统的配额管理介绍

前言

本文简要介绍在 AIX5.3 上如何使用 JFS2 文件系统上的配额管理功能。通过该功能,可以使得管理员能够对文件系统的空间使用进行更精确和灵活的控制。

为什么要使用配额功能

作为系统管理员,往往会面临这样的问题:一个普通用户上传了一个大文件撑满了 /tmp 文件系统,就导致系统挂起,或者是某个用户占用了太多的空间而导致所有其他用户都无法在其 home 目录下创建文件。这样的情况发生时往往会让管理员措手不及,既不敢贸然删除文件,又必须尽快解决问题。那么配额功能就是为了解决这样的问题的。一般说来,如果您的环境符合以下情形中的任意一条或多条,您就应该考虑使用配额管理:

1. 系统中有多个应用,需要对它们的空间使用进行控制 2. 系统中有多个用户,需要对他们的空间使用进行控制

3. 系统中有容易生成大量日志或 core 文件的程序,需控制它们占用的空间 4. 需要简单快捷的了解系统中用户的空间使用情况

JFS2 文件系统配额功能简介

AIX5.3 中通过 bos.sysmgt.quota 程序包提供了 JFS2 文件系统上的配额(quota)支持,该软件包可以在操作系统光盘中找到。该软件包包含了如下一些命令:

清单 1. bos.sysmgt.quota 软件包所包含的命令 [root /]# lslpp -f bos.sysmgt.quota Fileset File ---------------------------------------------------------------------------- Path: /usr/lib/objrepos bos.sysmgt.quota 5.3.0.10 /usr/sbin/repquota /usr/sbin/edquota /usr/sbin/quot /usr/sbin/quotacheck /usr/sbin/quotaoff -> /usr/sbin/quotaon /usr/sbin/quotaon /usr/sbin/j2edlimit /usr/sbin/quota 在后面的介绍中我们会看到,配额管理中的大部分控制都是通过这些命令来实现的。一般说来,使用配额管理的大致步骤如下:

1. 更改文件系统属性以启用配额管理 2. 建立配额类(Limits Class)

3. 设置相应用户 / 组所使用的配额类大小 4. 对配额使用情况进行观察或调整

下面我们就详细介绍一下如何使用配额管理:

使用 JFS2 的配额管理及相关命令介绍

1. 为使用配额管理功能,首先我们必须在文件系统上启用配额管理,可以通过 smitty

chjfs2 进入,选择相应的文件系统后,根据需要将“ENABLE Quota Management?”项设置成 all,user(只使用用户配合)或 group(只使用组配额)。本例中以 /test 文件系统为例:

清单 2. smitty chjfs2 菜单

Change / Show Characteristics of an Enhanced Journaled File System Type or select values in entry fields. Press Enter AFTER making all desired changes. [MORE...2] [Entry Fields] SIZE of file system Unit Size 512bytes + * Number of units [131072] # Mount GROUP [] Mount AUTOMATICALLY at system restart? no + PERMISSIONS read/write + Mount OPTIONS [] + Start Disk Accounting? no + Block Size (bytes) 4096 Inline Log? no Inline Log size (MBytes) [0] # Extended Attribute Format [v1] ENABLE Quota Management? all + [BOTTOM] F1=Help F2=Refresh F3=Cancel F4=List F5=Reset F6=Command F7=Edit F8=Image F9=Shell F10=Exit Enter=Do

回车执行后,可以看到系统在 /test 文件系统的根目录下生成了两个文件

quota.user 和 quota.group。这两个文件是用来保存和管理配额信息的,在日常操作中注意不要误删除。

清单 3. 启用配额功能的输出

Initializing quota file /test/quota.user Initializing quota file /test/quota.group *** Checking user and group quotas for /dev/testlv (/test) root fixed: inodes 0 -> 4 blocks 0 -> 68 system fixed: inodes 0 -> 4 blocks 0 -> 68 The filesystem size is already 131072.

启用配额后,使用 lsfs -q /test 可以看到有 quota 的信息:

清单 4. lsfs 命令输出

[root /test]lsfs -q /test Name Nodename Mount Pt VFS Size Options Auto Accounting /dev/testlv -- /test jfs2 131072 rw no no (lv size: 131072, fs size: 131072, block size: 4096, sparse files: yes, inline log: no, inline log size: 0, EAformat: v1,Quota: userquota,groupquota, DMAPI: no)

2. 在启用了配额后,我们就可以通过 j2edlimit 命令或 smit j2addlimit 菜单来建立配

额类(Limits Class)。下图显示的是执行 j2edlimit -u /test 的界面,-u 参数表明是用来建立用户配额类(User Limits Classes)。该命令会调用 vi 编辑器,我们可以在其中输入如图 1 中红框内所示文字。输入的内容分为 4 大部分:

a. 第一个部分是 ID,本例中为“+”号表示这是一个新增的条目,系统将自动为

新加入的条目分配 ID,该 ID 将会在后面指定配额时用到;

b. 第二个部分是空间配额(Block Limits)。该部分就是用来设置用户使

用空间大小的,可以用数字加上“k”“m”“g”来表示相应的大小。配额被分为软(soft)和硬(hard)两类。软可以在宽限期(grace period)里被超越,而硬是无法被超越的。

c. 第三个部分是文件数配额(File Limits)。该部分是用来设置用户使用

的总文件数的,包括文件,目录或临时文件。同样的,文件数配额也分为软和硬两种。

d. 第四个部分是宽限期(Grace Period)。该部分表示用户可以在多长的时间

内超出软,一旦超过这个时间,软将被提升成为硬,所有新的

空间申请都会被拒绝,用户必须将使用的空间或文件数降低到软以下后才可以继续使用。针对空间和文件数可以分别设置不同的宽限期。

图 1. 建立用户配额类

保存并退出 vi 后,j2edlimit 命令会对输入的信息进行分析并保存至 quota.user 文件中,同时显示在屏幕上(如图 2 所示)

图 2. 建立用户配额类命令输出

同样的,你也可以使用 j2edlimit -g /test 来创建组配额类(Group Limits Classes)。方法是类似的,这里就不再详述。

在建立了配额类后,我们就可以针对用户或组进行配额设置了,该操作同样通过 j2edlimit 命令进行,或者 smit j2assignlimit 菜单。假设我们已经配置了如图 5 所示配额类

清单 5. j2edlimit -l 命令及输出 [root /]# j2edlimit -l /test User Limits Classes for file system /test Block Limits units: g=gigabyte, m=megabyte, or optional k=kilobyte Grace Period units: d=days, h=hours, m=minutes, or s=seconds Limits Class ID 0 is the default class. Block Limits File Limits Grace Period ID soft hard soft hard block file 0 0 0 0 0 0 0 1 1g 2g 10 15 1m 1m 2 2g 3g 15 20 10 10 [root /]# 并且我们有两个用户 usera 和 userb,我们就可以使用如下命令分别指定 usera 的限额为 ID 为 1 的类所定义内容,而 userb 的限额为 ID 为 2 的类所定义内容:

清单 6. 指定用户配额命令输出 [root /]# j2edlimit -a 1 -u usera /test User Limits Classes for file system /test Block Limits units: g=gigabyte, m=megabyte, or optional k=kilobyte Grace Period units: d=days, h=hours, m=minutes, or s=seconds Block Limits File Limits Grace Period ID soft hard soft hard block file 1 1g 2g 10 15 1m 1m [root /]# j2edlimit -a 2 -u userb /test User Limits Classes for file system /test Block Limits units: g=gigabyte, m=megabyte, or optional k=kilobyte Grace Period units: d=days, h=hours, m=minutes, or s=seconds Block Limits File Limits Grace Period ID soft hard soft hard block file 2 2g 3g 15 20 10s 10s [root /]# 在进行了如上设置后,我们可以使用 repquota 命令来显示配额使用的情况:

清单 7. repquota 命令输出 [root /test]# repquota /test Block limits File limits Group used soft hard grace used soft hard grace system -- 68 0 0 4 0 0 Block limits File limits User used soft hard grace used soft hard grace root -- 68 0 0 4 0 0 usera -- 0 1048576 2097152 0 10 15 userb -- 0 2097152 3145728 0 15 20 从输出中我们可以看到当前 usera 和 userb 的空间和文件数使用都为 0,为了方便,我们可以选择文件数进行测试。首先,使用 usera 创建从 file1 到 file9 共 9 个文件:

清单 8. 创建测试文件输出 $ whoami usera $ pwd /test $ touch file1 file2 file3 file4 file5 file6 file7 file8 file9 $ 文件成功被创建,这时候我们再次执行 repquota 命令,可以看到 usera 的 File Limits 项中的 used 显示为 9,即目前 usera 的文件总数

清单 9. repquota 命令输出 [root /test]# repquota /test Block limits File limits Group used soft hard grace used soft hard grace system -- 68 0 0 4 0 0 Block limits File limits User used soft hard grace used soft hard grace root -- 68 0 0 4 0 0 usera -- 0 1048576 2097152 9 10 15 userb -- 0 2097152 3145728 0 15 20 这时我们再次创建文件:

清单 10. 配额到达后的告警信息 $ touch file10 /test: warning, user inode quota exceeded $ touch file11 $ touch file12 $ ls file1 file12 file4 file7 lost+found file10 file2 file5 file8 quota.group file11 file3 file6 file9 quota.user $ 从上面的输出可以看到,在达到软(10)的时候,系统给出警告“user inode quota exceeded”,但是我们仍然可以继续创建 file11 和 file12。这时候 repquota 的输出中可以看到 grace 项为 1,即开始 1 分钟倒计时:

清单 11. 配额到达后的计时信息 [root /test]# repquota /test Block limits File limits Group used soft hard grace used soft hard grace system -- 68 0 0 4 0 0 Block limits File limits User used soft hard grace used soft hard grace root -- 68 0 0 4 0 0 usera -+ 0 1048576 2097152 12 10 15 1 userb -- 0 2097152 3145728 0 15 20 [root /test]# 1 分钟倒计时结束后,grace 项显示变为“none”:

清单 12. grace period 超时后的 repquota 输出 [root /test]# repquota /test Block limits File limits Group used soft hard grace used soft hard grace system -- 68 0 0 4 0 0 Block limits File limits User used soft hard grace used soft hard grace root -- 68 0 0 4 0 0 usera -+ 0 1048576 2097152 12 10 15 none userb -- 0 2097152 3145728 0 15 20 这时再次尝试创建文件,将被系统拒绝:

清单 13. 配额生效后无法创建新文件 $ touch file13 touch: 0652-046 Cannot create file13. /test: operation failed, user inode quota time limit exceeded $

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoaiwan.cn 版权所有 赣ICP备2024042794号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务