当前位置:网站首页>云存储硬核技术内幕——(11) 女子会所的秘密
云存储硬核技术内幕——(11) 女子会所的秘密
2022-08-04 15:38:00 【用户8289326】
在上期,我们提到,Ceph集群使用多副本的情况下,整体读性能可达所有物理磁盘读性能的总和,但由于写入的机制为只写入主副本,然后向另外两个副本同步,因此,以三副本为例,写性能只能达到所有磁盘写性能总和的三分之一。以SATA大盘单盘,100 IOPS写性能计,6节点72大盘的总写IOPS性能只能到2400 IOPS。这是难以满足高性能数据库需求的。
而如果使用SSD盘,我们会发现,同等容量的SSD盘,其成本是机械盘的5-10倍。因此,工程师们想到,能否使用少量的SSD盘,配合低成本的SATA机械大盘,一定程度上提升Ceph集群的读写性能,特别是随机写性能呢?
让我们将镜头切换回深南大道10000号——
有一天,子虚蹦蹦跳跳地找到方老师,告诉方老师:
“我做了个社会调查——”
方老师问:
“什么样的社会调查呀?”
子虚说:
“我调查了所有的高端女子私密会所,发现一个秘密……”
原来,子虚发现两个规律:
光顾女子私密会所的顾客,如果上一次点了tony老师做头发,下一次还点tony老师做头发的可能性非常大;
如果一名顾客经常光顾女子私密会所,那么她去隔壁便利店买钢丝球和打火机的可能性非常大;
方老师笑了,告诉子虚,这叫时间局部性和空间局部性。
所谓时间局部性,指的是,如果某块数据,上一次被访问过,那么,在越近的时间内,这块数据被访问到的可能性越大;
所谓空间局部性,指的是,如果某块数据,上一次被访问过,那么,与它地址越接近的数据,下一次被访问到的可能性越大;
在计算机系统中,可以利用这些机制,用少量高价格高成本存储器搭配大量低成本低速存储器,实现较高的性能。
常见的存储器响应时间大致如下图:
可见,从2000年到2020年的20年间,RAM,缓存,CPU等电子器件的性能大致遵循摩尔定律提升,而硬盘为机械构件,其性能提升非常有限。因此,在Ceph中,引入了固态盘(SSD盘),作为RAM和HDD之间的缓冲:
这样,可以充分利用时间局部性和空间局部性原理,大大提升Ceph集群的性能。
Ceph提供的这种机制叫做——分级缓存机制。它的大致设计如下图:
如图,Ceph的Client (例如,QEMU的RBD块驱动)向Object发起读写。这一步是看不到缓存的存在的。
Object拆分为PG,并在实际节点上落盘时——此处是一个岔路口。
翻开厚厚的Ceph文档,我们发现,Ceph的缓存机制有两种工作模式:
1、写回(Write Back)。OSD会将数据写入SSD缓存中,并向Client返回写成功。此后,OSD会将SSD缓存中的数据写入HDD盘,并同步写三副本; 2、只读(Read Only)。OSD会把数据直接写入HDD盘,当数据被读取的时候暂存在缓存中。如这部分数据被改写,缓存中的数据将被标记为脏(dirty)并失效;
熟悉计算机体系结构的同学可能会发现,缓存常见的另一种工作模式——写透,在这里并没有使用。这是为什么呢?
这个问题不需要留到下回分解。
写透(Write Through)的工作模式是,控制器将缓存中的数据,真正写入物理磁盘后,才会向客户端返回成功。显然,这种工作模式会大大降低写入性能。比起写回工作模式来,写透可以避免,一旦数据并没有真正落盘,只是在缓存中,此时控制器异常或掉电,导致易失性缓存中数据丢失。
最要命的是,客户端收到的报告是,数据成功写入!
这种现象,叫做存储丢失数据,属于非常致命的产品问题,会导致产品品牌形象的崩坏。
而Ceph使用的缓存一般为SSD盘,也就是非易失性存储,因此,可以使用写回方式,大大提升写性能。
大家猜对了吗?
边栏推荐
- What is an artifact library in a DevOps platform?What's the use?
- inter-process communication
- 从-99打造Sentinel高可用集群限流中间件
- Taurus.MVC WebAPI 入门开发教程2:添加控制器输出Hello World。
- Legal education combined with VR panorama, intuitively feel and learn the spirit of the rule of law
- Semaphore 基本原理
- The electromagnetic compatibility EMC protection study notes
- Redis-哨兵模式
- What is the difference between ITSM software and a work order system?
- MySQL select加锁分析
猜你喜欢
The electromagnetic compatibility EMC protection study notes
小程序|炎炎夏日、清爽一夏、头像大换装
"Research Report on the Development of Global Unicorn Enterprises in the First Half of 2022" released - DEMO WORLD World Innovation Summit ended successfully
Jupyter常用操作总结(强烈建议收藏,持续更新实用操作)
录音文件识别
【云原生 | 从零开始学Kubernetes】kubernetes之StatefulSet详解
成功 解决 @keyup.enter=“search()“ 在el-input 组件中不生效的问题
Redis-主从复制
重构指标之如何监控代码圈复杂度
一文解答DevOps平台的制品库是什么
随机推荐
初学爬虫笔记(收集数据)
Redis-哨兵模式
RepVGG学习笔记
JVM调优-GC基本原理和调优关键分析
Redis 高可用
我说MySQL联合索引遵循最左前缀匹配原则,面试官让我回去等通知
Unity AR阴影投射透明地面 仅渲染模型实时阴影 Shader实现
《2022 年上半年全球独角兽企业发展研究报告》发布——DEMO WORLD世界创新峰会圆满落幕
ITSM软件与工单系统的区别是什么?
保证通信的机制有哪些
RTC 场景下的屏幕共享优化实践
Byte、Short、Integer、Long内部缓存类的对比与源码分析
【已解决】allure无法生成json文件和AttributeError: module ‘allure‘ has no attribute ‘severity_level‘
uni-app之renderjs
洛谷题解P1028 数的计算
弄懂#if #ifdef #if defined
学 Go,最常用的技能是什么?打日志
《电磁兼容防护EMC》学习笔记
为什么Redis默认序列化器处理之后的key会带有乱码?
Codeforces Round #811 A~F