在 AIX 上的 NFS 中配置和使用 rquota 守护进程

在 AIX 上配置 rquotad 守护进程

本文解释在 AIX® 计算机上的 Network File System (NFS) 环境中如何设置 rquota 守护进程。本文还向 Linux® 用户提供关于在 Linux 计算机上配置 rquota 守护进程的技巧。

Abhidnya P. Chirmule, 系统软件工程师, WSO2 Inc

Abhidnya Chirmule 是位于印度 Pune 的 IBM Software Labs 的 Network File System 团队的系统软件工程师,从事 AIX 平台上的 RPC 和 NFS 等开放网络计算技术。Abhidnya 拥有位于印度 Pune 的 College of Engineering 的计算机科学学士学位。



Avinesh Kumar, 系统软件工程师, WSO2 Inc

http://www.ibm.com/developerworks/i/p-akumar.jpgAvinesh Kumar 是位于印度 Pune 的 IBM Software Labs 的 Andrew File System 团队的系统软件工程师。他从事转储及崩溃的内核级和用户级调试,以及报告 Linux、AIX 和 Solaris 平台上的错误。Avinesh 拥有 Pune 大学计算机科学系的 MCA 学位。Avinesh 是一位 Linux 爱好者,他用业余时间在 Fedora Core 6 机器上研究 Linux 内核。



2009 年 4 月 27 日

对于 UNIX® 系统管理员,设置磁盘配额是控制磁盘空间使用量的一项重要任务。与本地文件系统一样,为 Network File System (NFS) 设置磁盘配额也很重要。本文详细介绍在 NFS 中设置磁盘配额的方法。除了跟踪磁盘使用量之外,系统管理员还可以通过配额系统为任何用户或组指定磁盘使用量的软限制。当用户达到软限制时,会向他发出警告;在经过配置的过渡期之后,软限制将成为硬限制。

rpc.rquotad 守护进程是 NFS 服务器的组件之一,它提供本地文件系统的配额信息,把这些信息导出给远程用户。当 NFS 客户机尝试对 NFS 装载的文件系统执行 quota 命令时,它与 NFS 服务器上运行的 rpc.rquotad 守护进程联系,显示远程文件系统的磁盘配额信息。

为远程文件系统配置磁盘配额的整个过程可以划分为以下步骤:

  • 建立文件系统支持的配额机制
  • 让文件系统使用配额特性,在装载文件系统时传递配额选项
  • 为文件系统指定用户和组 Quota Limits Class
  • 把用户 ID 与 Quota Limits Class 关联起来
  • 确保所有 NFS 守护进程和 rpc.rquotad 守护进程正在运行

在 AIX 中,要想为用户或组指定配额规则,就需要定义 Quota Limits Class 并把类与特定的用户或组 ID 关联起来。但是,在 Linux 中可以直接为用户或组指定配额规则。

首先,在 NFS 服务器上配置磁盘配额。

NFS 服务器节点

下面创建一个文件系统并进行配置,让它在装载时启用配额机制。

创建文件系统

在这里,在一台 AIX 计算机上使用 SMIT 创建一个 JFS2 类型的文件系统并把它装载在 /j2quota_test。SMIT 允许在创建文件系统时启用配额管理特性。但是,为了说明问题,我们将用 crfs 命令创建文件系统,然后在下一步中启用配额属性。下面的命令创建一个文件系统,成功创建文件系统之后,在 /etc/filesystems 文件中创建新文件系统的记录。

# crfs -v jfs2 -g rootvg -a size=1000 -m /j2quota_test -A yes -p rw -a agblksize=4096
File system created successfully.
65328 kilobytes total disk space.
New File System size is 131072

# mount | grep j2quota_test
         /dev/fslv06      /j2quota_test    jfs2   Mar 08 08:25 rw,log=/dev/hd8

# grep -p j2quota_test /etc/filesystems
/j2quota_test:                                                           
        dev             = /dev/fslv06                                    
        vfs             = jfs2                                           
        log             = /dev/hd8
        mount           = true                                          
        options         = rw                                             
        account         = false

在 Linux 上创建文件系统并启用配额机制

在 Linux 上,使用 mkfs 命令创建文件系统。应该用 'usrquota' 和 'grpquota' 选项装载新创建的文件系统。装载命令在一般情况下忽略这些选项,但是其他配额实用程序使用它们。要想让文件系统启用配额特性,应该在文件系统的顶层创建两个文件 aquota.user 和 aquota.group,文件的权限设置为 600,所有者是 root 用户。下一步是初始化配额系统。对文件系统运行 quotacheck -vgum 命令。运行 quotaon -av 命令启动配额特性。关于这些命令及其选项的更多信息,请参见相应的手册页。

设置 JFS2 磁盘配额

需要为刚才创建的文件系统启用配额特性。如果已经为文件系统启用了配额特性,可以跳过这一步。使用 chfs 命令修改刚才创建的文件系统的属性,为它启用配额机制。一定要注意,这仅仅为指定的文件系统启用配额机制,并不设置实际的配额限制。

