ceph-rest-api 的文档

dmsimard

我得知 Ceph 有一个 REST API,并且我对此进行了一些尝试

我说文档缺乏,我现在收回这句话,我当时没有意识到 API 文档是内置到应用程序中的。我开了一个 pull request,使文档对此更加明确:https://github.com/ceph/ceph/pull/1026

这是 API 文档当前的样子:

可能的命令方法描述
auth/add?entity=entity()&caps={c
aps() […]}PUT添加认证信息,从输入文件读取,如果未给定输入则生成随机密钥,并且/或者添加命令中指定的任何 caps
auth/caps?entity=entity()&caps=c
aps() […]PUT更新的 caps,从命令中指定的 caps 读取
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添加认证信息,从输入文件读取,如果未给定输入则生成随机密钥,并且/或者添加命令中指定的任何 caps
auth/get-or-create-key?entity=entity(<st
ring>)&caps={caps()
[…]}PUT获取或添加的密钥,根据命令中指定的 system/caps 对。如果密钥已存在,则给定的 caps 必须与该密钥现有的 caps 匹配。
auth/importPUTauth import: 从 -i 读取 keyring 文件
auth/listGET列出认证状态
auth/print-key?entity=entity()GET显示所请求的密钥
auth/print_key?entity=entity()GET显示所请求的密钥
tell//bench?count={count(
)}&size={size()}PUTOSD 基准测试:写入字节对象,(默认 1G 大小 4MB)。结果在日志中。
compactPUT对 monitor 的 leveldb 存储进行压缩
config-key/del?key=key()PUT删除
config-key/exists?key=key()GET检查是否存在
config-key/get?key=key()GET获取
config-key/listGET列出密钥
config-key/put?key=key()&val={va
l()}PUT放置,值
tell/<osdid-or-
pgid>/cpu_profiler?arg=arg(statusflush)PUT
tell//debug/kick_recovery
_wq?delay=delay(<int[0-]>)PUT设置 osd_recovery_delay_start 为
tell//debug_dump_missing?
filename=filename()GET将丢失对象转储到指定文件
df?detail={detail}GET显示集群可用空间统计信息
tell/<osdid-or-
pgid>/dump_pg_recovery_statsGET转储 pg 恢复统计信息
tell//flush_pg_statsPUT刷新 pg 统计信息
fsidGET显示集群 FSID/UUID
health?detail={detail}GET显示集群健康状况
tell//heap?heapcmd=heapcm
d(dumpstart_profilerstop_profiler
asestats)PUT
heap?heapcmd=heapcmd(dumpstart_profiler
stop_profiler发布stats)
tell//injectargs?injected
_args=injected_args()
[…]PUT将配置参数注入正在运行的 OSD
injectargs?injected_args=injected_args(<
string>) […]PUT将配置参数注入 monitor
tell//list_missing?offset
={offset()}GET列出此 pg 上丢失的对象,可能从 JSON 中给定的偏移量开始
tell//list_missing?offset
={offset()}PUT列出此 pg 上丢失的对象,可能从 JSON 中给定的偏移量开始
log?logtext=logtext()
[…]PUT将提供的文本记录到 monitor 日志中
tell/<osdid-or-
pgid>/mark_unfound_lost?mulcmd=revertPUT将此 pg 中所有未找到的对象标记为丢失,如果存在先前版本,则删除或回滚到先前版本
tell//mark_unfound_lost/r
evert?mulcmd=revertPUT将此 pg 中所有未找到的对象标记为丢失,如果存在先前版本,则删除或回滚到先前版本
mds/add_data_pool?pool=pool()PUT添加数据池
mds/cluster_downPUT关闭 MDS 集群
mds/cluster_upPUT启动 MDS 集群
mds/compat/rm_compat?feature=feature(<in
t[0-]>)PUT删除兼容功能
mds/compat/rm_incompat?feature=feature(<
int[0-]>)PUT删除不兼容功能
mds/compat/showGET显示 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/statGET显示 MDS 状态
mds/stop?who=who()PUT停止 mds
mds/tell?who=who()&args=args(<st
ring>) […]PUT向特定 mds 发送命令
mds/unset?key=allow_new_snaps&sure={sure
()}未知取消设置
mon/add?name=name()&addr=addr(<I
Paddr[:port]>)PUT添加名为的新 monitor,地址为
mon/dump?epoch={epoch(<int[0-]>)}GET转储格式化的 monmap(可选择从 epoch 开始)
mon/getmap?epoch={epoch(<int[0-]>)}GET获取 monmap
mon/remove?name=name()PUT删除名为
mon/statGET总结 monitor 状态
mon_statusGET报告 monitor 状态
osd/blacklist?blacklistop=blacklistop(ad
drm)&addr=addr()&expire={ex
pire(<float[0.0-]>)}PUT添加(可选直到秒后)或删除黑名单中的客户端
osd/blacklist/lsGET显示黑名单中的客户端
osd/create?uuid={uuid()}PUT创建新 osd(带可选 UUID)
osd/crush/add?id=id(<osdname (idosd.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
(idosd.id)>)&weight=weight(<float[0.0-]
>)&args=args(<string(goodchars
[A-Za-z0-9-_.=])>) [<string(goodchars
[A-Za-z0-9-_.=])>…]PUT创建条目或移动现有条目到位置
osd/crush/dumpGET转储 crush map
osd/crush/link?name=name()&args=
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 中将的权重更改为在 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/dumpGET转储 crush 规则
osd/crush/rule/listGET列出 crush 规则
osd/crush/rule/lsGET列出 crush 规则
osd/crush/rule/rm?name=name(<string(good
chars [A-Za-z0-9-_.])>)PUT删除 crush 规则
osd/crush/setPUT从输入文件设置 crush map
osd/crush/set?id=id(<osdname (idosd.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
yargonautbobtail
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)[…] down
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/getmaxosdGET显示最大 OSD id
osd/in?ids=ids() […]PUT设置 osd(s)[…] in
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()&object=obj
ect()GET查找 pg forin
osd/out?ids=ids() […]PUT设置 osd(s)[…] out
osd/pausePUT暂停 osd
osd/perfGET打印 OSD 性能摘要统计信息
osd/pool/create?pool=pool()&pg
_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()&po
ol2={pool2()}&sure={—yes-i
-really-really-mean-it}PUT删除 pool
osd/pool/get?pool=pool()&var=v
ar(sizemin_sizecrash_replay_interval
g_numpgp_numcrush_ruleset)
osd/pool/mksnap?pool=pool()&sn
ap=snap()PUT创建快照
osd/pool/rename?srcpool=srcpool(<poolnam
e>)&destpool=destpool()PUT重命名改为
osd/pool/rmsnap?pool=pool()&sn
ap=snap()PUT删除快照
osd/pool/set?pool=pool()&var=v
ar(sizemin_sizecrash_replay_interval
g_numpgp_numcrush_ruleset
val=val()PUT设置 pool 参数 to
osd/pool/set-quota?pool=pool()
&field=field(max_objectsmax_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 << 1.0
osd/reweight-by-
utilization?oload={oload(<int[100-]>)}PUT按利用率重新加权 OSD [过载百分比以供考虑,默认为 120]
osd/rm?ids=ids() […]PUT删除 osd(s)[…] in
osd/scrub?who=who()PUT在 osd 上启动清理
osd/set?key=key(pausenoupnodown
noinnobackfillnorecover
nodeep-scrub)PUT设置
osd/setcrushmapPUT从输入文件设置 crush map
osd/setmaxosd?newmax=newmax(<int[0-]>)PUT设置新的最大 osd 值
osd/statGET打印 OSD map 摘要
osd/thrash?num_epochs=num_epochs(<int[0-
]>)PUT对 OSD 进行 <num_epochs> 次捣乱
osd/tier/add?pool=pool()&tierp
ool=tierpool()PUT将 tier添加到基本 pool
osd/tier/cache-mode?pool=pool(
)&mode=mode(none写回invalidate+fo
rwardreadonly)PUT
osd/tier/remove?pool=pool()&ti
erpool=tierpool()PUT从基本 pool 中删除 tier从基本 pool 中删除
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/unpausePUT取消暂停 osd
osd/unset?key=key(pausenoupnodown
tnoinnobackfill
nodeep-scrub)PUT取消设置
pg/debug?debugop=debugop(unfound_objects
_existdegraded_pgs_exist)GET
pg/deep-scrub?pgid=pgid()PUT
pg/dump?dumpcontents={dumpcontents(alls
ummarysumdelta
f) [allsummarysum
pgs_brief…]}GET显示 pg map 的人类可读版本(只有 'all' 对 plain 有效)
pg/dump_json?dumpcontents={dumpcontents(
allsummarysum
[allsummarysum
pg/dump_pools_jsonGET仅以 json 格式显示 pg pools 信息
pg/dump_stuck?stuckops={stuckops(inactiv
euncleanstale) [inactive
…]}&threshold={threshold()}GET显示有关卡住 pgs 的信息
pg/force_create_pg?pgid=pgid()PUT强制创建 pg
pg/getmapGET获取二进制 pg map 到 -o/stdout
pg/map?pgid=pgid()GET显示 pg 到 osds 的映射
pg/repair?pgid=pgid()PUT开始修复
pg/scrub?pgid=pgid()PUT开始清理
pg/send_pg_createsPUT触发 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/statGET显示 placement group 状态。
tell//queryGET显示特定 pg 的详细信息
tell//queryGET显示特定 pg 的详细信息
quorum?quorumcmd=quorumcmd(enterexit)PUT
quorum_statusGET报告 monitor quorum 状态
report?tags={tags()
[…]}GET报告集群的完整状态,可选标题标签字符串
tell/<osdid-or-
pgid>/reset_pg_recovery_statsPUT重置 pg 恢复统计信息
scrubPUT清理 monitor 存储
statusGET显示集群状态
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//versionGET报告 OSD 版本

享受吧!