热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

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

简介: 以后 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 能力,敬请期待!

作者:阿里云存储 阿纶

原文链接
本文为阿里云原创内容,未经容许不得转载。


推荐阅读
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 本文讨论了在使用Git进行版本控制时,如何提供类似CVS中自动增加版本号的功能。作者介绍了Git中的其他版本表示方式,如git describe命令,并提供了使用这些表示方式来确定文件更新情况的示例。此外,文章还介绍了启用$Id:$功能的方法,并讨论了一些开发者在使用Git时的需求和使用场景。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • 程序员如何选择机械键盘轴体?红轴和茶轴对比
    本文介绍了程序员如何选择机械键盘轴体,特别是红轴和茶轴的对比。同时还介绍了U盘安装Linux镜像的步骤,以及在Linux系统中安装软件的命令行操作。此外,还介绍了nodejs和npm的安装方法,以及在VSCode中安装和配置常用插件的方法。最后,还介绍了如何在GitHub上配置SSH密钥和git的基本配置。 ... [详细]
  • Hadoop2.6.0 + 云centos +伪分布式只谈部署
    3.0.3玩不好,现将2.6.0tar.gz上传到usr,chmod-Rhadoop:hadophadoop-2.6.0,rm掉3.0.32.在etcp ... [详细]
author-avatar
六零后女人_731
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有