注意

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

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

概要

ceph-objectstore-tool --data-path osd 路径 [--op list ]

可能的对象操作

  • (get|set)-bytes [file]

  • set-(attr|omap) [file]

  • (get|rm)-attr|omap)

  • get-omaphdr

  • set-omaphdr [file]

  • 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-path osd 路径 [--pgid $PG_ID ][--op command]
ceph-objectstore-tool --data-path osd 路径 [ --op list $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

安装

ceph-osd 包提供了 ceph-objectstore-tool

示例

修改对象

这些命令修改 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. 在设置对象的字节之前,请制作对象的备份和工作副本。这是该命令的语法形式

    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

第一个命令创建备份副本,第二个命令创建工作副本。

  1. 编辑工作副本对象文件。

  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
    

操作对象映射头部

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 守护程序。

命令

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

  • 获取对象映射键

    语法

    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)、对象以及对象属性中的键。注意

Prerequisites

  • 具有 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 arg

Arg 是 [bluestore (default), memstore] 之一。仅当工具无法从 --data-path 推断类型时才需要此选项。

--data-path arg

对象存储路径,必填

--journal-path arg

日志路径,如果工具找不到则使用此选项

--pgid arg

PG ID,对于 info, log, remove, export, export-remove, mark-complete, trim-pg-log 必填

--pool arg

池名称

--op arg

Arg 是 [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 arg

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

--file arg

用于 export, export-remove, import, get-osdmap, set-osdmap, get-superblock, set-superblock, get-inc-osdmap 或 set-inc-osdmap 的文件路径

--mon-store-path arg

用于 update-mon-db 的 monstore 路径

--fsid arg

mkfs 创建的新存储的 fsid

--target-data-path arg

目标对象存储的路径(用于 --op dup)

--mountpoint arg

fuse 挂载点

--format arg (=json-pretty)

输出格式,可以是 json, json-pretty, xml, xml-pretty

--debug

启用 stderr 诊断输出

--force

忽略某些类型的错误并继续操作 - 谨慎使用:现在或将来可能导致数据损坏

--skip-journal-replay

禁用日志重放

--skip-mount-omap

禁用 omap 挂载

--head

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

--dry-run

不要修改对象存储

--namespace arg

搜索对象时指定命名空间

--rmtype arg

指定损坏对象删除类型 ‘snapmap’ 或 ‘nosnapmap’ - 仅用于测试

错误代码

“Mount failed with ‘(11) Resource temporarily unavailable” - 这可能意味着您尝试在正在运行的 OSD 上运行 ceph-objectstore-tool

可用性

ceph-objectstore-tool 是 Ceph 的一部分,Ceph 是一个大规模可扩展的开源分布式存储系统。ceph-objectstore-toolceph-osd 包提供。有关更多信息,请参阅 Ceph 文档:https://docs.ceph.net.cn/

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入