解析Ceph: RBDCache 背后的世界】的更多相关文章

转自:https://www.ustack.com/blog/ceph-internal-rbdcache/ RBDCache 是Ceph的块存储接口实现库 Librbd 的用来在客户端侧缓存数据的目的,它主要提供了读数据缓存,写数据汇聚写回的目的,用来提高顺序读写的性能.需要说明的是,Ceph 既支持以内核模块的方式来实现对 Linux 动态增加块设备,也支持以 QEMU Block Driver 的形式给使用 QEMU 虚拟机增加虚拟块设备,而且两者使用不同的库,前者是内核模块的形式,后者是…
Ceph作为一个高可用和强一致性的软件定义存储实现,去使用它非常重要的就是了解其内部的IO路径和存储实现.这篇文章主要介绍在IO路径中最底层的ObjectStore的实现之一FileStore. ObjectStore ObjectStore是Ceph OSD中最重要的概念之一,它封装了所有对底层存储的IO操作.从上图中可以看到所有IO请求在Clieng端发出,在Message层统一解析后会被OSD层分发到各个PG,每个PG都拥有一个队列,一个线程池会对每个队列进行处理. 当一个在PG队列里的I…
[源码解析] Flink UDAF 背后做了什么 目录 [源码解析] Flink UDAF 背后做了什么 0x00 摘要 0x01 概念 1.1 概念 1.2 疑问 1.3 UDAF示例代码 0x02 批处理 2.1 代码 2.2 计划生成 2.3 执行 2.4 状态管理 2.5 总结 0x03 流处理 3.1 示例代码 3.2 计划生成 3.3 执行 & 状态管理 3.3.1 接受到一个新输入 3.3.2 windowState & UDAF执行 3.3.3 State & 结果…
经常有开发者在邮件列表中会问到Ceph Snapshot的实现方式,受限于目前有限的实现文档和复杂的代码结构和代码量,弄清楚Ceph Snapshot并不是一件容易的事.正好最近在重构Ceph存储引擎层的DBObjectMap,涉及到处理Snapshot间clone的问题,重新梳理了一次在Ceph IO路径中占了非常大比重的snapshot相关代码流程,在这里并不会重点展现里面的代码或者数据结构,而是从高层设计角度展现Snapshot的实现. 在阅读下文前务必先了解Ceph的基本情况和使用场景.…
源码 很简单的c语言代码,作用是交换两个数: #include <stdio.h> void swap(int * a, int * b) { *a = *a + *b - (*b = *a); return; } 汇编代码解析 在gcc编译环境下执行, gcc -S  -o test.s test.c 命令生成相关汇编代码. .file "test.c" .text .globl _swap .def _swap; .scl 2; .type 32; .endef _sw…
  很多的用户在提到 Ceph 性能的时候都会提到“写放大”这点,实际上就是 FileJournal 在起作用.只要使用默认的 FileStore,所有数据包括 metadata 都会在 FileJournal 上预写一份.那么本文就会介绍 FileJournal 在 FileStore 存储引擎上提供的作用. 作用 FileJournal 就是数据库中常见的 WAL(Write Ahead Log) 实现,主要提供了事务的一致性和原子性.Ceph 数据访问所提供的写操作在落到 ObjectSt…
转自:https://www.ustack.com/blog/ceph-internal-scrub/ Ceph 的主要一大特点是强一致性,这里主要指端到端的一致性.众所周知,传统存储路径上从应用层到内核的文件系统.通用块层.SCSI层到最后的HBA和磁盘控制器,每层都有发生错误的可能性,因此传统的端到端解决方案会以数据块校验为主来解决(这方面的讨论可以参考SCSI中端到端校验能解决数据完整性问题吗).而在 Ceph 方面,更是加入了 Ceph 自己的客户端和网络.存储逻辑.数据迁移,势必导致更…
转自:https://www.ustack.com/blog/ceph-internal-recovery-and-consistency/ 作为一个面向大规模的分布式存储系统,故障处理是作为一个常态异常处理.Ceph 为了细化和保证故障发生和故障恢复的集群高可用性和一致性,在设计上将故障分为两类: 临时性故障: 主机升级维护,重启,掉电等等在一定时间内可以重新上线 OSD 的故障 永久性故障: 作为强一致存储系统,状态只跟存储在持久设备的数据有关,因此这类故障主要就是盘损坏或者主机损坏并无法及…
摘要: Redis是一个使用范围很广的NOSQL数据库,阿里云Redis同时在公有云和阿里集团内部进行服务,本文介绍了阿里云Redis双11的一些业务场景:微淘社区之亿级关系链存储.天猫直播之评论商品游标分页和菜鸟单据履行中心之订单排序. 在一片欢呼之中,2018年的双十一完美收官,各项数据不出意外的刷出了新的记录,亮眼的数据背后是阿里过硬的技术支撑.其中阿里云Redis不仅保障了阿里集团内部业务双十一的流量洪峰平稳度过,也让使用阿里云Redis的各个客户度过了一个安稳省心的双十一. 目前阿里云…
本系列文章会总结 QEMU/KVM 和 Ceph 之间的整合: (1)QEMU-KVM 和 Ceph RBD 的 缓存机制总结 (2)QEMU 的 RBD 块驱动(block driver) (3)存储卷挂接和设备名称 QEMU-KVM 的缓存机制的概念很多,Linux/KVM I/O 软件栈的层次也很多,网上介绍其缓存机制的文章很多.边学习边总结.本文结合 Ceph 在 QEMU/KVM 虚机中的使用,总结一下两者结合时缓存的各种选项和原理. 1. QEMU/KVM 缓存机制 先以客户机(Gu…