11.9. 使用 ceph-blustore-tool
ceph-bluestore-tool
是一个在 BlueStore 实例上执行低级管理操作的实用程序。
以下命令可用于 ceph-bluestore-tool
语法
ceph-bluestore-tool COMMAND [ --dev DEVICE … ] [ -i OSD_ID ] [ --path OSD_PATH ] [ --out-dir DIR ] [ --log-file | -l filename ] [ --deep ] ceph-bluestore-tool fsck|repair --path OSD_PATH [ --deep ] ceph-bluestore-tool qfsck --path OSD_PATH ceph-bluestore-tool allocmap --path OSD_PATH ceph-bluestore-tool restore_cfb --path OSD_PATH ceph-bluestore-tool show-label --dev DEVICE … ceph-bluestore-tool prime-osd-dir --dev DEVICE --path OSD_PATH ceph-bluestore-tool bluefs-export --path OSD_PATH --out-dir DIR ceph-bluestore-tool bluefs-bdev-new-wal --path OSD_PATH --dev-target NEW_DEVICE ceph-bluestore-tool bluefs-bdev-new-db --path OSD_PATH --dev-target NEW_DEVICE ceph-bluestore-tool bluefs-bdev-migrate --path OSD_PATH --dev-target NEW_DEVICE --devs-source DEVICE1 [--devs-source DEVICE2] ceph-bluestore-tool free-dump|free-score --path OSD_PATH [ --allocator block/bluefs-wal/bluefs-db/bluefs-slow ] ceph-bluestore-tool reshard --path OSD_PATH --sharding NEW_SHARDING [ --sharding-ctrl CONTROL_STRING ] ceph-bluestore-tool show-sharding --path OSD_PATH
每个 BlueStore 块设备在设备的开头都有一个块标签。您可以使用以下内容转储标签内容:
ceph-bluestore-tool show-label --dev DEVICE
主设备包含许多元数据,包括用于存储 OSD 数据目录中的小文件的信息。辅助设备(db 和 wal)只有最少的必填字段:OSD UUID、大小、设备类型和 birth 时间。
为 OSD 数据目录生成内容,以使用 prime-osd-dir
命令启动 BlueStore OSD。
ceph-bluestore-tool prime-osd-dir --dev MAIN_DEVICE -path /var/lib/ceph/osd/ceph-ID
命令 | 描述 |
---|---|
| 显示帮助 |
| 选项: on,off; yes,no; 1,0; 或 true,false.在 BlueStore 元数据上运行一致性检查。如果指定了 --deep,还会读取所有对象数据并验证校验和。 |
| 运行一致性检查并修复任何错误。 |
| 在 BlueStore 元数据与 ONodes 状态比较时运行一致性检查。分配器数据来自 RocksDB CFB (如果存在)以及 (如果没有使用 allocation-file )。 |
|
执行 |
|
反向更改由新的 NCB 代码(通过 |
| 将 BlueFS 的内容导出到输出目录。 |
| 将 BlueFS 理解的设备大小输出到 stdout。 |
| 指示 BlueFS 检查其块设备的大小,如果扩展,则使用额外的空间。请注意,如果有足够可用空间,只有 BlueFS 创建的新文件才会在首选块设备上分配,而在 RocksDB 执行压缩时,对较慢的设备的现有文件将逐渐移除。换句话说,如果对较慢的设备存在任何数据中断,它将随着时间的推移移到快速设备中。 |
| 将 WAL 设备添加到 BlueFS,如果 WAL 设备已存在,则会失败。 |
| 将 DB 设备添加到 BlueFS,如果 DB 设备已存在,则会失败。 |
| 将 BlueFS 数据从源设备移动到目标,源设备除外(主设备除外)成功删除。目标设备可以同时附加或者新设备。在后者的情况下,它被添加到 OSD 中,替换其中一个源设备。适用以下替换规则(按优先级顺序,在第一个匹配项中停止):(1)如果源列表有 DB volume - 目标设备替换它。(2)如果源列表有 WAL 卷 - 目标设备替换它。(3)如果源列表只具有较慢的卷 - 不允许操作,需要通过 new-db/new-wal 命令显式分配。 |
| 显示任何设备标签。 |
| 转储分配器中的所有空闲区域。 |
| 提供一个 [0-1] 号,代表分配器中的碎片。0 代表当所有空闲空间都位于一个块中时。1 代表最糟糕的碎片。 |
|
更改 BlueStore 的 RocksDB 分片。分片基于 RocksDB 列系列构建。此选项允许测试新分片的性能,而无需重新部署 OSD。重新划分过程通常是较长的过程,它涉及遍历整个 RocksDB 密钥空间,并将其部分移到不同的列中。 |
| 显示当前应用到 BlueStore RocksDB 的分片。 |
命令选项 | 描述 |
---|---|
| 将设备添加到要考虑的设备列表中。 |
|
作为 OSD OSD_ID 进行操作。连接到监控 OSD 特定选项。如果 monitor 不可用,请添加 |
| 将设备添加到设备列表中,以被视为迁移源。 |
| 指定用于 添加新 DB/WAL 的目标设备迁移操作或设备。 |
|
指定 OSD 路径。在大多数情况下,设备列表是从 osd path 中存在的符号链接中推断出来的。这通常比使用 --dev 明确指定设备更简单。如果提供了 if |
|
|
| 要记录到的文件。 |
| 调试日志级别。默认值为 30 (冗余),20 个非常详细,10 非常详细,1 并不是非常详细。 |
| 深度清理/修复(读取和验证对象数据,而不仅限于元数据)。 |
| 对于 free-dump 和 free-score 操作非常有用。选择分配器。 |
|
提供对重新划分过程的控制。指定 RocksDB 迭代器的频率,以及在提交到 RocksDB 前应如何提交批处理。选项格式为: 默认值:10000000/10000/1000000/1000 |
流程
在使用
ceph-bluestore-tool
之前停止 OSD。语法
ceph orch daemon stop osd.ID
示例
[ceph: root@host01 /]# ceph orch daemon stop osd.2
从 OSD 节点,登录目标 OSD 容器。
语法
cephadm shell --name osd.ID
示例
[ceph: root@host01 /]# ceph shell --name osd.2
运行所需命令。
示例
[ceph: root@host01 /]# ceph-bluestore-tool bluefs-bdev-new-wal --dev-target /dev/test/newdb --path /var/lib/ceph/osd/ceph-0
注意本例演示了添加新的 wal 设备。
从 cephadm shell,重启 OSD。
语法
ceph orch daemon start osd.ID
示例
[ceph: root@host01 /]# ceph orch daemon start osd.2
其它资源
有关 BlueStore 配置选项 的详情,请参阅 BlueStore 配置选项。