bluestore元数据
时间: 2023-11-07 18:57:04 浏览: 54
BlueStore是Ceph分布式存储系统中的一种存储后端。它用于将数据和元数据存储在裸盘上。在BlueStore中,元数据以键值对(kv)的形式存储在RocksDB中,而数据直接存储在HDD裸盘上。为了支持元数据的读写操作,BlueStore引入了BlueFS。BlueFS负责将RocksDB中的元数据存储到SSD裸盘上,并提供了持久化元数据、内存元数据加载等功能。
相关问题
filestore 与bluestore
Ceph后端支持多种存储引擎,其中默认使用的是filestore,但是目前bluestore也可以上生产。Filestore存在的问题是需要维护一套journal并同时还需要基于系统文件系统的写放大问题,并且filestore本身没有对SSD进行优化。而bluestore的诞生是为了解决这些问题,主要做了两方面的核心工作:去掉journal,直接管理裸设备,针对SSD进行单独优化。因此,bluestore相比于filestore具有更好的性能和可靠性。
以下是bluestore的优势:
```
1. 去掉journal,直接管理裸设备,避免了journal的写放大问题,提高了性能。
2. 针对SSD进行单独优化,包括避免写放大、减少写放大、避免读放大等,提高了性能和可靠性。
3. 支持原生的数据压缩和数据校验,提高了存储效率和数据可靠性。
4. 支持在线调整存储池的参数,包括pg_num、pgp_num、size等,方便了存储池的管理。
5. 支持在线扩容和缩容,方便了存储的管理和维护。
```
offset bfn
回答: 在引用[1]中,offset和bfn是BlueFS::mount()函数中的两个变量。在这个函数中,offset和bfn被用于初始化和分配空间。具体来说,offset被用于指定分配的起始位置,而bfn则是一个文件映射表中的索引值,用于遍历文件映射表中的每个文件的extents。在每个extents中,通过alloc[q.bdev]->init_rm_free(q.offset, q.length)来初始化和分配空间。[1]
在引用[2]中,offset和bfn是BlueStore::_do_remove()函数中的两个变量。在这个函数中,offset和bfn被用于删除指定的元数据键值对。具体来说,offset被用于指定要删除的键值对的偏移量,而bfn则是一个前缀和键的组合,用于定位要删除的键值对。通过bat.Delete(combine_strings(prefix, k))来执行删除操作。[2]
在引用[3]中,并没有提到offset和bfn这两个变量。所以无法确定在这个上下文中它们的具体含义。[3]
阅读全文