乐趣区

关于阿里云开发者:ESSD技术解读企业级利器阿里云-NVMe-盘和共享存储

简介: 以后 NVMe 云盘联合了业界最先进的软硬件技术,在云存储市场,独创性同时实现了 NVMe 协定 + 共享拜访 + IO Fencing 技术。它在 ESSD 之上取得了高牢靠、高可用、高性能,同时基于 NVMe 协定实现了丰盛的企业个性,如多重挂载、IO Fencing、加密、离线扩容、原生快照、异步复制等性能。本文具体介绍了云上 SAN 和 NVMe 的倒退历程,并做出了对将来的构想

7×24 高可用是怎么炼成的?

事实世界中单点故障是常态,确保故障下业务连续性是高可用零碎的外围能力,那么在金融、保险、政务等要害利用中,如何保障业务 7*24 高可用?通常来讲,业务零碎由计算、网络、存储组成,在云上,网络多路径和存储分布式确保了稳固高可用,但要实现业务全链路高可用,还要解决计算和业务侧单点故障。以常见的数据库为例,单点故障导致业务进行对于用户难以承受,那么,当断电、宕机、硬件故障等导致实例不可服务时,如何疾速复原业务?

不同场景的解决方案有所不同,MySQL 通常搭建主从 / 主备架构实现业务高可用,主库故障时切换到备库继续对外提供服务。但实例切换后,如何保障主从库数据的一致性?依据业务对数据失落的容忍度,MySQL 通常采纳同步或异步形式进行数据复制,由此引入额定的问题:局部场景下导致数据缺失、同步数据影响零碎性能、业务扩容要新增整套设施并进行全量数据复制、主备切换工夫较长影响业务连续性等。能够看到,为了搭建高可用零碎,架构将变得复杂,且很难兼顾可用性、可靠性、扩展性、老本、性能等,那么是否有更加先进的计划,兼得鱼和熊掌?答案必须是:Yes!

图 1:数据库的高可用架构

通过共享存储,不同数据库实例间可共享同一份数据,从而通过计算实例的疾速切换取得高可用(图 1),Oracle RAC、AWS Aurora、阿里云 PolarDB 数据库就是其中的代表。这里的关键在于共享存储,传统 SAN 价格昂扬,扩缩容麻烦,机头也容易成为瓶颈,其应用门槛较高对用户并不敌对,有没有更好、更快、更省的共享存储,来解决用户的痛点呢?阿里云最近推出的 NVMe 云盘和共享个性,将充沛满足用户的诉求,接下来咱们将重点介绍。这里给大家抛出一个问题,在实例切换过后,如果原库仍在写入数据,如何保证数据正确性?卖个关子,读者能够先思考下。

图 2:主从切换场景的数据正确性问题

历史后退的车轮:云上 SAN 和 NVMe

咱们已步入“数据石油”的数字经济时代,云计算、人工智能、物联网、5G 等技术的疾速倒退,促使数据的爆炸式增长。从 IDC 2020 年报告能够看出,寰球数据规模逐年增长,2025 年将达到 175 ZB,数据将次要集中在公共云和企业数据中心。数据的快速增长,为存储的倒退提供了新的能源和要求,让咱们回顾下块存储状态是如何一步步演进的。

图 3:块存储状态演进

DAS:存储设备采纳直连形式(SCSI、SAS、FC 等协定)与主机连贯,零碎简略、易于配置管理、费用较低,因为存储资源无奈被充分利用和共享,难以做到集中统⼀的治理和保护。

SAN:通过专用网路连贯存储阵列和业务主机,解决了对立治理和数据共享等问题,并实现高性能低提早的数据拜访,不过 SAN 存储价格昂贵、运维简单、可扩展性差,进步了用户的应用门槛。

全闪 :底层存储介质的反动和老本的降落,标记着全闪存时代的到来,从此存储性能转移到软件栈,迫使软件进行大规模的改革,促成了用户态协定、软硬一体化、RDMA 等技术的高速倒退,带来了存储性能的飞越。

