管理 API 指南

Red Hat Ceph Storage 4

参考和集成指南

摘要

本指南说明了如何使用 RESTful 插件查看集群的信息、更改其配置并对其进行管理。
红帽承诺替换我们的代码、文档和网页属性中存在问题的语言。我们从这四个术语开始: master、slave、blacklist 和 whitelist。这些更改将在即将发行的几个发行本中逐渐实施。详情请查看 CTO Chris Wright 信息

第 1 章 RESTful 插件

第 2 章 问题和答案

2.1. 获取信息

本节介绍如何使用 RESTful 插件查看有关集群、监控器、OSD、池、主机和请求的信息:

2.1.1. 如何查看所有群集配置选项?

本节论述了如何使用 RESTful 插件查看集群配置选项及其值。

curl 命令

在命令行中使用:

curl --silent --user <user> 'https://<ceph-mgr>:8003/config/cluster'

替换:

  • <user> with user name
  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名

出现提示时,输入用户的密码。

如果您使用自签名证书,请使用 --insecure 选项:

curl --silent --insecure --user <user> 'https://<ceph-mgr>:8003/config/cluster'
Python

在 Python 解释器中输入:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/config/cluster', auth=("<user>", "<password>"))
>> print result.json()

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <user> with user name
  • <password> 和用户的密码

如果您使用自签名证书,请使用 verify=False 选项:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/config/cluster', auth=("<user>", "<password>"), verify=False)
>> print result.json()
Web 浏览器

在 Web 浏览器中输入:

https://<ceph-mgr>:8003/config/cluster

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名

出现提示时,输入用户名和密码。

其它资源

2.1.2. 如何查看部分群集配置选项?

本节论述了如何查看特定集群选项及其值。

curl 命令

在命令行中使用:

curl --silent --user <user> 'https://<ceph-mgr>:8003/config/cluster/<argument>'

替换:

  • <user> with user name
  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <argument> 带有您要查看的配置选项

出现提示时,输入用户的密码。

如果您使用自签名证书,请使用 --insecure 选项:

curl --silent --insecure --user <user> 'https://<ceph-mgr>:8003/config/cluster/<argument>'
Python

在 Python 解释器中输入:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/config/cluster/<argument>', auth=("<user>", "<password>"))
>> print result.json()

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <argument> 带有您要查看的配置选项
  • <user> with user name
  • <password> 和用户的密码

如果您使用自签名证书,请使用 verify=False 选项:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/config/cluster/<argument>', auth=("<user>", "<password>"), verify=False)
>> print result.json()
Web 浏览器

在 Web 浏览器中输入:

https://<ceph-mgr>:8003/config/cluster/<argument>

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <argument> 带有您要查看的配置选项

出现提示时,输入用户名和密码。

其它资源

2.1.3. 如何查看 OSD 的所有配置选项?

本节介绍如何查看 OSD 的所有配置选项及其值。

curl 命令

在命令行中使用:

curl --silent --user <user> 'https://<ceph-mgr>:8003/config/osd'

替换:

  • <user> with user name
  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名

出现提示时,输入用户的密码。

如果您使用自签名证书,请使用 --insecure 选项:

curl --silent --insecure --user <user> 'https://<ceph-mgr>:8003/config/osd'
Python

在 Python 解释器中输入:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/config/osd', auth=("<user>", "<password>"))
>> print result.json()

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <user> with user name
  • <password> 和用户的密码

如果您使用自签名证书,请使用 verify=False 选项:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/config/osd', auth=("<user>", "<password>"), verify=False)
>> print result.json()
Web 浏览器

在 Web 浏览器中输入:

https://<ceph-mgr>:8003/config/osd

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名

出现提示时,输入用户名和密码。

其它资源

2.1.4. 如何查看 CRUSH 规则?

本节介绍如何查看 CRUSH 规则。

curl 命令

在命令行中使用:

curl --silent --user <user> 'https://<ceph-mgr>:8003/crush/rule'

