0%

  • RBD 是 Ceph 分布式存储系统中提供的块存储服务
  • 该篇主要针对 RBD 中的整体架构以及 IO 流程进行介绍
  • 针对 librbd 中提供的接口进行简单介绍,后续将在此基础上进行实战
    阅读全文 »

NVMe 的问世,把存储硬件的性能拉到了 “微秒 + 百万 IOPS” 的时代。传统的内核 IO 栈和同步编程模式,反而成了新的瓶颈,无法充分释放硬件潜力。这迫使软件必须进行一次深刻的变革:从 同步 → 异步,从 内核 → 用户态,从 粗粒度锁 → 精细化无锁并发,才能真正发挥出 NVMe 的极限性能。

在 Ceph 的设想中,未来的存储引擎 SeaStore 正是为了承担这一使命:

  • 同步到异步:完全基于 Seastar 框架,采用 Future/Promise 异步编程模型,杜绝阻塞。
  • 内核到用户态:借助 Seastar 的用户态网络dpdk与 io_uring 用户态 IO 接口,最大程度减少内核切换开销。
  • 绑核与分片:每个 CPU shard 独立运行,线程与数据强绑定,端到端的数据路径天然无锁。
  • 无锁化:通过分片隔离与消息传递机制,避免传统锁竞争,让并发更细粒度、更高效。

这样一来,SeaStore 不仅是 Ceph 的“下一代引擎”,更是面向 NVMe 时代的软件范式转型的具体落地。

阅读全文 »

Crimson 是 Crimson OSD 的代码名称,它是下一代用于多核心可扩展性的 OSD 。它通过快速网络和存储设备提高性能,采用包括 DPDK 和 SPDK 的顶级技术。BlueStore 继续支持 HDD 和 SSD。Crimson 旨在与早期版本的 OSD 守护进程与类 Ceph OSD 兼容。

Crimson 基于 SeaStar C++ 框架构建,是核心 Ceph 对象存储守护进程 OSD 组件的新实现,并替换了 Ceph OSD 。Crimson OSD 最小化延迟并增加 CPU 处理器用量。它使用高性能异步 IO 和新的线程架构,旨在最小化上下文切换和用于跨通信的操作间的线程通信。

以下分析基于 v19.2.1 进行分析。

阅读全文 »

  • 1996 年发表的 LSM Tree. 原文链接见参考链接【1】
  • 作为 KV 存储中应用最为广泛的存储引擎(数据结构),近年来提出了大量新的优化方案。
  • 此篇为考古文,了解 LSM 设计之初的一些想法以及 LSM 底层原理。
  • 该篇论文只是数据结构和思想的提出,和实际的实现有一定出入。后续结合 Google BigTable 2006 继续学习。
阅读全文 »

  raft是工程上使用较为广泛的强一致性、去中心化、高可用的分布式协议。在这里强调了是在工程上,因为在学术理论界,最耀眼的还是大名鼎鼎的Paxos。但Paxos是:少数真正理解的人觉得简单,尚未理解的人觉得很难,大多数人都是一知半解。本人也花了很多时间、看了很多材料也没有真正理解。直到看到raft的论文,两位研究者也提到,他们也花了很长的时间来理解Paxos,他们也觉得很难理解,于是研究出了raft算法。

   raft是一个共识算法(consensus algorithm),所谓共识,就是多个节点对某个事情达成一致的看法,即使是在部分节点故障、网络延时、网络分割的情况下。这些年最为火热的加密货币(比特币、区块链)就需要共识算法,而在分布式系统中,共识算法更多用于提高系统的容错性,比如分布式存储中的复制集(replication),在带着问题学习分布式系统之中心化复制集一文中介绍了中心化复制集的相关知识。raft协议就是一种leader-based的共识算法,与之相应的是leaderless的共识算法。

  本文基于论文In Search of an Understandable Consensus Algorithm对raft协议进行分析,当然,还是建议读者直接看论文。

阅读全文 »

红黑树模拟实现map和set

阅读全文 »

用线性表加哈希表实现LRU

阅读全文 »