大数跨境
0
0

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

在 AIX 上的 NFS 中配置和使用 rquota 守护进程 唐合易成
2016-10-14
0
导读:对于 UNIX® 系统管理员,设置磁盘配额是控制磁盘空间使用量的一项重要任务。与本地文件系统一样,为 Net

对于 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




我们支持7*24小时备件/备机销售服务和售后服务

24小时业务支持热线:  400-6296-001

业务支持邮箱support@tanghop.com


请关注唐合易成公众订阅号,了解更多!


【声明】内容源于网络
0
0
唐合易成
提供IT运维及维保、机房搬迁、容灾备份、数据迁移服务;服务器、小型机、存储、网络及安全等设备的整机和备件销售;整机及备件租赁;数据库、中间件、备份、虚拟化等各类软件的支持与服务。
内容 1101
粉丝 0
唐合易成 提供IT运维及维保、机房搬迁、容灾备份、数据迁移服务;服务器、小型机、存储、网络及安全等设备的整机和备件销售;整机及备件租赁;数据库、中间件、备份、虚拟化等各类软件的支持与服务。
总阅读137
粉丝0
内容1.1k