云盘 :云计算的高速倒退历程中,存储转移到云上,云盘具备天生的长处:灵便、弹性、易用、易扩大、高牢靠、大容量、低成本、免运维等,在数字化转型历程中成为存储松软的底座。

云上 SAN:为全方面反对存储业务,取代传统的 SAN 存储,云上 SAN 应时代而生,它继承了云盘的诸多劣势,也具备了传统 SAN 存储能力,包含共享存储、数据保护、同步 / 异步复制、极速快照等个性,必将在企业存储市场继续发光发热。

另一端,在存储协定的演进上,NVMe 正在成为新时代的宠儿。

图 4:存储协定的演进

SCSI/SATA:存储远古时代,硬盘多为低速设施,数据通过 SCSI 层和 SATA 总线传输数据,性能受限于存储慢速介质,如机械硬盘,覆盖了 SATA 单通道和 SCSI 软件层的性能劣势。

VirtIO-BLK/VirtIO-SCSI:随同着虚拟化技术和云计算的疾速倒退,VirtIO-BLK/VirtIO-SCSI 逐步成为云计算的支流存储协定,使得存储资源的应用更加弹性、麻利、平安、可扩大。

NVMe/NVMe-oF:闪存技术的倒退和遍及推动了新一代存储技术反动,当存储介质不再成为性能的拦路虎,软件栈成为了最大的瓶颈,由此催生了 NVMe/NVMe-oF、DPDK/SPDK、用户态网络等各种高性能轻量级协定,NVMe 协定族兼具高性能、高级个性和高扩展性,必将引领云计算新时代。

在可遇见的将来,云上 SAN 和 NVMe 必将成为将来的潮流,这是大势所趋。

云盘新时代之 NVMe

闪存技术的迅速倒退和遍及,将性能瓶颈转移到软件侧,对于存储性能和性能的更多需要,将 NVMe 推上了历史舞台。NVMe 专门针对高性能设备设计了数据拜访协定,相比传统的 SCSI 协定,更加简捷轻量,配合多队列技术,能大幅度晋升存储性能。同时 NVMe 还提供了丰盛的存储个性,NVMe 规范自 2011 年诞生以来,通过不断完善协定,标准了多 Namespace、Multi-Path、全链路数据保护 T10-DIF、Persistent Revervation 权限控制协议、原子写等泛滥高级性能,其定义的存储新个性将继续帮忙用户发明价值。

图 5:阿里云 NVMe 云盘

NVMe 的高性能和丰盛个性,为企业存储提供了松软的根底,加上协定自身具备的扩展性和成长性,成为演进 NVMe 云盘的外围能源。NVMe 云盘以 ESSD 为根底,它继承了 ESSD 的高牢靠、高可用、高性能、原子写等能力,以及 ESSD 原生快照数据保护、跨域容灾、加密、秒级性能变配等企业个性,ESSD 和 NVMe 个性的交融,能无效的满足企业级利用需要,使大部分基于 NVMe 和 SCSI 的业务无缝上云。本文讲述的共享存储技术就是基于 NVMe Persistent Reservation 规范实现,作为 NVMe 云盘的附加性能之一,其多重挂载和 IO Fencing 技术,能够帮忙用户大幅升高存储老本,并无效晋升业务灵活性和数据可靠性,在分布式业务场景具备宽泛的利用,特地对于 Oracle RAC、SAP Hana 等高可用数据库系统具备重要价值。

企业存储利器:共享存储

后面讲到,共享存储能够无效地解决数据库高可用问题,其次要依赖的能力包含多重挂载和 IO Fencing,以数据库为例,咱们将讲述它们是如何发挥作用的。

业务高可用要害 — 多重挂载

多重挂载容许云盘被同时挂载到多台 ECS 实例上(以后最大反对 16),所有实例均可读写访问该云盘(图 6)。通过多重挂载,多个节点间共享同一份数据,能无效地升高存储老本。当单节点产生故障时,业务能够迅速切换到衰弱节点,该过程无需进行数据复制,为故障疾速复原提供了原子能力,如 Oracle RAC、SAP HANA 等高可用数据库均依赖该个性实现。须要注意的是,共享存储提供了数据层的一致性和恢复能力,若要达到最终业务一致性,业务可能须要进行额定解决,如数据库的日志 replay 等。

