12.8. Ceph BlueStore BlueFS
BlueStore 块数据库将元数据作为键值对存储在 RocksDB 数据库中。块数据库驻留在存储设备上的一个小型 BlueFS 分区。BlueFS 是一个最小的文件系统,旨在保存 RocksDB 文件。
BlueFS 文件
以下是 RocksDB 生成的三种类型的文件:
-
控制文件,如
CURRENT
、IDENTITY
和MANIFEST-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 设备中。
12.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 监控节点的根级别访问权限.
流程
登录到 Cephadm shell:
示例
[root@host01 ~]# cephadm shell
-
您可以通过三种不同的方式查看
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
12.8.2. 查看 Ceph OSD 的 Ceph BlueFS 统计信息
使用 bluefs stats
命令查看并置和非并置 Ceph OSD 的与 BluesFS 相关的信息。
先决条件
- 一个正在运行的 Red Hat Ceph Storage 集群。
- 对象存储配置为 BlueStore。
- 对 OSD 节点的根级别访问权限。
流程
登录到 Cephadm shell:
示例
[root@host01 ~]# cephadm shell
查看 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:
这指的是主块设备,即block
或slow
。设备大小
:它表示设备的实际大小。使用
:它表示总使用量。它不限制为 BlueFS。注意DB 和 WAL 设备仅由 BlueFS 使用。对于主设备,也包括来自存储的 BlueStore 数据的使用。在上例中,
2.3 MiB
是 BlueStore 中的数据。wal_total
,db_total
,slow_total
:这些值重新迭代上述设备值。db_avail
:此值表示可以根据需要从 SLOW 设备获取多少字节。使用列表
-
WAL
、DB
、SLOW
: 描述要放置特定文件的行。 -
行
LOG
: 描述 BlueFS replaylogo 1
。 -
WAL
,DB
,SLOW
: 描述数据实际放置的位置。值以分配单元为单位。由于性能的原因,WAL 和 DB 具有较大的分配单元。 -
列
* / *
:与虚拟设备new-db
和new-wal
相关的虚拟设备,它们用于ceph-bluestore-tool
。它应该始终显示0 B
。 -
列
REAL
:显示实际使用量(以字节为单位)。 -
列
FILE
:显示文件计数。
-
MAXIMUMS
:此表从使用列表中捕获每个条目的最大值。
其它资源
- 有关 BlueFS 文件的更多信息,请参阅 Ceph BlueStore BlueFS。
- 有关 BlueStore 设备的更多信息,请参阅 Ceph BlueStore 设备。