1.本技术涉及数据存储技术领域,特别涉及一种数据处理方法及装置。
背景技术:2.在存储阵列中,为了提供存储系统的系统性能,一般采用ssd为hdd提供写缓存,然而,由于ssd的容量总是小于hdd,所以随着数据不断的写入,最终ssd将会耗尽其空间。此时需要将之前写入的脏数据(已写入ssd但尚未写入hdd的数据被称为“脏数据”,否则称为“干净数据”)写入hdd,这个过程叫做刷盘。已经刷盘的干净数据就可以被淘汰,以释放空间来接纳新的数据。刷盘算法决定了选择哪些数据写入hdd,一般是选择最近没有被访问过的数据,这样可以更加有效的利用ssd的数据块,从而使系统整体的性能更优。
3.ssd盘对外提供写加速,需要持续接受用户写请求,空间不断消耗,在长时间运行后,空间接近耗尽时其可对外提供的写性能则取决于刷盘时脏数据写入hdd盘的性能。目前,刷盘策略的目的都是将ssd盘缓存的最冷的脏数据尽快下刷到hdd中以达到脏数据转为干净并释放空间来继续提供数据的访问,此类刷盘算法可以尽量提供更高的数据命中率,但是并没有考虑到hdd盘的性能特征,可能导致刷盘业务模型对hdd不够亲和,脏数据写入速率太慢,对外性能表现不佳。
技术实现要素:4.本技术提供了一种数据处理方法及装置,用以解决现有技术中存在的刷盘业务对hdd盘不够亲和而导致刷盘效率低的问题。
5.第一方面,本技术提供了一种数据处理方法,应用于存储服务器,所述存储服务器包括由ssd组成的第一存储介质和由hdd组成的第二存储介质,所述方法包括:
6.接收目标数据写请求,并判断所述第一存储介质中是否存在与所述目标数据相关联的第一数据;
7.若判定所述第一存储介质中存在与所述目标数据相关联的第一数据,则将所述目标数据和所述第一数据进行合并处理,得到第二数据;
8.判断所述第二数据的数据长度是否满足预设要求;
9.若判定所述第二数据的数据长度满足预设要求,则将所述第二数据添加至第一刷盘队列中,其中,所述第一刷盘队列为高优先级的刷盘队列;
10.若判定所述第二数据的数据长度不满足预设要求,则将所述第二数据添加至第二刷盘队列中,其中,所述第二刷盘队列为低优先级的刷盘队列。
11.可选地,判断所述第一存储介质中是否存在与所述目标数据相关联的第一数据的步骤包括:
12.判断所述目标数据写入的数据空间是否与已缓存数据的数据空间重叠或连续,若判定结果为是,则判定该已缓存数据为与所述目标数据相关联的第一数据。
13.可选地,若所述第二数据的数据长度大于等于设定阈值,则判定所述第二数据的
数据长度满足预设要求。
14.可选地,将所述第二数据添加至第一刷盘队列中的步骤包括:
15.将所述第二数据添加至所述第一刷盘队列的尾部;
16.将所述第二数据添加至第二刷盘队列中的步骤包括:
17.将所述第二数据添加至所述第二刷盘队列的尾部。
18.可选地,所述方法还包括:
19.在接收到刷盘指令时,判断所述第一刷盘队列中是否缓存有待刷盘数据;
20.若判定所述第一刷盘队列中缓存有待刷盘数据,则从所述第一刷盘队列的头部开始,将部分/全部待刷盘数据存储至第二存储介质中;
21.若判定所述第一刷盘队列中未缓存有待刷盘数据,则判断所述第二刷盘队列中是否缓存有待刷盘数据;
22.若判定所述第二刷盘队列中缓存有待刷盘数据,则从所述第二刷盘队列的头部开始,将部分/全部待刷盘数据存储至第二存储介质中。
23.第二方面,本技术提供了一种数据处理装置,应用于存储服务器,所述存储服务器包括由ssd组成的第一存储介质和由hdd组成的第二存储介质,所述装置包括:
24.接收单元,用于接收目标数据写请求;
25.第一判断单元,用于判断所述第一存储介质中是否存在与所述目标数据相关联的第一数据;
26.若所述第一判断单元判定所述第一存储介质中存在与所述目标数据相关联的第一数据,则将所述目标数据和所述第一数据进行合并处理,得到第二数据;
27.第二判断单元,用于判断所述第二数据的数据长度是否满足预设要求;
28.若所述第二判断单元判定所述第二数据的数据长度满足预设要求,则将所述第二数据添加至第一刷盘队列中,其中,所述第一刷盘队列为高优先级的刷盘队列;
29.若所述第二判断单元判定所述第二数据的数据长度不满足预设要求,则将所述第二数据添加至第二刷盘队列中,其中,所述第二刷盘队列为低优先级的刷盘队列。
30.可选地,判断所述第一存储介质中是否存在与所述目标数据相关联的第一数据时,所述第一判断单元具体用于:
31.判断所述目标数据写入的数据空间是否与已缓存数据的数据空间重叠或连续,若判定结果为是,则判定该已缓存数据为与所述目标数据相关联的第一数据。
32.可选地,若所述第二数据的数据长度大于等于设定阈值,则判定所述第二数据的数据长度满足预设要求。
33.可选地,将所述第二数据添加至第一刷盘队列中时,所述第二判断单元具体用于:
34.将所述第二数据添加至所述第一刷盘队列的尾部;
35.将所述第二数据添加至第二刷盘队列中时,所述第二判断单元具体用于:
36.将所述第二数据添加至所述第二刷盘队列的尾部。
37.可选地,所述装置还包括:
38.刷盘单元,用于在接收到刷盘指令时,判断所述第一刷盘队列中是否缓存有待刷盘数据;若判定所述第一刷盘队列中缓存有待刷盘数据,则从所述第一刷盘队列的头部开始,将部分/全部待刷盘数据存储至第二存储介质中;若判定所述第一刷盘队列中未缓存有
待刷盘数据,则判断所述第二刷盘队列中是否缓存有待刷盘数据;若判定所述第二刷盘队列中缓存有待刷盘数据,则从所述第二刷盘队列的头部开始,将部分/全部待刷盘数据存储至第二存储介质中。
39.第三方面,本技术实施例提供一种数据处理装置,该数据处理装置包括:
40.存储器,用于存储程序指令;
41.处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行如上述第一方面中任一项所述的方法的步骤。
42.第四方面,本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使所述计算机执行如上述第一方面中任一项所述方法的步骤。
43.综上可知,本技术实施例提供的据处理方法,应用于存储服务器,所述存储服务器包括由ssd组成的第一存储介质和由hdd组成的第二存储介质,所述方法包括:接收目标数据写请求,并判断所述第一存储介质中是否存在与所述目标数据相关联的第一数据;若判定所述第一存储介质中存在与所述目标数据相关联的第一数据,则将所述目标数据和所述第一数据进行合并处理,得到第二数据;判断所述第二数据的数据长度是否满足预设要求;若判定所述第二数据的数据长度满足预设要求,则将所述第二数据添加至第一刷盘队列中,其中,所述第一刷盘队列为高优先级的刷盘队列;若判定所述第二数据的数据长度不满足预设要求,则将所述第二数据添加至第二刷盘队列中,其中,所述第二刷盘队列为低优先级的刷盘队列。
44.采用本技术实施例提供的数据处理方法,通过对脏数据关联性进行判断,将关联的多个数据长度小的脏数据合并成一个数据长度大的脏数据,并定义数据长度大的脏数据的刷盘优先级高,以实现一种对脏数据的大小进行优先级设定,以实现刷盘中下发对hdd更亲和的业务ssd做缓存加速时对外提供更优的写性能。
附图说明
45.为了更加清楚地说明本技术实施例或者现有技术中的技术方案,下面将对本技术实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本技术实施例的这些附图获得其他的附图。
46.图1为本技术实施例提供的一种数据处理方法的详细流程图;
47.图2为本技术实施例提供的另一种数据处理方法的详细流程图;
48.图3为本技术实施例提供的一种刷盘方法的详细流程图;
49.图4为本技术实施例提供的一种数据处理装置的结构示意图;
50.图5为本技术实施例提供的另一种数据处理装置的结构示意图。
具体实施方式
51.在本技术实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本技术。本技术和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一
个或多个相关联的列出项目的任何或所有可能组合。
52.应当理解,尽管在本技术实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
53.示例性的,参阅图1所示,为本技术实施例提供的一种数据处理方法的详细流程图,应用于存储服务器,所述存储服务器包括由ssd组成的第一存储介质和由hdd组成的第二存储介质,该方法包括以下步骤:
54.步骤100:接收目标数据写请求,并判断所述第一存储介质中是否存在与所述目标数据相关联的第一数据。
55.本技术实施例中,在判断所述第一存储介质中是否存在与所述目标数据相关联的第一数据时,一种较佳的实现方式为:
56.判断所述目标数据写入的数据空间是否与已缓存数据的数据空间重叠或连续,若判定结果为是,则判定该已缓存数据为与所述目标数据相关联的第一数据。
57.例如,假设ssd中已存储有数据1,其数据空间为0-15,若当前写入的目标数据的数据空间为13-16,其数据空间与数据1的数据空间重叠(13-15),则判定数据1与目标数据相关联。
58.假设ssd中已存储有数据2,其数据空间为0-15,若当前写入的目标数据的数据空间为16-20,其数据空间与数据1的数据空间线性连续(0-15,16-20),则判定数据1与目标数据相关联。
59.假设ssd中已存储有数据3,其数据空间为0-15,若当前写入的目标数据的数据空间为17-20,其数据空间与数据1的数据空间不重叠且不线性连续,则判定数据1与目标数据不关联。
60.步骤110:若判定所述第一存储介质中存在与所述目标数据相关联的第一数据,则将所述目标数据和所述第一数据进行合并处理,得到第二数据。
61.如上所述,假设ssd中已存储有数据1,其数据空间为0-15,当前写入的目标数据的数据空间为13-16,数据1与目标数据相关联。那么,数据1与目标数据合并后,得到的第二数据的数据空间为0-16。
62.同理,假设ssd中已存储有数据2,其数据空间为0-15,当前写入的目标数据的数据空间为16-20,数据2与目标数据相关联。那么,数据2与目标数据合并后,得到的第二数据的数据空间为0-20。
63.步骤120:判断所述第二数据的数据长度是否满足预设要求。
64.本技术实施例中,若所述第二数据的数据长度大于等于设定阈值,则判定所述第二数据的数据长度满足预设要求。
65.也就是说,可以通过判断第二数据的数据长度是否大于等于设定阈值,来判断第二数据的数据长度是否满足预设要求。若大于等于设定阈值,则满足预设要求,若小于设定阈值,则不满足预设要求。
66.步骤130:若判定所述第二数据的数据长度满足预设要求,则将所述第二数据添加
至第一刷盘队列中,其中,所述第一刷盘队列为高优先级的刷盘队列。
67.步骤140:若判定所述第二数据的数据长度不满足预设要求,则将所述第二数据添加至第二刷盘队列中,其中,所述第二刷盘队列为低优先级的刷盘队列。
68.本技术实施例中,第一刷盘队列为高优先级的刷盘队列,第二刷盘队列为低优先级的刷盘队列,即第一刷盘队列的刷盘优先级高于第二刷盘队列。
69.也就是说,在确定执行刷盘操作时,若高优先级的第一刷盘队列中存在待刷盘数据,则需要优先处理第一刷盘队列中待刷盘的数据。在第一刷盘队列中不存在待刷盘数据时,才处理第二刷盘队列中待刷盘数据。
70.下面结合具体应用场景对本技术实施例提供的数据处理方法进行详细说明。示例性的,参阅图2所示,为本技术实施例提供的一种数据处理方法的详细流程图,接收用户写请求,判断此次写请求是否为透传写,若是,则直接写入hdd盘中,若不是,则识别与该写业务关联的数据空间(即是否存在于该写业务对应的目标数据的数据空间重叠或线性连续的其它已写入的第一数据),若识别存在,则进行数据合并处理,得到第二数据(脏数据),接着,判断该脏数据(关联的相关数据及目标数据)的数据长度是否大于等于设定阈值,若是,则将其挂入高优先级的刷盘队列,并写入ssd盘;若否,则将其挂入低优先级的刷盘队列,并写入ssd盘。
71.进一步的,参阅图3所示,为本技术实施例提供的一种刷盘方法的详细流程图,接收到刷盘指令时,刷盘启动,判断高优先级队列是否为空,若不为空,则摘取高优先级队列头部脏数据,进一步的,判断摘取的脏数据量是否达到单词刷盘阈值,若是,则将摘取的脏数据刷盘至hdd盘,否则继续摘取高优先级队列头部脏数据。若高优先级队列为空,则判断低优先级队列是否为空,若不为空,则摘取低优先级队列头部脏数据,并判断脏数据量达到单次刷盘阈值时,将摘取的脏数据下盘至hdd盘。当然,若高优先级队列及低优先级队列均为空,说明没有脏数据需刷盘至hdd盘。
72.例如,假设当前已管理的脏数据空间(即ssd中已写入有数据的空间)为(【0-15】、【56-63】、【72-127】、【144-159】),设定的高优先级阈值为16。
73.那么,若此次写入的目标数据的数据空间为32-35,与其他已写入数据的数据空间不连续且不重叠,那么,此次写入的目标数据为独立的一个数据,数据长度为4,小于高优先级阈值,即放入低优先级的刷盘队列尾部。
74.若此次写入的目标数据的数据空间为16-19,与该目标数据关联的第一数据是0-15,则最终合并后得到的第二数据为0-19,数据长度为20,大于高优先级阈值,需将该第二数据放入高优先级的刷盘队列的尾部(原有的0-15从高优先级队列中摘下后一起挂入高优先级队列尾部)。
75.若此次写入的目标数据的数据空间为52-55,与该目标数据关联的第一数据是56-63,则最终合并后得到的第二数据为52-63,数据长度为12,小于高优先级阈值,需将该第二数据放入低优先级的刷盘队列的尾部(原有的56-63从低优先级队列中摘下后一起挂入低优先级队列尾部)。
76.示例性的,参阅图4所示,为本技术实施例提供的一种数据处理装置的结构示意图,该装置应用于存储服务器,所述存储服务器包括由ssd组成的第一存储介质和由hdd组成的第二存储介质,该装置包括:
77.接收单元40,用于接收目标数据写请求;
78.第一判断单元41,用于判断所述第一存储介质中是否存在与所述目标数据相关联的第一数据;
79.若所述第一判断单元41判定所述第一存储介质中存在与所述目标数据相关联的第一数据,则将所述目标数据和所述第一数据进行合并处理,得到第二数据;
80.第二判断单元42,用于判断所述第二数据的数据长度是否满足预设要求;
81.若所述第二判断单元42判定所述第二数据的数据长度满足预设要求,则将所述第二数据添加至第一刷盘队列中,其中,所述第一刷盘队列为高优先级的刷盘队列;
82.若所述第二判断单元42判定所述第二数据的数据长度不满足预设要求,则将所述第二数据添加至第二刷盘队列中,其中,所述第二刷盘队列为低优先级的刷盘队列。
83.可选地,判断所述第一存储介质中是否存在与所述目标数据相关联的第一数据时,所述第一判断单元41具体用于:
84.判断所述目标数据写入的数据空间是否与已缓存数据的数据空间重叠或连续,若判定结果为是,则判定该已缓存数据为与所述目标数据相关联的第一数据。
85.可选地,若所述第二数据的数据长度大于等于设定阈值,则判定所述第二数据的数据长度满足预设要求。
86.可选地,将所述第二数据添加至第一刷盘队列中时,所述第二判断单元42具体用于:
87.将所述第二数据添加至所述第一刷盘队列的尾部;
88.将所述第二数据添加至第二刷盘队列中时,所述第二判断单元42具体用于:
89.将所述第二数据添加至所述第二刷盘队列的尾部。
90.可选地,所述装置还包括:
91.刷盘单元,用于在接收到刷盘指令时,判断所述第一刷盘队列中是否缓存有待刷盘数据;若判定所述第一刷盘队列中缓存有待刷盘数据,则从所述第一刷盘队列的头部开始,将部分/全部待刷盘数据存储至第二存储介质中;若判定所述第一刷盘队列中未缓存有待刷盘数据,则判断所述第二刷盘队列中是否缓存有待刷盘数据;若判定所述第二刷盘队列中缓存有待刷盘数据,则从所述第二刷盘队列的头部开始,将部分/全部待刷盘数据存储至第二存储介质中。
92.以上这些单元可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integrated circuit,简称asic),或,一个或多个微处理器(digital singnal processor,简称dsp),或,一个或者多个现场可编程门阵列(field programmable gate array,简称fpga)等。再如,当以上某个单元通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(central processing unit,简称cpu)或其它可以调用程序代码的处理器。再如,这些单元可以集成在一起,以片上系统(system-on-a-chip,简称soc)的形式实现。
93.进一步地,本技术实施例提供的数据处理装置,从硬件层面而言,所述数据处理装置的硬件架构示意图可以参见图5所示,所述数据处理装置可以包括:存储器50和处理器51,
94.存储器50用于存储程序指令;处理器51调用存储器50中存储的程序指令,按照获
得的程序指令执行上述方法实施例。具体实现方式和技术效果类似,这里不再赘述。
95.可选地,本技术还提供一种存储服务器,包括用于执行上述方法实施例的至少一个处理元件(或芯片)。
96.可选地,本技术还提供一种程序产品,例如计算机可读存储介质,该计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令用于使该计算机执行上述方法实施例。
97.这里,机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:ram(radom access memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
98.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
99.为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本技术时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
100.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
101.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
102.而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
103.这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
104.以上所述仅为本技术的较佳实施例而已,并不用以限制本技术,凡在本技术的精
神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本技术保护的范围之内。