Skip to content
首页 » 精选文章 » 存储中的透明压缩:创新基础设施软件的催化剂

存储中的透明压缩:创新基础设施软件的催化剂

  • ScaleFlux 

存储中的透明压缩是开启计算存储驱动器 (CSD) 商业化之旅的最佳选择,主要有两个原因:(1) 零采用障碍:存储内透明压缩不需要对现有存储 I /O 软件堆栈进行任何更改(例如,文件系统、块层和驱动程序)和 I/O 接口协议(例如,NVMe 和 SATA)。 这确保了在其无缝集成和部署到现有基础设施中,无需用户应用程序去更改任一代码。 (2) 显着优势:除了非常广泛的适用性之外,无损数据压缩(例如,众所周知的 LZ77 及其变体,如 lz4、zlib 和 ZSTD)涉及大量随机数据访问,这不可避免地会导致非常高的 CPU/ GPU 缓存未命中率,从而使CPU/GPU 硬件利用率非常低。 因此,减轻主机 CPU/GPU 执行无损数据压缩的负担变得极为需要。

经过 3 年多的紧张研发,ScaleFlux 最近发布了世界上第一个 PCIe CSD(命名为 CSD 2000),它在内部对 I/O 路径上的每个 4KB 数据块进行 zlib(解)压缩,对主机透明。它的详细信息在我们之前的博客中有所介绍。乍一看,人们可能会认为这种存储内透明压缩的全部好处是透明地降低存储成本和透明地提高 IOPS,仅此而已。事实上,这正是我们最初的想法。随着我们进行进一步的研究,我们逐渐意识到这远不是存储透明压缩的全部好处。除了明显的成本/IOPS 优势之外,透明压缩为非常令人兴奋的系统级创新机会打开了一扇门,虽然这在很大程度上还未被开发。在随后的几篇博客中,我们将介绍可以展示创新潜力的案例研究。在此之前,本博客旨在解释创新潜力的来源。

所有数据存储驱动器(例如 SSD、HDD、光盘和磁带)都作为块设备运行,其中数据通过标准块 I/O 接口协议(例如,4KB)以固定大小的块为单位进行访问、NVMe 和 SATA)。当使用普通存储驱动器(即那些没有内置透明压缩的驱动器)时,计算系统自然旨在用有用的数据填充每个固定大小的 4KB 块,以最小化存储成本。众所周知,固定大小的块 I/O 对数据管理软件(例如,关系数据库、键值存储、对象存储和文件系统)的设计施加了严格的限制。例如,为了容纳固定大小的块 I/O,B+ 树被迫使所有树节点的大小相同,即块 I/O 大小的倍数,并旨在尽可能多地填充每个树节点,这在理论上可能不是最优的。与此形成鲜明对比的是,通过存储内透明压缩,我们不再需要用有用的数据填充每个固定大小的块,因为任何未占用的空间都可以简单地压缩到存储设备内。因此,我们可以将任意数量的有用数据(例如 2KB、1KB 甚至 100B)打包到每个 4KB I/O 块中。这导致几乎可变大小的块 I/O,即,即使我们仍然坚持现有的固定大小的块 I/O 接口,例如 NVMe 或 SATA,每个块的有用数据可能具有可变大小,同时,真正的物理存储成本不会受到影响。这实质上打破了传统的固定大小块 I/O 约束。上述讨论可以在图 1 中进一步说明。

图 1:存储中透明压缩启用的虚拟可变大小块 I/O 的图示。

在过去的 4 年里,整个数据管理软件基础设施都是在固定大小的块 I/O 约束下构建的。 直观地说,随着存储中透明压缩支持的几乎可变大小的块 I/O 的到来,这是重新思考数据管理软件设计和落地的独特机会。 在这种情况下,如图 2 所示,所有创新和修改都完全限制在用户应用程序域内,而整个 I/O 堆栈保持不变。 显然,它可以大大降低开发成本和采用障碍,这是最终用户非常希望的。

图 2:仅在用户应用程序内部进行创新,而不对 I/O 堆栈进行任何更改

根据我们需要修改应用程序的程度,我们可以将整个设计空间分为三个阶段,如图 3 所示。对于不同的软件开发成本,不同的阶段涉及不同的收益与成本权衡,如图 3 所示。它们共同构成了创新基础设施软件的一个令人兴奋的新前沿。 在随后的博客中,我们将介绍这三个类别的一些案例研究,我们真诚地希望这些研究有助于吸引更多的研发活动进入这个令人兴奋但很大程度上尚未开发的领域。

图 3:整个设计空间的图示。