前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云存储硬核技术内幕——(10)

云存储硬核技术内幕——(10)

作者头像
用户8289326
发布2022-08-04 15:27:48
7440
发布2022-08-04 15:27:48
举报
文章被收录于专栏:帅云霓的技术小屋

在前几期,我们提到了,在云计算时代,由于对存储IO及吞吐的要求迅速增加,传统SAN存储难以满足需求,基于标准x86节点的分布式存储成为了主流

开源分布式存储的代表是CephCeph本质上是对象存储(后面会讲到),以image的形式提供RBD块在KVM的QEMU中安装RBD块驱动,将RBD块直接挂载给虚拟机。RBD驱动会将块拆分为2MB/1MB大小的Object,每个Object拆分为几百到上千个PG,每个PG映射到N个物理磁盘上

好了,这里的N就是今天讨论的问题——Ceph的高可用性设计。

我们知道,磁盘本身是一个损耗品,也是有固定使用寿命的,甚至可能被意外拔出。 服务器:硬盘怎么突然不在线了?

出于这点考虑,工程师们在服务器上安装了两块硬盘,通过RAID卡,让来自系统的IO被复制到两块硬盘,令两块硬盘存储的内容完全一致。当一块硬盘损坏或被意外拔出时,另一块硬盘还能够读出完整的数据。这种冗余技术叫做RAID-0。

但是,RAID-0有一个致命缺陷:在用新的硬盘替换掉损坏的硬盘的时候,需要将好的那块硬盘内容完全复制一份到新的硬盘,这个过程叫重构,将持续几个小时。在重构过程中,整个系统的IO读写性能会急剧下降(磁盘忙于读取内容向新硬盘复制)。

因此,工程师们发明了RAID-5和RAID-6。RAID-5和RAID-6的实现方式是,对一整块数据,切分成M块,根据这些数据计算出N块冗余校验数据。对于RAID-5,N=1,对于RAID-6,N=2。这样一来,任意一块磁盘损坏,由于有多块磁盘分担重构的读操作(想一想,为什么),对整个系统IO的影响相对有限。

然而,我们也知道,RAID-5和RAID-6的写操作对IO能力的损耗,由于写惩罚的存在,会成倍消耗磁盘的IO能力。因此,在分布式存储中,通常使用多副本机制,最常见的是三副本:

如图,PG落到主OSD后,主OSD所在的Node会将内容复制到另外两个副本对应的OSD节点,并最终落盘。这样,对于大量并发IO的写场景,总体的写性能为:单盘IO能力 * OSD数量 / 3,而总体的读性能为单盘IO能力 * OSD数量。

假设Ceph集群由6台服务器构成,其中每台有12块SATA机械盘,单盘IO能力为150 IOPS,那么,我们可以计算出,整个集群有72个OSD,总体IO能力为

150 * 72 / 3 = 3600 IOPS。

显然,这个性能是很难满足一般应用的需求的。

我们想到,使用SSD固态盘可以大规模提升IO能力。以常见的NVMe盘为例:

这个家伙的随机读可达150K IOPS,随机写可达80K IOPS。

如果6台服务器上,每台安装4块这样的NVMe盘,总的读IO能力可达3.6M IOPS,写能力可达640K IOPS。以70%读,30%写计算,IO能力约为1.5M IOPS。

这是一个很不错的性能。

但是,我们也注意到,NVMe或SATA SSD的价格不菲。

有没有什么办法,用少量昂贵的固态盘搭配大容量机械盘,取得较好的性能呢?

请看下期分解。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 帅云霓的技术小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档