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

表 11.2. ceph-bluestore-tool 命令
命令描述

帮助

显示帮助

fsck [--deep]

选项: on,off; yes,no; 1,0; 或 true,false.在 BlueStore 元数据上运行一致性检查。如果指定了 --deep,还会读取所有对象数据并验证校验和。

repair

运行一致性检查并修复任何错误。

qfsck

在 BlueStore 元数据与 ONodes 状态比较时运行一致性检查。分配器数据来自 RocksDB CFB (如果存在)以及 (如果没有使用 allocation-file )。

Allocmap

执行 qfsck 完成的同一检查,然后存储一个新的 allocation-file。此命令默认为禁用,需要特殊构建。

restore_cfb

反向更改由新的 NCB 代码(通过 ceph restart 或运行 allocmap 命令时)完成,并恢复 RocksDB B Column-Family (allocator-map)。

bluefs-export

将 BlueFS 的内容导出到输出目录。

BlueFS-bdev-sizes --path OSD_PATH

将 BlueFS 理解的设备大小输出到 stdout。

bluefs-bdev-expand --path OSD_PATH

指示 BlueFS 检查其块设备的大小,如果扩展,则使用额外的空间。请注意,如果有足够可用空间,只有 BlueFS 创建的新文件才会在首选块设备上分配,而在 RocksDB 执行压缩时,对较慢的设备的现有文件将逐渐移除。换句话说,如果对较慢的设备存在任何数据中断,它将随着时间的推移移到快速设备中。

BlueFS-bdev-new-wal --path OSD_PATH --dev-target NEW_DEVICE

将 WAL 设备添加到 BlueFS,如果 WAL 设备已存在,则会失败。

BlueFS-bdev-new-db --path OSD_PATH --dev-target NEW_DEVICE

将 DB 设备添加到 BlueFS,如果 DB 设备已存在,则会失败。

BlueFS-bdev-migrate --dev-target NEW_DEVICE --devs-source DEVICE1 [--devs-source DEVICE2]

将 BlueFS 数据从源设备移动到目标,源设备除外(主设备除外)成功删除。目标设备可以同时附加或者新设备。在后者的情况下,它被添加到 OSD 中,替换其中一个源设备。适用以下替换规则(按优先级顺序,在第一个匹配项中停止):(1)如果源列表有 DB volume - 目标设备替换它。(2)如果源列表有 WAL 卷 - 目标设备替换它。(3)如果源列表只具有较慢的卷 - 不允许操作,需要通过 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 列系列构建。此选项允许测试新分片的性能,而无需重新部署 OSD。重新划分过程通常是较长的过程,它涉及遍历整个 RocksDB 密钥空间,并将其部分移到不同的列中。--resharding-ctrl 选项提供对重新划分过程的性能控制。中断重新划分将阻止 OSD 运行。中断的重新划分不会损坏数据。始终可以继续重新划分,或者选择任何其他分片方案,包括恢复到原始分片方案。有关重新划分的更多信息,请参阅使用 BlueStore 管理工具重新划分 RocksDB 数据库的 OSD 部分。

show-sharding --path OSD_PATH

显示当前应用到 BlueStore RocksDB 的分片。

表 11.3. ceph-bluestore-tool 命令选项
命令选项描述

--dev DEVICE

将设备添加到要考虑的设备列表中。

-I OSD_ID

作为 OSD OSD_ID 进行操作。连接到监控 OSD 特定选项。如果 monitor 不可用,请添加 --no-mon-config 来从 ceph.conf 读取。

--Devs-source DEVICE

将设备添加到设备列表中,以被视为迁移源。

--dev-target DEVICE

指定用于 添加新 DB/WAL 的目标设备迁移操作或设备。

--path OSD_PATH

指定 OSD 路径。在大多数情况下,设备列表是从 osd path 中存在的符号链接中推断出来的。这通常比使用 --dev 明确指定设备更简单。如果提供了 if -i osd_id,则不需要这个选项。

--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

流程

  1. 在使用 ceph-bluestore-tool 之前停止 OSD。

    语法

    ceph orch daemon stop osd.ID

    示例

    [ceph: root@host01 /]# ceph orch daemon stop osd.2

  2. 从 OSD 节点,登录目标 OSD 容器。

    语法

    cephadm shell --name osd.ID

    示例

    [ceph: root@host01 /]# ceph shell --name osd.2

  3. 运行所需命令。

    示例

    [ceph: root@host01 /]# ceph-bluestore-tool bluefs-bdev-new-wal --dev-target /dev/test/newdb --path /var/lib/ceph/osd/ceph-0

    注意

    本例演示了添加新的 wal 设备。

  4. 从 cephadm shell,重启 OSD。

    语法

    ceph orch daemon start osd.ID

    示例

    [ceph: root@host01 /]# ceph orch daemon start osd.2

其它资源

有关 BlueStore 配置选项 的详情,请参阅 BlueStore 配置选项。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.