图 6:多实例挂载

通常,单机文件系统不适宜作为多重挂载的文件系统,为了减速文件拜访,ext4 等文件系统会对数据和元数据进行缓存,对于文件的批改信息无奈及时同步到其余节点,从而导致多节点间数据的不统一。元数据的不同步,也会导致节点间对硬盘空间拜访的抵触,从而引入数据错。所以,多重挂载通常要配合集群文件系统应用,常见的有 OCFS2、GFS2、GPFS、Veritas CFS、Oracle ACFS 等,阿里云 DBFS、PolarFS 也具备该能力。

有了多重挂载,是否就能够居安思危了?多重挂载并非万能,它有本身无奈解决的盲点:权限治理。通常基于多重挂载的利用须要依赖集群管理系统来管理权限,如 Linux Pacemaker 等,但在某些场景下,权限治理会生效从而导致重大问题。回顾下文章最开始抛出的问题,在高可用架构下,主实例产生异样后会切换到备实例,如果主实例处于假死状态(如网络分区、硬件故障等场景),它会谬误地认为本人领有写入权限,从而和备实例一起写脏数据,如何躲避该危险? 此时该轮到 IO Fencing 出场了。

数据正确性保障 — IO Fencing

解决脏数据写入的可选计划之一是:终止原实例的在途申请,并回绝新申请持续下发,确保旧数据不再写入后切换实例。基于该思路,传统的解决方案是 STONITH(shoot the other node in the head),即通过近程重启该故障机器来避免旧数据落盘。不过该计划存在两个问题,首先,重启流程过长,业务切换较慢,通常会导致几十秒到分钟级的业务进行。更重大的是,因为云上 IO 门路较长,波及组件较多,计算实例的组件故障(如硬件、网络故障等)都有几率导致 IO 在短时间内无奈复原,所以无奈 100% 保证数据的正确性。

为了从根本性解决该问题,NVMe 标准了 Persistent Reservation(PR)能力,它定义了 NVMe 云盘的权限配置规定,能够灵便地批改云盘和挂载节点权限。具体到该场景,在主库产生故障后,从库首先发送 PR 命令禁止主库的写入权限,回绝主库的所有在途申请,此时从库能够无风险的进行数据更新(图 7)。IO Fencing 通常能够在毫秒级别帮助利用实现故障切换,大幅缩短了故障复原工夫,业务的平滑迁徙使下层利用根本无感知,相比于 STONITH 有了质的飞越。接下来咱们进一步介绍 IO Fencing 的权限治理技术。

图 7:IO Fencing 在故障切换下的利用

权限治理的瑞士军刀 — Persistent Reservation

NVMe Persistent Reservation (PR) 协定定义了云盘和客户端权限,搭配多重挂载能力,能够高效、平安、安稳地进行业务切换。在 PR 协定中,挂载节点有 3 种身份,别离是 Holder(所有者)、Registerant(注册者)、Non-Registrant(访客),从名字能够看出,所有者领有云盘全副权限,注册者领有局部权限,访客只领有读权限。同时,云盘领有 6 种共享模式,可实现独占、一写多读、多写能力,通过配置共享模式和角色身份,能够灵便地治理各节点权限(表 1),从而满足丰盛的业务场景需要。NVMe PR 继承了 SCSI PR 的全副能力,所有基于 SCSI PR 的利用能够通过大量的改变即可运行在 NVMe 共享云盘之上。

表 1:NVMe Persistent Reservation 权限表

多重挂载配合 IO Fencing 能力,能够完满搭建高可用零碎,除此之外,NVMe 共享盘还能提供一写多读能力,并广泛应用于读写拆散的数据库、机器学习模型训练、流式解决等场景。另外,镜像共享、心跳探活、仲裁选主、锁机制等技术能够通过共享云盘轻松实现。

图 8:NVMe 共享盘一写多读利用场景

NVMe 云盘技术揭秘

