注意
本文档适用于 Ceph 的开发版本。
ceph-objectstore-tool -- 修改或检查 OSD 的状态
概要
可能的对象操作
(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 输出指定对象。
可能的 -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
操作对象内容
确保目标 OSD 已关闭
systemctl status ceph-osd@$OSD_NUMBER
通过列出 OSD 或放置组中的对象来查找对象。
在设置对象的字节之前,请制作对象的备份和工作副本。这是该命令的语法形式
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
第一个命令创建备份副本,第二个命令创建工作副本。
编辑工作副本对象文件。
设置对象的字节
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) 的内容。输出是键列表。
验证相应的 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-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-tool 由 ceph-osd 包提供。有关更多信息,请参阅 Ceph 文档:https://docs.ceph.net.cn/。