当前位置:网站首页>云存储硬核技术内幕——(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盘,也就是非易失性存储,因此,可以使用写回方式,大大提升写性能。
大家猜对了吗?
边栏推荐
- Online Excel based on Next.js
- 面渣逆袭:MySQL六十六问,两万字+五十图详解
- Legal education combined with VR panorama, intuitively feel and learn the spirit of the rule of law
- Crawler Xiaobai Notes (yesterday's supplement to pay attention to parsing data)
- 游戏网络 UDP+FEC+KCP
- Go Go 简单的很,标准库之 fmt 包的一键入门
- ##ansible自动化运维架构与简介
- 洛谷题解P1028 数的计算
- PHP 图片转PDF
- 【Es6中的promise】
猜你喜欢
JVM调优-GC基本原理和调优关键分析
项目里的各种配置,你都了解吗?
Request method ‘POST‘ not supported。 Failed to load resource: net::ERR_FAILED
Xi'an Zongheng Information × JNPF: Adapt to the characteristics of Chinese enterprises, fully integrate the cost management and control system
RSA306B,500,600系列API接口代码
AAAI‘22 推荐系统论文梳理
2022 Hangzhou Electric Multi-School 4
JVM Tuning-GC Fundamentals and Tuning Key Analysis
你以为在做的是微服务?不!你做的只是分布式单体!
IP第十八天笔记
随机推荐
Semaphore 基本原理
GPS卫星同步时钟,NTP网络同步时钟,北斗时钟服务器(京准)
软件性能测试包括哪些内容?国内权威软件检测机构排名
【北亚数据恢复】IBM System Storage存储lvm信息丢失,卷访问不了的数据恢复方案
MySQL select加锁分析
Xi'an Zongheng Information × JNPF: Adapt to the characteristics of Chinese enterprises, fully integrate the cost management and control system
##ansible自动化运维架构与简介
remote: Check Access Error, please check your access right or username and password!fatal: Authenti
RSA306B,500,600系列API接口代码
postman “header“:{“retCode“:“999999“
为什么Redis默认序列化器处理之后的key会带有乱码?
分支控制if-else
#夏日挑战赛# HarmonyOS 实现一个滑块验证
Redis-主从复制
邮差"头":{“retCode”:“999999”
AIX7.1安装Oracle11g补丁33829709(PSU+OJVM)
Roslyn 通过 nuget 统一管理信息
A detailed explanation of what is software deployment
长期更新的一些 pytorch 知识点总结
Why, when you added a unique index or create duplicate data?