替换:

  • <user> with user name
  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名

出现提示时,输入用户的密码。

如果您使用自签名证书,请使用 --insecure 选项:

curl --silent --insecure --user <user> 'https://<ceph-mgr>:8003/crush/rule'
Python

在 Python 解释器中输入:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/crush/rule', auth=("<user>", "<password>"))
>> print result.json()

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <user> with user name
  • <password> 和用户的密码

如果您使用自签名证书,请使用 verify=False 选项:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/crush/rule', auth=("<user>", "<password>"), verify=False)
>> print result.json()
Web 浏览器

在 Web 浏览器中输入:

https://<ceph-mgr>:8003/crush/rule

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名

出现提示时,输入用户名和密码。

其它资源
  • 红帽 Ceph 存储 4 管理指南 中的 CRUSH 规则 部分

2.1.5. 如何查看有关 monitor 的信息?

本节论述了如何查看特定 monitor 的信息,例如:

  • IP 地址
  • 名称
  • 仲裁状态
curl 命令

在命令行中使用:

curl --silent --user <user> 'https://<ceph-mgr>:8003/mon'

替换:

  • <user> with user name
  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名

出现提示时,输入用户的密码。

如果您使用自签名证书,请使用 --insecure 选项:

curl --silent --insecure --user <user> 'https://<ceph-mgr>:8003/mon'
Python

在 Python 解释器中输入:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/mon', auth=("<user>", "<password>"))
>> print result.json()

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <user> with user name
  • <password> 和用户的密码

如果您使用自签名证书,请使用 verify=False 选项:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/mon', auth=("<user>", "<password>"), verify=False)
>> print result.json()
Web 浏览器

在 Web 浏览器中输入:

https://<ceph-mgr>:8003/mon

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名

出现提示时,输入用户名和密码。

2.1.6. 我如何查看有关部分 monitor 的信息?

本节论述了如何查看特定 monitor 的信息,例如:

  • IP 地址
  • 名称
  • 仲裁状态
curl 命令

在命令行中使用:

curl --silent --user <user> 'https://<ceph-mgr>:8003/mon/<name>'

替换:

  • <user> with user name
  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <name>,带有 monitor 的短主机名

出现提示时,输入用户的密码。

如果您使用自签名证书,请使用 --insecure 选项:

curl --silent --insecure --user <user> 'https://<ceph-mgr>:8003/mon/<name>'
Python

在 Python 解释器中输入:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/mon/<name>', auth=("<user>", "<password>"))
>> print result.json()

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <name>,带有 monitor 的短主机名
  • <user> with user name
  • <password> 和用户的密码

如果您使用自签名证书,请使用 verify=False 选项:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/mon/<name>', auth=("<user>", "<password>"), verify=False)
>> print result.json()
Web 浏览器

在 Web 浏览器中输入:

https://<ceph-mgr>:8003/mon/<name>

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <name>,带有 monitor 的短主机名

出现提示时,输入用户名和密码。

2.1.7. 如何查看有关 OSD 的信息?

本节介绍如何查看 OSD 的信息,例如:

  • IP 地址
  • 其池
  • 关联性
  • weight
curl 命令

在命令行中使用:

curl --silent --user <user> 'https://<ceph-mgr>:8003/osd'

替换:

  • <user> with user name
  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名

出现提示时,输入用户的密码。

如果您使用自签名证书,请使用 --insecure 选项:

curl --silent --insecure --user <user> 'https://<ceph-mgr>:8003/osd'
Python

在 Python 解释器中输入:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/osd/', auth=("<user>", "<password>"))
>> print result.json()

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <user> with user name
  • <password> 和用户的密码

如果您使用自签名证书,请使用 verify=False 选项:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/osd/', auth=("<user>", "<password>"), verify=False)
>> print result.json()
Web 浏览器

在 Web 浏览器中输入:

https://<ceph-mgr>:8003/osd

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名

