9.6. 配额管理
Ceph 对象网关允许您设置用户拥有的用户和 bucket 的配额。配额包括 bucket 中对象的最大数量,以及最大存储大小(以 MB 为单位)。
-
Bucket:
--bucket
选项允许您为用户拥有的存储桶指定配额。 -
最大对象:
--max-objects
设置允许您指定对象的最大数量。负值将禁用此设置。 -
最大大小:
--max-size
选项允许您为最大字节数指定配额。负值将禁用此设置。 -
配额范围:
--quota-scope
选项设置配额的范围。选项为bucket
和user
。bucket 配额应用到用户拥有的 bucket。用户配额应用到用户。
具有大量对象的 bucket 可能会导致严重的性能问题。一个 bucket 中建议的最多对象数量为 100,000。要增加这个数量,请配置存储桶索引分片。详情请参阅 Configure bucket index resharding。
9.6.1. 设置用户配额
在启用配额前,您必须首先设置配额参数。
语法
radosgw-admin quota set --quota-scope=user --uid=USER_ID [--max-objects=NUMBER_OF_OBJECTS] [--max-size=MAXIMUM_SIZE_IN_BYTES]
示例
[root@host01 ~]# radosgw-admin quota set --quota-scope=user --uid=johndoe --max-objects=1024 --max-size=1024
num 对象和 / 或 max size 的负值表示禁用特定的配额属性检查。
9.6.2. 启用和禁用用户配额
设置用户配额后,您可以启用它。
语法
radosgw-admin quota enable --quota-scope=user --uid=USER_ID
您可以禁用启用的用户配额。
语法
radosgw-admin quota disable --quota-scope=user --uid=USER_ID
9.6.3. 设置存储桶配额
bucket 配额应用到指定 uid
拥有的 bucket。它们独立于用户。
语法
radosgw-admin quota set --uid=USER_ID --quota-scope=bucket --bucket=BUCKET_NAME [--max-objects=NUMBER_OF_OBJECTS] [--max-size=MAXIMUM_SIZE_IN_BYTES]
NUMBER_OF_OBJECTS,MAXIMUM_SIZE_IN_BYTES 的负值表示禁用特定的配额属性检查。
9.6.4. 启用和禁用存储桶配额
设置存储桶配额后,您可以启用它。
语法
radosgw-admin quota enable --quota-scope=bucket --uid=USER_ID
您可以禁用启用的存储桶配额。
语法
radosgw-admin quota disable --quota-scope=bucket --uid=USER_ID
9.6.5. 获取配额设置
您可以通过用户信息 API 访问每个用户的配额设置。要使用 CLI 接口读取用户配额设置信息,请运行以下命令:
语法
radosgw-admin user info --uid=USER_ID
要获得租户用户的配额设置,请指定用户 ID 和租户名称:
语法
radosgw-admin user info --uid=USER_ID --tenant=TENANT
9.6.6. 更新配额统计
配额统计异步更新。您可以手动更新所有用户和所有存储桶的配额统计,以检索最新的配额统计。
语法
radosgw-admin user stats --uid=USER_ID --sync-stats
9.6.7. 获取用户配额使用量统计
要查看用户消耗的配额量,请运行以下命令:
语法
radosgw-admin user stats --uid=USER_ID
您应当使用 --sync-stats
选项执行 radosgw-admin user stats
,以接收最新的数据。
9.6.8. 配额缓存
为每个 Ceph 网关实例缓存配额统计数据。如果有多个实例,缓存可以防止完全强制执行配额,因为每个实例对配额有不同的视图。控制此功能的选项是 rgw bucket 配额 ttl
、rgw 用户配额 bucket 同步间隔
,以及 rgw 用户配额同步间隔
。这些值越大,配额操作效率越高,但多个实例不同步就会越高。这些值越低,将更接近于完美地实施多个实例。如果所有三个都是 0,则有效禁用配额缓存,多个实例也具有完美的配额实施。
9.6.9. 读取和写入全局配额
您可以在 zonegroup map 中读取和写入配额设置。获取 zonegroup map:
[root@host01 ~]# radosgw-admin global quota get
全局配额设置可以使用 global quota
的与 quota set
, quota enable
, 和 quota disable
命令相关的部分,例如:
[root@host01 ~]# radosgw-admin global quota set --quota-scope bucket --max-objects 1024 [root@host01 ~]# radosgw-admin global quota enable --quota-scope bucket
在存在 realm 和 period 的多站点配置中,必须使用 period update --commit
提交对全局配额的更改。如果没有 period,则必须重启 Ceph 对象网关,才能使更改生效。