# chfs -a quota=userquota,groupquota /j2quota_test                       
*** Checking user and group quotas for /dev/fslv06 (/j2quota_test)       

# grep -p j2quota_test /etc/filesystems                                  
/j2quota_test:                                                           
        dev             = /dev/fslv06                                    
        vfs             = jfs2                                           
        log             = /dev/hd8
        mount           = true                                          
        options         = rw                                             
        account         = false                                          
        quota           = userquota,groupquota

为文件系统设置用户配额

使用 j2edlimit 命令为 NFS 服务器上的 /j2quota_test 文件系统设置实际的用户配额限制。这个命令为 JFS2 文件系统管理 Quota Limits Class。这个命令创建一个临时文件,其中包含当前的 Limits Class,然后调用 vi 编辑器(或 EDITOR 环境变量指定的编辑器),打开临时文件,让管理员能够添加和修改 Limits Class。在退出编辑器时,命令读取临时文件并修改二进制配额文件以反映修改。需要按照以下清单指定 Limits Class 的值。在这里,Block Soft Limit 和 Block Hard Limit 分别指定为 1m (1 MB) 和 2m (2 MB)。这些仅仅是示例值;管理员可以根据自己的需求指定这些值。

#  j2edlimit -e -u /j2quota_test                                          
-------------------------------------- <-- File will be opened in editor.
                           
User Limits Classes for file system /j2quota_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.                                  
Prepend '-' to ID to delete Limits Class.                                
Use '+' for ID to add new Limits Class.                                  
                                                                        
       Block Limits                File Limits           Grace Period    
ID     soft         hard           soft      hard        block    file   
                                                                        
0      0            0              0         0           0        0      
+ 1m 2m 0 0 0 0  <--*(Additional Setting for User quota.)

:wq  <--*(Save edit)                                                     
------------------------------------------------ 
User Limits Classes for file system /j2quota_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      1m           2m             0         0           0        0

列出文件系统的用户配额

现在检查用户配额的设置是否符合预期。

# j2edlimit -l -u /j2quota_test                                          
User Limits Classes for file system /j2quota_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      1m           2m             0         0           0        0

在 Linux 中指定用户和组配额值

edquota 命令调用配额编辑器。通过指定命令行开关 -u 或 -g,分别为用户或组指定配额限制。关于此命令及其使用方法的更多信息,请参见手册页。

为文件系统设置组配额

使用相同的命令设置实际的组配额限制。在这里,添加一个 Quota Limit Class,它把 Block Soft Limit 和 Block Hard Limit 分别指定为 4m (4 MB) 和 5m (5 MB)。

#  j2edlimit -e -g /j2quota_test                                          
--------------------------------------------------- <-- File will be opened in editor.
Group Limits Classes for file system /j2quota_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.                                  
Prepend '-' to ID to delete Limits Class.                                
Use '+' for ID to add new Limits Class.                                  
                                                                        
       Block Limits                File Limits           Grace Period    
ID     soft         hard           soft      hard        block    file   
                                                                        
0      0            0              0         0           0        0      
+ 4m 5m 0 0 0 0 <--*(Additional Setting for Group quota.)                

:wq  <--*(Save edit)
--------------------------------------------------                       
Group Limits Classes for file system /j2quota_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      4m           5m             0         0           0        0

列出文件系统的组配额

下面的清单列出前一步中为文件系统设置的组配额值。

# j2edlimit -l -g /j2quota_test                                           
Group Limits Classes for file system /j2quota_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      4m           5m             0         0           0        0

把用户与特定的 Quota Limit Class 关联起来

现在,把刚才为 /j2quota_test 文件系统创建的 Quota Limit Class 与 NFS 服务器上的用户 user01 关联起来。使用 j2edlimit 命令把 Quota Limit Class 与用户或组关联起来。下面的命令使用命令行开关 -a 和 -u 把 Quota Limit Class 1 与用户 user01 关联起来。

# j2edlimit -a 1 -u user01 /j2quota_test                                 
User Limits Classes for file system /j2quota_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      1m           2m             0         0           0        0

使用命令行开关 -g 把 Quota Limit Class 1 与 staff 组关联起来。

# j2edlimit -a 1 -g staff /j2quota_test                                   
Group Limits Classes for file system /j2quota_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      4m           5m             0         0           0        0

现在,检查实际分配的配额。在本地节点(NFS 服务器)上以 user01 用户的身份创建一个测试文件,然后用 quota 命令检查配额值。

检查用户的磁盘配额

为用户创建一个目录并授予他必需的权限。

# mkdir /j2quota_test/user01                                             
# chown -R user01:staff /j2quota_test/user01                             
# ls -ld /j2quota_test
drwxr-xr-x    4 root     system          256 Mar 08 08:40 /j2quota_test
# ls -ld /j2quota_test/user01
drwxr-xr-x    2 user01   staff           256 Mar 08 08:40 /j2quota_test/user01

现在,让 user01 在他的目录 /j2quota_test/user01 中创建一个小文件。

$ cd /j2quota_test/user01                                                
$ echo 111 > test_user01.txt                                              
$ exit

运行以下命令,检查设置的配额值是否正确。

