ceph radosgw-admin的操作
常用操作:
生成一新用户:
在两个集群当中都创建相同的管理用户
radosgw-admin user create --uid=admin --display-name=admin --access_key=admin --secret=123456
|
这里为了测试方便使用了简单密码
此时admin还仅仅是普通的权限,需要通过cap添加user的capabilities,例如:
radosgw-admin caps add --uid=admin --caps="users=read, write"
|
$ radosgw-admin user create --display-name="johnny rotten" --uid=johnny
{ "user_id": "johnny",
"rados_uid": 0,
"display_name": "johnny rotten",
"email": "",
"suspended": 0,
"subusers": [],
"keys": [
{ "user": "johnny",
"access_key": "TCICW53D9BQ2VGC46I44",
"secret_key": "tfm9aHMI8X76L3UdgE+ZQaJag1vJQmE6HDb5Lbrz"}],
"swift_keys": []}
删除一用户:
$ radosgw-admin user rm --uid=johnny
删除一个用户和与他相关的桶及内容:
$ radosgw-admin user rm --uid=johnny --purge-data
删除一个桶:
$ radosgw-admin bucket unlink --bucket=foo
显示一个桶从 2012 年 4 月 1 日起的日志:
$ radosgw-admin log show --bucket=foo --date=2012-04-01
显示某用户 2012 年 3 月 1 日(不含)到 4 月 1 日期间的使用情况:
$ radosgw-admin usage show --uid=johnny \
--start-date=2012-03-01 --end-date=2012-04-01
只显示所有用户的使用情况汇总:
$ radosgw-admin usage show --show-log-entries=false
裁剪掉某用户 2012 年 4 月 1 日之前的使用信息:
$ radosgw-admin usage trim --uid=johnny --end-date=2012-04-01
命令
radosgw-admin 工具有很多命令,可完成各种管理任务:
- user create
- 创建一个新用户。
- user modify
- 修改一个用户。
- user info
- 显示用户信息,以及可能存在的子用户和密钥。
- user rm
- 删除一个用户。
- user suspend
- 暂停某用户。
- user enable
- 重新允许暂停的用户。
- user check
- 检查用户信息。
- user stats
- 显示配额子系统统计的用户状态。
- caps add
- 给用户分配能力。
- caps rm
- 删除用户能力。
- subuser create
- 新建一个子用户(适合使用 Swift API 的客户端)。
- subuser modify
- 修改子用户。
- subuser rm
- 删除子用户
- key create
- 新建访问密钥。
- key rm
- 删除访问密钥。
- bucket list
- 罗列所有桶。
- bucket link
- 把桶关联到指定用户。
- bucket unlink
- 取消指定用户和桶的关联。
- bucket stats
- 返回桶的统计信息。
- bucket rm
- 删除一个桶。
- bucket check
- 检查桶的索引信息。
- object rm
- 删除一个对象。
- object unlink
- 从桶索引里去掉对象。
- quota set
- 设置配额参数。
- quota enable
- 启用配额。
- quota disable
- 禁用配额。
- region get
- 显示 region 信息。
- regions list
- 列出本集群配置的所有 region 。
- region set
- 设置 region 信息(需要输入文件)。
- region default
- 设置默认 region 。
- region-map get
- 显示 region-map 。
- region-map set
- 设置 region-map (需要输入文件)。
- zone get
- 显示区域集群参数。
- zone set
- 设置区域集群参数(需要输入文件)。
- zone list
- 列出本集群内配置的所有区域。
- pool add
- 增加一个已有存储池用于数据归置。
- pool rm
- 从数据归置集删除一个已有存储池。
- pools list
- 罗列归置活跃集。
- policy
- 显示桶或对象相关的策略。
- log list
- 罗列日志对象。
- log show
- 显示指定对象内(或指定桶、日期、桶标识符)的日志。
- log rm
- 删除日志对象。
- usage show
- 查看使用率信息(可选选项有用户和数据范围)。
- usage trim
- 修剪使用率信息(可选选项有用户和数据范围)。
- temp remove
- 删除指定日期(时间可选)之前创建的临时对象。
- gc list
- 显示过期的垃圾回收对象(加 –include-all 选项罗列所有条目,包括未过期的)。
- gc process
- 手动处理垃圾。
- metadata get
- 读取元数据信息。
- metadata put
- 设置元数据信息。
- metadata rm
- 删除元数据信息。
- metadata list
- 罗列元数据信息。
- mdlog list
- 罗列元数据日志。
- mdlog trim
- 裁截元数据日志。
- bilog list
- 罗列桶索引日志。
- bilog trim
- 裁截桶索引日志(需要起始标记、结束标记)。
- datalog list
- 罗列数据日志。
- datalog trim
- 裁截数据日志。
- opstate list
- 罗列含状态操作(需要 client_id 、 op_id 、对象)。
- opstate set
- 设置条目状态(需指定 client_id 、 op_id 、对象、状态)。
- opstate renew
- 更新某一条目的状态(需指定 client_id 、 op_id 、对象)。
- opstate rm
- 删除条目(需指定 client_id 、 op_id 、对象)。
- replicalog get
- 读取复制元数据日志条目。
- replicalog delete
- 删除复制元数据日志条目。
选项
- -c ceph.conf, --conf=ceph.conf
-
用指定的 ceph.conf 配置文件而非默认的 /etc/ceph/ceph.conf 来确定启动时所需的监视器地址。
- -m monaddress[:port]
-
连接到指定监视器,而非通过 ceph.conf 查询。
- --uid=uid
-
radosgw 用户的 ID 。
- --subuser=<name>
-
子用户名字。
- --email=email
-
用户的电子邮件地址。
- --display-name=name
-
配置用户的显示名称(昵称)
- --access-key=<key>
-
S3 访问密钥。
- --gen-access-key
-
生成随机访问密钥(给 S3 )。
- --secret=secret
-
指定密钥的密文。
- --gen-secret
-
生成随机密钥。
- --key-type=<type>
-
密钥类型,可用的有: swift 、 S3 。
- --temp-url-key[-2]=<key>
-
临时 URL 密钥。
- --system
-
给用户设置系统标识。
- --bucket=bucket
-
指定桶名
- --object=object
-
指定对象名
- --date=yyyy-mm-dd
-
某些命令所需的日期
- --start-date=yyyy-mm-dd
-
某些命令所需的起始日期
- --end-date=yyyy-mm-dd
-
某些命令所需的终结日期
- --shard-id=<shard-id>
-
执行 mdlog list 时为可选项。对 mdlog trim 、 replica mdlog get/delete 、 replica datalog get/delete 来说是必须的。
- --auth-uid=auid
-
librados 认证所需的 auid 。
- --purge-data
-
删除用户前先删除用户数据。
- --purge-keys
-
若加了此选项,删除子用户时将一起删除其所有密钥。
- --purge-objects
-
删除桶前先删除其内所有对象。
- --metadata-key=<key>
-
用 metadata get 检索元数据时用的密钥。
- --rgw-region=<region>
-
radosgw 所在的 region 。
- --rgw-zone=<zone>
-
radosgw 所在的区域。
- --fix
-
除了检查桶索引,还修复它。
- --check-objects
-
检查桶:根据对象的实际状态重建桶索引。
- --format=<format>
-
为某些操作指定输出格式: xml 、 json 。
- --sync-stats
-
user stats 的选项,收集用户的桶索引状态、并同步到用户状态。
- --show-log-entries=<flag>
-
执行 log show 时,显示或不显示日志条目。
- --show-log-sum=<flag>
-
执行 log show 时,显示或不显示日志汇总。
- --skip-zero-entries
-
让 log show 只显示数字字段非零的日志。
- --infile
-
设置时指定要读取的文件。
- --state=<state string>
-
给 opstate set 命令指定状态。
- --replica-log-type
-
复制日志类型( metadata 、 data 、 bucket ),操作复制日志时需要。
- --categories=<list>
-
逗号分隔的一系列类目,显示使用情况时需要。
- --caps=<caps>
-
能力列表,如 “usage=read, write; user=read” 。
- --yes-i-really-mean-it
-
某些特定操作需要。
配额选项
- --bucket
-
为配额命令指定桶。
- --max-objects
-
指定最大对象数(负数为禁用)。
- --max-size
-
指定最大尺寸(单位为字节,负数为禁用)。
- --quota-scope
-
配额有效范围(桶、用户)。
操作管理实例:
用户管理
新建一个用户
执行下面的命令新建一个用户 (S3 接口):
实例如下:
radosgw-admin user create --uid=johndoe --display-name="John Doe" --email=john@example.com
新建一个子用户
为了给用户新建一个子用户 (Swift 接口) ,你必须为该子用户指定用户的 ID(--uid={username}),子用户的 ID 以及访问级别:
radosgw-admin subuser create --uid={uid} --subuser={uid} --access=[ read | write | readwrite | full ]
实例如下:
radosgw-admin subuser create --uid=johndoe --subuser=johndoe:swift --access=full
Note:full 并不表示 readwrite, 因为它还包括访问权限策略.
获取用户信息
要获取一个用户的信息,你必须使用 user info 子命令并且制定一个用户 ID(--uid={username}) .
radosgw-admin user info --uid=johndoe
修改用户信息
要修改一个用户的信息,你必须指定用户的 ID (--uid={username}),还有 你想要修改的属性值。典型的修改项主要是 access 和secret 密钥,邮件地址,显 示名称和访问级别。举例如下:
radosgw-admin user modify --uid=johndoe --display-name="John E. Doe"
要修改子用户的信息, 使用 subuser modify 子命令并且执行子用户的 ID. 举例如下:
radosgw-admin subuser modify --uid=johndoe:swift --access=full
用户 启用/停用
当你创建了一个用户,用户默认情况下是处于启用状态的。然而,你可以暂停用户权 限并在以后随时重新启用它们。暂停一个用户,使用 user suspend 子命令 然后哦指定用户的 ID:
radosgw-admin user suspend --uid=johndoe
要重新启用已经被停用的用户,使用 user enable 子命令并指明用户的 ID.
radosgw-admin user enable --uid=johndoe
Note:停用一个用户后,它的子用户也会一起被停用.
删除用户
删除用户时,这个用户以及他的子用户都会被删除。当然,如果你愿意,可以只删除子用户。要删除用户(及其子用户),可使用 user rm 子命令并指明用户 ID :
radosgw-admin user rm --uid=johndoe
只想删除子用户时,可使用 subuser rm 子命令并指明子用户 ID 。
radosgw-admin subuser rm --subuser=johndoe:swift
其它可选操作:
- Purge Data: 加 --purge-data 选项可清除与此 UID 相关的所有数据。
- Purge Keys: 加 --purge-keys 选项可清除与此 UID 相关的所有密钥。
删除子用户
在你删除子用户的同时,也失去了 Swift 接口的访问方式,但是这个用户在系统 中还存在。要删除子用户,可使用 subuser rm 子命令并指明子用户 ID :
radosgw-admin subuser rm --subuser=johndoe:swift
其它可选操作:
- Purge Keys: 加 --purge-keys 选项可清除与此 UID 相关的所有密钥。
新建一个密钥
要为用户新建一个密钥,你需要使用 key create 子命令。对于用户来说,需要指明用户的 ID 以及新建的密钥类型为 s3 。要为子用户新建一个密钥,则需要指明子用户的 ID以及密钥类型为 swift 。实例如下:
radosgw-admin key create --subuser=johndoe:swift --key-type=swift --gen-secret
新建/删除 ACCESS 密钥
用户和子用户要能使用 S3 和Swift 接口,必须有 access 密钥。在你新 建用户或者子用户的时候,如果没有指明 access 和 secret 密钥,这两 个密钥会自动生成。你可能需要新建 access 和/或 secret 密钥,不管是 手动指定还是自动生成的方式。你也可能需要删除一个 access 和 secret 。可用的选项有:
- --secret=<key> 指明一个 secret 密钥 (e.即手动生成).
- --gen-access-key 生成一个随机的 access 密钥 (新建 S3 用户的默认选项).
- --gen-secret 生成一个随机的 secret 密钥.
- --key-type=<type> 指定密钥类型. 这个选项的值可以是: swift, s3
要新建密钥,需要指明用户 ID.
radosgw-admin key create --uid=johndoe --key-type=s3 --gen-access-key --gen-secret
你也可以使用指定 access 和 secret 密钥的方式.
要删除一个 access 密钥, 也需要指定用户 ID.
radosgw-admin key rm --uid=johndoe
添加/删除 管理权限
Ceph 存储集群提供了一个管理API,它允许用户通过 REST API 执行管理功能。默认情况下,用户没有访问 这个 API 的权限。要启用用户的管理功能,需要为用 户提供管理权限。
执行下面的命令为一个用户添加管理权限:
radosgw-admin caps add --uid={uid} --caps={caps}
你可以给一个用户添加对用户、bucket、元数据和用量(存储使用信息)等数据的 读、写或者所有权限。举例如下:
--caps="[users|buckets|metadata|usage|zone]=[*|read|write|read, write]"
实例如下:
radosgw-admin caps add --uid=johndoe --caps="users=*"
要删除某用户的管理权限,可用下面的命令:
radosgw-admin caps rm --uid=johndoe --caps={caps}
配额管理
设置用户配额
在你启用用户的配额前 ,你需要先设置配额参数。 例如:
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=johndoe --max-objects=1024 --max-size=1024
最大对象数和最大存储用量的值是负数则表示不启用指定的 配额参数。
启用/禁用用户配额
在你设置了用户配额之后,你可以启用这个配额。实例如下:
radosgw-admin quota enable --quota-scope=user --uid=<uid>
你也可以禁用已经启用了配额的用户的配额。 举例如下:
radosgw-admin quota-disable --quota-scope=user --uid=<uid>
设置 BUCKET 配额
Bucket 配额作用于用户的某一个 bucket,通过 uid 指定用户。这些配额设置是独立于用户之外的。:
radosgw-admin quota set --uid=<uid> --quota-scope=bucket [--max-objects=<num objects>] [--max-size=<max size>]
最大对象数和最大存储用量的值是负数则表示不启用指定的 配额参数。
启用/禁用 BUCKET 配额
在你设置了 bucket 配额之后,你可以启用这个配额。实例如下:
radosgw-admin quota enable --quota-scope=bucket --uid=<uid>
你也可以禁用已经启用了配额的 bucket 的配额。 举例如下:
radosgw-admin quota-disable --quota-scope=bucket --uid=<uid>
获取配额信息
你可以通过用户信息 API 来获取每一个用户的配额 设置。通过 CLI 接口读取用户的配额设置信息,请执行下面的命令:
radosgw-admin user info --uid=<uid>
更新配额统计信息
配额的统计数据的同步是异步的。你也可以通过手动获 取最新的配额统计数据为所有用户和所有 bucket 更新配额统计数据:
radosgw-admin user stats --uid=<uid> --sync-stats
获取用户用量统计信息
执行下面的命令获取当前用户已经消耗了配额的多少:
radosgw-admin user stats --uid=<uid>
Note:你应该在执行 radosgw-admin user stats 的时候带上 --sync-stats 参数来获取最新的数据.
读取/设置全局配额
你可以在 region map中读取和设置配额。执行下面的命 令来获取 region map:
radosgw-admin regionmap get > regionmap.json
要为整个 region 设置配额,只需要简单的修改 region map 中的配额设置。然后使用 region set 来更新 region map即可:
radosgw-admin region set < regionmap.json
Note:在更新 region map 后,你必须重启网关.
用量管理
Ceph 对象网关会为每一个用户记录用量数据。你也可以通过指定日期范围来跟踪用户的用量数据。
可用选项如下:
- Start Date: 选项 --start-date 允许你指定一个起始日期来过滤用量数据 (format: yyyy-mm-dd[HH:MM:SS]).
- End Date: 选项 --end-date 允许你指定一个截止日期来过滤用量数据 (format: yyyy-mm-dd[HH:MM:SS]).
- Log Entries: 选项 --show-log-entries 允许你 指明显示用量数据的时候是否要包含日志条目。 (选项值: true | false).
Note:你可以指定时间为分钟和秒,但是数据存储是以一个小时的间隔存储的.
展示用量信息
显示用量统计数据,使用 usage show 子命令。显示某一个特定 用户的用量数据,你必须指定该用户的 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
删除用量信息
对于大量使用的集群而言,用量日志可能会占用大量存储空间。你可以为所有用户或者一个特定的用户删除部分用量日志。你也可以为删除操作指定日期范围。:
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