注意
本文档适用于 Ceph 的开发版本。
ceph-objectstore-tool -- 修改或检查 OSD 的状态
概要
可能的 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 输出来指定对象。
可能的 -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
操作对象的内容
确保目标 OSD 已关闭:
systemctl status ceph-osd@$OSD_NUMBER
通过列出 OSD 或放置组的对象来查找对象。
在在对象上设置字节之前,备份并创建对象的 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。
编辑 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
操作对象映射头
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文档以获取更多信息。