# quota -u user01                                                               
Disk quotas for user user01 (uid 210):                                   
    Filesystem  blocks  quota  limit  grace  files  quota  limit  grace  
 /j2quota_test       4   1024   2048             2      0      0         
# quota -g                                                               
Disk quotas for group staff (gid 1):                                     
    Filesystem  blocks  quota  limit  grace  files  quota  limit  grace  
 /j2quota_test       4   4096   5120             1      0      0

向 NFS 客户机导出文件系统

在创建文件系统、启用配额机制并把 Quota Limit Class 与用户或组关联起来之后,就可以向所有 NFS 客户机导出文件系统了。应该注意,仅仅向 NFS 客户机导出启用了配额的文件系统,并不能保证在 NFS 客户机上可以使用配额信息(但是可以应用配额限制)。需要确保在 NFS 服务器上运行 rpc.rquotad 守护进程。下面的命令通过 NFS 导出文件系统。

# /usr/sbin/mknfsexp -d /j2quota_test -S sys,krb5p,krb5i,krb5,dh -t rw
                                                                        
# exportfs                                                       
/j2quota_test           -sec=sys:krb5p:krb5i:krb5:dh,rw

确认 rpc.rquotad 守护进程正在运行

在 NFS 客户机装载 NFS 服务器导出的文件系统之后,NFS 客户机就可以使用分配给文件系统的配额了。可以在 NFS 客户机上使用 quota 命令查看装载的文件系统的配额信息。此命令对 NFS 服务器上运行的 rpc.rquotad 守护进程发出一个 RPC 调用。因此,一定要确认 rpc.rquotad 守护进程正在 NFS 服务器上运行,然后 NFS 客户机才能访问它。rpc.rquotad 守护进程向 portmapper 守护进程注册其本身。由 inetd 守护进程启动 rpc.rquotad 服务。inetd 守护进程读取它的配置文件 /etc/inetd.conf,所以会根据 /etc/inetd.conf 文件中是否有针对 rpc.rquotad 的未注释的条目触发此服务。inetd 守护进程在每次系统启动时自动启动。如果在 /etc/inetd.conf 中 rpc.rquotad 的条目被注释了,就需要取消它的注释符号,让它能够自动启动。下面的命令演示如何检查 rpc.rquotad 守护进程是否正在运行。

# rpcinfo -p | grep rquotad
    100011    1   udp  32930  rquotad

在 Linux 上运行 rpc.rquotad 守护进程

启动 /etc/init.d/quotarpc 脚本,从而检查通过 /etc/fstab 文件中的装载选项传递的配额选项并相应地启动 rpc.rquotad 守护进程。如果通过在 shell 提示上直接发出装载命令装载文件系统,那么需要运行 sudo rpc.rquotad

这确认 rpc.rquotad 正在运行。如果 rpc.rquotad 还没有运行,那么要确保 /etc/inetd.conf 文件中有未注释的 rpc.rquotad 条目,从而让 rquotad 守护进程在下一次计算机引导时自动启动。在不重新引导系统的情况下启动 rpc.rquotad 的方法是,在修改 /etc/inetd.conf 配置文件之后,让 inetd 守护进程重新读取它。使用以下命令:

#  refresh -s inetd

#  kill -1 <PID of inetd daemon>

下面的命令显示 /etc/inetd.conf 文件中的 rquotad 条目。

#  cat /etc/inetd.conf | grep rquota
rquotad  sunrpc_udp     udp     wait    root    /usr/sbin/rpc.rquotad rquotad 100011 1

现在,已经完成了所有 NFS 服务器端设置,该执行 NFS 客户端步骤了。


NFS 客户机节点

用以下命令把导出的文件系统装载在 /j2quota_test_nfs_client。

装载 NFS 服务器

# mkdir /j2quota_test_nfs_client                                          
# mount nfs_server:/j2quota_test /j2_test_nfs_client

装载命令显示已经成功地装载了 NFS 文件系统。

# mount | grep j2quota_test_nfs_client
nfs_server /j2quota_test    /j2quota_test_nfs_client nfs3   Mar 08 21:09

从 NFS 客户机检查配额配置

创建用户 user01,他的用户 ID 和组 ID 应该与 NFS 服务器上相同。让 user01 登录客户机并运行 quota -u,从而检查 NFS 客户机是否可以使用用户配额。注意,rpc.rquotad 协议不支持 NFS 的组配额。因此,它不返回 NFS 的组配额信息。

$ cd /j2quota_test_nfs_client
$ id                                                                     
uid=210(user01) gid=1(staff)                                             
$ quota -u 
Disk quotas for user user01 (uid 210):
 Filesystem            blocks   quota  limit  grace files  quota  limit grace
/j2quota_test_nfs_client  4     1024   2048           2      0       0

参考资料

学习

获得产品和技术

  • 下载 IBM 产品评估版,试用这些来自 DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere® 的应用程序开发工具和中间件产品。

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX
ArticleID=385473
ArticleTitle=在 AIX 上的 NFS 中配置和使用 rquota 守护进程
publish-date=04272009