ceph-bluestore-tool – bluestore 管理工具¶
提纲¶
描述¶
ceph-bluestore-tool 工具可在 BlueStore 例程上执行底层管理操作。
命令¶
help
显示帮助
fsck [ –deep ]
对 BlueStore 元数据进行一致性检查。如果加了 –deep ,还会读取所有对象数据并核对校验和。
repair
运行一致性检查,并且修复所有可修复的错误。
bluefs-export
把 BlueFS 内容(即 rocksdb 文件)导出到一个输出目录。
bluefs-bdev-sizes –path osd path
打印出设备尺寸,即 BlueFS 所认为的尺寸。
bluefs-bdev-expand –path osd path
让 BlueFS 检查它的块设备尺寸,并且,如果发现它们扩大了,把那些额外空间也用起来。请注意,在空闲空间足够的前提下,只有 BlueFS 新建的文件才会被分配到首选块设备;而已经存在的、溢出到慢速设备上的文件会在 RocksDB 压缩时逐渐删除。换句话说,如果有数据溢出到了慢速设备上,它会随着时间的推移被挪到高速设备上。
bluefs-bdev-new-wal –path osd path –dev-target new-device
给 BlueFS 增加 WAL 设备,如果已有 WAL 设备此命令就会失败。
bluefs-bdev-new-db –path osd path –dev-target new-device
给 BlueFS 增加 DB 设备,如果已有 DB 设备此命令就会失败。
bluefs-bdev-migrate –dev-target new-device –devs-source device1 [–devs-source device2]
把一个或多个源设备上的 BlueFS 数据移动到目标设备,成功后源设备(除了主要的那个)将被删除。目标设备可以是已加入集群的、或新设备。稍后,它将被加进 OSD ,以替换某一个源设备。遵循下面的替换规则(按优先级,匹配到即停止):
如果源列表中有 DB 卷——目标设备替换它;
如果源列表中有 WAL 卷——目标设备替换它;
如果源列表中只有慢速卷——操作不允许,要显式地用 new-db 、 new-wal 命令分配。
show-label –dev device […]
出示设备标签。
free-dump –path osd path [ –allocator block/bluefs-wal/bluefs-db/bluefs-slow ]
展示分配器中的所有空闲区域。
free-score –path osd path [ –allocator block/bluefs-wal/bluefs-db/bluefs-slow ]
会收到一个 0-1 之间的数字,用于表示分配器中碎片的质量。0 表示所有空闲空间都在一个块中的情形; 1 表示最糟糕的碎片散布情形。
reshard –path osd path –sharding new sharding [ –resharding-ctrl control string ]
更改 BlueStore 内 RocksDB 的分片配置。分片建立在 RocksDB 列族基础之上。此选项方便你测试 new sharding 的性能,而无需重新部署 OSD 。重分片一般都耗时绵长,需要遍历整个 RocksDB 键名空间、并把其中某些挪到别的列族。
--resharding-ctrl
选项便于你对重分片过程进行性能控制。中断重分片会妨碍 OSD 的正常运行;中断重分片不会损坏数据;而且随时可以继续之前的重分片,或者选用其它分片方案,包括回退到最初的那个。
选项¶
-
--dev
*device*
¶ 把设备 device 加进涉及到的设备列表中。
-
--devs-source
*device*
¶ 把设备 device 加进迁移操作涉及到的源设备列表中。
-
--dev-target
*device*
¶ 指定用于迁移操作或新增设备的目标设备 device ,以便新增 DB/WAL 。
-
--path
*osd path*
¶ 指定一个 osd 路径。大多数情况下,设备列表都是从 osd path 里的符号链接推断出来的。通常比显式地用 –dev 指定几个设备要简单些。
-
--out-dir
*dir*
¶ bluefs-export 的输出目录。
-
-l
,
--log-file
*log file*
¶ 记录日志的文件
-
--log-level
*num*
¶ 调试日志级别。默认是 30 (极其详细), 20 是非常详细, 10 是详细, 而 1 是不怎么详细。
-
--deep
¶
深度洗刷、修复(读取并校验对象数据,而不只是元数据)
-
--allocator
*name*
¶ 适用于 free-dump 和 free-score 操作。选择分配器。
-
--resharding-ctrl
*control string*
¶ 提供了对重分片过程的控制手段,指示多久刷一次 RocksDB 递归器,以及提交给 RocksDB 的批次应该是多大。选项格式为: <iterator_refresh_bytes>/<iterator_refresh_keys>/<batch_commit_bytes>/<batch_commit_keys> 默认值: 10000000/10000/1000000/1000
设备标签¶
每个 BlueStore 块设备都有一个单独的块标签,位于设备起始处。你可以用此命令查看标签内容:
ceph-bluestore-tool show-label --dev *device*
主设备会有很多元数据,包括以前在 OSD 数据目录下存储的小文件内的信息。辅助设备( db 和 wal )只含有必需的最少字段( OSD UUID 、尺寸、设备类型、创建时间)。
OSD 目录启动¶
你可以给一个 OSD 数据目录生成些数据,才能用 prime-osd-dir 启动 BlueStore OSD :
ceph-bluestore-tool prime-osd-dir --dev *main device* --path /var/lib/ceph/osd/ceph-*id*
使用范围¶
ceph-bluestore-tool 是 Ceph 的一部分,这是个伸缩力强、开源、分布式的存储系统,更多信息参见 http://ceph.com/docs 。