出现提示时,输入用户名和密码。

2.1.8. 如何查看有关部分 OSD 的信息?

本节论述了如何查看特定 OSD 的信息,例如:

  • IP 地址
  • 其池
  • 关联性
  • weight
curl 命令

在命令行中使用:

curl --silent --user <user> 'https://<ceph-mgr>:8003/osd/<id>'

替换:

  • <user> with user name
  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <id> 带有 osd 字段中列出的 OSD 的 ID

出现提示时,输入用户的密码。

如果您使用自签名证书,请使用 --insecure 选项:

curl --silent --insecure --user <user> 'https://<ceph-mgr>:8003/osd/<id>'
Python

在 Python 解释器中输入:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/osd/<id>', auth=("<user>", "<password>"))
>> print result.json()

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <id> 带有 osd 字段中列出的 OSD 的 ID
  • <user> with user name
  • <password> 和用户的密码

如果您使用自签名证书,请使用 verify=False 选项:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/osd/<id>', auth=("<user>", "<password>"), verify=False)
>> print result.json()
Web 浏览器

在 Web 浏览器中输入:

https://<ceph-mgr>:8003/osd/<id>

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <id> 带有 osd 字段中列出的 OSD 的 ID

出现提示时,输入用户名和密码。

2.1.9. 如何确定哪些进程可以在 OSD 上调度?

本节介绍如何使用 RESTful 插件查看哪些进程(如清理或深度清理)可以调度到 OSD 上。

curl 命令

在命令行中使用:

curl --silent --user <user> 'https://<ceph-mgr>:8003/osd/<id>/command'

替换:

  • <user> with user name
  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <id> 带有 osd 字段中列出的 OSD 的 ID

出现提示时,输入用户的密码。

如果您使用自签名证书,请使用 --insecure 选项:

curl --silent --insecure --user <user> 'https://<ceph-mgr>:8003/osd/<id>/command'
Python

在 Python 解释器中输入:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/osd/<id>/command', auth=("<user>", "<password>"))
>> print result.json()

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <id> 带有 osd 字段中列出的 OSD 的 ID
  • <user> with user name
  • <password> 和用户的密码

如果您使用自签名证书,请使用 verify=False 选项:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/osd/<id>/command', auth=("<user>", "<password>"), verify=False)
>> print result.json()
Web 浏览器

在 Web 浏览器中输入:

https://<ceph-mgr>:8003/osd/<id>/command

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <id> 带有 osd 字段中列出的 OSD 的 ID

出现提示时,输入用户名和密码。

2.1.10. 如何查看关于池的信息?

本节论述了如何查看池的信息,例如:

  • 标记
  • Size
  • 放置组数量
curl 命令

在命令行中使用:

curl --silent --user <user> 'https://<ceph-mgr>:8003/pool'

替换:

  • <user> with user name
  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名

出现提示时,输入用户的密码。

如果您使用自签名证书,请使用 --insecure 选项:

curl --silent --insecure --user <user> 'https://<ceph-mgr>:8003/pool'
Python

在 Python 解释器中输入:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/pool', auth=("<user>", "<password>"))
>> print result.json()

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <user> with user name
  • <password> 和用户的密码

如果您使用自签名证书,请使用 verify=False 选项:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/pool', auth=("<user>", "<password>"), verify=False)
>> print result.json()
Web 浏览器

在 Web 浏览器中输入:

https://<ceph-mgr>:8003/pool

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名

出现提示时,输入用户名和密码。

2.1.11. 我如何查看关于组件池的信息?

本节论述了如何查看特定池的信息,例如:

  • 标记
  • Size
  • 放置组数量
curl 命令

在命令行中使用:

curl --silent --user <user> 'https://<ceph-mgr>:8003/pool/<id>'

替换:

  • <user> with user name
  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <id> 带有在 pool 字段中列出的池的 ID

出现提示时,输入用户的密码。

