Implementing Flash-Cached Storage Systems UsingComputational Storage Drive with Built-inTransparen

摘要

本文研究利用内置透明压缩的不断增长的固态硬盘(ssd)家族来简化高速缓存设计的数据结构。这种存储硬件允许用户应用程序有意地不充分利用逻辑存储空间(例如,稀疏LBA利用率和稀疏存储块内容),而不牺牲物理存储空间。因此,本工作提出了一种无索引的缓存管理方法,通过利用带有内置透明压缩的ssd,在很大程度上简化了基于闪存的缓存管理。我们进行了各种实验来评估所提出的cache管理的写放大和读性能,结果表明,我们提出的无索引cache管理可以达到与传统策略相当或更好的性能,同时消耗更少的主机计算和内存资源。

1、介绍

本文研究了如何利用新兴的计算存储驱动器(CSD)[1],[2]来创新闪存缓存数据存储系统的设计。为存储设备赋予计算能力的简单概念可以追溯到20多年前的[3],最近又引起了人们的极大兴趣([4],[5])。作为一组特殊的CSD产品,TC-CSD(内置透明压缩的CSD)在内部执行基于硬件的每4kb数据压缩/解压缩,这对主机操作系统和用户应用程序是透明的。目前,TC-CSD是唯一一种已经成功商业化并部署在生产环境[6],[7]中的CSD。

除了在CPU开销为零的情况下降低存储成本,TC-CSD还支持两种类型的稀疏性,从而为系统级创新提供了独特的机会:(1) LBA(逻辑块地址)空间:TC-CSD可以公开一个比其内部物理存储空间大得多的LBA空间。(2)稀疏扇区内容:由于特殊的数据模式(如全零)可以被高度压缩,我们可以留下一个4KB扇区,部分填充有效的用户数据,而不牺牲真正的物理存储成本。通过这两种类型的稀疏性,TC-CSD将逻辑存储空间利用率与物理存储空间利用率[8]解耦。这允许系统有意地不充分利用逻辑存储空间,以便采用更简单的数据结构和算法,而不牺牲真正的物理存储成本。更简单的数据结构和算法可能会带来更高的系统性能和/或更低的CPU/内存成本。

       本工作设想使用TCCSD作为缓存设备的闪存缓存存储系统。我们特别关注块级缓存,它在块层管理缓存的存储系统,对上层文件系统和用户应用程序是透明的。虽然块级缓存可以在不改变上层软件的情况下方便地部署,但它的实现有两个主要问题:(1)缓存管理开销:缓存存储系统的传统实现使用基于散列(或基于树)的索引数据结构来维护缓存的HDD扇区与其在缓存设备上的位置之间的映射。这种索引数据结构的管理可能会导致不可忽视的CPU和内存开销。(2) HDD数据压缩的影响:HDD数据压缩通常使用较大的块(如32KB、64KB甚至256KB)来提高总存储成本的节约。因此,如果HDD数据压缩是由上层软件(例如,文件系统或用户应用程序)处理的,那么数据将以压缩数据块的单位缓存。这可能会降低缓存设备容量使用效率,特别是在以小型随机数据访问为主的工作负载下。

       为了解决上述两个问题,本文提出一种块级TC-CSD缓存存储系统的设计框架,具有以下两个特点:(1)Index-less缓存管理:利用TC-CSD的稀疏LBA空间,我们可以使用简单的位图来管理缓存,而不是使用传统的基于哈希/树的索引数据结构。这可以大大降低缓存管理复杂度和CPU/内存成本。我们还开发了一些技术,这些技术可以进一步减少位图内存的占用,并利用位图数据结构使缓存回收对HDD更加友好。(2) HDD上的透明压缩:对于第二个问题(即HDD数据压缩的影响),最根本的解决方案是让HDD数据压缩发生在块级缓存层以下。因此,HDD数据压缩和缓存对文件系统和用户应用程序都是透明的,而块级缓存在未压缩的存储空间上运行。因此,hdd驻留的数据被压缩成相对较大的块,而数据被缓存在单位为4KB的扇区中。这将允许系统充分利用缓存设备的IOPS和带宽。利用TC-CSD支持的稀疏扇区内容,我们开发了一个简单的数据结构来管理HDD数据压缩的实现。它支持工作负载自适应可变的压缩块大小,并可以完全避免在hdd驻留的数据出现随机更新时的读-修改-写操作。

2、背景和动机

A、TC-CSD的基本知识

你可能感兴趣的:(硬件架构)