配额管理

通过ceph object gateway, 可以在用户和用户拥有的存储桶上设置配额。配额包括存储桶中的最大对象数和存储桶可容纳的最大存储大小。

Bucket: --bucket选项可让您为用户拥有的存储桶指定配额。

Maximum Objects: --max-objects设置允许指定最大对象数,负值将禁用此设置。

Maximum Size: --quota-scope选项设置配额的范围。选项是存储桶和用户,存储桶配额适用于用户拥有的存储桶,用户配额适用于用户。

设置用户配额

在激活配额设置前,需要首先设置配额参数,例如:

radosgw-admin quota set --quota-scope=user --uid=<uid> [--max-objects=<num objects>] [--max-size=<max size>]

示例:

radosgw-admin quota set --quota-scope=user --uid=radosgw --max-objects=1024 --max-size=1024B

num objects和max size若为负值,则表示已禁用特定的配额属性检查。

启用或者禁用用户配额

一旦设置了用户的配置,就可以启动它。例如:

radosgw-admin quota enable --quota-scope=user --uid=<uid>

示例:

radosgw-admin quota enable --quota-scope=user --uid=radosgw

你可以禁用或者启用用户配额,例如:

radosgw-admin quota disable --quota-scope=user --uid=<uid>

示例:

radosgw-admin quota disable --quota-scope=user --uid=radosgw

设置桶配额

存储桶配额适用于指定uid拥有的存储桶,它们独立于用户。

radosgw-admin quota set --uid=<uid> --quota-scope=bucket [--max-objects=<num objects>] [--max-size=<max size]

num对象和max size为负值则表示已经禁用特定的配额属性检查。

示例:

radosgw-admin quota set --uid=radosgw --quota-scope=bucket --max-objects=1024 --max-size=1024B

启用/禁用存储桶配额

一旦设置了存储桶配额,就可以启用相关配置。例如:

radosgw-admin quota enable --quota-scope=bucket --uid=<uid>

也可以禁用已经激活的存储桶,例如:

radosgw-admin quota disable --quota-scope=bucket --uid=<uid>

示例:

$ radosgw-admin quota enable --quota-scope=bucket --uid=radosgw
$ radosgw-admin quota disable --quota-scope=bucket --uid=radosgw

获取配额信息

**可以通过用户信息API访问每个用户的配额设置。**要通过CLI界面读取用户配额设置信息,请执行以下操作:

radosgw-admin user info --uid=<uid>

示例:

$ radosgw-admin user info --uid=radosgw
{
    "user_id": "radosgw",
    "display_name": "radosgw",
    "email": "",
    "suspended": 0,
    "max_buckets": 1000,
    "auid": 0,
    "subusers": [],
    "keys": [
        {
            "user": "radosgw",
            "access_key": "661YYBNBJESEXVIEVDO1",
            "secret_key": "CV3Y63PzO38MMy1BhaXEivDoeECrRjDNN4HA9DyU"
        }
    ],
    "swift_keys": [],
    "caps": [],
    "op_mask": "read, write, delete",
    "default_placement": "",
    "placement_tags": [],
    "bucket_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": 1024,
        "max_size_kb": 1,
        "max_objects": 1024
    },
    "user_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": 1024,
        "max_size_kb": 1,
        "max_objects": 1024
    },
    "temp_url_keys": [],
    "type": "rgw",
    "mfa_ids": []
}

更新配额状态

配额统计信息会异步更新。可以手动更新所有用户和所有存储桶的配额统计信息,用来获取最新的配额统计信息。

$ radosgw-admin user stats --uid=<uid> --sync-stats

示例:

$ radosgw-admin user stats --uid=radosgw --sync-stats
{
    "stats": {
        "total_entries": 7,
        "total_bytes": 509,
        "total_bytes_rounded": 24576
    },
    "last_stats_sync": "2020-07-06 07:04:42.321528Z",
    "last_stats_update": "2020-07-06 07:04:42.309780Z"

获取用户使用状态

要查看用户已经消耗了多少配额,可以执行以下操作:

radosgw-admin user stats --uid=<uid>

示例:

radosgw-admin user stats --uid=radosgw
{
    "stats": {
        "total_entries": 7,
        "total_bytes": 509,
        "total_bytes_rounded": 24576
    },
    "last_stats_sync": "2020-07-06 07:05:02.185337Z",
    "last_stats_update": "2020-07-06 07:05:02.181416Z"
}

注意应当使用–sync-stats选项执行radosgw-admin用户统计信息,用来接收最新的数据。

定义配额

可以在配置中设置默认配额,这些默认值在创建新用户时使用,对现有用户没有影响。如果在config中设置了相关的默认配额,则将在新用户上设置该配额,并启用该配额。请参阅《Ceph对象网关配置参考》中的rgw存储桶默认配额最大对象,rgw存储桶默认配额最大大小,rgw用户默认配额最大对象和rgw用户默认配额最大大小。

配额缓存

Quota statistics are cached on each RGW instance. If there are multiple instances, then the cache can keep quotas from being perfectly enforced, as each instance will have a different view of quotas. The options that control this are rgw bucket quota ttl, rgw user quota bucket sync interval and rgw user quota sync interval. The higher these values are, the more efficient quota operations are, but the more out-of-sync multiple instances will be. The lower these values are, the closer to perfect enforcement multiple instances will achieve. If all three are 0, then quota caching is effectively disabled, and multiple instances will have perfect quota enforcement. See Ceph Object Gateway Config Reference

读、写全局配额

在配置期间可以读取和写入全局配额设置,要查看全局配额:

radosgw-admin global quota get

示例:

radosgw-admin global quota get
{
    "bucket quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "user quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    }
}

可以使用配额设置,配额启用和配额禁用命令的全局配额对应项来操纵全局配额设置。

radosgw-admin global quota set --quota-scope bucket --max-objects 1024
radosgw-admin global quota enable --quota-scope bucket

Note In a multisite configuration, where there is a realm and period present, changes to the global quotas must be committed using period update --commit. If there is no period present, the rados gateway(s) must be restarted for the changes to take effect.

使用量

Ceph对象网关记录每个用户的使用情况。可以追踪日期范围内的用户使用情况。

在ceph.conf的[client.rgw]部分中添加rgw enable Usage log = true,然后重新启动radosgw服务。

Options include:

  1. Start Date: --start-date选项允许你从特定的开始日期过滤使用情况统计信息(格式:yyyy-mm-dd[HH:MM:SS])
  2. End Date: --end-date选项使您可以过滤特定日期之前的使用情况(格式: yyyy-mm-dd[HH:MM:SS])
  3. Log Entries: --show-log-entries选项允许您指定是否在使用情况统计信息中包括日志条目(选项: true|false)

注意:可以使用分钟和秒来指定时间,但是它以1小时的分辨率存储。

展示使用量

要显示使用情况统计信息,需要指定使用情况显示。要显示特定用户的使用情况,必须指定一个用户ID。还可以指定开始日期,结束日期以及是否显示日志条目:

radosgw-admin usage show --uid=johndoe --start-date=2012-03-01 --end-date=2012-04-01

同样可以省略用户ID来显示所有用户的使用情况信息摘要

radosgw-admin usage show --show-log-entries=false
TRIM USAGE

大量使用后,使用日志可能会开始占用存储空间。可以为所有用户和特定用户修剪使用日志,也可以指定修剪操作的日期范围。

radosgw-admin usage trim --start-date=2010-01-01 --end-date=2010-12-31
radosgw-admin usage trim --uid=johndoe
radosgw-admin usage trim --uid=johndoe --end-date=2013-12-31
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