如果您使用自签名证书,请使用 --insecure 选项:

curl --silent --insecure --user <user> 'https://<ceph-mgr>:8003/config/cluster'
Python

在 Python 解释器中输入:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/pool/<id>', auth=("<user>", "<password>"))
>> print result.json()

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <id> 带有在 pool 字段中列出的池的 ID
  • <user> with user name
  • <password> 和用户的密码

如果您使用自签名证书,请使用 verify=False 选项:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/pool/<id>', auth=("<user>", "<password>"), verify=False)
>> print result.json()
Web 浏览器

在 Web 浏览器中输入:

https://<ceph-mgr>:8003/pool/<id>

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <id> 带有在 pool 字段中列出的池的 ID

出现提示时,输入用户名和密码。

2.1.12. 如何查看关于请求的信息?

本节论述了如何查看请求的信息。

curl 命令

在命令行中使用:

curl --silent --user <user> 'https://<ceph-mgr>:8003/request'

替换:

  • <user> with user name
  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名

出现提示时,输入用户的密码。

如果您使用自签名证书,请使用 --insecure 选项:

curl --silent --insecure --user <user> 'https://<ceph-mgr>:8003/request'
Python

在 Python 解释器中输入:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/request', auth=("<user>", "<password>"))
>> print result.json()

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <user> with user name
  • <password> 和用户的密码

如果您使用自签名证书,请使用 verify=False 选项:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/request', auth=("<user>", "<password>"), verify=False)
>> print result.json()
Web 浏览器

在 Web 浏览器中输入:

https://<ceph-mgr>:8003/request

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名

出现提示时,输入用户名和密码。

2.1.13. 我如何查看关于部分请求的信息?

本节论述了如何查看特定请求的信息。

curl 命令

在命令行中使用:

curl --silent --user <user> 'https://<ceph-mgr>:8003/request/<id>'

替换:

  • <user> with user name
  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <id> 带有 id 字段中列出的请求的 ID

出现提示时,输入用户的密码。

如果您使用自签名证书,请使用 --insecure 选项:

curl --silent --insecure --user <user> 'https://<ceph-mgr>:8003/request/<id>'
Python

在 Python 解释器中输入:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/request/<id>', auth=("<user>", "<password>"))
>> print result.json()

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <id> 带有 id 字段中列出的请求的 ID
  • <user> with user name
  • <password> 和用户的密码

如果您使用自签名证书,请使用 verify=False 选项:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/request/<id>', auth=("<user>", "<password>"), verify=False)
>> print result.json()
Web 浏览器

在 Web 浏览器中输入:

https://<ceph-mgr>:8003/request/<id>

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <id> 带有 id 字段中列出的请求的 ID

出现提示时,输入用户名和密码。

2.1.14. 如何查看关于主机的信息?

本节论述了如何查看主机的信息,例如:

  • 主机名
  • Ceph 守护进程及其 ID
  • Ceph 版本
curl 命令

在命令行中使用:

curl --silent --user <user> 'https://<ceph-mgr>:8003/server'

替换:

  • <user> with user name
  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名

出现提示时,输入用户的密码。

如果您使用自签名证书,请使用 --insecure 选项:

curl --silent --insecure --user <user> 'https://<ceph-mgr>:8003/server'
Python

在 Python 解释器中输入:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/server', auth=("<user>", "<password>"))
>> print result.json()

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <user> with user name
  • <password> 和用户的密码

如果您使用自签名证书,请使用 verify=False 选项:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/server', auth=("<user>", "<password>"), verify=False)
>> print result.json()
Web 浏览器

在 Web 浏览器中输入:

https://<ceph-mgr>:8003/server

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名

出现提示时,输入用户名和密码。

2.1.15. 我如何查看关于部分主机的信息?

本节论述了如何查看特定主机的信息,例如:

  • 主机名
  • Ceph 守护进程及其 ID
  • Ceph 版本
curl 命令

在命令行中使用:

