10.8. Ceph BlueStore BlueFS


BlueStore 块数据库将元数据作为键值对存储在 RocksDB 数据库中。块数据库驻留在存储设备上的一个小型 BlueFS 分区。BlueFS 是一个最小的文件系统,旨在存放 RocksDB 文件。

BlueFS 文件

RocksDB 生成的文件有 3 个类型:

  • 控制文件,如 CURRENTIDENTITYMANIFEST-000011
  • DB 表文件,如 004112.sst
  • 编写前一个日志,如 000038.log

此外,还有一个内部隐藏的文件,它充当 BlueFS 重播日志( ino 1), 它充当目录结构、文件映射和操作日志。

回退层次结构

使用 BlueFS 时,可以将任何文件放在任何设备上。文件的部分甚至可以驻留在不同的设备上,即 WAL、DB 和 SLOW。例如,BlueFS 会放置文件。只有在主存储耗尽时才会将文件放在次要存储中,只有在次要存储耗尽时,文件才会被放入次要存储。

特定文件的顺序是:

  • 提前写入日志:WAL、DB、SLOW
  • Replay log ino 1: DB, SLOW
  • 控制和 DB 文件:DB、SLOW

    • 控制和 DB 文件顺序(以耗尽空间):SLOW

      重要

      控制和 DB 文件顺序有一个例外。当 RocksDB 检测到您在 DB 文件中耗尽空间时,它会直接通知您将文件放在 SLOW 设备。

10.8.1. 查看 bluefs_buffered_io 设置

作为存储管理员,您可以查看 bluefs_buffered_io 参数的当前设置。

对于 Red Hat Ceph Storage,默认将 bluefs_buffered_io 选项设为 True。这个选项使 BlueFS 能够在某些情况下执行缓冲的读取,并允许内核页面缓存作为辅助缓存进行读取,如 RocksDB 块读取。

重要

不建议更改 bluefs_buffered_io 的值。在更改 bluefs_buffered_io 参数前,请联系您的红帽支持团队。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • Ceph 监控节点的根级别访问权限.

流程

  1. 登录到 Cephadm shell:

    示例

    [root@host01 ~]# cephadm shell

  2. 您可以通过三种不同的方式查看 bluefs_buffered_io 参数的当前值:

方法 1

  • 查看存储在配置数据库中的值:

    示例

    [ceph: root@host01 /]# ceph config get osd bluefs_buffered_io

方法 2

  • 查看特定 OSD 的配置数据库中存储的值:

    语法

    ceph config get OSD_ID bluefs_buffered_io

    示例

    [ceph: root@host01 /]# ceph config get osd.2 bluefs_buffered_io

方法 3

  • 查看运行值的 OSD 的运行值与配置数据库中存储的值不同:

    语法

    ceph config show OSD_ID bluefs_buffered_io

    示例

    [ceph: root@host01 /]# ceph config show osd.3 bluefs_buffered_io

10.8.2. 查看 Ceph OSD 的 Ceph BlueFS 统计信息

使用 bluefs stats 命令查看并置和非并置 Ceph OSD 的与 BluesFS 相关的信息。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 对象存储配置为 BlueStore。
  • 对 OSD 节点的 root 级别访问权限。

流程

  1. 登录到 Cephadm shell:

    示例

    [root@host01 ~]# cephadm shell

  2. 查看 BlueStore OSD 统计信息:

    语法

    ceph daemon osd.OSD_ID bluefs stats

    并置 OSD 的示例

    [ceph: root@host01 /]# ceph daemon osd.1 bluefs stats
    1 : device size 0x3bfc00000 : using 0x1a428000(420 MiB)
    wal_total:0, db_total:15296836403, slow_total:0

    非并置 OSD 示例

    [ceph: root@host01 /]# ceph daemon osd.1 bluefs stats
    0 :
    1 : device size 0x1dfbfe000 : using 0x1100000(17 MiB)
    2 : device size 0x27fc00000 : using 0x248000(2.3 MiB)
    RocksDBBlueFSVolumeSelector: wal_total:0, db_total:7646425907, slow_total:10196562739, db_avail:935539507
    Usage matrix:
    DEV/LEV     WAL         DB          SLOW        *           *           REAL        FILES
    LOG         0 B         4 MiB       0 B         0 B         0 B         756 KiB     1
    WAL         0 B         4 MiB       0 B         0 B         0 B         3.3 MiB     1
    DB          0 B         9 MiB       0 B         0 B         0 B         76 KiB      10
    SLOW        0 B         0 B         0 B         0 B         0 B         0 B         0
    TOTALS      0 B         17 MiB      0 B         0 B         0 B         0 B         12
    MAXIMUMS:
    LOG         0 B         4 MiB       0 B         0 B         0 B         756 KiB
    WAL         0 B         4 MiB       0 B         0 B         0 B         3.3 MiB
    DB          0 B         11 MiB      0 B         0 B         0 B         112 KiB
    SLOW        0 B         0 B         0 B         0 B         0 B         0 B
    TOTALS      0 B         17 MiB      0 B         0 B         0 B         0 B

    其中:

    0 :这指的是专用 WAL 设备,即 block.wal

    1: 这指的是专用 DB 设备,即 block.db

    2: 这指的是主块设备,即 blockslow

    设备大小 :代表设备的实际大小。

    使用 :它代表总使用量。它不仅限于 BlueFS。

    注意

    DB 和 WAL 设备仅由 BlueFS 使用。对于主设备,也包含了存储的 BlueStore 数据的使用。在上例中,2.3 MiB 是 BlueStore 中的数据。

    wal_total,db_total,slow_total :这些值会重新迭代上述设备值。

    db_avail :这个值代表可以从 SLOW 设备获取多少字节(如果需要)。

    使用列表
    • WALDBSLOW: 描述要放置特定文件的位置。
    • LOG :描述 BlueFS replay log ino 1
    • WALDBSLOW :描述数据实际放置的位置。该值以分配单元为单位。由于性能的原因,WAL 和 DB 具有较大的分配单元。
    • * / *:与虚拟设备 new-dbnew-wal 相关的虚拟设备,它们用于 ceph-bluestore-tool。它应该始终显示 0 B
    • REAL :显示实际使用量(以字节为单位)。
    • FILES :显示文件计数。

    MAXIMUMS :此表从使用列表中捕获每个条目的最大值。

其它资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.