Google Cloud Managed Lustre 文件系统支持用户、群组和项目配额,管理员可以借此管理存储空间消耗并确保资源分配公平合理。本文档介绍了如何配置、查看和管理这些配额。
什么是文件系统配额?
在 Managed Lustre 中,您可以设置用户、群组或项目在文件系统中可使用的磁盘空间量和文件数量上限。
配额适用于不同的实体:
- 用户配额用于限制单个非根用户使用的存储空间。
- 群组配额用于限制特定群组的所有非根成员消耗的存储空间。
- 项目配额用于限制与特定项目 ID 关联的文件和目录所占用的存储空间。此项目 ID 是使用
lfs project定义的 Lustre 文件系统标识符,而不是您的Google Cloud 项目 ID。如需了解详情,请参阅设置项目配额。
为以下两种资源类型配置了配额:
- 块限制是指对可使用的磁盘空间量的限制。
- inode 限制是指可以创建的文件和目录数量的限制。
每种资源类型都可以有两级限制:
软限制是一种配额阈值,超出该阈值时会触发可配置的宽限期。在宽限期内,用户、群组或项目可以暂时超出软限制,如果存在硬限制,则不得超出硬限制,以便在被阻止之前有时间减少用量。宽限期结束后,如果用量仍高于软限制,系统会将软限制强制执行为硬限制,从而阻止所有新的写入操作,直到磁盘空间或 inode 数量低于软限制为止。
默认宽限期为一周。
硬性限制定义了绝对上限。如果达到此限制,任何进一步的写入操作都会失败,并返回“磁盘配额超出”错误。
管理用户和群组
Lustre 依赖于客户端的 POSIX 属性来获取用户和组名称及 ID。
当客户端发出文件系统请求时,会将本地 UID 和 GID 发送到 Lustre 服务器。服务器使用这些 POSIX 属性来强制执行标准文件权限并跟踪配额使用情况。
为了在多用户环境中保持一致的行为,装载 Lustre 文件系统的所有客户端都必须具有同步的 UID 和 GID 映射,这些映射通常通过 LDAP 或 NIS 等集中式服务进行管理。
根用户不受配额限制。使用 sudo 运行的命令也会绕过配额检查。
准备工作
如需管理 Lustre 配额,您需要:
- 客户端对有效 Google Cloud Managed Lustre 文件系统的访问权限。
- 客户端系统上的
sudo或 root 权限,以执行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 指定用户。-g按群组名称或 GID 指定群组。-p按项目 ID 指定项目。U、G和P用于为未设置特定配额的任何用户、群组或项目设置默认配额。- UGP_VALUE 是用户名、群组名称、UID、GID 或项目 ID。 如果您要指定默认的用户、群组或项目配额,请忽略此值。
-b和-B是块使用量的软性限制和硬性限制。软限制应小于硬限制。值可以以字节 (B)、千字节 (K)、兆字节 (M)、千兆字节 (G) 或太字节 (T) 为单位指定。默认单位为千字节。-i和-I是 inode 使用的软性限制和硬性限制。软限制应小于硬限制。- MOUNT_DIR 是受管理的 Lustre 文件系统的装载点。
请注意,您无法在创建配额的同时配置宽限期。软上限的默认宽限期为一周。如需更新宽限期,请参阅配置宽限期。
示例
设置用户配额
为 /mnt/lustre 上的 user1 设置 100 GB 的软块限制、120 GB 的硬块限制、10,000 的软 inode 限制和 12,000 的硬 inode 限制:
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。-r会以递归方式将项目 ID 应用于所有子目录和文件。-p会指示该命令在指定的文件或目录上设置给定的项目 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。
例如,如需查看 user1 在 /mnt/lustre 上的配额,请运行以下命令:
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
移除配额
如需移除配额,请将其软性限制和硬性限制设置为 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在文件系统上预留超出硬限制的空间。