curl --silent --user <user> 'https://<ceph-mgr>:8003/server/<hostname>'

替换:

  • <user> with user name
  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <hostname> 以及 hostname 字段中列出的主机主机名

出现提示时,输入用户的密码。

如果您使用自签名证书,请使用 --insecure 选项:

curl --silent --insecure --user <user> 'https://<ceph-mgr>:8003/server/<hostname>'
Python

在 Python 解释器中输入:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/server/<hostname>', auth=("<user>", "<password>"))
>> print result.json()

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <hostname> 以及 hostname 字段中列出的主机主机名
  • <user> with user name
  • <password> 和用户的密码

如果您使用自签名证书,请使用 verify=False 选项:

$ python
>> import requests
>> result = requests.get('https://<ceph-mgr>:8003/server/<hostname>', auth=("<user>", "<password>"), verify=False)
>> print result.json()
Web 浏览器

在 Web 浏览器中输入:

https://<ceph-mgr>:8003/server/<hostname>

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <hostname> 以及 hostname 字段中列出的主机主机名

出现提示时,输入用户名和密码。

2.2. 更改配置

本节介绍如何使用 RESTful 插件更改 OSD 配置选项、OSD 状态和池的相关信息:

2.2.1. 如何更改 OSD 配置选项?

本节介绍如何使用 RESTful 插件更改 OSD 配置选项。

curl 命令

在命令行中使用:

echo -En '{"<option>": <value>}' | curl --request PATCH --data @- --silent --user <user> 'https://<ceph-mgr>:8003/config/osd'

替换:

  • <option> 带有 修改的选项; pause、noup、nodown、noout、noinnobackfill、no recover、no scrubnodeep-scrub
  • 带有 truefalse<value>
  • <user> with user name
  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名

出现提示时,输入用户的密码。

如果您使用自签名证书,请使用 --insecure 选项:

echo -En '{'<option>': <value>}' | curl --request PATCH --data @- --silent --insecure --user <user> 'https://<ceph-mgr>:8003/config/osd'
Python

在 Python 解释器中输入:

$ python
>> import requests
>> result = requests.patch('https://<ceph-mgr>:8003/config/osd', json={"<option>": <value>}, auth=("<user>", "<password>"))
>> print result.json()

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <option> 带有 修改的选项; pause、noup、nodown、noout、noinnobackfill、no recover、no scrubnodeep-scrub
  • <value> with TrueFalse
  • <user> with user name
  • <password> 和用户的密码

如果您使用自签名证书,请使用 verify=False 选项:

$ python
>> import requests
>> result = requests.patch('https://<ceph-mgr>:8003/config/osd', json={"<option>": <value>}, auth=("<user>", "<password>"), verify=False)
>> print result.json()

2.2.2. 如何更改 OSD 状态?

本节介绍如何使用 RESTful 插件更改 OSD 的状态。

curl 命令

在命令行中使用:

echo -En '{"<state>": <value>}' | curl --request PATCH --data @- --silent --user <user> 'https://<ceph-mgr>:8003/osd/<id>'

