针对X-SSD体系结构的Villars器件的参考设计

描述

  接口背景 数据库复制是在事务(transaction)的更改提交到本地存储之前将其复制到辅助站点来执行。如果主数据库站点宕机,辅助站点可作为热备份。事务日志记录和日志传输是在数据管理系统中提供可恢复性和高可用性的标准技术。它们需要在每个事务中更新一个本地日志文件(写入存储)和一个远程站点(通过网络交换数据),这两者都是相对昂贵的操作。现代数据库已经利用了诸如持久性内存(PM)和支持RDMA的网络等技术来尽可能快地执行这些更新。     图1描述了一个典型的系统,使用PM和RDMA执行日志写入和交付。数据库系统负责协调几个不同的步骤,有时是针对本地PM,有时是通过启用RDMA的NIC的远程PM或内存,最后是快速SSD设备。例如,图1的流程为:(1)该数据库会将日志数据写入到PM中。(2)通过RDMA将数据传输到远端PM。(3)使用第二个RDMA操作来将日志所描述的更改转换到远端主机的内存中。(4a/b)两个主机都需要在PM上腾出空间,通过将其部分内容复制到SSD中来实现。 接口 图1 使用PM和RDMA执行日志记录和复制路径 问题 现有技术的组合存在几个缺点:缺乏可移植性、数据路径的复杂性和互操作性。具体包括: • RDMA和PM的相互作用很复杂且难以理解。例如,使用RDMA更新远端机器上的PM支持的地址可能会使更新可见,但不能保证该更新是持久的。如果机器崩溃,复制操作的正确性可能会受到影响。 • 虽然可以通过简单的load/store内存访问PM指令、编程正确、持久的数据结构是一项艰巨的工作。软件崩溃可以使结构处于任意状态,然后数据库需要从中恢复。 • 用于PM的每个DIMM插槽都不用于DRAM,这迫使系统设计人员在DRAM或PM容量之间进行选择。 • Optane和配有后备电池的DRAM需要特定的服务器支持,并且不能在没有某些特性的情况下跨服务器移植。特别是Optane在AMD平台上不受支持。   方法 为了解决这些问题,本文设计了一个新的存储体系结构X-SSD,实现数据库日志记录和复制从PM和快速网络中获益。通过将PM从CPU路径移到SSD中,并允许SSD代表数据库管理本地或远程对PM的访问。X-SSD包含基于PM和NAND闪存的本地联网存储。该体系结构提供了一个独立的、快速的数据路径和接口,完全专门用于事务日志写入,并提供了数据传播服务,包括跨服务器,可以在这些服务上构建数据库复制。图2显示了如何使用X-SSD设备来简化日志记录和复制数据路径。步骤顺序和传统系统相同,但X-SSD设备负责在步骤 (2) 和 (4a/b) 中传播数据,而远程内存的更新由远程数据库(3)完成。 接口 图2 使用X-SSD设备的日志记录和复制路径   X-SSD架构 图3为X-SSD的逻辑架构,该架构在同一设备中包含常规端和快速端。常规端是一个独立的以Flash为介质的SSD设备,而快速端是仅附加工作负载的高性能暂存区域,为PM设备。保存来自循环缓冲区上的字节寻址接口的数据,最终会将数据转移到常规端的指定循环缓冲区中(也可以选择对等X-SSD)。快速端由电容器提供支持,即使在突然断电的情况下也可以转移数据。因此,可以在到达常规端之前向应用程序确认快速端写入。 X-SSD的设计原理是让应用程序在两个IO配置文件之间进行选择,但使用单个设备并确保配置文件无缝集成。   接口 图3 X-SSD逻辑架构   X-SSD功能如下: 仅附加工作负载的字节寻址接口:X-SSD不仅仅提供传统的块接口,还提供了可字节寻址接口。块设备操作通常由块接口处理。字节级操作由基于CMB的接口处理。CMB接口由应用程序通过load和store指令访问的MMIO区域组成。某种形式的PM支持CMB领域。本文通过假设电池后备使其持久化,来评估SRAM和DRAM的可行性。 数据传播服务:快速端写入的语义与传统端不同。针对CMB的快速写入最终将按照发出的顺序降级到设备的常规端。降级发生时无需来自发出写入的应用程序的任何干预。快速端在概念上是应用程序写入的环。在后台,该设备不断地将数据从这个环移动到常规端。X-SSD设备的常规端还保留了一个环形的转储区域,但比快速端的要大得多。该快速写入也可以发送到配置为副本的Villars设备。本文评估使用 PCIe NTB 作为互连的远程连接,但其他网络技术(如RDMA)也是可能的。 崩溃一致性:后备电池允许设备完成对快速端上存在的任何数据的降级,来应对电源突然中断的情况。重新启动后,应用程序将在设备常规端看到崩溃期间传输中的数据。 记录状态监视器:X-SSD提供了一个控制接口,应用程序使用它来查询上述数据移动的进度。例如,应用程序可以检查给定的写入是否已持久保存在远程X-SSD设备上。 设备设置界面:一个额外的控制接口允许应用程序配置设备(例如,PM区域的大小或用于长期存储的常规侧的区域),并识别并连接到对等X-SSD设备。本文还讨论了如何支持允许X-SSD设备的多线程或多客户端使用X-SSD设备的高级设置。   Villars设备:X-SSD体系结构的参考设计 Villars是一个成熟的NVMe设备,是直接连接的PCIe SSD的标准。Villars设备可以从现代数据库中吸收事务日志工作负载,与直接操作数据库相比,它具有更简单的接口、可比较的延迟和更清晰的崩溃行为语义。 Villars设备大致由三个模块组成,如图4所示:CMB模块、Transport模块和Destage模块。 CMB模块是顶级模块,它处理应用程序所使用的字节可寻址接口。将CMB备份内存公开给数据库。 Transport模块负责连接到远程对等的Villars设备,并通过它们复制CMB写入流。 Destage模块连接Villars设备的两端,将CMB的PM后备存储器中的数据降级到传统端的 Flash。 接口 图4:X-SSD物理架构   总结 X-SSD是针对事务日志工作负载而设计的SSD架构。快速端用于服务低延迟的字节可寻址请求,用于事务日志记录;常规端是一个传统的SSD块接口来服务常规工作负载。双方紧密集成,允许数据无缝地从快速端移动到常规端。此外,不同设备实例的快速端也可以进行通信,允许在X-SSD设备之间以低延迟远程发送日志工作负载。数据库可以使用这些数据传播特性来构建不同的事务日志记录和基于日志传送的复制方案。本文还介绍了一种针对X-SSD体系结构的Villars器件的参考设计。提供更简单的接口、可比较的延迟和更清晰的崩溃行为语义。  

  
      审核编辑:彭静
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分