
存储元数据和小数据
,
而
SSD
更适合存储 大块的数
据对象
.
充 分 发 挥
PMEM
和
SSD
存 储 介 质 的 优 势
特性
,
设计高性能的后端存储
,
将为解决传统存储的
不足带来了新的机遇
.
本文提出了一种基于
PMEM
和
SSD
的分布式
后端存 储
MixStore
,
通过针对
PMEM
和
SSD
特性
的组合优化设计
,
构建性能更优的本地存储系统
,
解
决了
Ce
p
h
现 有 后 端 存 储
BlueStore
的 写 放 大 以 及
com
p
action
等问题
.
1
相关工作
Ce
p
h
现 有 的
BlueStore
被 设 计 为 一 个 面 向
SSD
和
HDD
(
hard
disk
drive
)
的 存 储 引 擎
,
致 力 于
提供快速的元 数 据 操 作
、
避 免 对 象
(
Ob
j
ect
)
写 入 时
的一 致 性 开 销
,
同 时 解 决 日 志 双 写 问 题
.BlueStore
通过将元数据 保 存 到
RocksDB
来 实 现 快 速 的 元 数
据操作
.
通过
S
p
ace
Allocator
进行磁盘空间管理
,
将
Ob
j
ect
直接写入块设备
,
去除对文件系统的依赖
.
同
时
,
BlueStore
实现了写时 复制机制
(
co
py
-
on
-
write
,
CoW
)
方式的
Ob
j
ect
更 新
,
从 而 避 免 在 日 志 中 包 含
完整 的
Ob
j
ect
数 据
,
解 决 双 写 问 题
.
但 是 基 于
RocksDB
管理元数据存在写放 大问题
,
RocksDB
的
com
p
action
操作也会导致性能抖动
,
影响系统 吞吐
率
.
另 一 方 面
,
在 数 据 规 模 较 大 以 及
EC
(
erasure
code
)
等应用场 景 中
,
基 于
RocksDB
的 元 数 据 管 理
仍然难以满足 性 能 要 求
.
即 使 更 换 持 久 性 内 存 等 更
高性能的硬件
,
所获得的提升也有限
.
以
LevelDB
[
6
]
和
RocksDB
[
7
]
为 代 表 的
LSM
-
Tree
存储引擎凭 借 其 优 异 的 写 性 能 成 为 众 多 分 布
式 组 件 的 存 储 基 石
.
在 大 型 生 产 环 境 中
,
例 如
Bi
g
Table
[
8
]
,
Cassandra
[
9
]
,
HBase
[
10
]
等 广 泛 部 署 了
各种基于
LSM
-
Tree
的本地存储
.LSM
-
Tree
把小的
随机写 通 过 合 并 操 作 变 成 连 续 的 顺 序 写
,
因 此 对
HDD
硬盘的写入性 能 有 很 好 的 优 化
.
相 比
HDD
来
说
,
SSD
的顺 序 写 入 和 随 机 写 入 性 能 差 别 较 小
,
所
以
LSM
-
Tree
对
SSD
的 写 入 性 能 提 升 有 限
.
为 此
,
WiscKe
y
[
11
]
提 出 一 种 基 于
SSD
优 化 的 键 值
(
ke
y
-
value
,
KV
)
存储
,
核心思想是 把
ke
y
和
value
分离
,
只有
ke
y
被 保 存 在
LSM
-
Tree
中
,
而
value
单 独 存
储在日志中
.
这样就显著减 小 了
LSM
-
Tree
的大小
,
使得查找期间数据读取量减少
,
并减 轻了索引树合
并时不必要 的 数 据 移 动 而 引 起 的 写 放 大
.WiscKe
y
保留了
LSM
-
Tree
的优势
,
减少了写放大
,
但数据访
问时需要进 行 多 次
MAP
映 射
,
且 依 然 存 在
LSM
-
Tree
固 有 的
com
p
action
过 程
.SLM
-
DB
[
12
]
基 于
PMEM
和磁盘对
LSM
-
Tree
进行改进
,
将磁盘上 的
数据从多级 树 减 少 到
1
级
,
在
PMEM
上 构 建
B
树
加速对磁盘数据的访问
,
具 有低 写入放 大和 近乎最
优的读 取 放 大 特 性
.
但 在 磁 盘 上 数 据 依 然 需 要 做
com
p
action
操作
,
同 时 因 为 数 据 存 放 在 磁 盘
,
小 数
据 的 访 问 性 能 较 差
.NoveLSM
[
13
]
是 一 款 基 于
PMEM
的
LSM
-
Tree
存储结构的
KV
系统
,
旨在利
用
PMEM
为应用提供 高吞吐
、
低延迟 的
KV
存储
,
在
WAL
日 志 满 的 时 候
,
或 在
com
p
action
受 阻 时
,
引入
PMEM
进 行 加 速
,
是 一 种 改 良 的
LSM
-
Tree
,
但没有完全解决写放大和
com
p
action
的问题
.
针 对
PMEM
,
NOVA
[
14
]
把
DRAM
和
PMEM
相结 合
,
索 引 存 放 在
DRAM
中
,
日 志 放 在
PMEM
中
,
每个
inode
都有自己的日志
,
日志通过 链 表进行
组织
,
这样的 设 计 充 分 发 挥 了
PMEM
的 字 节 寻 址
特性
,
但因为单位存 储 成 本 较 高 不 适 合 作 为 大 容 量
后端存储
.Zi
gg
urat
[
15
]
提供 了一个分 层文件系统
,
将
PMEM
和慢速磁盘结合在一起
,
通过在线预测应用
的访问模型
,
把同步的
、
小的数据 写入
PMEM
,
把异
步的
、
大的数据写入磁盘
,
这种分层放置的策略对有
多样性的访问模型有效
,
但对于 单 一数据 类型的 应
用将不 能 充 分 发 挥
PMEM
和 磁 盘 的 各 自 的 特 性
.
NV
-
Booster
[
16
]
提出了一种基于
PMEM
的文件系统
来加速存储 节 点 的 对 象 访 问
,
通 过
PMEM
中 的 高
效命名空间管理
,
实现了快速 的 对象搜索 以及对象
ID
和磁盘位 置 之间的映 射
,
其优化是 针 对
Ce
p
h
的
FileStore
,
未解决
BlueStore
所面临的问题
.
此外
,
以
上这些工作都提供基于内核态的本地文件系统
,
由
于系统调用
、
内存拷贝和中断而导致较大的性能开
销
,
并不 适 合 作 为 分 布 式 存 储 的 后 端
.Octo
p
us
[
17
]
提 出 了 一 种 基 于
PMEM
和
RDMA
(
remote
direct
memor
y
access
)
的分布 式 持 久 存 储 文 件 系 统
,
利 用
了
RDMA
可以直接读 写
PMEM
的特性
,
将文件 数
据设置为全局可 见
,
直接执 行 远程读写
,
提高 性 能
;
而文件元数据则设置为私有
,
对应 的 操作由服务端
来执行
,
从而保证安全性和 系统数据一 致性
.
但该系
统
缺少对大容量
SSD
的集成
,
不适合作为 分布式 存
储的后端
.
KVell
[
18
]
是 基 于
NVMe
SSD
设 计 的 高 效
KV
存储
,
核 心 设 计 思 想 是 简 化
CPU
的 使 用
,
数 据 在
SSD
上不排序
,
每个分区的索引在内 存中是有序 的
.
这种设计在每次启动时需要进行索引的重构
,
无法
804
计算机研究与发展
2021
,
58
(
2
)
相关文档
评论