替换:

  • <state> 带有要更改的状态(inup
  • 带有 truefalse<value>
  • <user> with user name
  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <id> 带有 osd 字段中列出的 OSD 的 ID

出现提示时,输入用户的密码。

如果您使用自签名证书,请使用 --insecure 选项:

echo -En '{"<state>": <value>}' | curl --request PATCH --data @- --silent --insecure --user <user> 'https://<ceph-mgr>:8003/osd/<id>'
Python

在 Python 解释器中输入:

$ python
>> import requests
>> result = requests.patch('https://<ceph-mgr>:8003/osd/<id>', json={"<state>": <value>}, auth=("<user>", "<password>"))
>> print result.json()

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <state> 带有要更改的状态(inup
  • <value> with TrueFalse
  • <id> 带有 osd 字段中列出的 OSD 的 ID
  • <user> with user name
  • <password> 和用户的密码

如果您使用自签名证书,请使用 verify=False 选项:

$ python
>> import requests
>> result = requests.patch('https://<ceph-mgr>:8003/osd/<id>', json={"<state>": <value>}, auth=("<user>", "<password>"), verify=False)
>> print result.json()

2.2.3. 如何重新加权 OSD?

本节介绍如何更改 OSD 的权重。

curl 命令

在命令行中使用:

echo -En '{"reweight": <value>}' | curl --request PATCH --data @- --silent --user <user> 'https://<ceph-mgr>:8003/osd/<id>'

替换:

  • 带有新权重的 <value>
  • <user> with user name
  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <id> 带有 osd 字段中列出的 OSD 的 ID

出现提示时,输入用户的密码。

如果您使用自签名证书,请使用 --insecure 选项:

echo -En '{"reweight": <value>}' | curl --request PATCH --data @- --silent --insecure --user <user> 'https://<ceph-mgr>:8003/osd/<id>'
Python

在 Python 解释器中输入:

$ python
>> import requests
>> result = requests.patch('https://<ceph-mgr>:8003/osd/<id>', json={"reweight": <value>}, auth=("<user>", "<password>"))
>> print result.json()

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • 带有新权重的 <value>
  • <id> 带有 osd 字段中列出的 OSD 的 ID
  • <user> with user name
  • <password> 和用户的密码

如果您使用自签名证书,请使用 verify=False 选项:

$ python
>> import requests
>> result = requests.patch('https://<ceph-mgr>:8003/osd/<id>', json={"reweight": <value>}, auth=("<user>", "<password>"), verify=False)
>> print result.json()

2.2.4. 如何更改池的信息?

本节介绍如何使用 RESTful 插件更改特定池的信息。

curl 命令

在命令行中使用:

echo -En '{"<option>": <value>}' | curl --request PATCH --data @- --silent --user <user> 'https://<ceph-mgr>:8003/pool/<id>'

替换:

  • <option> 和要修改的选项
  • 使用选项的新值 <value&gt;
  • <user> with user name
  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <id> 带有在 pool 字段中列出的池的 ID

出现提示时,输入用户的密码。

如果您使用自签名证书,请使用 --insecure 选项:

echo -En '{"<option>": <value>}' | curl --request PATCH --data @- --silent --insecure --user <user> 'https://<ceph-mgr>:8003/pool/<id>'
Python

在 Python 解释器中输入:

$ python
>> import requests
>> result = requests.patch('https://<ceph-mgr>:8003/pool/<id>', json={"<option>": <value>}, auth=("<user>", "<password>"))
>> print result.json()

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <id> 带有在 pool 字段中列出的池的 ID
  • <option> 和要修改的选项
  • 使用选项的新值 <value&gt;
  • <user> with user name
  • <password> 和用户的密码

如果您使用自签名证书,请使用 verify=False 选项:

$ python
>> import requests
>> result = requests.patch('https://<ceph-mgr>:8003/pool/<id>', json={"<option>": <value>}, auth=("<user>", "<password>"), verify=False)
>> print result.json()

2.3. 管理集群

本节介绍如何使用 RESTful 插件对 OSD 初始化清理或深度清理、创建池或删除池中的数据、删除请求或创建请求:

2.3.1. 如何才能在 OSD 上运行调度的进程?

本节介绍如何使用 RESTful API 在 OSD 上运行调度的进程,如清理或深度清理。

curl 命令

在命令行中使用:

echo -En '{"command": "<command>"}' | curl --request POST --data @- --silent --user <user> 'https://<ceph-mgr>:8003/osd/<id>/command'

替换:

出现提示时,输入用户的密码。

如果您使用自签名证书,请使用 --insecure 选项:

echo -En '{"command": "<command>"}' | curl --request POST --data @- --silent --insecure --user <user> 'https://<ceph-mgr>:8003/osd/<id>/command'
Python

在 Python 解释器中输入:

$ python
>> import requests
>> result = requests.post('https://<ceph-mgr>:8003/osd/<id>/command', json={"command": "<command>"}, auth=("<user>", "<password>"))
>> print result.json()

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <id> 带有 osd 字段中列出的 OSD 的 ID
  • 命令 包含您要启动的进程(清理 、深度 清理或 修复)。验证 OSD 上支持该进程。详情请查看 第 2.1.9 节 “如何确定哪些进程可以在 OSD 上调度?”
  • <user> with user name
  • <password> 和用户的密码

如果您使用自签名证书,请使用 verify=False 选项:

$ python
>> import requests
>> result = requests.post('https://<ceph-mgr>:8003/osd/<id>/command', json={"command": "<command>"}, auth=("<user>", "<password>"), verify=False)
>> print result.json()

2.3.2. 如何创建新池?

本节介绍如何使用 RESTful 插件创建新池。

curl 命令

在命令行中使用:

echo -En '{"name": "<name>", "pg_num": <number>}' | curl --request POST --data @- --silent --user <user> 'https://<ceph-mgr>:8003/pool'

替换:

  • 带有新池名称的 <name&gt;
  • <number> 带有 放置组的数量
  • <user> with user name
  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名

出现提示时,输入用户的密码。

如果您使用自签名证书,请使用 --insecure 选项:

echo -En '{"name": "<name>", "pg_num": <number>}' | curl --request POST --data @- --silent --insecure --user <user> 'https://<ceph-mgr>:8003/pool'
Python

在 Python 解释器中输入:

$ python
>> import requests
>> result = requests.post('https://<ceph-mgr>:8003/pool', json={"name": "<name>", "pg_num": <number>}, auth=("<user>", "<password>"))
>> print result.json()

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • 带有新池名称的 <name&gt;
  • <number> 带有 放置组的数量
  • <user> with user name
  • <password> 和用户的密码

如果您使用自签名证书,请使用 verify=False 选项:

$ python
>> import requests
>> result = requests.post('https://<ceph-mgr>:8003/pool', json={"name": "<name>", "pg_num": <number>}, auth=("<user>", "<password>"), verify=False)
>> print result.json()

2.3.3. 如何删除池?

本节介绍如何使用 RESTful 插件删除池。

此请求默认为禁止。若要允许,可添加下列参数到 Ceph 配置指南中:

mon_allow_pool_delete = true
curl 命令

在命令行中使用:

curl --request DELETE --silent --user <user> 'https://<ceph-mgr>:8003/pool/<id>'

替换:

  • <user> with user name
  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <id> 带有在 pool 字段中列出的池的 ID

出现提示时,输入用户的密码。

如果您使用自签名证书,请使用 --insecure 选项:

curl --request DELETE --silent --insecure --user <user> 'https://<ceph-mgr>:8003/pool/<id>'
Python

在 Python 解释器中输入:

$ python
>> import requests
>> result = requests.delete('https://<ceph-mgr>:8003/pool/<id>', auth=("<user>", "<password>"))
>> print result.json()

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <id> 带有在 pool 字段中列出的池的 ID
  • <user> with user name
  • <password> 和用户的密码

如果您使用自签名证书,请使用 verify=False 选项:

$ python
>> import requests
>> result = requests.delete('https://<ceph-mgr>:8003/pool/<id>', auth=("<user>", "<password>"), verify=False)
>> print result.json()

2.3.4. 如何删除所有已完成的请求?

本节介绍如何使用 RESTful 插件删除所有已完成的请求。

curl 命令

在命令行中使用:

curl --request DELETE --silent --user <user> 'https://<ceph-mgr>:8003/request'

替换:

  • <user> with user name
  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名

出现提示时,输入用户的密码。

如果您使用自签名证书,请使用 --insecure 选项:

curl --request DELETE --silent --insecure --user <user> 'https://<ceph-mgr>:8003/request'
Python

在 Python 解释器中输入:

$ python
>> import requests
>> result = requests.delete('https://<ceph-mgr>:8003/request', auth=("<user>", "<password>"))
>> print result.json()

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <user> with user name
  • <password> 和用户的密码

如果您使用自签名证书,请使用 verify=False 选项:

$ python
>> import requests
>> result = requests.delete('https://<ceph-mgr>:8003/request', auth=("<user>", "<password>"), verify=False)
>> print result.json()

2.3.5. 如何删除部分请求?

本节介绍如何使用 RESTful 插件从数据库中删除特定请求。

curl 命令

在命令行中使用:

curl --request DELETE --silent --user <user> 'https://<ceph-mgr>:8003/request/<id>'

替换:

  • <user> with user name
  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <id> 带有 id 字段中列出的请求的 ID

出现提示时,输入用户的密码。

如果您使用自签名证书,请使用 --insecure 选项:

curl --request DELETE --silent --insecure --user <user> 'https://<ceph-mgr>:8003/request/<id>'
Python

在 Python 解释器中输入:

$ python
>> import requests
>> result = requests.delete('https://<ceph-mgr>:8003/request/<id>', auth=("<user>", "<password>"))
>> print result.json()

替换:

  • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
  • <id> 带有 id 字段中列出的请求的 ID
  • <user> with user name
  • <password> 和用户的密码

如果您使用自签名证书,请使用 verify=False 选项:

$ python
>> import requests
>> result = requests.delete('https://<ceph-mgr>:8003/request/<id>', auth=("<user>", "<password>"), verify=False)
>> print result.json()

2.3.6. 如何执行管理命令?

使用 /request 端点和 POST 方法执行管理命令。通过这种方法,您甚至可以使用不受 API 直接支持的命令,但在 Ceph 源代码中的 src/mon/MonCommands.h 文件中定义。例如,在构建使用 API 您自己的应用时,这非常有用。

Python
  1. 查看 src/mon/MonCommands.h,找到您要在 API 中执行的命令,例如:

    COMMAND("osd ls " \
            "name=epoch,type=CephInt,range=0,req=false", \
            "show all OSD ids", "osd", "r", "cli,rest")

    命令是 osd lsname 位指定命令具有的参数的名称,type 指定参数采用的值类型,范围 指定参数接受的值的范围,而 req 指定是否需要该参数。在本例中,参数是 epoch,参数采用的值类型是整数,接受的值的范围是 0,参数是可选的。

  2. 在 Python 解释器中输入:

    $ python
    >> import requests
    >> result = requests.post(
           'https://<ceph-mgr>:8003/request',
           json={'prefix': '<command>', <argument>:<value>},
           auth=("<user>", "<password>")
       )
    >> print result.json()

    替换

    • <ceph-mgr>,带有活跃的 ceph-mgr 实例,节点的 IP 地址或短主机名
    • <command>,带有在 src/mon/MonCommands.h 文件中列出的命令
    • <argument> 带有 src/mon/MonCommands.h 文件中列出的命令参数,如果参数是可选的,您可以省略它
    • <value> 带有参数的值
    • <user> with user name
    • <password> 和用户的密码

    例如,使用 osd ls epoch 0 命令:将 <command> 替换为 osd ls<argument> 替换为 epoch<value> 替换为 0:

    $ python
    >> import requests
    >> result = requests.post(
           'https://ceph-node1:8003/request',
           json={'prefix': 'osd ls', 'epoch': 0},
           auth=("ceph-user", "<password>")
       )
    >> print result.json()

    如果您使用自签名证书,请使用 verify=False 选项:

    $ python
    >> import requests
    >> result = requests.post(
           'https://<ceph-mgr>:8003/request',
           json={'prefix': '<command>', <optional_argument>:<value>},
           auth=("<user>", "<password>"),
           verify=False
       )
    >> print result.json()

其它资源

2.4. 其它资源