NVMe 云盘基于计算存储拆散架构实现,依靠于神龙硬件平台实现了高效的 NVMe 虚拟化和极速 IO 门路,以盘古 2.0 存储为底座实现了高牢靠、高可用、高性能,计算存储通过用户态网络协议和 RDMA 互连,NVMe 云盘是全栈高性能和高可用技术的结晶(图 9)。

图 9:NVMe 共享盘技术架构

NVMe 硬件虚拟化 :以神龙 MOC 平台打造了 NVMe 硬件虚拟化技术,通过 Send Queue(SQ) 和 Completion Queue(CQ) 进行数据流和控制流的高效交互,简洁的 NVMe 协定加上高效的设计,配合硬件卸载技术,使 NVMe 虚拟化提早升高 30%。

极速 IO 通道 :基于神龙 MoC 软硬一体化技术实现了极速 IO 通道,无效缩短了 IO 通路,进而取得极致的性能。

用户态协定 :NVMe 应用了全新一代 Solar-RDMA 用户态网络通信协定,联合 Leap-CC 自研拥塞管制实现了数据牢靠传输并升高了网络长尾提早,基于 25G 网络的 JamboFrame 实现了高效的大包传输,通过数据面和管制面全面拆散精简了网络软件栈并晋升了性能,网络多路径技术撑持了链路故障毫秒级复原。

管控高可用 :以盘古 2.0 分布式高可用存储实现了 NVMe 控制中心,NVMe 管制命令不再通过管控节点,从而取得靠近 IO 的可靠性和可用性,可帮助用户实现毫秒级别的业务切换;基于 NVMe 控制中心实现了多客户端和多服务器间的准确流控,在亚秒级内实现对于 IO 的准确分布式流控;在分布式系统上实现了对于多节点的 IO Fencing 一致性,通过两阶段更新使云盘分区之间权限状态保持一致,无效解决了分区权限的脑裂问题。

大 IO 原子性 :基于分布式系统从计算、网络、存储端到端实现了大 IO 的原子写能力,在 IO 不逾越相邻 128K 边界的条件下,确保同一数据不会局部落盘,这对于数据库等依赖原子写的利用场景具备重要作用,它能无效优化数据库 double write 流程,从而大幅晋升数据库的写入性能。

以后现状和将来瞻望

能够看出,以后 NVMe 云盘联合了业界最先进的软硬件技术,在云存储市场,独创性同时实现了 NVMe 协定 + 共享拜访 + IO Fencing 技术。它在 ESSD 之上取得了高牢靠、高可用、高性能,同时基于 NVMe 协定实现了丰盛的企业个性,如多重挂载、IO Fencing、加密、离线扩容、原生快照、异步复制等性能。

图 10:寰球首次 NVMe + 共享拜访 + IO Fencing 技术交融

目前 NVMe 云盘和 NVMe 共享盘已在邀测中,并失去了 Oracle RAC、SAP HANA 和外部数据库团队的初步认证,接下来它将进一步扩充公测范畴并商业化。在可预感的将来,咱们会逐渐围绕 NVMe 云盘继续演进,以更好地反对在线扩容、全链路数据保护 T10-DIF、云盘多 namespace 等高级个性,从而进化出全面的云上 SAN 能力,敬请期待!

<span class=”lake-fontsize-12″>Vendor 1</span> <span class=”lake-fontsize-12″>Vendor 2</span> <span class=”lake-fontsize-12″>Vendor 3</span> <span class=”lake-fontsize-12″> 阿里云 </span>
<span> 云盘协定 </span> SCSI SCSI NVMe NVMe
<span> 多重挂载 </span>
<span>IO Fencing</span> ×
数据持久性 N/A 9 个 9 5 个 9 9 个 9
IO 提早 > 300 us 100~200 us 100~200 us < 100 us
云盘最大 IOPS 160K 128K 256K 1000K
云盘最大吞吐 2GB/s 1GB/s 4GB/s 4GB/s

表 2:支流云计算厂商的块存储概览

原创作品:阿里云存储 阿纶

> 版权申明: 本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。

退出移动版