点击上方蓝字关注我们
分布式存储系统中的数据高效缓存方法
杨青霖, 吴桂勇, 张广艳
清华大学计算机科学与技术系,北京 100084
摘要:针对典型分布式存储系统存在的写放大、I/O路径过长、响应时延较高等问题,提出了一种基于SSD的分布式存储系统中数据高效缓存方法,采用读写旁路和懒惰缓存的缓存管理策略,以及兼顾最近访问时间和历史访问频率的缓存替换策略,并根据前台工作负载的变化情况,自适应地调整主动回刷脏数据的速率,显著提升了存储系统的读写性能。
关键词: 分布式存储 ; 分布式数据缓存 ; 读写旁路 ; 懒惰缓存 ; 替换策略
论文引用格式:
杨青霖, 吴桂勇, 张广艳. 分布式存储系统中的数据高效缓存方法[J]. 大数据, 2021, 7(2): 147-157.
YANG Q L, WU G Y, ZHANG G Y. An approach to buffering data efficiently in distributed storage systems[J]. Big Data Research, 2021, 7(2): 147-157.
1 引言
分布式存储系统是由多个存储设备或者服务器(统称为节点)通过I/O总线或者互联网络连接而成的,并通过节点间的数据分散布局实现高效、低廉的数据存储。分布式存储系统因其强大的横向扩展能力在大数据场景中得到广泛应用。然而,以Ceph为代表的分布式存储系统存在以下几个问题。
● 写放大。为了支持写事务,需要将数据先写入日志,然后再应用到本地文件系统中,这导致了双倍的数据写入量,降低了写入性能,且后端文件系统的写入容易成为性能瓶颈。
● I/O路径过长,响应时延较高。一个完整的I/O过程需要经过多种相关线程和模块协同,部分模块之间还需要进行网络传输或内存复制,且过程中存在多处排队等待,这些排队等待有可能阻塞读写请求,过长的I/O路径增大了读写操作的响应时延,降低了存储系统的读写性能。
现有技术中普遍将内存或固态硬盘(solid state disk,SSD)等快速设备作为底层存储系统的缓存,利用数据分层机制提高存储系统的读写性能,如Memcache分布式缓存系统、Flashcache混合磁盘技术,或者在磁盘阵列上层支持SSD客户端缓存等。因此,为了解决分布式存储系统中的性能问题,在以磁盘为介质的存储系统中引入以固态硬盘为介质的缓存是一种可行的途径。
对于单机系统中的SSD缓存技术,现有的研究和应用已经比较成熟。但是,运行在分布式存储系统上的大规模任务通常会被分割为许多小任务分散执行,这就导致数据访问模式呈现弱局部性,若采用传统的缓存机制,容易造成缓存污染的问题。另外,由于分布式场景下缓存管理的粒度通常较大,对数据块的缓存操作需要大量的网络带宽和磁盘读写开销,在传统的缓存机制中,缓存操作会落在I/O的关键路径上,增大I/O请求的响应时延。由于容错需要,缓存层和存储层还需要做数据冗余,导致数据缓存和脏数据回刷的开销更大。因此,在分布式场景下,传统的缓存机制并不完全适用,不能发挥SSD等快速设备的优秀特性,不能充分提升分布式存储系统的读写性能。
本文提出一种分布式存储系统中数据高效缓存方法——基于热点检测(hot spot detection,HOSD)的缓存方法,该方法通过充分利用分布式系统访问模式信息来提高缓存池中数据的命中率,最终提高缓存系统的读写性能。首先,HOSD采用读写旁路和懒惰缓存的方法降低了缓存操作对I/O时延的影响,且避免了缓存污染;其次,HOSD采用高效的缓存管理机制及缓存替换策略降低了缓存管理开销,提高了对缓存中冷数据的识别精度,使得更多的热数据得以保留在缓存中,提高了缓存效率和分布式场景下弱局部性访问的I/O性能;最后,HOSD通过跟踪前台工作负载的变化情况自适应地调整主动回刷脏数据的速率,以避免在发生缓存替换时密集回刷数据对系统I/O性能造成很大影响。
2 系统架构设计
HOSD的基本思想是冷热数据分离,用相对快速的固态存储设备组成一个热数据缓存池,后端用相对慢速的磁盘设备组建冷数据存储池(如图1所示)。HOSD在分布式存储系统内部支持数据缓存,数据在缓存池与存储池之间的迁移由HOSD软件模块控