CN115639961A - 数据写入方法、存储系统及服务器 - Google Patents
数据写入方法、存储系统及服务器 Download PDFInfo
- Publication number
- CN115639961A CN115639961A CN202211242564.7A CN202211242564A CN115639961A CN 115639961 A CN115639961 A CN 115639961A CN 202211242564 A CN202211242564 A CN 202211242564A CN 115639961 A CN115639961 A CN 115639961A
- Authority
- CN
- China
- Prior art keywords
- data
- target
- stripe
- disk array
- write
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供了一种数据写入方法、存储系统及服务器,涉及数据存储技术领域。该方法用于存储系统,存储系统包括磁盘阵列和磁盘阵列卡,磁盘阵列卡中包含缓存,磁盘阵列被划分为多个条带。该方法中,接收到写请求后,若写请求涉及以目标写方式,如读改写或重构写,先判断缓存中是否存储有目标数据,若缓存中存储有目标数据,则基于缓存中存储的目标数据,以目标写方式将待写数据写入目标条带。由于是直接使用缓存中存储的目标数据,实现以目标写方式将待写数据写入目标条带中。由于执行涉及目标写方式的写请求时,不必从磁盘阵列中读取目标数据,有助于提升读改写方式中的读性能,从而实现提高该写请求的写性能,进而实现提升存储系统的写性能。
Description
技术领域
本申请涉及数据存储技术领域,尤其涉及一种数据写入方法、存储系统及服务器。
背景技术
存储系统是服务器的重要组成部分之一。目前,存储系统主要包括磁盘阵列(Redundant Arrays of Independent Disks,RAID)和磁盘阵列卡,磁盘阵列是由很多块独立的磁盘组合成的磁盘组,磁盘阵列卡是管理磁盘阵列的部件,主要用于数据分发以及数据冗余备份等。
相关技术中,磁盘阵列卡向磁盘阵列写入数据时,有时需要先从磁盘阵列中读取部分数据,之后,才能将待写数据写入磁盘阵列中,如,写入方式为读改写或重构写时。由于需要先从磁盘阵列中读取部分数据,导致写入效率较低,严重影响了整个存储系统的写性能。
发明内容
本申请实施例提供一种数据写入方法、存储系统及服务器,能够提升存储系统的写性能。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,提供了一种数据写入方法,应用于存储系统,存储系统包括磁盘阵列和磁盘阵列卡,磁盘阵列卡中包含缓存,磁盘阵列被划分为多个条带;该方法包括:接收写请求,写请求用于请求以读改写方式向目标条带写入待写数据;若缓存中存储有目标数据,则从缓存中读取目标数据,目标数据为目标条带中存储的数据;基于目标数据,以读改写方式将待写数据写入目标条带中。
在该方案中,接收到写请求后,若该写请求是请求以读改写方式向目标条带写入待写数据,首先判断缓存中是否存储有目标数据,若缓存中存储有目标数据,则从缓存中读取目标数据,并基于目标数据,以读改写方式将待写数据写入目标条带。由于是直接使用缓存中存储的目标数据,实现以读改写方式将待写数据写入目标条带中,因此,在执行涉及读改写的写请求时,不必从磁盘阵列中读取目标数据,一方面,有助于提升读改写方式中的读性能,从而实现提高该写请求的写性能,进而实现提升存储系统的写性能。另一方面,由于能够有效减少实际的读盘操作,因此,能够减少磁盘阵列中的硬盘的损耗。此外,由于缓存中的数据是待读数据,因此,磁盘阵列卡无需另外配置超级电容实现掉电保护,在缓存掉电之后,只需从磁盘阵列中重新写入缓存即可,这样,不仅可以降低硬件成本,还可以简化磁盘阵列卡的处理逻辑,降低软件成本。
在一种可能的实现方式中,基于目标数据,以读改写方式将待写数据写入目标条带中,包括:根据待写数据和目标数据,确定目标校验数据;将目标校验数据和待写数据写入目标条带中。
在该实现方式中,提供一种以读改写方式将待写数据写入目标条带的具体实现方式,该具体实现方式中,先根据待写数据和目标数据确定目标条带的目标校验数据,之后,将目标校验数据和待写数据一起写入目标条带中。由于是在待写数据写入目标条带前,确定目标条带写入待写数据后的新校验数据(即目标校验数据),相对于在待写数据写入目标条带后,再基于目标条带中的所有数据确定新校验数据,有助于缩短写请求的执行时间,实现更快速的完成写请求,进而有助于提高存储系统的写性能。
另一种可能的实现方式中,读改写方式的待写数据待写入目标条带的目标条带单元;目标数据包括目标条带的目标条带单元中当前存储的数据。
在该实现方式中,设置目标数据包括目标条带单元中当前存储的数据,基于此,若缓存中存储有目标条带单元中当前存储的数据,则可以从缓存中读取目标条带单元中当前存储的数据。由于写请求涉及读改写方式时,目标条带单元中当前存储的数据的数量与待写数据被划分成的数据块的数量相等,因此,设置目标数据包括目标条带单元中当前存储的数据,可以避免从磁盘阵列中读取数量较多的数据,这样,有助于提高写请求的执行速度,进而有助于提高存储系统的写性能。
另一种可能的实现方式中,目标数据包括目标条带的原校验数据。
在该实现方式中,设置目标数据包括目标条带的原校验数据,基于此,若缓存中存储有目标条带的原校验数据,则可以从缓存中读取目标条带的原校验数据。由于目标条带的原校验数据是读改写必然要改写的内容,因此,设置目标数据包括目标条带的原校验数据,可以避免从磁盘阵列中读取原校验数据,这样,有助于提高写请求的执行速度,进而有助于提高存储系统的写性能。
另一种可能的实现方式中,磁盘阵列包括多个条带;在接收写请求之前,该方法还包括:向缓存写入多个条带的多个原校验数据。
在该实现方式中,由于多个条带中的每个条带都只有一个校验数据,且以读改写方式向磁盘阵列中的任意一个条带写入数据时,都需要对该一个条带的原校验数据进行改写,因此,在接收写请求之前,先将多个条带的多个原校验数据写入缓存中,有助于提高缓存中存储的数据覆盖目标数据的概率,进而有助于提高存储系统的写性能。
另一种可能的实现方式中,磁盘阵列包括多个条带;在接收写请求之前,该方法还包括:向缓存写入多个条带的至少一个条带单元中存储的数据;至少一个条带单元的历史读写次数、历史读写频率或被改写次数满足预设条件。
在该实现方式中,在接收写请求之前,先将磁盘阵列的多个条带的至少一个条带单元中存储的数据写入缓存中。由于写入缓存中的数据所在的条带单元,其历史读写次数、历史读写频率或被改写次数满足预设条件,相当于是将磁盘阵列中被读写或被改写次数较高的部分数据写入缓存中,这样,有助于提高缓存中存储的数据覆盖目标数据的概率,进而有助于提高存储系统的写性能。
另一种可能的实现方式中,该方法还包括:若缓存中未存储有目标数据,从磁盘阵列中读取目标数据。
在该实现方式中,若缓存中未存储有目标数据,则根据待写数据和磁盘阵列中存储的目标数据确定目标校验数据,这样,有助于保证实现确定目标条带的新校验数据(即目标校验数据)。
另一种可能的实现方式中,磁盘阵列卡向磁盘阵列写入数据的模式为写穿模式。
另一种可能的实现方式中,该方法还包括:接收读请求,读请求用于请求读取磁盘阵列中的第一数据;若缓存中存储第一数据,从缓存中读取第一数据;返回第一数据。
在该实现方式中,在接收到读请求后,若缓存中存储有第一数据,则从缓存中读取第一数据,并返回从缓存中读取到的该第一数据。一方面,由于缓存中预先存储了磁盘阵列中部分数据,通过从缓存中读取第一数据,有助于充分利用缓存中存储中的数据,以及提高缓存的利用率。另一方面,由于缓存的访问速度远高于磁盘阵列,从缓存中读取第一数据,有助于提高第一数据的读取速度,进而有助于提高存储系统的读性能。
第二方面,提供了一种数据写入方法,应用于存储系统,存储系统包括磁盘阵列和磁盘阵列卡,磁盘阵列卡中包括缓存,磁盘阵列被划分为多个条带;方法包括:接收写请求,写请求用于请求以重构写方式向目标条带写入待写数据;若缓存中存储有目标数据,则从缓存中读取目标数据,目标数据为目标条带中存储的数据;基于目标数据,以重构写方式将待写数据写入目标条带中。
在该方案中,接收到写请求后,若该写请求是请求以重构写方式向目标条带写入待写数据,首先判断缓存中是否存储有目标数据,若缓存中存储有目标数据,则从缓存中读取目标数据,并基于目标数据,以重构写方式将待写数据写入目标条带。由于是直接使用缓存中存储的目标数据,实现以重构写方式将待写数据写入目标条带中,因此,在执行涉及重构写的写请求时,不必从磁盘阵列中读取目标数据,一方面,有助于提升重构写方式中的读性能,从而实现提高该写请求的写性能,进而实现提升存储系统的写性能。另一方面,由于能够有效减少实际的读盘操作,因此,能够减少磁盘阵列中的硬盘的损耗。此外,由于缓存中的数据是待读数据,因此,磁盘阵列卡无需另外配置超级电容实现掉电保护,在缓存掉电之后,只需从磁盘阵列中重新写入缓存即可,这样,不仅可以降低硬件成本,还可以简化磁盘阵列卡的处理逻辑,降低软件成本。
在一种可能的实现方式中,基于目标数据,以重构写方式将待写数据写入目标条带中,包括:根据待写数据和目标数据,确定目标校验数据;将目标校验数据和待写数据写入目标条带中。
在该实现方式中,提供一种以重构写方式将待写数据写入目标条带的具体实现方式,该具体实现方式中,先根据待写数据和目标数据确定目标条带的目标校验数据,之后,将目标校验数据和待写数据一起写入目标条带中。由于是在待写数据写入目标条带前,确定目标条带写入待写数据后的新校验数据(即目标校验数据),相对于在待写数据写入目标条带后,再基于目标条带中的所有数据确定新校验数据,有助于缩短写请求的执行时间,实现更快速的完成写请求,进而有助于提高存储系统的写性能。
另一种可能的实现方式中,重构写方式的待写数据待写入目标条带的目标条带单元;目标数据包括目标条带的非目标条带单元中当前存储的数据。
在该实现方式中,设置目标数据包括非目标条带单元中当前存储的数据,基于此,若缓存中存储的数据包括非目标条带单元中当前存储的数据,则可以从缓存中读取非目标条带单元中当前存储的数据。由于非目标条带单元中当前存储的数据的数量小于待写数据被划分成的数据块的数量,因此,设置待改写数据包括非目标条带单元中当前存储的数据,可以避免从磁盘阵列中读取数量较多的数据,这样,有助于提高写请求的执行速度,进而有助于提高存储系统的写性能。
另一种可能的实现方式中,磁盘阵列包括多个条带;在接收写请求之前,该方法还包括:向缓存写入多个条带的至少一个条带单元中存储的数据;至少一个条带单元的历史读写次数或历史读写频率满足预设条件。
另一种可能的实现方式中,该方法还包括:若缓存中未存储有目标数据,从磁盘阵列中读取目标数据。
另一种可能的实现方式中,磁盘阵列卡向磁盘阵列写入数据的模式为写穿模式。
另一种可能的实现方式中,该方法还包括:接收读请求,读请求用于请求读取磁盘阵列中的第一数据;若缓存中存储有第一数据,从缓存中读取第一数据;返回第一数据。
第三方面,提供了一种数据写入装置,该装置包括:用于执行第一方面的任意一种方法的功能单元,各个功能单元所执行的动作通过硬件实现或通过硬件执行相应的软件实现。例如,数据写入装置可以包括:接收单元、处理单元和写入单元;接收单元,用于接收写请求,写请求用于请求以读改写方式向目标条带写入待写数据;处理单元,用于若缓存中存有目标数据,则从缓存中读取目标数据,目标数据为目标条带中存储的数据;写入单元,用于基于目标数据,以目标写方式将待写数据写入目标条带中。
第四方面,提供了一种数据写入装置,该装置包括:用于执行第一方面的任意一种方法的功能单元,各个功能单元所执行的动作通过硬件实现或通过硬件执行相应的软件实现。例如,数据写入装置可以包括接收单元、处理单元和写入单元;接收单元,用于接收写请求,写请求用于请求以重构写方式向目标条带写入待写数据;处理单元,用于若缓存中存有目标数据,则从缓存中读取目标数据,目标数据为目标条带中存储的数据;写入单元,用于基于目标数据,以目标写方式将待写数据写入目标条带中。
第五方面,提供了一种存储系统,包括:磁盘阵列卡和磁盘阵列;磁盘阵列卡包括缓存,磁盘阵列被划分为多个条带,缓存用于存储多个条带中的至少一个条带单元中存储的数据,至少一个条带单元的历史读写次数、历史读写频率或被改写次数满足预设条件;磁盘阵列卡用于执行上述第一方面提供的任意一种方法,或执行上述第二方面提供的任意一种方法。
第六方面,提供了一种存储系统,包括:磁盘阵列卡和磁盘阵列,磁盘阵列卡包括缓存,磁盘阵列被划分为多个条带。磁盘阵列卡用于:接收写请求,写请求用于请求以读改写方式向目标条带写入待写数据;磁盘阵列卡还用于:若缓存中存有目标数据,则从缓存中读取目标数据,目标数据为目标条带中存储的数据;磁盘阵列卡还用于:基于目标数据,以目标写方式将待写数据写入目标条带中。
在一种可能的实现方式中,磁盘阵列卡具体用于:根据待写数据和目标数据,确定目标校验数据;将目标校验数据和待写数据写入目标条带中。
另一种可能的实现方式中,读改写方式的待写数据待写入目标条带的目标条带单元;目标数据包括目标条带的目标条带单元中当前存储的数据。
另一种可能的实现方式中,目标数据包括目标条带的原校验数据。
另一种可能的实现方式中,磁盘阵列包括多个条带;在接收写请求之前,磁盘阵列卡还用于:向缓存写入多个条带的至少一个条带单元中存储的数据;所述至少一个条带单元的历史读写次数、历史读写频率或被改写次数满足预设条件。
另一种可能的实现方式中,磁盘阵列包括多个条带;在接收写请求之前,磁盘阵列卡还用于:向缓存写入多个条带的多个原校验数据。
另一种可能的实现方式中,磁盘阵列卡还用于:若缓存中未存储有目标数据,从磁盘阵列中读取目标数据。
另一种可能的实现方式中,磁盘阵列写入数据的模式为写穿模式。
另一种可能的实现方式中,磁盘阵列卡还用于:接收读请求,读请求用于请求读取磁盘阵列中的第一数据;若缓存中存储有第一数据,从缓存中读取第一数据;返回第一数据。
第七方面,提供了一种存储系统,包括:磁盘阵列卡和磁盘阵列,磁盘阵列卡包括缓存,磁盘阵列被划分为多个条带。磁盘阵列卡用于:接收写请求,写请求用于请求以重构写方式向目标条带单元写入待写数据;磁盘阵列卡还用于:若缓存中存有目标数据,则从缓存中读取目标数据,目标数据为目标条带中存储的数据;磁盘阵列卡还用于:基于目标数据,以目标写方式将待写数据写入目标条带中。
在一种可能的实现方式中,磁盘阵列卡具体用于:根据待写数据和目标数据,确定目标校验数据;将目标校验数据和待写数据写入目标条带中。
在一种可能的实现方式中,磁盘阵列包括多个条带;在接收写请求之前,磁盘阵列卡还用于:向缓存写入多个条带的至少一个条带单元中存储的数据;至少一个条带单元的历史读写次数或历史读写频率满足预设条件。
另一种可能的实现方式中,磁盘阵列卡还用于:若缓存中未存储有目标数据,从磁盘阵列中读取目标数据。
另一种可能的实现方式中,磁盘阵列写入数据的模式为写穿模式。
另一种可能的实现方式中,磁盘阵列卡还用于:接收读请求,读请求用于请求读取磁盘阵列中的第一数据;若缓存中存储有第一数据,从缓存中读取第一数据;返回第一数据。
第八方面,提供了一种服务器,包括:处理器和第五方面/第六方面/第七方面的存储系统,该存储系统与处理器连接。
第九方面,提供了一种服务器,包括:包括:处理器和存储器,处理器与存储器连接。存储器用于存储计算机执行指令,处理器执行存储器存储的计算机执行指令,从而实现第一方面提供的任意一种方法,或实现第二方面提供的任意一种方法。
第十方面,提供了一种芯片,该芯片包括:处理器和接口电路;接口电路,用于接收代码指令并传输至处理器;处理器,用于运行代码指令以执行上述第一方面提供的任意一种方法,或执行上述第二方面提供的任意一种方法。
第十一方面,提供了一种计算机可读存储介质,存储有计算机执行指令,当计算机执行指令在计算机上运行时,使得计算机执行上述第一方面提供的任意一种方法,或执行上述第二方面提供的任意一种方法。
第十二方面,提供了一种计算机程序产品,包括计算机执行指令,当计算机执行指令在计算机上运行时,使得计算机执行上述第一方面提供的任意一种方法,或执行上述第一方面提供的任意一种方法。
其中,第二方面至第十二方面中任一种实现方式所带来的技术效果可参见第一方面中不同实现方式所带来的技术效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种服务器的系统架构图;
图2为本申请实施例提供的一种磁盘阵列卡的示意图;
图3为本申请实施例提供的一种磁盘阵列的示意图;
图4为本申请实施例提供的另一种磁盘阵列的示意图;
图5为本申请实施例提供的一种数据写入方法的流程图;
图6为本申请实施例提供的一种读改写的原理图;
图7为本申请实施例提供的另一种数据写入方法的流程图;
图8为本申请实施例提供的一种重构写的原理图;
图9为本申请实施例提供的一种数据读取方法的流程图;
图10为本申请实施例提供的一种数据写入装置的示意图;
图11为本申请实施例提供的另一种数据写入装置的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
其中,在本申请的描述中,除非另有说明,“/”表示前后关联的对象是一种“或”的关系,例如,A/B可以表示A或B;本申请中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。
并且,在本申请的描述中,除非另有说明,“多个”是指两个或多于两个。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。同时,在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念,便于理解。
首先,对本申请实施例的应用场景进行示例性介绍。
存储系统是服务器的重要组成部分之一。目前,存储系统主要包括磁盘阵列(Redundant Arrays of Independent Disks,RAID)和磁盘阵列卡,磁盘阵列是由很多块独立的磁盘组合成的磁盘组,磁盘阵列卡是管理磁盘阵列的部件,主要用于数据分发以及数据冗余备份等。
磁盘阵列卡向磁盘阵列写入数据时,主要有整体写、重构写以及读改写等写入方式。
整体写:若待写数据占用待写入条带的条带单元的数量,等于待写入条带的所有条带单元的数量,即需要改写待写入条带的所有条带单元,则采用整体写方式。此时,待写入条带的新校验数据可以根据待写数据计算得到,因此,不需要对磁盘阵列执行额外的读、写操作。
例如,待写入条带包括6个条带单元和1个校验单元,待写数据被划分为6个数据块,则待写数据以整条写方式写入待写入条带。
重构写:若待写数据占用待写入条带的条带单元的数量,大于或等于待写入条带的所有条带单元的数量的一半,且小于待写入条带的所有条带单元的数量,则采用重构写方式。此时,待写入条带的新校验数据可以根据待写入条带中不需要改写的条带单元中的数据,以及待写数据计算得到,因此,需要先从磁盘阵列中读取待写入条带中不需要改写的条带单元中的数据,在计算得到待写入条带的新校验数据后,将待写数据、新校验数据以及从磁盘阵列中读取待写入条带中不需要改写的条带单元中的数据,一起写入待写入条带。
例如,待写入条带包括6个条带单元和1个校验单元,待写数据被划分为4个数据块,则待写数据以重构写方式写入待写入条带。
读改写:若待写数据占用待写入条带的条带单元的数量,小于待写入条带的所有条带单元的数量的一半,则采用读改写方式。此时,待写入条带的新校验数据可以根据待写入条带中需要改写的条带单元中的数据、待写入条带的原校验数据以及待写数据计算得到,因此,需要先从磁盘阵列中读取待写入条带中需要改写的条带单元中的数据和待写入条带的原校验数据,在计算得到待写入条带的新校验数据后,将待写数据和新校验数据写入待写入条带。
例如,待写入条带包括6个条带单元和1个校验单元,待写数据被划分为2个数据块,则待写数据以读改写方式写入待写入条带。
由于磁盘阵列卡向磁盘阵列写入数据时,若写入方式为读改写或重构写,则需要先从磁盘阵列中读取部分数据,之后,才能将待写数据写入磁盘阵列中,这就导致写入效率较低,严重影响了整个存储系统的写入性能。
有鉴于此,本申请实施例提供了一种数据写入方式,接收到写请求后,若该写请求是请求以目标写方式(如读改写方式或重构写方式)向目标条带写入待写数据,首先判断缓存中是否存储有目标数据,若缓存中存储有目标数据,则从缓存中读取目标数据,并基于目标数据,以目标写方式将待写数据写入目标条带。由于是直接使用缓存中存储的目标数据,实现以目标写方式将待写数据写入目标条带中,因此,在执行涉及目标写方式的写请求时,不必从磁盘阵列中读取目标数据,一方面,有助于提升目标写方式中的读性能,从而实现提高该写请求的写性能,进而实现提升存储系统的写性能。另一方面,由于能够有效减少实际的读盘操作,因此,能够减少磁盘阵列中的硬盘的损耗。此外,由于缓存中的数据是待读数据,因此,磁盘阵列卡无需另外配置超级电容实现掉电保护,在缓存掉电之后,只需从磁盘阵列中重新写入缓存即可,这样,不仅可以降低硬件成本,还可以简化磁盘阵列卡的处理逻辑,降低软件成本。
其次,对本申请实施例的系统架构进行示例性介绍。
如图1所示,为服务器的架构图。该服务器包括存储系统和中央处理器CPU。该存储系统包括磁盘阵列(RAID)、磁盘阵列卡(RAID卡)和背板,磁盘阵列卡通过背板与磁盘阵列连接。磁盘阵列卡可以插在主板上,例如,插在主板的PCIE槽位上,上行通过PCIE协议与CPU进行通信,接收CPU发送的读写请求,并返回读写请求的读写结果。下行通过SAS协议和背板、磁盘阵列或虚拟磁盘组进行通信。
其中,磁盘阵列(RAID),也可以称为虚拟磁盘组(virtual drive,VD)。
磁盘阵列卡包括缓存。磁盘阵列卡可以用于接收读写请求及执行读写请求,例如,将写请求携带的数据写入磁盘阵列,以及从磁盘阵列读取读请求所请求的数据等。缓存用于存储磁盘阵列中的部分数据,例如,缓存可以是双倍数据速率Cache(double data rateCache,DDR Cache)。
在一些实施例中,磁盘阵列卡还包括控制器,控制器用于接收读写请求及执行读写请求。
在一些实施例中,磁盘阵列卡或控制器中存储有固件程序(Firmware,FW)。
需要说明的,下述实施例中的磁盘阵列卡执行某个步骤(如S401),可以认为是磁盘阵列卡调用固件程序执行该步骤。另外,在磁盘阵列卡包括控制器时,下述实施例中由磁盘阵列卡执行的某个步骤(如S401)具体可以由控制器执行。此时,可以认为是控制器调用固件程序执行该步骤。
以下,结合图2,对图1中的磁盘阵列卡中的固件程序所涉及的模块进行简要介绍。
如图2所示,固件程序包括读写判别模块、写模块、读改写模块、读模块、缓存模块、校验模块。
读写判别模块:主要用于对CPU下发的读写请求进行判别,例如,判断CPU下发的读写请求是读请求还是写请求,以及判断读写请求的下发对象是否为磁盘阵列等。
写模块:判断写请求是否涉及“读改写”操作,若判断结果为是,则调用读改写模块,若判断结果为否,则直接将写请求所携带的数据写入磁盘阵列。
读改写模块:主要用于执行“读改写”操作所涉及的读写操作,例如,读取“读改写”操作所涉及的目标数据,其中,目标数据可以是待写数据所需写入条带的原校验数据、待写数据所需写入条带单元中存储的原数据等,以及将待写数据和待写数据所需写入条带的新校验数据写入条带。
读模块:主要用于执行CPU侧下发的读请求。当处理CPU侧下发的读请求时,先判断缓存中存储的数据是否包括待读数据,若判断结果为是,则从缓存读取该待读数据,若判断结果为否,则从磁盘阵列中读取该待读数据。
缓存模块:判断缓存中存储的数据是否包括目标数据、待读数据等,以及周期性刷新缓存中存储数据。例如,可以根据缓存中存储的数据的命中情况,以及读数据、写数据在磁盘阵列的多个条带上的分布及频率,重新确定从磁盘阵列中向缓存写入的热数据。
检验模块:主要用于判断缓存中存储的数据是否包括读改写方式所需使用的目标数据,以及执行生成校验数据的校验运算,如计算出待写数据所需写入条带的新校验数据,并发送给读改写模块。
示例性的,校验运算可以是异或(XOR)校验等。需要说明的,本申请实施例磁盘阵列所使用的校验方法不做限制。
在一些实施例中,如图1所示,存储系统包括多个磁盘阵列,例如,N个磁盘阵列,N为大于1的正整数。在另一些实施例中,存储系统也可以包括一个磁盘阵列。
需要说明的,本申请实施例对存储系统所包括的磁盘阵列的数量不做限制。
在一些实施例中,磁盘阵列包括多个硬盘。硬盘包括固态硬盘(solid statedrive,SSD)。
需要说明的,本申请实施例对磁盘阵列中的硬盘的具体数量不做限制。此外,存储系统中不同磁盘阵列中的硬盘的数量,可以相等,或者,也可以不相等,本申请对此也不做限制。
在一些实施例中,多个硬盘被划分为多个条带,多个条带中的每个条带包括多个条带单元。其中,每个条带的条带单元的数量与磁盘阵列所包括的硬盘的数量相等。
以下,对本申请实施例中的磁盘阵列(RAID)进行示例性介绍。
在一些实施例中,以磁盘阵列为RAID5为例,结合图3,对图1中的磁盘阵列进行示例性介绍。
如图3所示,磁盘阵列包括硬盘1、硬盘2、硬盘3、硬盘4。该磁盘阵列包括三个条带,分别为条带A、条带B和条带C。条带A包括A1、A2、A3、Ap等条带单元,条带B包括B1、B2、B3、Bp等条带单元,条带C包括C1、C2、C3、Cp等条带单元。
需要说明的,图3所示磁盘阵列包括四个硬盘仅为示例性说明,本申请实施例对磁盘阵列所包括的硬盘的数量不做限制。
以下,以条带A为例,对磁盘阵列的条带进行示例性介绍。
条带A的多个条带单元包括存储单元和校验单元。其中,存储单元用于存储数据,如图3所示的A1、A2、A3等。校验单元用于存储条带A的校验数据,也即,条带A的所有存储位所存储的数据的校验数据,如图3所示的Ap等。
基于此,磁盘阵列卡向磁盘阵列写数据时,会将待写数据划分为多个数据块,之后,将多个数据块分别写入一个条带的多个存储单元,并将该一个条带的新校验数据写入校验单元。
在另一些实施例中,以磁盘阵列为RAID6为例,结合图4,对图1中的磁盘阵列进行示例性介绍。
如图4所示,磁盘阵列包括硬盘1、……、硬盘5。该磁盘阵列包括三个条带,分别为条带D、条带E和条带F。条带D包括D1、D2、D3、Dp、Dq等条带单元,条带E包括E1、E2、E3、Ep、Eq等条带单元,条带F包括F1、F2、F3、Fp、Fq等条带单元。
以下,以条带D为例,对磁盘阵列的条带进行示例性介绍。
条带D的多个条带单元包括存储单元、第一校验单元和第二校验单元。其中,存储单元用于存储数据,如图4所示的D1、D2、D3等。第一校验单元用于存储条带A的校验数据,也即,条带A的所有存储位所存储的数据的校验数据,如图4所示的Dp等。第二校验单元也是用于存储条带A的校验数据,如图4所示的Dq等。
需要说明的,图4所示磁盘阵列包括五个硬盘仅为示例性说明,本申请实施例对磁盘阵列所包括的硬盘的数量不做限制。
需要说明的,在图1所示的存储系统包括至少两个磁盘阵列的情况下,图3或图4所示的磁盘阵列可以是图1所示的存储系统的至少两个磁盘阵列中的任意一个磁盘阵列。
需要说明的,本申请实施例描述的系统架构以及应用场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着系统架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
为了便于理解,以下结合附图对本申请提供的数据写入方法进行示例性介绍。该数据写入方法适用于图1所示的服务器中的存储系统。本申请以下实施例将分成四个部分对数据写入方法的方案进行示例性介绍。
第一部分,介绍了上述存储系统中的磁盘阵列卡向磁盘阵列写入数据的模式,以及磁盘阵列卡将磁盘阵列中的数据写入缓存的过程;
第二部分,结合图5至图6介绍第一部分中的存储系统写入数据时,若涉及读改写方式,写请求所携带的待写数据写入磁盘阵列的过程。
第三部分,结合图7至图8介绍第一部分中的存储系统写入数据时,若涉及重构写方式,写请求所携带的待写数据写入磁盘阵列的过程。
第四部分,结合图9介绍第一部分、第二部分以及第三部分的存储系统读取数据的过程。
以下,对第一部分中的磁盘阵列卡向磁盘阵列写入数据的模式进行介绍。
可选地,磁盘阵列卡向磁盘阵列写入数据的模式为写穿(write through,WT)模式或非预读写穿(no read ahead write through,NRWT)模式。
写穿模式,是指磁盘阵列卡向磁盘阵列写数据时,不经过缓存,而是将待写数据直接写入磁盘阵列。具体来说,就是磁盘阵列卡直接将待写数据写入磁盘阵列,而不是先将待写数据写入缓存,再从缓存写入磁盘阵列。
非预读写穿模式,是指磁盘阵列卡从磁盘阵列读数据时采用非预读模式,向磁盘阵列写数据时采用写穿模块。非预读模式是指磁盘阵列卡从磁盘阵列读取数据,不经缓存。具体来说,就是磁盘阵列卡接收到CPU的读请求后,直接从磁盘阵列读取数据并返回给CPU,不会先将从磁盘阵列读取的数据写到缓存中,再从缓存中读取数据返回给CPU。
基于上述,由于磁盘阵列卡向磁盘阵列写入数据的模式为写穿模式或非预读写穿,因此,磁盘阵列卡的缓存为闲置状态。
以下,对第一部分中的磁盘阵列卡将磁盘阵列中的数据写入缓存的过程进行介绍。
对于磁盘阵列卡如何将磁盘阵列中的数据写入缓存,包括多种实现方式,以下通过方式1和方式2进行示例性介绍。
需要说明的,方式1和方式2可以结合使用,或者,也可以单独使用,本申请实施例对此不做限制。
方式1:磁盘阵列卡向缓存写入多个条带的多个原校验数据。
例如,多个条带分别为条带1、……、条带K,存储条带1、……、条带K的原校验数据的条带单元为Ap、……、Kp,则磁盘阵列卡,将Ap、……、Kp中存储的数据写入缓存中。
在该方式中,由于多个条带中的每个条带都只有一个校验数据,且以读改写方式向磁盘阵列中的任意一个条带写入数据时,都需要对该一个条带的原校验数据进行改写,因此,在接收写请求之前,先将多个条带的多个原校验数据写入缓存中,有助于提高缓存中存储的数据覆盖目标数据的概率,进而有助于提高存储系统的写性能。
方式2:磁盘阵列卡向缓存写入多个条带中的至少一个条带单元中存储的数据。
可选地,磁盘阵列卡按照预设周期向缓存写入多个条带的至少一个条带单元存储的数据。
其中,预设周期可以是500m毫秒、1秒、5秒或10秒等。需要说明的,本申请实施例对预设周期的时长不做限制。
对于至少一个条带单元所满足的条件,包括多种情况,以下,通过情况1至情况3进行示例性说明。
例如,多个条带包括条带1,条带1包括多个条带单元,分别为条带单元1、……、条带单元k。其中,条带1可以是多个条带中的任意一个条带。
以下,以条带1为例,对于条带1的至少一个条带单元所满足的条件,进行示例性说明。
情况1:至少一个条带单元的历史读写次数满足预设条件。
其中,条带单元的读写次数,是指磁盘阵列卡从条带单元中读取数据的次数。其中,每次读取的数据的内容可以不同,或者,也可以相同。
例如,条带1的条带单元1中存储有数据a,磁盘阵列卡从条带单元1中读取2次数据a,则条带单元1的读写次数累计为2,之后,条带单元1中存储的数据a被改写为数据b,磁盘阵列卡又从条带单元1中读取3次数据b,则条带单元1的读写次数累计为5次。
可选地,历史读写次数为预设时间段内的历史读写次数。
在一些实施例中,预设时间段小于或等于预设周期的时长。另外,预设时间段是向缓存写入至少一个条带单元中存储的数据的最近预设时间段。
需要说明的,本申请实施例对预设时间段的具体时长不做限制,例如,可以小于预设周期的时长,或者,也可以等于预设周期的时长。
示例性的,预设周期为7天,例如,磁盘阵列卡每周一向缓存写入条带1的至少一个条带单元中存储的数据,预设时间段可以是上一周的周一至周日,或上一周的周三至周日等。
在一个示例中,历史读写次数满足预设条件包括历史读写次数大于或等于预设阈值。基于此,磁盘阵列卡根据预设时间段的历史读写请求,分别确定条带单元1、……、条带单元k的历史读写次数。之后,根据条带单元1、……、条带单元k中的每个条带单元的历史读写次数与预设阈值的大小关系,确定是否将条带单元中存储的数据写入缓存。例如,条带单元1的历史读写次数大于或等于预设阈值,则该条带单元1的历史读写次数满足预设条件,因此,将条带单元1中存储的数据写入缓存。
在另一个示例中,历史读写次数满足预设条件包括历史读写次数的排序大于或等于预设阈值。基于此,磁盘阵列卡根据预设时间段的历史读写请求,分别确定条带单元1、……、条带单元k的历史读写次数。之后,根据历史读写次数从大到小的顺序,对条带单元1、……、条带单元k进行排序,并将排序大于或等于预设阈值的条带单元中存储的数据写入缓存。例如,预设阈值为n(n为大于等于1的正整数),则将前n个条带单元中存储的数据写入缓存中。当然,还可以根据历史读写次数从小到大的顺序,对条带单元1、……、条带单元k进行排序,然后,将后n个条带单元中存储的数据写入缓存。
情况2:至少一个条带单元的历史读写频率满足预设条件。
其中,条带单元的读写频率,是指磁盘阵列卡从条带单元中读取数据的频率。其中,每次读取的数据的内容可以不同,或者,也可以相同。
可选地,历史读写频率为预设时间段内的历史读写频率。
需要说明的,历史读写频率满足预设条件的原理与历史读写次数满足预设条件的原理相同,因此,关于历史读写频率满足预设条件的相关说明,可以参考上述历史读写次数满足预设条件的相关说明,此处不再细述。
情况3:至少一个条带单元的被改写次数满足预设条件。
以下,以条带单元1为例,对至少一个条带单元的被改写次数进行示例性说明。
例如,条带单元1中当前存储有数据1。磁盘阵列卡接收到写请求1,该写请求1用于请求以读改写方式将数据2写入条带单元1,基于该写请求1,磁盘阵列卡将数据2写入条带单元1,条带单元1中存储的数据由数据1被改写成数据2,因此,条带单元1完成一次被改写。
基于上述,条带单元的被改写次数,可以认为是,条带单元中存储的数据的被改写次数。
可选地,被改写次数为预设时间段内的被改写次数。
需要说明的,被改写次数满足预设条件的原理与历史读写次数满足预设条件的原理相同,因此,关于被改写次数满足预设条件的相关说明,可以参考上述历史读写次数满足预设条件的相关说明,此处不再细述。
需要说明的,上述情况1至情况3中的预设阈值,可以相同,或者,也可以不同,本申请实施例对此不做限制。
可选地,磁盘阵列卡还向缓存写入至少一个条带单元所在条带的条带标识和/或至少一个条带单元的条带单元标识。
示例性的,多个条带包括第一条带,第一条带包括第一条带单元。磁盘阵列卡向缓存写入第一条带单元中存储的数据时,还向缓存写入第一条带的标识和/或第一条带单元的标识。
需要说明的,第一条带单元可以是满足预设条件的任意一个条带单元。
例如,上述方式1或方式2中,磁盘阵列卡将磁盘阵列中的数据a写入缓存,数据a存储于磁盘阵列的条带a的条带单元a中,则磁盘阵列卡还向缓存条带a的标识和/或条带单元a的标识。
在上述实施例中,通过将至少一个条带单元中存储的数据,以及至少一个条带单元所在条带的条带标识和/或至少一个条带单元的条带单元标识同时写入缓存,这样,在确定缓存是否存储有目标数据时,可以根据目标数据在磁盘阵列中的条带标识和/或条带单元标识确定。
可选地,磁盘阵列卡还向缓存写入至少一个条带单元中存储的数据的标识。
在一些实施例中,至少一个条带单元中存储的数据包括数据b,数据b在磁盘阵列中的标识为b,磁盘阵列卡向缓存写入数据b时,同时写入数据b的标识(即b)。
上述实施例中,通过将至少一个条带单元中存储的数据以及该数据的标识同时写入缓存,这样,在确定缓存中是否存储的有目标数据时,可以根据目标数据在磁盘阵列中标识确定。
基于上述,在磁盘阵列卡向磁盘阵列写入数据的模式为写穿模式或非预读写穿模式,且缓存中存储的数据为从磁盘阵列中写入缓存的数据,即,缓存中的数据均是待读数据,因此,硬件方面,磁盘阵列卡可以不必配置备电容、备电模块等部件用于掉电保护,一旦掉电,缓存中的数据可以直接丢弃,上电后,再从磁盘阵列中重新读取至缓存即可,软件方面,磁盘阵列卡的固件程序可以不必包括掉电保护程序,进而简化了软硬件的逻辑,有助于降低成本。
以上,为本申请实施例的第一部分。以下,为本申请实施例的第二部分,结合图5至图6介绍第一部分中的存储系统写入数据时,若涉及读改写方式,写请求所携带的待写数据写入磁盘阵列的过程。
图5是根据一示例性实施例示出的一种数据写入方法的流程图。示例性的,该方法包括如下所示的S501-S505。
在一些实施例中,存储系统包括磁盘阵列卡和磁盘阵列,磁盘阵列卡包括缓存。磁盘阵列被划分为多个条带。
其中,下述的目标条带可以是磁盘阵列卡根据存储策略从多个条带中选取到的。当接收到写请求时,磁盘阵列卡可按照该存储策略从多个条带中选取到对应的目标条带,该目标条带用于写入接收到的写请求中的待写数据。存储策略可以预先设定,也可以根据条带的写入频率或空闲率来调整等,在此不受限制。
可选地,磁盘阵列卡支持以读改写方式向磁盘阵列写入待写数据,例如,可以是RAID5、RAID6等型号的磁盘阵列卡。
需要说明的,本申请实施例对磁盘阵列卡的型号不做限制,只要是支持以读改写方式向磁盘阵列写入待写数据的磁盘阵列卡均可以。
S501:磁盘阵列卡接收写请求,写请求用于请求以读改写方式向目标条带写入待写数据。
在一些实施例中,磁盘阵列卡在接收到CPU发送的读写请求后,先判断该读写请求为写请求还是读请求。若是写请求,则根据写请求所携带的待写数据以及待写地址,判断该写请求是否涉及读改写操作。若不涉及读改写操作,则将写请求所携带的数据写入磁盘阵列。若涉及读改写操作,也即,需要以读改写方式向目标条带写入待写数据,则该写请求属于S501中的写请求。
例如,可以根据写请求所携带的待写数据被划分的数据块的数量,与待写地址所指示的目标条带的条带单元的数量之间的关系确定该写请求是否涉及读改写操作。
示例性的,目标条带包括7个条带单元,其中,6个条带单元属于存储类条带单元,用于存储写请求所携带的数据,1个条带单元属于校验类条带单元,用于存储目标条带的校验数据。若待写数据被划分为2个数据块,也即,小于存储类条带单元的总数的一半(即3),则待写数据以读改写方式写入目标条带。
或者,可以根据写请求所携带的待写数据的大小或占用空间等来确定该写请求是否涉及读改写操作。例如,若写请求中包含的待写数据的大小或占用空间小于或等于预设值,则该写请求涉及读改写操作,待写数据以读改写方式写入目标条带,若写请求中包含的待写数据的大小或占用空间大于该预设值,则该写请求不涉及读改写操作,待写数据以非读改写方式写入磁盘阵列。需要指出的是,该预设值的大小可以根据条带的大小或容量空间来确定,或者该预设值可以由用户根据实际应用情况来设定等,在此不受限制。
S502:磁盘阵列卡判断缓存中是否存储有目标数据,目标数据为目标条带中存储的数据。
其中,目标数据为读改写方式所需使用的目标条带的待改写数据。
可选地,缓存中存储的数据是接收写请求之前从磁盘阵列中写入缓存的。其中,实现过程可以参考上述第一部分中的内容。
可选地,读改写方式的待写数据待写入目标条带的目标条带单元。目标数据包括目标条带的目标条带单元中当前存储的数据和/或目标条带的原校验数据。
例如,如图6所示,目标条带的6个存储类条带单元分别为条带单元1、……、条带单元6,条带单元1、……、条带单元6中分别存储有数据1、……、数据6,目标条带的1个校验类条带单元为条带单元7,条带单元7中存储有目标条带的原校验数据a。若待写数据划分为2个数据块,例如,分别为数据块a和数据块b,待写入的目标条带单元分别为条带单元1和条带单元2,则目标数据包括条带单元1中存储的数据1、条带单元2中存储的数据2以及条带单元7中存储的原校验数据a。
在一些实施例中,若缓存中存储有目标条带单元中当前存储的数据和目标条带的原校验数据,则磁盘阵列卡执行S503。若缓存中未存储有目标条带单元中当前存储的数据和目标条带的校验数据,则磁盘阵列卡执行S504。
在另一些实施例中,若缓存中存储有目标条带单元中当前存储的数据,且未存储有目标条带的原校验数据,则磁盘阵列卡从磁盘阵列中读取目标条带的原校验数据,之后,根据缓存中存储的目标条带单元中当前存储的数据、从磁盘阵列中读取的目标条带的原校验数据以及待写数据,以读改写方式将待写数据写入目标条带中。
在又一些实施例中,若缓存中存储有目标条带的原校验数据,且未存储有目标条带单元中当前存储的数据,则磁盘阵列卡从磁盘阵列中读取目标条带单元中当前存储的数据,之后,根据缓存中存储的目标条带的原校验数据、从磁盘阵列中读取的目标条带单元中当前存储的数据以及待写数据,以读改写方式将待写数据写入目标条带中。
在一些实施例中,磁盘阵列卡根据目标条带的标识以及目标条带单元的标识,判断缓存中是否存储有目标条带单元中当前存储的数据。在另一些实施例中,磁盘阵列卡根据目标条带单元中当前存储的数据的标识,判断缓存中是否存储有目标条带单元中当前存储的数据。
在一些实施例中,磁盘阵列卡根据目标条带的标识以及目标条带的校验类条带单元的标识,判断缓存中是否存储有目标条带的校验数据。在另一些实施例中,磁盘阵列卡根据目标条带的校验类条带单元中当前存储的校验数据的标识,判断缓存中是否存储有目标条带的校验数据。
S503:磁盘阵列卡从缓存中读取目标数据。
在一些实施例中,磁盘阵列卡从缓存中读取目标数据,如目标条带的原校验数据,以及目标条带单元中当前存储的数据等。
S504:磁盘阵列卡从磁盘阵列中读取目标数据。
在一些实施例中,磁盘阵列卡从磁盘阵列中读取目标数据,如目标条带的原校验数据,以及目标条带单元中当前存储的数据等。
S505:磁盘阵列卡基于目标数据,以读改写方式将待写数据写入目标条带中。
在一些实施例中,若缓存中存储有目标数据,则S505具体是基于缓存中存储的目标数据,实现以读改写方式将待写数据写入目标条带中。
在另一些实施例中,若缓存中未存储有目标数据,则S505具体是基于磁盘阵列中存储的目标数据,实现以读改写方式将待写数据写入目标条带中。
可选地,S505包括以下S505a-S505b。
S505a:磁盘阵列卡根据待写数据和目标数据,确定目标校验数据。
需要说明的,S505a中确定目标校验数据的原理与相关技术中确定条带的校验数据的原理相同,例如,可以基于相关技术中的异或校验等数据校验方法确定目标校验数据,因此,S505a的实现过程可以参考相关技术中的实现过程,此处不再细述。
S505b:磁盘阵列卡将待写数据和目标校验数据写入目标条带中。
在一些实施例中,磁盘阵列卡向目标条带的目标条带单元写入待写数据,并向目标条带的校验类条带单元写入目标校验数据。
需要说明的,S505b的实现原理与相关技术中写入数据的原理相同,因此,S505b的实现过程可以参考相关技术中的实现过程,此处不再细述。
以下,结合图2所示的磁盘阵列卡,对S501-S505的过程进行说明:读写判别模块接收到读写请求后,判断该读写请求是读请求,还是写请求。若是读请求,则调用读模块,由读模块执行读请求。若是写请求,则调用写模块,由写模块判断写请求是否涉及读改写操作。若不涉及读改写操作,则由写模块将写请求所携带的数据写入磁盘阵列。若涉及读改写操作,则调用读改写模块,之后,读改写模块调用缓存模块,并指示缓存模块判断缓存中存储的数据是否包括读改写方式所需使用的目标条带中的目标数据,若判断结果为是,则由读改写模块从缓存中读取目标数据,并发送至校验模块,若判断结果为否,则由读改写模块从磁盘阵列中读取目标数据,并发送至校验模块。校验模块计算目标校验数据后,将目标校验数据发送给读改写模块,由读改写模块将目标校验数据和待写数据写入目标条带。
上述实施例中,接收到写请求后,若该写请求是请求以读改写方式向目标条带写入待写数据,首先判断缓存中是否存储有目标数据,若缓存中存储有目标数据,则从缓存中读取目标数据,并基于目标数据,以读改写方式将待写数据写入目标条带。由于是直接使用缓存中存储的目标数据,实现以读改写方式将待写数据写入目标条带中,因此,在执行涉及读改写的写请求时,不必从磁盘阵列中读取目标数据,一方面,有助于提升读改写方式中的读性能,从而实现提高该写请求的写性能,进而实现提升存储系统的写性能。另一方面,由于能够有效减少实际的读盘操作,因此,能够减少磁盘阵列中的硬盘的损耗。此外,由于缓存中的数据是待读数据,因此,磁盘阵列卡无需另外配置超级电容实现掉电保护,在缓存掉电之后,只需从磁盘阵列中重新写入缓存即可,这样,不仅可以降低硬件成本,还可以简化磁盘阵列卡的处理逻辑,降低软件成本。
以上,为本申请实施例的第二部分。以下,为本申请实施例的第三部分,结合图7至图8介绍第一部分中的存储系统写入数据时,若涉及重构写方式,写请求所携带的待写数据写入磁盘阵列的过程。
图7是根据一示例性实施例示出的一种数据写入方法的流程图。示例性的,该方法包括如下所示的S701-S705。
在一些实施例中,该数据写入方法用于上述存储系统,该存储系统包括磁盘阵列卡和磁盘阵列,磁盘阵列卡包括缓存。磁盘阵列被划分为多个条带。
其中,下述的目标条带可以是磁盘阵列卡根据存储策略从多个条带中选取到的。当接收到写请求时,磁盘阵列卡可按照该存储策略从多个条带中选取到对应的目标条带,该目标条带用于写入接收到的写请求中的待写数据。存储策略可以预先设定,也可以根据条带的写入频率或空闲率来调整等,在此不受限制。
可选地,磁盘阵列卡支持以重构写方式向磁盘阵列写入待写数据,例如,可以是RAID4等型号的磁盘阵列卡。
需要说明的,本申请实施例对磁盘阵列卡的型号不做限制,只要是支持以重构写方式向磁盘阵列写入待写数据的磁盘阵列卡均可以。
S701:磁盘阵列卡接收写请求,写请求用于请求以重构写方式向目标条带写入待写数据。
在一些实施例中,磁盘阵列卡在接收到CPU发送的读写请求后,先判断该读写请求为写请求还是读请求。若是写请求,则根据写请求所携带的待写数据以及待写地址,判断该写请求是否涉及重构写操作。若不涉及重构写操作,则将写请求所携带的数据写入磁盘阵列。若涉及重构写操作,也即,需要以重构写方式向目标条带写入待写数据,则该写请求属于S701中的写请求。
例如,可以根据写请求所携带的待写数据被划分的数据块的数量,与待写地址所指示的目标条带的条带单元的数量之间的关系确定该写请求是否涉及读改写操作。
示例性的,目标条带包括7个条带单元,其中,6个条带单元属于存储类条带单元,用于存储写请求所携带的数据,1个条带单元属于校验类条带单元,用于存储目标条带的校验数据。若待写数据被划分为4个数据块,也即,大于存储类条带单元的总数的一半(即3),则待写数据以重构写方式写入目标条带。
或者,可以根据写请求所携带的待写数据的大小或占用空间等来确定该写请求是否涉及重构写操作。例如,若写请求中包含的待写数据的大小或占用空间大于或等于预设值,则该写请求涉及重构写操作,待写数据以重构写方式写入目标条带,若写请求中包含的待写数据的大小或占用空间小于该预设值,则该写请求不涉及重构写操作,待写数据以非重构写方式写入磁盘阵列。需要指出的是,该预设值的大小可以根据条带的大小或容量空间来确定,或者该预设值可以由用户根据实际应用情况来设定等,在此不受限制。
S702:磁盘阵列卡判断缓存中是否存储有目标数据,目标数据为目标条带中存储的数据。
若判断结果为是,则执行S703,若判断结果为否,则执行S704。
可选地,重构写方式的待写数据待写入目标条带的目标条带单元。目标数据包括目标条带的非目标条带单元中当前存储的数据。
例如,如图8所示,目标条带的6个存储类条带单元分别为条带单元1、……、条带单元6,条带单元1、……、条带单元6中分别存储有数据1、……、数据6。若待写数据划分为4个数据块,例如,分别为数据块a、数据块b、数据块c、数据块d,待写入的目标条带单元分别为条带单元1、条带单元2、条带单元3和条带单元4,则目标数据包括条带单元5中存储的数据5和条带单元6中存储的数据6。
需要说明的,S702的实现原理与S502的实现原理相同,因此,S702的实现过程,可以参考上述S502,此处不再细述。
S703:磁盘阵列卡从缓存中读取目标数据。
在一些实施例中,磁盘阵列卡从缓存中读取非目标条带单元中当前存储的数据。
S704:磁盘阵列卡从磁盘阵列中读取目标数据。
在一些实施例中,磁盘阵列卡从磁盘阵列中读取非目标条带单元中当前存储的数据。
S705:磁盘阵列卡基于目标数据,以重构写方式将待写数据写入目标条带中。
在一些实施例中,若缓存中存储有目标数据,则S705具体是基于缓存中存储的目标数据,实现以重构写方式将待写数据写入目标条带中。
在另一些实施例中,若缓存中未存储有目标数据,则S705具体是基于磁盘阵列中存储的目标数据,实现以重构写方式将待写数据写入目标条带中。
可选地,S705包括以下S705a-S705b。
S705a:磁盘阵列卡根据待写数据和目标数据,确定目标校验数据。
S705b:磁盘阵列卡将待写数据和目标校验数据写入目标条带中。
需要说明的,S705的实现原理与S505的实现原理相同,因此,S705的实现过程和相关说明可以参考上述S505,此处不再细述。
以上,为本申请实施例的第三部分。以下,为本申请实施例的第四部分,结合图9介绍以上所示的第一部分、第二部分以及第三部分中的存储系统读取数据的过程。
图9是根据一示例性实施例示出的一种数据读取方法的流程图。示例性的,该方法包括如下所示的S901-S905。
S901:磁盘阵列卡接收CPU发送的读请求,读请求用于请求读取磁盘阵列中的第一数据。
在一些实施例中,磁盘阵列卡接收到CPU发送的读请求后,解析该读请求,以确定第一数据的存储地址,之后,根据该存储地址确定第一数据所在的条带以及条带单元,例如,存储地址所指示的条带为条带A,所指示的条带单元为条带A的A2条带单元。
S902:磁盘阵列卡判断缓存中是否存储有第一数据。
若判断结果为是,则执行S903。若判断结果为否,则执行S904。
在一些实施例中,磁盘阵列卡根据第一数据所在的条带以及条带单元,判断缓存中是否存储有第一数据。例如,判断缓存中是否存储了条带A的A2条带单元中的数据,若有,则说明缓存中存储的数据包括第一数据,若无,则说明缓存中存储的数据不包括第一数据。
S903:磁盘阵列卡从缓存中读取第一数据。
在一些实施例中,若缓存中存储有第一数据,则磁盘阵列卡可以直接从缓存中读取第一数据。例如,读取缓存中存储的条带A的A2条带单元的数据。
S904:磁盘阵列卡从磁盘阵列中读取第一数据。
在一些实施例中若缓存中未存储有第一数据,则磁盘阵列卡从磁盘阵列中读取第一数据。例如,读取磁盘阵列的条带A的A2条带单元中存储的数据。
S905:磁盘阵列卡向CPU返回第一数据。
在一些实施例中,磁盘阵列卡在读取到第一数据后,向CPU返回读取到的第一数据,从而实现完成读请求。
上述实施例中,在接收到读请求后,若缓存中存储的数据包括第一数据,则从缓存中读取第一数据,并返回从缓存中读取到的该第一数据。一方面,由于缓存中预先存储了磁盘阵列中部分数据,通过从缓存中读取第一数据,有助于充分利用缓存中存储中的数据,以及提高缓存的利用率。另一方面,由于缓存的访问速度远高于磁盘阵列,从缓存中读取第一数据,有助于提高第一数据的读取数据,进而有助于提高存储系统的读性能。
上述主要从方法的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,数据写入装置包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法,示例性的对数据写入装置进行功能模块的划分,例如,数据写入装置可以包括对应各个功能划分的各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
示例性的,图10示出了上述实施例中所涉及的数据写入装置(记为数据写入装置1000)的一种可能的结构示意图,数据写入装置1000可以包括:接收单元1001、处理单元1002和写入单元1003。接收单元1001,用于接收写请求,写请求用于请求以读改写方式向目标条带写入待写数据。例如,图5所示的S501。处理单元1002,用于若缓存中存有目标数据,则从缓存中读取目标数据,目标数据为目标条带中存储的数据。例如,图5所示的S502-S503。写入单元1003,用于基于目标数据,以目标写方式将待写数据写入目标条带中。例如,图5所示的S505。
可选地,写入单元1003具体用于:根据待写数据和目标数据,确定目标校验数据;将目标校验数据和待写数据写入目标条带中。
可选地,读改写方式的待写数据待写入目标条带的目标条带单元;目标数据包括目标条带的目标条带单元中当前存储的数据。
可选地,目标数据包括目标条带的原校验数据。
可选地,磁盘阵列包括多个条带;在接收写请求之前,处理单元1002还用于,向缓存写入多个条带的至少一个条带单元中存储的数据;至少一个条带单元的历史读写次数、历史读写频率或被改写次数满足预设条件。
可选地,磁盘阵列包括多个条带;在接收写请求之前,处理单元1002还用于,向缓存写入多个条带的多个原校验数据。
可选地,处理单元1002还用于,若缓存中未存储有目标数据,从磁盘阵列读取目标数据。
可选地,磁盘阵列写入数据的模式为写穿模式。
可选地,接收单元1001还用于,接收读请求,读请求用于请求读取磁盘阵列中的第一数据;处理单元1002还用于:若缓存中存储有第一数据,从缓存中读取第一数据;处理单元1002还用于:返回第一数据。
关于上述可选方式的具体描述可以参见前述的方法实施例,此处不再赘述。此外,上述提供的任一种数据写入装置1000的解释以及有益效果的描述均可参考上述对应的方法实施例,不再赘述。
示例性的,图11示出了上述实施例中所涉及的数据写入装置(记为数据写入装置1100)的一种可能的结构示意图,数据写入装置1100可以包括:接收单元1101、处理单元1102和写入单元1103。接收单元1101,用于接收写请求,写请求用于请求以重构写方式向目标条带写入待写数据。例如,图7所示的S701。处理单元1102,用于若缓存中存有目标数据,则从缓存中读取目标数据,目标数据为目标条带中存储的数据。例如,图7所示的S702-S703。写入单元1103,用于基于目标数据,以目标写方式将待写数据写入目标条带中。例如,图7所示的S705。
可选地,写入单元1103具体用于:根据待写数据和目标数据,确定目标校验数据;将目标校验数据和待写数据写入目标条带中。
可选地,重构写方式的待写数据待写入目标条带的目标条带单元;目标数据包括目标条带的非目标条带单元中当前存储的数据。
可选地,磁盘阵列包括多个条带;在接收写请求之前,处理单元1102还用于:向缓存写入多个条带的至少一个条带单元中存储的数据;至少一个条带单元的历史读写次数或历史读写频率满足预设条件。
可选地,处理单元1102还用于:若缓存中未存储有目标数据,从磁盘阵列读取目标数据。
可选地,磁盘阵列写入数据的模式为写穿模式。
可选地,接收单元1101还用于:接收读请求,读请求用于请求读取磁盘阵列中的第一数据;处理单元1102还用于:若缓存中存储有第一数据,从缓存中读取第一数据;处理单元1102还用于:返回第一数据。
关于上述可选方式的具体描述可以参见前述的方法实施例,此处不再赘述。此外,上述提供的任一种数据写入装置1100的解释以及有益效果的描述均可参考上述对应的方法实施例,不再赘述。
本申请实施例还提供了一种计算机设备,该计算机设备包括处理器和存储器,处理器与存储器连接,存储器存储有计算机执行指令,处理器执行该计算机执行指令时实现上述实施例中的数据处理方法。本申请实施例对计算机设备的具体形式不作任何限制。例如,计算机设备具体可以是终端装置,也可以是网络设备。其中,终端装置可以被称为:终端、用户设备(user equipment,UE)、终端设备、接入终端、用户单元、用户站、移动站、远方站、远程终端、移动设备、用户终端、无线通信设备、用户代理或用户装置等。终端装置具体可以是手机、增强现实(augmented reality,AR)设备、虚拟现实(virtual reality,VR)设备、平板电脑、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)等。网络设备具体可以是服务器等。其中,服务器可以是一个物理或逻辑服务器,也可以是有两个或两个以上分担不同职责的物理或逻辑服务器、相互协同来实现服务器的各项功能。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,当该计算机程序在计算机上运行时,使得该计算机执行上文提供的任一种计算机设备所执行的方法。
关于上述提供的任一种计算机可读存储介质中相关内容的解释及有益效果的描述,均可以参考上述对应的实施例,此处不再赘述。
本申请实施例还提供了一种芯片。该芯片中集成了用于实现上述计算机设备的功能的控制电路和一个或者多个端口。可选的,该芯片支持的功能可以参考上文,此处不再赘述。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可通过程序来指令相关的硬件完成。所述的程序可以存储于一种计算机可读存储介质中。上述提到的存储介质可以是只读存储器,随机接入存储器等。上述处理单元或处理器可以是中央处理器,通用处理器、特定集成电路(application specific integrated circuit,ASIC)、微处理器(digital signal processor,DSP),现场可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。
本申请实施例还提供了一种包含指令的计算机程序产品,当该指令在计算机上运行时,使得计算机执行上述实施例中的任意一种方法。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如SSD)等。
应注意,本申请实施例提供的上述用于存储计算机指令或者计算机程序的器件,例如但不限于,上述存储器、计算机可读存储介质和通信芯片等,均具有非易失性(non-transitory)。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看附图、公开内容、以及所附权利要求书,可理解并实现公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种数据写入方法,其特征在于,应用于存储系统,所述存储系统包括磁盘阵列和磁盘阵列卡,所述磁盘阵列卡中包括缓存,所述磁盘阵列被划分为多个条带;所述方法包括:
接收写请求,所述写请求用于请求以目标写方式向目标条带写入待写数据;所述目标写方式包括读改写方式或重构写方式;
若所述缓存中存有目标数据,则从所述缓存中读取所述目标数据,所述目标数据为所述目标条带中存储的数据;
基于所述目标数据,以所述目标写方式将所述待写数据写入所述目标条带中。
2.根据权利要求1所述的方法,其特征在于,所述基于所述目标数据,以所述目标写方式将所述待写数据写入所述目标条带中,包括:
根据所述待写数据和所述目标数据,确定目标校验数据;
将所述目标校验数据和所述待写数据写入所述目标条带中。
3.根据权利要求1或2所述的方法,其特征在于,
若所述目标写方式包括读改写方式,所述读改写方式的待写数据待写入所述目标条带的目标条带单元;所述目标数据包括所述目标条带的目标条带单元中当前存储的数据和/或所述目标条带的原校验数据;
若所述目标写方式包括重构写方式,所述重构写方式的待写数据待写入所述目标条带的目标条带单元;所述目标数据包括所述目标条带的非目标条带单元中当前存储的数据。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述目标写方式包括所述读改写方式,在接收写请求之前,所述方法还包括:
向所述缓存写入所述多个条带的多个原校验数据。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述磁盘阵列包括多个条带;
在所述目标写方式包括所述读改写方式的情况下,在接收写请求之前,所述方法还包括:向所述缓存写入所述多个条带的至少一个条带单元中存储的数据;所述至少一个条带单元的历史读写次数、历史读写频率或被改写次数满足预设条件;或
在所述目标写方式包括所述重构写方式的情况下,在接收写请求之前,所述方法还包括:向所述缓存写入所述多个条带的至少一个条带单元中存储的数据;所述至少一个条带单元的历史读写次数或历史读写频率满足预设条件。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述方法还包括:
若所述缓存中未存储有所述目标数据,从所述磁盘阵列中读取所述目标数据。
7.根据权利要求1-6中任一项所述的方法,其特征在于,
所述磁盘阵列卡向所述磁盘阵列写入数据的模式为写穿模式。
8.根据权利要求1-7中任一项所述的方法,其特征在于,所述方法还包括:
接收读请求,所述读请求用于请求读取所述磁盘阵列中的第一数据;
若所述缓存中存储有所述第一数据,从所述缓存中读取所述第一数据;
返回所述第一数据。
9.一种存储系统,其特征在于,包括:
磁盘阵列卡和磁盘阵列;所述磁盘阵列卡包括缓存,所述磁盘阵列被划分为多个条带,所述缓存用于存储所述多个条带的至少一个条带单元中存储的数据,所述至少一个条带单元的历史读写次数或历史读写频率满足预设条件;
其中,所述磁盘阵列卡用于执行如权利要求1-8中任一项所述的方法。
10.一种服务器,其特征在于,包括:处理器和如权利要求9所述的存储系统,所述处理器与所述存储系统连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211242564.7A CN115639961A (zh) | 2022-10-11 | 2022-10-11 | 数据写入方法、存储系统及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211242564.7A CN115639961A (zh) | 2022-10-11 | 2022-10-11 | 数据写入方法、存储系统及服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115639961A true CN115639961A (zh) | 2023-01-24 |
Family
ID=84943996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211242564.7A Pending CN115639961A (zh) | 2022-10-11 | 2022-10-11 | 数据写入方法、存储系统及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115639961A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116149575A (zh) * | 2023-04-20 | 2023-05-23 | 北京大学 | 面向服务器无感知计算的磁盘冗余阵列写入方法及系统 |
CN117806568A (zh) * | 2024-02-29 | 2024-04-02 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据更新方法、装置、设备和存储介质 |
CN117806568B (zh) * | 2024-02-29 | 2024-06-07 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据更新方法、装置、设备和存储介质 |
-
2022
- 2022-10-11 CN CN202211242564.7A patent/CN115639961A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116149575A (zh) * | 2023-04-20 | 2023-05-23 | 北京大学 | 面向服务器无感知计算的磁盘冗余阵列写入方法及系统 |
CN117806568A (zh) * | 2024-02-29 | 2024-04-02 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据更新方法、装置、设备和存储介质 |
CN117806568B (zh) * | 2024-02-29 | 2024-06-07 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据更新方法、装置、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9798472B1 (en) | Extent level cache destaging | |
JP6285709B2 (ja) | 冗長アレイによる不揮発性メモリのプログラム障害回復 | |
US20200125286A1 (en) | Fragment Management Method and Fragment Management Apparatus | |
KR101343262B1 (ko) | 동시 판독 및 기록 메모리 동작을 수행하는 방법 및 장치 | |
WO2017173623A1 (zh) | 用于处理存储设备中分条的方法和存储设备 | |
JP2014507717A (ja) | より高いレベルの冗長な情報の計算 | |
CN108701005B (zh) | 数据更新技术 | |
CN107209714A (zh) | 分布式存储系统及分布式存储系统的控制方法 | |
CN103699337B (zh) | 一种基于独立磁盘冗余阵列raid的写控制方法及系统 | |
US11061788B2 (en) | Storage management method, electronic device, and computer program product | |
CN112513804B (zh) | 一种数据处理方法及装置 | |
CN112463036B (zh) | 一种磁盘计算分块条带的方法、系统、终端及存储介质 | |
CN110413454A (zh) | 基于存储阵列的数据重建方法、装置及存储介质 | |
CN109582213A (zh) | 数据重构方法及装置、数据存储系统 | |
CN103473266A (zh) | 固态硬盘及其删除重复数据的方法 | |
CN109213693A (zh) | 存储管理方法、存储系统和计算机程序产品 | |
CN108920094B (zh) | 擦除单元raid方法、装置、计算机设备及存储介质 | |
CN115639961A (zh) | 数据写入方法、存储系统及服务器 | |
CN109783000B (zh) | 一种数据处理方法及设备 | |
CN110535476A (zh) | Ldpc软译码器软信息存储优化方法、装置、计算机设备及存储介质 | |
CN113687977A (zh) | 基于raid控制器以实现计算性能提升的数据处理装置 | |
CN103645995B (zh) | 写数据的方法及装置 | |
CN107704336A (zh) | 一种数据存储方法及装置 | |
US11861175B2 (en) | Latency in data storage systems | |
CN111782146B (zh) | 实现写缓存的方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |