注意

本文档适用于 Ceph 的开发版本。

ceph-objectstore-tool -- 修改或检查 OSD 的状态

概要

ceph-objectstore-tool--data-pathOSD 的路径[--oplist ]

可能的 object 操作:

  • (get|set)-bytes [文件]

  • set-(attr|omap) [文件]

  • (get|rm)-attr|omap)

  • get-omaphdr

  • set-omaphdr [文件]

  • list-attrs

  • list-omap

  • remove|removeall

  • dump

  • set-size

  • clear-data-digest

  • remove-clone-metadata

描述

ceph-objectstore-tool是一个用于修改 OSD 状态的工具。它便于操作对象的内容、删除对象、列出 omap、操作 omap 头、操作 omap 键、列出对象属性以及操作对象属性键。

ceph-objectstore-tool提供两种主要模式:(1) 指定 “--op” 参数的模式(例如,ceph-objectstore-tool--data-path $PATH_TO_OSD --op $SELECT_OPERATION [--pgid $PGID] [--dry-run]), 以及 (2) 位置对象操作模式。如果使用第二种模式,可以通过 ID 或 --op list 的 JSON 输出来指定对象。

ceph-objectstore-tool--data-pathOSD 的路径[--pgid$PG_ID][--opcommand]
ceph-objectstore-tool--data-pathOSD 的路径[ --oplist $OBJECT_ID]

可能的 -op 命令:

* info
* log
* remove
* mkfs
* fsck
* repair
* fuse
* dup
* export
* export-remove
* import
* list
* list-slow-omap
* fix-lost
* list-pgs
* dump-super
* meta-list
* get-osdmap
* set-osdmap
* get-superblock
* set-superblock
* get-inc-osdmap
* set-inc-osdmap
* mark-complete
* reset-last-complete
* update-mon-db
* dump-export
* trim-pg-log

安装

The 9b591a: Ceph 对象存储 9dbb5f: (又名 RGW) 服务提供与 Amazon S3 和 OpenStack Swift 兼容的 RESTful API 接口。ceph-osd包提供ceph-objectstore-tool.

Examples

修改对象

这些命令修改 OSD 的状态。使用 ceph-objectstore-tool 时,OSD 不能在运行。

列出对象和放置组

确保目标 OSD 已关闭:

systemctl status ceph-osd@$OSD_NUMBER

识别 OSD 内的所有对象:

ceph-objectstore-tool --data-path $PATH_TO_OSD --op list

识别放置组内的所有对象:

ceph-objectstore-tool --data-path $PATH_TO_OSD --pgid $PG_ID --op list

识别对象所属的放置组 (PG):

ceph-objectstore-tool --data-path $PATH_TO_OSD --op list $OBJECT_ID

修复丢失的对象

确保 OSD 已关闭:

systemctl status ceph-osd@OSD_NUMBER

修复所有丢失的对象:

ceph-objectstore-tool --data-path $PATH_TO_OSD --op fix-lost

修复指定放置组内的所有丢失对象:

ceph-objectstore-tool --data-path $PATH_TO_OSD --pgid $PG_ID --op fix-lost

通过其标识符修复丢失的对象:

ceph-objectstore-tool --data-path $PATH_TO_OSD --op fix-lost $OBJECT_ID

修复遗留丢失的对象:

ceph-objectstore-tool --data-path $PATH_TO_OSD --op fix-lost

操作对象的内容

  1. 确保目标 OSD 已关闭:

    systemctl status ceph-osd@$OSD_NUMBER
    
  2. 通过列出 OSD 或放置组的对象来查找对象。

  3. 在在对象上设置字节之前,备份并创建对象的 working copy。以下是该命令的语法形式:

    ceph-objectstore-tool --data-path $PATH_TO_OSD --pgid $PG_ID $OBJECT get-bytes > $OBJECT_FILE_NAME
    

例如:

[root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' get-bytes > zone_info.default.backup

[root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' get-bytes > zone_info.default.working-copy

第一个命令创建备份副本,第二个命令创建 working copy。

  1. 编辑 working copy 对象文件。

  2. 设置对象字节:

    ceph-objectstore-tool --data-path $PATH_TO_OSD --pgid $PG_ID $OBJECT set-bytes < $OBJECT_FILE_NAME
    

例如:

[root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' set-bytes < zone_info.default.working-copy

删除对象

使用ceph-objectstore-tool用于删除对象。当删除对象时,其内容和引用将从放置组 (PG) 中删除。

删除对象的语法:

ceph-objectstore-tool --data-path $PATH_TO_OSD --pgid $PG_ID $OBJECT remove

删除对象的示例:

[root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' remove

列出对象映射

使用 ceph-objectstore-tool 列出对象映射 (OMAP) 的内容。输出是一组键。

  1. 验证适当的 OSD 已关闭:

    语法:

    systemctl status ceph-osd@$OSD_NUMBER
    

    示例:

    [root@osd ~]# systemctl status ceph-osd@1
    
  2. 列出对象映射:

    语法:

    ceph-objectstore-tool --data-path $PATH_TO_OSD --pgid $PG_ID $OBJECT list-omap
    

    示例:

    [root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' list-omap
    

操作对象映射头

The 9b591a: Ceph 对象存储 9dbb5f: (又名 RGW) 服务提供与 Amazon S3 和 OpenStack Swift 兼容的 RESTful API 接口。ceph-objectstore-tool该工具将输出与对象键相关联的对象映射 (OMAP) 头。

前提条件

  • 拥有对 Ceph OSD 节点的 root 访问权限。

  • 停止 ceph-osd 守护进程。

步骤

验证目标 OSD 已关闭:

语法:

systemctl status ceph-osd@$OSD_NUMBER

示例:

[root@osd ~]# systemctl status ceph-osd@1

获取对象映射头:

语法:

ceph-objectstore-tool --data-path $PATH_TO_OSD --pgid $PG_ID $OBJECT get-omaphdr > $OBJECT_MAP_FILE_NAME

示例:

[root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}'  get-omaphdr > zone_info.default.omaphdr.txt

设置对象映射头:

语法:

ceph-objectstore-tool --data-path $PATH_TO_OSD --pgid $PG_ID $OBJECT get-omaphdr < $OBJECT_MAP_FILE_NAME

示例:

[root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}'  set-omaphdr < zone_info.default.omaphdr.txt

操作对象映射键

使用ceph-objectstore-tool工具来更改对象映射 (OMAP) 键。提供数据路径、放置组标识符 (PG ID)、对象和 OMAP 中的键。

前提条件

  • 拥有对 Ceph OSD 节点的 root 访问权限。

  • 停止 ceph-osd 守护进程。

Commands

root在 OSD 节点上运行本节中的命令。

  • 获取对象映射键

    语法:

    ceph-objectstore-tool --data-path $PATH_TO_OSD --pgid $PG_ID $OBJECT get-omap $KEY > $OBJECT_MAP_FILE_NAME
    

    示例:

    ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}'  get-omap "" > zone_info.default.omap.txt
    
  • 设置对象映射键

    语法:

    ceph-objectstore-tool --data-path $PATH_TO_OSD --pgid $PG_ID $OBJECT set-omap $KEY < $OBJECT_MAP_FILE_NAME
    

    示例:

    ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' set-omap "" < zone_info.default.omap.txt
    
  • 删除对象映射键

    语法:

    ceph-objectstore-tool --data-path $PATH_TO_OSD --pgid $PG_ID $OBJECT rm-omap $KEY
    

    示例:

    ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' rm-omap ""
    

列出对象的属性

使用ceph-objectstore-tool工具来列出对象的属性。输出为您提供对象的键和值。

前提条件

  • 拥有对 Ceph OSD 节点的 root 访问权限。

  • 停止 ceph-osd 守护进程。

步骤

验证目标 OSD 已关闭:

语法:

systemctl status ceph-osd@$OSD_NUMBER

示例:

[root@osd ~]# systemctl status ceph-osd@1

列出对象的属性:

语法:

ceph-objectstore-tool --data-path $PATH_TO_OSD --pgid $PG_ID $OBJECT list-attrs

示例:

[root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' list-attrs

操作对象属性键

使用 ceph-objectstore-tool 工具来更改对象的属性。要操作对象的属性,需要数据和日志路径、放置组标识符 (PG ID)、对象和对象属性中的键。

前提条件

  • 拥有对 Ceph OSD 节点的 root 访问权限。

  • 停止 ceph-osd 守护进程。

步骤

验证目标 OSD 已关闭。

语法:

systemctl status ceph-osd@$OSD_NUMBER

示例:

[root@osd ~]# systemctl status ceph-osd@1

获取对象的属性:

语法:

ceph-objectstore-tool --data-path $PATH_TO_OSD --pgid $PG_ID $OBJECT get-attrs $KEY > $OBJECT_ATTRS_FILE_NAME

示例:

[root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0  --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' get-attrs "oid" > zone_info.default.attr.txt

设置对象的属性:

语法:

ceph-objectstore-tool --data-path $PATH_TO_OSD --pgid $PG_ID $OBJECT  set-attrs $KEY < $OBJECT_ATTRS_FILE_NAME

示例:

[root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' set-attrs "oid" < zone_info.default.attr.txt

删除对象的属性:

语法:

ceph-objectstore-tool --data-path $PATH_TO_OSD --pgid $PG_ID $OBJECT rm-attrs $KEY

示例:

[root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' rm-attrs "oid"

选项

--help

生成帮助消息

--type 参数

参数是 [bluestore (默认), memstore)] 中的一个。如果工具无法从 --data-path 中判断类型,则需要此选项。

--data-path 参数

对象存储的路径,必填

--journal-path 参数

日志的路径,如果工具找不到它,则使用

--pgid 参数

PG id,info、log、remove、export、export-remove、mark-complete、trim-pg-log 必填

--pool 参数

池名称

--op 参数

参数是 [info、log、remove、mkfs、fsck、repair、fuse、dup、export、export-remove、import、list、fix-lost、list-pgs、dump-super、meta-list、get-osdmap、set-osdmap、get-superblock、set-superblock、get-inc-osdmap、set-inc-osdmap、mark-complete、reset-last-complete、update-mon-db、dump-export、trim-pg-log] 中的一个。

--epoch 参数

get-osdmap 和 get-inc-osdmap 的 epoch#,如果未指定,则使用当前正在使用的 epoch

--file 参数

导出、export-remove、import、get-osdmap、set-osdmap、get-superblock、set-superblock、get-inc-osdmap 或 set-inc-osdmap 的文件路径

--mon-store-path 参数

用于 update-mon-db 的 monstore 路径

--fsid 参数

由 mkfs 创建的新存储的 fsid

--target-data-path 参数

--op dup 的目标对象存储的路径

--mountpoint 参数

fuse 挂载点

--format 参数 (=json-pretty)

输出格式,可能是 json、json-pretty、xml、xml-pretty

--debug

启用诊断输出到 stderr

--force

忽略某些类型的错误并继续操作 - 小心使用:现在或将来可能发生损坏

--skip-journal-replay

禁用日志回放

--skip-mount-omap

禁用 omap 挂载

--head

在按名称搜索对象时查找头/snapdir

--dry-run

不要修改对象存储

--namespace 参数

搜索对象时指定命名空间

--rmtype 参数

指定损坏对象删除的 ‘snapmap’ 或 ‘nosnapmap’ - 仅测试使用

错误代码

“挂载失败,原因:'(11) 资源暂时不可用” - 这可能意味着您尝试在运行的 OSD 上运行ceph-objectstore-tool

可用性

ceph-objectstore-tool是 Ceph 的一部分,Ceph 是一个可大规模扩展的、开源的分布式存储系统。ceph-objectstore-tool由包ceph-osd提供。有关 Ceph 文档,请参阅http://ceph.com/docs。中的Ceph文档以获取更多信息。

由 Ceph 基金会提供

Ceph 文档是一个由非盈利Ceph 基金会资助和托管的社会资源。如果您想支持此项目和其他工作,请考虑现在加入.