基于混合存储的内核态键值存储系统设计与实现.pdf
摘要
随着云计算与大数据处理技术的长足发展与基础设施的逐步完善,人类社会
越来越依赖于数字化、智能化的生产生活方式。数字化、智能化在大幅度提高社会
生产力的同时,也使得社会的数据产生速度越来越快,这对存储系统提出了大容量、
低成本和高性能三个要求。但对于任意一种特定的存储器件,如磁盘(HDD)、固
态硬盘(SSD)和非易失性内存(NVM),这三个要求不可能同时满足,往往只占
其一。本文将不同的存储介质加以组合,使得多种存储介质可以取长补短,利用软
件调度对外整体呈现为同时满足大容量、低成本和高性能三个要求的存储系统。
文件系统是计算机操作系统的重要组成部分,一直以来是计算机管理用户数
据的不二之选,但文件系统繁多的功能需求使得其在某些特定的工作负载下性能
较低。现有的多数键值存储系统选择构建在操作系统提供的具体文件系统上,这使
得用户数据从应用程序到落盘过程中的路径过长,且文件系统元数据操作引入了
较多的随机读写,进一步降低了键值存储系统的性能。最后文件系统本身的日志功
能与键值系统本身的日志功能又有所重叠,做了颇多无用功,造成了资源浪费。本
文尝试绕过文件系统,将键值存储系统直接构建在裸盘上,省去了文件系统层的诸
多开销。
互联网服务包括各种各样的业务场景,不同业务场景产生的数据特性也有所
不同,其中非结构化数据在社会生产生活产生的数据中占有极大的比重。键值存储
作为对非结构化数据友好的存储系统具有广泛的应用场景。但现有的键值存储系
统往往建立在用户态,对设备上数据的访问需要经过系统调用频繁进行模式切换
和进程上下文切换。但每次模式切换和上下文切换都会伴随大量硬件上下文的入
栈与出栈,从而严重降低了效率。本文通过将键值存储系统主体实现在内核态,对
外暴露为字符设备,配合用户态与内核态共享的消息队列达到了无系统调用的数
据读写目的,从而提高了键值系统的性能。
关键词:键值存储,混合存储,内核态,裸设备,字符驱动
ABSTRACT
Withtherapiddevelopmentofcloudcomputingandbigdataprocessingtechnology
andthegradualimprovementofinfrastructure,humansocietyisincreasinglydependent
ondigitalandintelligentproductionandlifestyle.Digitizationandintelligencehave
greatlyimprovedsocialproductivity,andatthesametime,thespeedofdatageneration
insocietyhasbecomefasterandfaster.Thisputsforwardthreerequirementsforstorage
systems:largecapacity,lowcost,andhighperformance.However,foranyspecific
storagedevice,suchasmagneticdisk(HDD),solid-statedisk(SSD)andnon-volatile
memory(NVM),thesethreerequirementscannotbesatisfiedatthesametime,andoften
onlyoneofthem.Inthisthesis,differentstoragemediaarecombined,sothatmultiple
storagemediacanlearnfromeachothersstrengthsandweaknesses,andusesoftware
schedulingtopresentastoragesystemthatsimultaneouslymeetsthethreerequirements
oflargecapacity,lowcostandhighperformance.