Google Cloud Managed Lustre 文件系统支持用户、群组和项目配额,让管理员能够管理存储空间消耗并确保公平分配资源。本文档介绍了如何配置、查看和管理这些配额。
什么是文件系统配额?
借助 Managed Lustre 中的配额,您可以针对用户、群组或项目在文件系统内消耗的磁盘空间量和文件数量设置限制。
配额适用于不同的实体:
- 用户配额 限制单个非根用户消耗的存储空间。
- 群组配额 限制特定群组的所有非根成员消耗的存储空间。
- 项目配额 限制与特定项目 ID 相关联的文件和目录消耗的存储空间。此项目 ID 是 Lustre 文件
系统标识符,使用
lfs project定义,而不是您的 Google Cloud 项目 ID。如需了解详情,请参阅 设置项目配额。
配额针对两种资源类型进行配置:
- 块限制 是对可使用的磁盘空间量的限制。
- Inode 限制 是对可创建的文件和目录数量的限制。
每种资源类型都可以有两个级别的限制:
软限制 是一种配额阈值,超出该阈值时会触发可配置的宽限期。在此宽限期内,用户、群组或项目可以暂时超出软限制(如果存在硬限制,则最多超出硬限制),以便有时间减少用量,避免被屏蔽。宽限期结束后,如果用量仍高于软限制,则软限制将作为硬限制强制执行,从而屏蔽所有新写入操作,直到磁盘空间或 inode 计数降至软限制以下为止。
默认情况下,宽限期为一周。
硬限制 定义了绝对上限。如果达到此限制,任何进一步的写入操作都会失败,并返回“磁盘配额超出”错误。
管理用户和群组
Lustre 依赖于客户端的 POSIX 属性来获取用户和群组名称及 ID。
当客户端发出文件系统请求时,它会将本地 UID 和 GID 发送到 Lustre 服务器。服务器使用这些 POSIX 属性来强制执行标准文件权限并跟踪配额用量。
为了在多用户环境中保持一致的行为,所有装载 Lustre 文件系统的客户端都必须具有同步的 UID 和 GID 映射,这些映射通常通过 LDAP 或 NIS 等集中式服务进行管理。
根用户不受配额限制。使用 sudo 运行的命令也会绕过配额检查。
准备工作
如需管理 Lustre 配额,您需要:
- 客户端访问处于活跃状态的 Google Cloud Managed Lustre 文件系统。
- 客户端系统上的
sudo或根权限,以便执行lfs命令。
设置配额
使用 lfs setquota 命令配置块限制和 inode 限制。您可以仅指定块限制、仅指定 inode 限制或同时指定两者;同样,您可以指定硬限制、软限制或同时指定两者。
sudo lfs setquota -u | g | p | U | G | P UGP_VALUE \
-b SOFT_BLOCK_LIMIT -B HARD_BLOCK_LIMIT \
-i SOFT_INODE_LIMIT -I HARD_INODE_LIMIT \
MOUNT_DIR
其中:
-u按用户名或 UID 指定用户。Lustre 使用客户端的 POSIX 属性解析用户名。-g按群组名称或 GID 指定群组。Lustre 使用客户端的 POSIX 属性解析群组名称。-p按项目名称或项目 ID 指定项目。如果指定项目名称,则必须使用映射文件(例如客户端上的/etc/projid)将其映射到项目 ID。U、G和P为未设置特定配额的任何用户、群组或项目设置默认配额。- UGP_VALUE 是用户名、群组名称、项目名称、UID、GID 或
项目 ID。ID 必须是介于
0和4294967295之间的整数。 如果您要指定默认用户、群组或项目配额,请忽略此值。 -b和-B分别是块用量的软限制和硬限制。软限制应小于硬限制。值可以以字节 (B)、千字节 (K)、兆字节 (M)、千兆字节 (G) 或太字节 (T) 为单位指定。默认单位为千字节。-i和-I分别是 inode 用量的软限制和硬限制。软限制应小于硬限制。- MOUNT_DIR 是 Managed Lustre 文件系统的装载点。
请注意,您无法在创建配额的同时配置宽限期。软限制的默认宽限期为一周。如需更新 宽限期,请参阅配置宽限期。
示例
设置用户配额
为 /mnt/lustre 上的 user1 设置软块限制为 100 GB、硬块限制为 120 GB、软 inode 限制为 10,000,以及硬 inode 限制为 12,000:
sudo lfs setquota -u user1 -b 100G -B 120G -i 10000 -I 12000 /mnt/lustre
设置群组配额
为 /mnt/lustre 上的 groupA 设置硬块限制为 50 TB:
sudo lfs setquota -g groupA -B 50T /mnt/lustre
设置项目配额
项目配额需要执行额外的步骤,将目录和文件与项目 ID 相关联:
使用
lfs project命令分配项目 ID。此 ID 是标识项目的任意整数。sudo lfs project -spr LFS_PROJECT_ID PATH/TO/DIR/OR/FILE其中:
-s设置继承,以便在指定目录中创建的新文件和目录继承项目 ID。-p指示命令在指定的文件或目录上设置给定的项目 ID。-r将项目 ID 递归应用于所有子目录和文件。- PATH/TO/DIR/OR/FILE 是要设置项目 ID 的目录或文件的路径。只能指定一个路径或文件。
如需了解其他标志和信息,请从客户端运行
man lfs project。例如,如需将项目
101分配给/mnt/lustre/my-project及所有子项(包括新子项和现有子项),请执行以下操作:sudo lfs project -spr 101 /mnt/lustre/my-project使用
lfs setquota设置配额:sudo lfs setquota -p LFS_PROJECT_ID \ -b SOFT_BLOCK_LIMIT -B HARD_BLOCK_LIMIT \ -i SOFT_INODE_LIMIT -I HARD_INODE_LIMIT \ MOUNT_DIR
设置默认配额
为所有没有特定配额设置的用户设置硬块限制为 50 TB:
sudo lfs setquota -U -B 50T /mnt/lustre
修改配额
如需修改现有配额,请使用新值再次运行 lfs setquota。该命令会覆盖指定用户、群组或项目的先前设置。
配置宽限期
宽限期定义了用户、群组或项目在软限制充当硬限制之前可以超出软限制的时长。默认情况下,此值为一周。 宽限期是针对所有用户、群组或项目设置的;无法针对特定 ID 设置。
如需更新宽限期,请使用 lfs setquota -t 命令:
sudo lfs setquota -t -u | g | p \
-b BLOCK_GRACE_PERIOD -i INODE_GRACE_PERIOD \
MOUNT_DIR
其中:
-u将宽限期应用于用户配额。-g将宽限期应用于群组配额。-p将宽限期应用于项目配额。-b和-i分别指定块和 inode 宽限期。默认单位为秒。您可以使用其他单位,格式为:XwXdXhXmXs(周、天、小时、分钟、秒)。您可以为任一配额类型或两种配额类型设置限制。指定
'notify'而不是时间值,以便在超出软限制时,使用星号标记lfs quota的输出。在达到硬限制之前,指定'notify'时不会屏蔽新写入操作。
例如,如需为所有用户配额设置 7 天的块宽限期,请执行以下操作:
sudo lfs setquota -t -u -b 7d /mnt/lustre
如需为项目配额设置 24 小时的 inode 宽限期,请执行以下操作:
sudo lfs setquota -t -p -i 24h /mnt/lustre
如需在超出块软限制时收到通知,请执行以下操作:
sudo lfs setquota -t -u -b 'notify' /mnt/lustre
查看现有配额
lfs quota 命令会显示当前用户的用量和限制:
lfs quota MOUNT_DIR
如需查看完整选项列表,请从客户端运行 man lfs quota。
例如,如需查看 /mnt/lustre 上 user1 的配额,请执行以下操作:
sudo lfs quota -u user1 /mnt/lustre
请注意,如需查看其他用户的配额和用量,需要使用 sudo 运行该命令。
输出显示:
Filesystem:Lustre 装载点。kbytes:当前磁盘用量(以千字节为单位)。bquota:软块限制(以千字节为单位)。blimit:硬块限制(以千字节为单位)。bgrace:如果超出块软限制,则剩余宽限期。星号 (*) 表示超出软限制。files:已使用的 inode 数量。iquota:软 inode 限制。ilimit:硬 inode 限制。igrace:如果超出 inode 软限制,则剩余宽限期。星号 (*) 表示超出软限制。
如需查看为所有用户配额配置的宽限期,请执行以下操作:
lfs quota -t -u /mnt/lustre
在 Cloud Monitoring 中监控配额
除了在客户端上使用 lfs quota 命令之外,您还可以通过 Cloud Monitoring 查看文件系统配额用量和限制。这样,您就可以从
控制台Google Cloud 中监控用户、群组或项目的存储空间消耗情况。
配额指标与 Lustre 配额实体 受监控资源相关联。可查看的指标包括:
- 字节 :已使用的字节数、软限制和硬限制。
- Inode :已使用的 inode 数量、软限制和硬限制。
要查看这些指标:
在 Google Cloud 控制台中,前往 监控 > Metrics Explorer 页面。
在选择指标 字段中,搜索并选择 Lustre 配额实体 资源。
选择要查看的特定配额指标(例如配额已用字节数 或配额硬限制 Inode )。
(可选)使用过滤条件 选项,通过按
accounting_type标签(例如user、group、project)或id标签(例如特定 UID、GID 或项目 ID)进行过滤,来查看特定实体。
移除配额
如需移除配额,请将其软限制和硬限制设置为 0。
sudo lfs setquota -u | g | p | U | G | P UGP_VALUE -b 0 -B 0 -i 0 -I 0 MOUNT_DIR
例如,如需移除 user1 的块和 inode 配额,请执行以下操作:
sudo lfs setquota -u user1 -b 0 -B 0 -i 0 -I 0 /mnt/lustre
如需移除默认项目块限制,请执行以下操作:
sudo lfs setquota -P -b 0 -B 0 /mnt/lustre
常见问题
使用 Lustre 配额时,请注意以下常见问题:
授予的缓存:授予的缓存是 Lustre 的一项功能,它允许客户端从对象存储目标 (OST) 接收存储块作为“授予”,以便写入数据。当客户端拥有此授予的缓存时,即使数据仍在客户端的本地缓存中,并且在数据实际写入磁盘之前,它也可以立即向用户返回写入操作的成功消息。这是一种性能优化,可最大限度地减少延迟。
授予的缓存可能会导致配额超出。由于授予的缓存允许客户端继续将数据写入其缓存,即使其服务器端配额在此期间已用尽,因此用户可能会超出其硬限制。
项目 ID 分配不正确:如需使项目配额正常运行,必须使用
lfs project -spr为目录 和文件正确分配项目 ID。 忽略-r意味着项目 ID 不会应用于现有文件和子目录。忽略-s意味着稍后创建的新文件和目录不会继承项目 ID。多个配额和“最严格的配额优先” :用户可以同时受到用户配额、一个或多个群组配额以及一个或多个项目配额的限制。Lustre 会强制执行这些限制中最严格的限制。 这意味着,用户可能拥有较大的个人配额,但会受到该项目目录中文件的较小项目配额的限制。
根用户配额绕过:
root用户的写入操作会绕过配额强制执行。 即使为其他用户设置了配额,这也可能导致文件系统被管理任务填满。fallocate不遵守配额 :用户可以使用fallocate在文件系统上预留超出硬限制的空间。