数据写入方法、装置及存储服务器和计算机可读存储介质转让专利
申请号 : CN201911304631.1
文献号 : CN111104066B
文献日 : 2021-07-27
发明人 : 张煜 , 周可 , 王桦 , 胡健鹰 , 吉永光
申请人 : 华中科技大学 , 腾讯科技(深圳)有限公司
摘要 :
权利要求 :
1.一种数据写入方法,其特征在于,包括:当接收到写入请求时,将所述写入请求对应的写入数据写入写缓冲区中;
当触发所述写缓冲区的数据下刷操作时,获取待下刷数据对应的数据块的历史访问数据;
基于所述历史访问数据判断所述待下刷数据是否为只写数据;
若是,则将所述待下刷数据写入硬盘驱动器中;
若否,则将所述待下刷数据写入缓存中;
其中,所述基于所述历史访问数据判断待下刷数据是否为只写数据,包括:在所述历史访问数据中提取所述待下刷数据对应的数据块的特征信息作为第一特征信息,将所述第一特征信息输入训练完成的分类器中以便判断待下刷数据是否为只写数据。
2.根据权利要求1所述数据写入方法,其特征在于,将所述待下刷数据写入硬盘驱动器中,包括:
将所述缓存中所述待下刷数据对应的脏数据刷新至所述硬盘驱动器;
将所述待下刷数据写入硬盘驱动器中。
3.根据权利要求1所述数据写入方法,其特征在于,将所述待下刷数据写入缓存中,包括:
将所述待下刷数据写入缓存中;
当满足预设条件时,将所述缓存中的数据刷新至所述硬盘驱动器中;其中,所述预设条件包括所述缓存的读取命中率小于预设值或所述缓存已满。
4.根据权利要求1所述数据写入方法,其特征在于,将所述待下刷数据写入缓存中,包括:
将所述待下刷数据同时写入所述缓存和所述硬盘驱动器中。
5.根据权利要求1所述数据写入方法,其特征在于,当触发所述写缓冲区的数据下刷操作时,获取待下刷数据对应的数据块的历史访问数据,包括:当所述写缓冲区的数据量达到阈值时,触发所述写缓冲区的数据下刷操作,并获取待下刷数据对应的数据块的历史访问数据。
6.根据权利要求1所述数据写入方法,其特征在于,还包括:当所述缓存触发数据替换操作时,基于替换数据的历史读取数据对所述替换数据进行标记;
获取所述替换数据对应的数据块的特征信息作为第二特征信息,并利用标记完成的替换数据和所述第二特征信息训练分类器得到所述训练完成的分类器。
7.根据权利要求6所述数据写入方法,其特征在于,所述获取所述替换数据对应的数据块的特征信息作为第二特征信息,包括:确定所述替换数据对应的数据块所属的数据区域;其中,所述数据区域包括多个数据块,所述数据区域的大小为访问粒度的整数倍;
提取所述数据区域的特征信息作为所述第二特征信息。
8.根据权利要求1所述数据写入方法,其特征在于,所述特征信息包括时间特征和/或请求类特征;所述时间特征为描述访问数据块的时间的特征,所述请求类特征为描述访问数据块的请求的特征。
9.根据权利要求8所述数据写入方法,其特征在于,所述时间特征包括上次访问时间戳和/或平均重用时间差;所述上次访问时间戳描述上一次访问数据块的时间点,所述平均重用时间差描述访问数据块的平均时间间隔;
所述请求类特征包括平均请求大小、大请求比率、小请求比率和写请求比率中的任一项或任几项的组合;所述大请求比率描述访问数据块的请求中请求大小大于第一预设值的请求的比率,所述小请求比率描述访问数据块的请求中请求大小小于第二预设值的请求的比率,所述写请求比率描述访问数据块的请求中写请求的比率,所述第一预设值大于或等于所述第二预设值。
10.根据权利要求1至5中任一项所述数据写入方法,其特征在于,所述基于所述历史访问数据判断待下刷数据是否为只写数据,包括:基于所述历史访问数据利用统计学方法判断待下刷数据是否为只写数据。
11.根据权利要求10所述数据写入方法,其特征在于,所述基于所述历史访问数据利用统计学方法判断待下刷数据是否为只写数据,包括:基于所述历史访问数据确定多个时间窗口内所述待下刷数据对应的数据块的写请求次数,并根据所有所述写请求次数计算所述待下刷数据对应的数据块的只写概率;其中,所述只写概率描述所述数据块存储只写数据的概率;
判断所述只写概率是否大于第三预设值,若是,则判定所述待下刷数据为所述只写数据,若否,则判定所述待下刷数据为普通数据。
12.一种数据写入装置,其特征在于,包括:第一写入模块,用于当接收到写入请求时,将所述写入请求对应的写入数据写入写缓冲区中;
获取模块,用于当触发所述写缓冲区的数据下刷操作时,获取待下刷数据对应的数据块的历史访问数据;
判断模块,用于基于所述历史访问数据判断所述待下刷数据是否为只写数据;
第二写入模块,用于当所述待下刷数据为只写数据时,将所述待下刷数据写入硬盘驱动器中;
第三写入模块,用于当所述待下刷数据为非只写数据时,将所述待下刷数据写入缓存中;
其中,所述判断模块具体为在所述历史访问数据中提取所述待下刷数据对应的数据块的特征信息作为第一特征信息,将所述第一特征信息输入训练完成的分类器中以便判断待下刷数据是否为只写数据的模块。
13.一种存储服务器,其特征在于,包括:处理器和存储器;
其中,所述处理器用于执行所述存储器中存储的程序;
所述存储器用于存储程序,所述程序至少用于:当接收到写入请求时,将所述写入请求对应的写入数据写入写缓冲区中;
当触发所述写缓冲区的数据下刷操作时,获取待下刷数据对应的数据块的历史访问数据;
基于所述历史访问数据判断所述待下刷数据是否为只写数据;其中,在所述历史访问数据中提取所述待下刷数据对应的数据块的特征信息作为第一特征信息,将所述第一特征信息输入训练完成的分类器中以便判断待下刷数据是否为只写数据;
若是,则将所述待下刷数据写入硬盘驱动器中;
若否,则将所述待下刷数据写入缓存中。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至11任一项所述数据写入方法的步骤。
说明书 :
数据写入方法、装置及存储服务器和计算机可读存储介质
技术领域
背景技术
致性以及对高速缓存介质的写入流量具有很大影响。
的硬盘驱动器,写回策略为将待写入数据首先写入缓存,然后异步下刷到后端的硬盘驱动
器,绕写策略为将待写入数据直接写后端的硬盘驱动器,只有当存在读操作时才将未命中
数据加载到缓存。
发明内容
数据。
的特征,所述请求类特征为描述访问数据块的请求的特征。
方法的步骤。
作时,获取所述待下刷数据对应的数据块的历史访问数据;基于所述历史访问数据判断待
下刷数据是否为只写数据;若是,则将所述待下刷数据写入硬盘驱动器中;若否,则将所述
待下刷数据写入缓存中。
时间窗口内不会命中只写数据,将只写数据加载到缓存,不但不会提高缓存的读取命中率,
还会对缓存造成大量非必要的写入流量。因此,本申请提供的数据写入方法,对只写数据和
普通数据采取不同的写入方式,对于普通数据采用写穿策略或写回策略,将其写入缓存。而
对于只写数据采用绕写策略,即将其直接写入后端的硬盘驱动器,可以有效减少写入缓存
的无用流量,同时在缓存中为普通数据留出更多空间,提高缓存空间利用率,从而提高缓存
的读取命中率,提升存储系统的读性能。由此可见,本申请提供的数据写入方法,实现了对
缓存的最低写入流量,提高了写策略的效率。本申请还公开了一种数据写入装置及一种存
储服务器和一种计算机可读存储介质,同样能实现上述技术效果。
附图说明
申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他的附图。附图是用来提供对本公开的进一步理解,并且构成说明书
的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附
图中:
具体实施方式
中。当写缓冲区中的脏数据量超过一定阈值时被提交到缓存,例如SSD(中文全称:固态驱动
器,英文全称:Solid State Drive)缓存等,缓存中的写入数据采用写回策略异步下刷到后
端的硬盘驱动器(英文全称:Hard Disk Drive,英文简称:HDD)存储。
据。将只写数据提交到缓存而带来的加速效果用户并不能感知到,此时对于缓存,无论使用
写回还是写穿策略,都会对缓存造成大量非必要的写入流量。另外,简单地部署绕写策略将
不可避免地降低读请求的命中率,严重降低服务质量。
其写入缓存。将只写数据直接写入后端的硬盘驱动器,可以有效减少写入缓存的无用流量,
同时在缓存中为普通数据留出更多空间,提高缓存空间利用率。
本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他
实施例,都属于本申请保护的范围。
100、存储服务器200和存储区300,客户端100与存储服务器200、存储服务器200和存储区
300之间通过网络400传输写入数据。
DRAM(中文全称:动态随机存取存储器,英文全称:Dynamic Random Access Memory)组成,
在此不进行具体限定。写缓冲区31被触发数据下刷操作时,存储服务器200确定待下刷数据
的数据类型,若其为只写数据,则将其直接写入后端的硬盘驱动器33,否则可以采用写穿策
略将其同时写入缓存32和硬盘驱动器33,也可以采用写回策略为将其首先写入缓存32,然
后异步下刷到硬盘驱动器33中,在此不进行具体限定。缓存32用于暂存数据,当客户端产生
读请求时,若该读请求对应的数据在缓存32中时可以直接返回,不需要访问后端的硬盘驱
动器33,提高读取效率。本实施例中的缓存32可以采用SSD缓存等,在此不进行具体限定。
服务器依据预设定义的写策略对该写入请求进行处理。
断待下刷数据是否为只写数据;若是,则进入S104;若否,则进入S105;
作的数据,除只写数据之外的数据称之为普通数据。当写缓冲区触发数据下刷操作时,存储
服务器确定待下刷数据,并获取该待下刷数据对应的数据块的历史访问数据。客户端在产
生写入请求时,可以指定写入地址,此处的数据块即为该写入地址对应的数据块。历史访问
数据描述该数据块的历史访问情况,依据历史访问数据可以确定该数据块存储只写数据的
概率,进而确定即将存储在该数据块内的待下刷数据是否为只写数据。需要说明的是,本实
施例不对数据类型的具体确定方式进行限定,例如可以基于统计学方法或分类器等,均在
本实施例的保护范围内。
获取所述待下刷数据对应的数据块的历史访问数据的步骤包括:当所述写缓冲区的数据量
达到阈值时,触发写缓冲区的数据下刷操作,并获取所述待下刷数据对应的数据块的历史
访问数据。
一定时间窗口内只存在写操作,而不存在读操作,可见,将只写数据加载到缓存,不但不会
提高缓存的读取命中率,还会对缓存造成大量非必要的写入流量。
率,从而提高缓存的读取命中率。在具体实施中,为了进一步节省缓存空间,防止缓存中存
在该待下刷数据对应的脏数据,保证数据一致性,首先查询缓存中是否存在该待下刷数据
对应的脏数据,若是,则首先将缓存中脏数据刷新至硬盘驱动器,再将写缓冲区中的待下刷
数据写入硬盘驱动器。即本步骤包括:将所述固态驱动器中所述待下刷数据对应的脏数据
刷新至所述硬盘驱动器;将所述待下刷数据写入硬盘驱动器中。
定。若普通数据的写策略为写穿策略,本步骤包括:将所述待下刷数据同时写入所述缓存和
所述硬盘驱动器中。若普通数据的写策略为写回策略,则本步骤包括:将所述待下刷数据写
入缓存中;当满足预设条件时,将所述缓存中的数据刷新至所述硬盘驱动器中。此处的预设
条件可以为读取命中率小于预设值,即当缓存的读取命中率小于预设值时,将缓存中读取
命中率最低的数据块中的数据刷新至硬盘驱动器。预设条件也可以为缓存已满,即当缓存
已满时,将缓存中的部分数据刷新至硬盘驱动器,当然还可以采用其他策略将缓存中的数
据刷新至硬盘驱动器,在此不进行具体限定。
请求在该时间窗口内不会命中只写数据,将只写数据加载到缓存,不但不会提高缓存的读
取命中率,还会对缓存造成大量非必要的写入流量。因此,本申请实施例提供的数据写入方
法,对只写数据和普通数据采取不同的写入方式,对于普通数据采用写穿策略或写回策略,
将其写入缓存。而对于只写数据采用绕写策略,即将其直接写入后端的硬盘驱动器,可以有
效减少写入缓存的无用流量,同时在缓存中为普通数据留出更多空间,提高缓存空间利用
率,从而提高缓存的读取命中率,提升存储系统的读性能。由此可见,本申请实施例提供的
数据写入方法,实现了对缓存的最低写入流量,提高了写策略的效率。
定写入地址,此处的数据块即为该写入地址对应的数据块。历史访问数据描述该数据块的
历史访问情况,可以包括在一定时间窗口内的写请求次数、读请求次数等,依据历史访问数
据可以确定该数据块存储只写数据的概率,进而确定即将存储在该数据块内的待下刷数据
是否为只写数据。
刷数据对应的数据块的只写概率;其中,所述只写概率描述所述数据块存储只写数据的概
率;判断所述只写概率是否大于第三预设值,若是,则判定所述待下刷数据为所述只写数
据,若否,则判定所述待下刷数据为所述普通数据。
多个时间窗口可以为一个月,即确定一个月内每天中该数据块的写请求次数和总请求次
数。总请求次数既包括写请求次数也包括读请求次数,计算每个时间窗口内该数据块的写
请求比例,即写请求次数与总请求次数的比值,并将所有时间窗口的写请求比例的平均值
作为该数据块的只写概率,该只写概率可以表征该数据块存储只写数据的概率。当只写概
率大于第三预设值时,可以判定该数据块即将存储的数据为只写数据,即待下刷数据为只
写数据,否则判定待下刷数据为普通数据。
采用写穿策略或写回策略,将其写入缓存。而对于只写数据采用绕写策略,即将其直接写入
后端的硬盘驱动器,可以有效减少写入缓存的无用流量,同时在缓存中为普通数据留出更
多空间,提高缓存空间利用率,从而提高缓存的读取命中率,提升存储系统的读性能。
息作为第一特征信息;
信息可以包括时间特征和请求类特征中的任一项或两项,时间特征为描述访问数据块的时
间的特征,请求类特征为描述访问数据块的请求的特征。
平均时间间隔。可以理解的是,时间特征可以表示数据块的访问新进度和时间间隔,即上次
访问时间戳描述访问新进度,平均重用时间差描述访问时间间隔,当然也可以使用当前时
间和上一次访问数据块的时间点的时间间隔表示数据块的访问新进度,在此不进行具体限
定。另外,可以对上述时间特征进行标准化处理,例如,将时间特征的单位设置为小时,并将
数值的上限限制为100。
数据的地址信息,如卷ID、偏移等。但是,地址会随着时间而变化,影响分类器的预测,因此
在本实施例中,不使用空间特征,而采用请求类特征来丰富训练特征。
设值的请求的比率,小请求比率描述访问数据块的请求中请求大小小于第二预设值的请求
的比率,写请求比率描述访问数据块的请求中写请求的比率,所述第一预设值大于或等于
所述第二预设值。
8KB的请求的比率。
息的提取效率,可以提高特征信息的统计粒度,然而过大的统计粒度也会导致训练完成的
分类器预测结果不准确。因此,可以以数据区域作为特征信息的统计粒度,每个数据区域包
括多个数据块,以在内存占用和预测准确性之间进行权衡。存储系统中的访问粒度,即最小
读写粒度为数据块,例如8KB,数据区域的大小为访问粒度的整数倍,例如数据区域的大小
可以为1MB。在具体实施中,以1MB的统计粒度统计特征信息连续数据区域进行统计,每个数
据区域的特征信息来自该数据区域中所有数据块的历史读取数据,同一数据区域中的数据
块共享此数据区域的特征信息。即所述获取所述待下刷数据对应的数据块的特征信息作为
第一特征信息的步骤包括:确定所述待下刷数据对应的数据块所属的数据区域,提取该数
据区域的特征信息作为第一特征信息。
类,然后根据分类结果进行不同操作,即对普通数据采用写回策略或写穿策略,对只写数据
采用绕写策略。通过上述方式极大地减少了对缓存的写流量,同时也为普通数据保留了更
多的缓存空间,提高缓存空间的资源利用率,从而提高了存储系统的读性能。
法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的
知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的
核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度
学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、式教学习等技术。
具体的:
Logistic回归、决策树、AdaBoost和随机森林等。在X86‑64计算服务器上运行分类器器,该
服务器有两个Intel Xeon E5‑2670‑v3CPU和128GB DRAM内存,不同机器学习算法的分类结
果如表1所示,表1中的训练时间为训练一天的训练样本所用的时间。
朴素贝叶斯 83.89 83.91 440.88 1.25
决策树 80.96 68.61 482.62 1.16
AdaBoost 87.85 85.64 462.47 14.73
随机森林 88.32 82.64 523.68 20.23
时间,每个请求平均为14.73μs。朴素贝叶斯能很好的平衡准确率、召回率和预测时间,
Logistic回归在召回率方面不如朴素贝叶斯,决策树具有最低的准确率和召回率。
型机器学习算法训练一天样本耗时几百毫秒,分类器模型的大小仅为几兆字节,可见训练
分类器对存储系统的影响可以忽略不计。
历史读取数据对其进行标记,例如,若该替换数据具有一个或多个读取命中次数,则将其标
记为0(0表示普通数据),否则将其标记为1(1表示只写数据)。
征信息输入分类器中,用于对该分类器进行训练,得到训练完成的分类器。训练完成的分类
器用于确定数据的类型,只写数据或普通数据。
息作为第二特征信息的步骤包括:确定所述替换数据对应的数据块所属的数据区域;提取
所述数据区域的特征信息作为所述第二特征信息。
定数据类型的准确度。
写回策略,对只写数据采用绕写策略,最大程度的减少了对缓存的写流量,同时也为普通数
据保留了更多的缓存空间,提高缓存空间的资源利用率,从而提高了存储系统的读性能。
(又称虚拟机监视器,英文全称:virtual machine monitor,英文简称:VMM),用于监控客户
端的写入请求。分类器采集训练样本,用于训练机器学习模型。存储区包括写缓冲区和后端
存储,后端存储包括SSD缓存和HDD,写策略决定是否将待写入数据加载到SSD缓存以及何时
将SSD缓存中的脏数据下刷到HDD。如图8所示,当存在来自客户端的请求时,写策略的处理
流程如下:
据,则执行步骤四。
致性。
写回策略 94.68% 7.49 934.16μs
本实施例的写策略 97.22% 4.38 583.64μs
获得最低命中率92.13%,并且引起最高读取延迟1.29ms。可见,绕写策略虽然实现了最低
的SSD写入流量,但在命中率和读取延迟方面破坏了缓存性能。写回策略导致SSD的最大写
入流量(7.49)。本实施例提供的写策略与写回策略相比,将命中率从94.68%提高到
97.22%,提高了2.61%,并将读取延迟和写入流量减少了37.52%(934.16μs到583.64μs)
和41.52%(从7.49到4.38)。由此可见,本实施例提供的写策略实现了最佳性能。
请求在该时间窗口内不会命中只写数据,将只写数据加载到缓存,不但不会提高缓存的读
取命中率,还会对缓存造成大量非必要的写入流量。因此,本申请实施例提供的数据写入装
置,对只写数据和普通数据采取不同的写入方式,对于普通数据采用写穿策略或写回策略,
将其写入缓存。而对于只写数据采用绕写策略,即将其直接写入后端的硬盘驱动器,可以有
效减少写入缓存的无用流量,同时在缓存中为普通数据留出更多空间,提高缓存空间利用
率,从而提高缓存的读取命中率,提升存储系统的读性能。由此可见,本申请实施例提供的
数据写入装置,实现了对缓存的最低写入流量,提高了写策略的效率。
应的数据块的历史访问数据。
第一特征信息输入训练完成的分类器中以便判断待下刷数据是否为只写数据的模块。
问数据块的请求的特征。
均重用时间差描述访问数据块的平均时间间隔;
值的请求的比率,所述小请求比率描述访问数据块的请求中请求大小小于第二预设值的请
求的比率,所述写请求比率描述访问数据块的请求中写请求的比率,所述第一预设值大于
或等于所述第二预设值。
只写概率;其中,所述只写概率描述所述数据块存储只写数据的概率;
Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程
逻辑阵列)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处
理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central Processing
Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在
一些实施例中,处理器21可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU
用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括AI
(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算
操作。
备、闪存存储设备。本实施例中,存储器22至少用于存储以下计算机程序221,其中,该计算
机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的由服务器侧执行的数
据写入方法中的相关步骤。另外,存储器22所存储的资源还可以包括操作系统222和数据
223等,存储方式可以是短暂存储或者永久存储。其中,操作系统222可以包括Windows、
Unix、Linux等。
件。
言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明
即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还
可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围
内。
之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意
在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那
些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者
设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排
除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。