ceph-rest-api 的文档
dmsimard
我得知 Ceph 有一个 REST API,并且我对此进行了一些尝试。
我说文档缺乏,我现在收回这句话,我当时没有意识到 API 文档是内置到应用程序中的。我开了一个 pull request,使文档对此更加明确:https://github.com/ceph/ceph/pull/1026
这是 API 文档当前的样子:
| 可能的命令 | 方法 | 描述 |
|---|---|---|
| auth/add?entity=entity( | ||
| aps( | PUT | 为 |
| auth/caps?entity=entity( | ||
| aps( | PUT | 更新 |
| auth/del?entity=entity( | PUT | 删除 |
| auth/export?entity={entity( | GET | 写入所请求实体的 keyring,如果未给定实体则写入主 keyring |
| auth/get?entity=entity( | GET | 写入包含所请求密钥的 keyring 文件 |
| auth/get-key?entity=entity( | GET | 显示所请求的密钥 |
| auth/get-or-create?entity=entity(<string | ||
| >)&caps={caps( | PUT | 为 |
| auth/get-or-create-key?entity=entity(<st | ||
| ring>)&caps={caps( | ||
| [ | PUT | 获取或添加 |
| auth/import | PUT | auth import: 从 -i 读取 keyring 文件 |
| auth/list | GET | 列出认证状态 |
| auth/print-key?entity=entity( | GET | 显示所请求的密钥 |
| auth/print_key?entity=entity( | GET | 显示所请求的密钥 |
| tell/ | ||
| PUT | OSD 基准测试:写入 | |
| compact | PUT | 对 monitor 的 leveldb 存储进行压缩 |
| config-key/del?key=key( | PUT | 删除 |
| config-key/exists?key=key( | GET | 检查 |
| config-key/get?key=key( | GET | 获取 |
| config-key/list | GET | 列出密钥 |
| config-key/put?key=key( | ||
| l( | PUT | 放置 |
| tell/<osdid-or- | ||
| pgid>/cpu_profiler?arg=arg(status | flush) | PUT |
| tell/ | ||
| _wq?delay=delay(<int[0-]>) | PUT | 设置 osd_recovery_delay_start 为 |
| tell/ | ||
| filename=filename( | GET | 将丢失对象转储到指定文件 |
| df?detail={detail} | GET | 显示集群可用空间统计信息 |
| tell/<osdid-or- | ||
| pgid>/dump_pg_recovery_stats | GET | 转储 pg 恢复统计信息 |
| tell/ | PUT | 刷新 pg 统计信息 |
| fsid | GET | 显示集群 FSID/UUID |
| health?detail={detail} | GET | 显示集群健康状况 |
| tell/ | ||
| d(dump | start_profiler | stop_profiler |
| ase | stats) | PUT |
| heap?heapcmd=heapcmd(dump | start_profiler | |
| stop_profiler | 发布 | stats) |
| tell/ | ||
| _args=injected_args( | ||
| [ | PUT | 将配置参数注入正在运行的 OSD |
| injectargs?injected_args=injected_args(< | ||
| string>) [ | PUT | 将配置参数注入 monitor |
| tell/ | ||
| ={offset( | GET | 列出此 pg 上丢失的对象,可能从 JSON 中给定的偏移量开始 |
| tell/ | ||
| ={offset( | PUT | 列出此 pg 上丢失的对象,可能从 JSON 中给定的偏移量开始 |
| log?logtext=logtext( | ||
| [ | PUT | 将提供的文本记录到 monitor 日志中 |
| tell/<osdid-or- | ||
| pgid>/mark_unfound_lost?mulcmd=revert | PUT | 将此 pg 中所有未找到的对象标记为丢失,如果存在先前版本,则删除或回滚到先前版本 |
| tell/ | ||
| evert?mulcmd=revert | PUT | 将此 pg 中所有未找到的对象标记为丢失,如果存在先前版本,则删除或回滚到先前版本 |
| mds/add_data_pool?pool=pool( | PUT | 添加数据池 |
| mds/cluster_down | PUT | 关闭 MDS 集群 |
| mds/cluster_up | PUT | 启动 MDS 集群 |
| mds/compat/rm_compat?feature=feature(<in | ||
| t[0-]>) | PUT | 删除兼容功能 |
| mds/compat/rm_incompat?feature=feature(< | ||
| int[0-]>) | PUT | 删除不兼容功能 |
| mds/compat/show | GET | 显示 mds 兼容性设置 |
| mds/deactivate?who=who( | PUT | 停止 mds |
| mds/dump?epoch={epoch(<int[0-]>)} | GET | 转储信息,可选择从 epoch 开始 |
| mds/fail?who=who( | PUT | 强制 mds 状态为 failed |
| mds/getmap?epoch={epoch(<int[0-]>)} | GET | 获取 MDS map,可选择从 epoch 开始 |
| mds/newfs?metadata=metadata(<int[0-]>)&d | ||
| ata=data(<int[0-]>)&sure={—yes-i | ||
| -really-mean-it} | PUT | 使用 pools |
| mds/remove_data_pool?pool=pool( | PUT | 删除数据池 |
| mds/rm?gid=gid(<int[0-]>)&who=who(<name | ||
| (type.id)>) | PUT | 删除非活动 mds |
| mds/rmfailed?who=who(<int[0-]>) | PUT | 删除失败的 mds |
| mds/set?key=allow_new_snaps&sure={sure(< | ||
| string>)} | 未知 | 设置 |
| mds/set_max_mds?maxmds=maxmds(<int[0-]>) | PUT | 设置最大 MDS 索引 |
| mds/set_state?gid=gid(<int[0-]>)&state=s | ||
| tate(<int[0-20]>) | PUT | 设置 mds 的状态为 |
| mds/setmap?epoch=epoch(<int[0-]>) | PUT | 设置 mds map;必须提供正确的 epoch 编号 |
| mds/stat | GET | 显示 MDS 状态 |
| mds/stop?who=who( | PUT | 停止 mds |
| mds/tell?who=who( | ||
| ring>) [ | PUT | 向特定 mds 发送命令 |
| mds/unset?key=allow_new_snaps&sure={sure | ||
| ( | 未知 | 取消设置 |
| mon/add?name=name( | ||
| Paddr[:port]>) | PUT | 添加名为 |
| mon/dump?epoch={epoch(<int[0-]>)} | GET | 转储格式化的 monmap(可选择从 epoch 开始) |
| mon/getmap?epoch={epoch(<int[0-]>)} | GET | 获取 monmap |
| mon/remove?name=name( | PUT | 删除名为 |
| mon/stat | GET | 总结 monitor 状态 |
| mon_status | GET | 报告 monitor 状态 |
| osd/blacklist?blacklistop=blacklistop(ad | ||
| d | rm)&addr=addr( | |
| pire(<float[0.0-]>)} | PUT | 添加(可选直到 |
| osd/blacklist/ls | GET | 显示黑名单中的客户端 |
| osd/create?uuid={uuid( | PUT | 创建新 osd(带可选 UUID) |
| osd/crush/add?id=id(<osdname (id | osd.id) | |
| >)&weight=weight(<float[0.0-]>)&args=arg | ||
| s(<string(goodchars [A-Za-z0-9-_.=])>) | ||
| [<string(goodchars [A-Za-z0-9-_.=])>…] | PUT | 添加或更新 crushmap 位置和权重,为 |
| osd/crush/add- | ||
| bucket?name=name(<string(goodchars | ||
| [A-Za-z0-9-_.])>)&type=type( | PUT | 添加无父级(可能是根)crush bucket |
| osd/crush/create-or-move?id=id(<osdname | ||
| (id | osd.id)>)&weight=weight(<float[0.0-] | |
| >)&args=args(<string(goodchars | ||
| [A-Za-z0-9-_.=])>) [<string(goodchars | ||
| [A-Za-z0-9-_.=])>…] | PUT | 为 |
| osd/crush/dump | GET | 转储 crush map |
| osd/crush/link?name=name( | ||
| args(<string(goodchars | ||
| [A-Za-z0-9-_.=])>) [<string(goodchars | ||
| [A-Za-z0-9-_.=])>…] | PUT | 在位置 |
| osd/crush/move?name=name(<string(goodcha | ||
| rs [A-Za-z0-9-_.])>)&args=args(<string(g | ||
| oodchars [A-Za-z0-9-_.=])>) | ||
| [<string(goodchars [A-Za-z0-9-_.=])>…] | PUT | 移动现有条目 |
| osd/crush/remove?name=name(<string(goodc | ||
| hars [A-Za-z0-9-_.])>)&ancestor={ancesto | ||
| r(<string(goodchars [A-Za-z0-9-_.])>)} | PUT | 从 crush map 中删除 |
| osd/crush/reweight?name=name(<string(goo | ||
| dchars [A-Za-z0-9-_.])>)&weight=weight(< | ||
| float[0.0-]>) | PUT | 在 crush map 中将 |
| osd/crush/rm?name=name(<string(goodchars | ||
| [A-Za-z0-9-_.])>)&ancestor={ancestor(<st | ||
| ring(goodchars [A-Za-z0-9-_.])>)} | PUT | 从 crush map 中删除 |
| osd/crush/rule/create- | ||
| simple?name=name(<string(goodchars [A-Za | ||
| -z0-9-_.])>)&root=root(<string(goodchars | ||
| [A-Za-z0-9-_.])>)&type=type(<string(good | ||
| chars [A-Za-z0-9-_.])>) | PUT | 创建 crush 规则 |
| osd/crush/rule/dump | GET | 转储 crush 规则 |
| osd/crush/rule/list | GET | 列出 crush 规则 |
| osd/crush/rule/ls | GET | 列出 crush 规则 |
| osd/crush/rule/rm?name=name(<string(good | ||
| chars [A-Za-z0-9-_.])>) | PUT | 删除 crush 规则 |
| osd/crush/set | PUT | 从输入文件设置 crush map |
| osd/crush/set?id=id(<osdname (id | osd.id) | |
| >)&weight=weight(<float[0.0-]>)&args=arg | ||
| s(<string(goodchars [A-Za-z0-9-_.=])>) | ||
| [<string(goodchars [A-Za-z0-9-_.=])>…] | PUT | 更新 crushmap 位置和权重,为 |
| osd/crush/tunables?profile=profile(legac | ||
| y | argonaut | bobtail |
| osd/crush/unlink?name=name(<string(goodc | ||
| hars [A-Za-z0-9-_.])>)&ancestor={ancesto | ||
| r(<string(goodchars [A-Za-z0-9-_.])>)} | PUT | 取消链接 |
| osd/deep-scrub?who=who( | PUT | 在 osd 上启动深度清理 |
| osd/down?ids=ids( | PUT | 设置 osd(s) |
| osd/dump?epoch={epoch(<int[0-]>)} | GET | 打印 OSD map 摘要 |
| osd/find?id=id(<int[0-]>) | GET | 在 CRUSH map 中查找 osd |
| osd/getcrushmap?epoch={epoch(<int[0-]>)} | GET | 获取 CRUSH map |
| osd/getmap?epoch={epoch(<int[0-]>)} | GET | 获取 OSD map |
| osd/getmaxosd | GET | 显示最大 OSD id |
| osd/in?ids=ids( | PUT | 设置 osd(s) |
| osd/lost?id=id(<int[0-]>)&sure={—yes-i | ||
| -really-mean-it} | PUT | 将 osd 标记为永久丢失。如果没有更多副本存在,这将销毁数据,请小心 |
| osd/ls?epoch={epoch(<int[0-]>)} | GET | 显示所有 OSD id |
| osd/lspools?auid={auid( | GET | 列出 pools |
| osd/map?pool=pool( | ||
| ect( | GET | 查找 pg for |
| osd/out?ids=ids( | PUT | 设置 osd(s) |
| osd/pause | PUT | 暂停 osd |
| osd/perf | GET | 打印 OSD 性能摘要统计信息 |
| osd/pool/create?pool=pool( | ||
| _num=pg_num(<int[0-]>)&pgp_num={pgp_num( | ||
| <int[0-]>)}&properties={properties(<stri | ||
| ng(goodchars [A-Za-z0-9-_.=])>) | ||
| [<string(goodchars | ||
| [A-Za-z0-9-_.=])>…]} | PUT | 创建 pool |
| osd/pool/delete?pool=pool( | ||
| ol2={pool2( | ||
| -really-really-mean-it} | PUT | 删除 pool |
| osd/pool/get?pool=pool( | ||
| ar(size | min_size | crash_replay_interval |
| g_num | pgp_num | crush_ruleset) |
| osd/pool/mksnap?pool=pool( | ||
| ap=snap( | PUT | 创建快照 |
| osd/pool/rename?srcpool=srcpool(<poolnam | ||
| e>)&destpool=destpool( | PUT | 重命名 |
| osd/pool/rmsnap?pool=pool( | ||
| ap=snap( | PUT | 删除快照 |
| osd/pool/set?pool=pool( | ||
| ar(size | min_size | crash_replay_interval |
| g_num | pgp_num | crush_ruleset |
| val=val( | PUT | 设置 pool 参数 to |
| osd/pool/set-quota?pool=pool( | ||
| &field=field(max_objects | max_bytes)&val= | |
| val( | PUT | 设置 pool 的对象或字节限制 |
| osd/pool/stats?name={name( | GET | 获取所有 pool 或指定 pool 的统计信息 |
| osd/repair?who=who( | PUT | 在 osd 上启动修复 |
| osd/reweight?id=id(<int[0-]>)&weight=wei | ||
| ght(<float[0.0-1.0]>) | PUT | 重新加权 osd 到 0.0 < |
| osd/reweight-by- | ||
| utilization?oload={oload(<int[100-]>)} | PUT | 按利用率重新加权 OSD [过载百分比以供考虑,默认为 120] |
| osd/rm?ids=ids( | PUT | 删除 osd(s) |
| osd/scrub?who=who( | PUT | 在 osd 上启动清理 |
| osd/set?key=key(pause | noup | nodown |
| noin | nobackfill | norecover |
| nodeep-scrub) | PUT | 设置 |
| osd/setcrushmap | PUT | 从输入文件设置 crush map |
| osd/setmaxosd?newmax=newmax(<int[0-]>) | PUT | 设置新的最大 osd 值 |
| osd/stat | GET | 打印 OSD map 摘要 |
| osd/thrash?num_epochs=num_epochs(<int[0- | ||
| ]>) | PUT | 对 OSD 进行 <num_epochs> 次捣乱 |
| osd/tier/add?pool=pool( | ||
| ool=tierpool( | PUT | 将 tier |
| osd/tier/cache-mode?pool=pool( | ||
| )&mode=mode(none | 写回 | invalidate+fo |
| rward | readonly) | PUT |
| osd/tier/remove?pool=pool( | ||
| erpool=tierpool( | PUT | 从基本 pool 中删除 tier |
| osd/tier/remove- | ||
| overlay?pool=pool( | PUT | 删除基本 pool 的覆盖池 |
| osd/tier/set-overlay?pool=pool(<poolname | ||
| >)&overlaypool=overlaypool( | PUT | 设置基本 pool 的覆盖池 |
| osd/tree?epoch={epoch(<int[0-]>)} | GET | 打印 OSD 树 |
| osd/unpause | PUT | 取消暂停 osd |
| osd/unset?key=key(pause | noup | nodown |
| t | noin | nobackfill |
| nodeep-scrub) | PUT | 取消设置 |
| pg/debug?debugop=debugop(unfound_objects | ||
| _exist | degraded_pgs_exist) | GET |
| pg/deep-scrub?pgid=pgid( | PUT | 在 |
| pg/dump?dumpcontents={dumpcontents(all | s | |
| ummary | sum | delta |
| f) [all | summary | sum |
| pgs_brief…]} | GET | 显示 pg map 的人类可读版本(只有 'all' 对 plain 有效) |
| pg/dump_json?dumpcontents={dumpcontents( | ||
| all | summary | sum |
| [all | summary | sum |
| pg/dump_pools_json | GET | 仅以 json 格式显示 pg pools 信息 |
| pg/dump_stuck?stuckops={stuckops(inactiv | ||
| e | unclean | stale) [inactive |
| …]}&threshold={threshold( | GET | 显示有关卡住 pgs 的信息 |
| pg/force_create_pg?pgid=pgid( | PUT | 强制创建 pg |
| pg/getmap | GET | 获取二进制 pg map 到 -o/stdout |
| pg/map?pgid=pgid( | GET | 显示 pg 到 osds 的映射 |
| pg/repair?pgid=pgid( | PUT | 开始修复 |
| pg/scrub?pgid=pgid( | PUT | 开始清理 |
| pg/send_pg_creates | PUT | 触发 pg 创建被发布 |
| pg/set_full_ratio?ratio=ratio(<float[0.0 | ||
| -1.0]>) | PUT | 设置 pg 被视为满的比例 |
| pg/set_nearfull_ratio?ratio=ratio(<float | ||
| [0.0-1.0]>) | PUT | 设置 pg 被视为接近满的比例 |
| pg/stat | GET | 显示 placement group 状态。 |
| tell/ | GET | 显示特定 pg 的详细信息 |
| tell/ | GET | 显示特定 pg 的详细信息 |
| quorum?quorumcmd=quorumcmd(enter | exit) | PUT |
| quorum_status | GET | 报告 monitor quorum 状态 |
| report?tags={tags( | ||
| [ | GET | 报告集群的完整状态,可选标题标签字符串 |
| tell/<osdid-or- | ||
| pgid>/reset_pg_recovery_stats | PUT | 重置 pg 恢复统计信息 |
| scrub | PUT | 清理 monitor 存储 |
| status | GET | 显示集群状态 |
| sync/force?validate1={—yes-i-really- | ||
| mean-it}&validate2={—i-know-what-i-am- | ||
| doing} | PUT | 强制同步并清除 monitor 存储 |
| tell?target=target(<name | ||
| (type.id)>)&args=args( | ||
| [ | PUT | 向特定守护程序发送命令 |
| tell/ | GET | 报告 OSD 版本 |
享受吧!