数据读写的方法和设备技术

技术编号:19744853 阅读:15 留言:0更新日期:2018-12-12 04:40
本公开的实施例涉及数据读写的方法和设备。该方法包括:响应于接收到针对第一目标区域的第一读写请求,确定是否存在与该第一读写请求冲突的正在执行的第二读写请求,该第二读写请求所针对的第二目标区域与该第一目标区域至少部分地重叠且该第一读写请求和该第二读写请求中至少一个为写入请求;以及响应于确定存在冲突的该第二读写请求,挂起该第一读写请求而保持该第一目标区域中未与该第二目标区域重叠的子区域处于未锁定状态。

【技术实现步骤摘要】
数据读写的方法和设备
本公开的实施例涉及数据读写领域,并且更具体地,涉及数据读写的方法及设备。
技术介绍
在现有的存储系统中,存储系统通常能够接收多个读写请求。为了避免多个读写请求之间发生冲突,被执行的读写请求的目标区域将被锁定,同时因目标区域被部分锁定而挂起的读写请求的全部目标区域也将被锁定,这会造成某些实际未被读写的存储空间因为被锁定而无法被读写,从而影响了存储系统的整体响应速度。因为,如何在保证不发生读写请求冲突的前提下,提高存储系统的多个读写请求之间的并发程度成为一个关注焦点。
技术实现思路
本公开的实施例提供一种用于数据读写的方案。根据本公开的第一方面,提出了一种数据读写的方法。该方法包括:响应于接收到针对第一目标区域的第一读写请求,确定是否存在与该第一读写请求冲突的正在执行的第二读写请求,该第二读写请求所针对的第二目标区域与该第一目标区域至少部分地重叠且该第一读写请求和该第二读写请求中至少一个为写入请求;以及响应于确定存在冲突的该第二读写请求,挂起该第一读写请求而保持该第一目标区域中未与该第二目标区域重叠的子区域处于未锁定状态。根据本公开的第二方面,提出了一种数据写入的方法。该方法包括:响应于接收针对文件系统的第一写入请求,基于该文件系统的逻辑数据单位将该第一写入请求分裂成至少一个子请求;确定该至少一个子请求中是否存在所针对的数据块大小小于该逻辑数据单位的第一子请求;响应于确定存在该第一子请求,确定是否存在能够与该第一子请求合并的、当前正被挂起的第二写入请求;以及响应于确定存在该第二写入请求,将该第一子写入请求与该第二写入请求合并以便执行。根据本公开的第三方面,提出了一种电子设备。该设备包括:至少一个处理单元;至少一个存储器,该至少一个存储器被耦合到该至少一个处理单元并且存储用于由该至少一个处理单元执行的指令,该指令当由该至少一个处理单元执行时,使得该设备执行动作,该动作包括:响应于接收到针对第一目标区域的第一读写请求,确定是否存在与该第一读写请求冲突的正在执行的第二读写请求,该第二读写请求所针对的第二目标区域与该第一目标区域至少部分地重叠且该第一读写请求和该第二读写请求中至少一个为写入请求;以及响应于确定存在冲突的该第二读写请求,挂起该第一读写请求而保持该第一目标区域中未与该第二目标区域重叠的子区域处于未锁定状态。根据本公开的第四方面,提出了一种电子设备。该设备包括:至少一个处理单元;至少一个存储器,该至少一个存储器被耦合到该至少一个处理单元并且存储用于由该至少一个处理单元执行的指令,该指令当由该至少一个处理单元执行时,使得该设备执行动作,该动作包括:响应于接收针对文件系统的第一写入请求,基于该文件系统的逻辑数据单位将该第一写入请求分裂成至少一个子请求;确定该至少一个子请求中是否存在所针对的数据块大小小于该逻辑数据单位的第一子请求;响应于确定存在该第一子请求,确定是否存在能够与该第一子请求合并的、当前正被挂起的第二写入请求;以及响应于确定存在该第二写入请求,将该第一子写入请求与该第二写入请求合并以便执行。在本公开的第五方面,提供了一种计算机程序。该计算机程序在被处理单元执行时使得该处理单元实现根据本公开的第一方面和第二方面所描述的方法的任意步骤。提供
技术实现思路
部分是为了以简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。
技术实现思路
部分无意标识本公开的关键特征或必要特征,也无意限制本公开的范围。附图说明通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。图1示出了传统方案中数据读写的示意图;图2示出了传统方案中非对齐数据写入的示意图;图3示出了根据本公开的实施例的数据读写的方法的流程图;图4示出了根据本公开的实施例的数据读写的示意图;图5示出了根据本公开的实施例的基于优先级的数据读写的示意图;图6示出了根据本公开的实施例的非对齐数据写入的方法的流程图;图7示出了根据本公开的实施例的非对齐数据写入的方法的流程图;图8示出了根据本公开的实施例的分裂以及合并写入请求的示意图;以及图9示出了可以用来实施本公开内容的实施例的示例设备的示意性框图。具体实施方式下面将参照附图更详细地描述本公开的优选实施例。虽然附图中显示了本公开的优选实施例,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。为了方便描述,本公开的实施例将采用多个并发的写入请求来描述多个读写请求之间的冲突,本领域技术人员应当理解,冲突的读入请求与写入请求之间同样适用于本文所描述的方法。如上文所描述的,传统存储系统处理多个读写请求的并发程度较低。图1示出了传统方案中数据读写的示意图100,如图1所示,存储区域包括连续的多个逻辑数据单位102-108。系统接收来自用户的多个写入请求,分别为第一写入请求120、第二写入请求140以及第三写入请求160。第一写入请求120的目标区域为逻辑数据单位102以及104,由于其未被锁定,因此第一写入请求120被执行,同时其目标区域(逻辑数据单位102以及104)被锁定。第二写入请求140的目标区域为逻辑数据单位104以及106,由于第一写入请求120锁定了逻辑数据单位104,因此第二写入请求140的目标区域存在锁定区域而被挂起,同时第二写入请求140的目标区域(逻辑数据单位104以及106)也被锁定。第三写入请求160的目标区域为逻辑数据单位106以及108,由于第二写入请求140锁定了逻辑数据单位106,因此第三写入请求160的目标区域存在锁定区域而被挂起,同时第三写入请求160的目标区域(逻辑数据单位106以及108)也被锁定。然而,在第一写入请求102被执行时,逻辑数据单位106以及108实际上并未被写入,即第一写入请求120同第三写入请求160存在并发性,然而这种并发性却由于第二写入请求140锁定其全部目标区域而无法被实施,从而影响了存储系统的整体响应速度。此外,现有文件级别存储常采用8KB作为逻辑数据单位,然而在诸如Linux的一些操作系统中存在4KB对齐的写入请求,而在该存储系统处理4KB对齐的多个写入请求时,存储系统的性能将出现严重下降。图2示出了传统方案中非对齐数据写入的示意图200,如图2所示,存储区域包括连续的多个逻辑数据单位202-210,在某些实施例中,单个逻辑数据单位可以为8KB大小。系统接收来自用户的多个写入请求,分别为第一写入请求220、第二写入请求240、第三写入请求260以及第四写入请求280。第一写入请求220的目标区域为第一目标区域222,第一目标区域222小于单个本文档来自技高网
...

【技术保护点】
1.一种数据读写的方法,包括:响应于接收到针对第一目标区域的第一读写请求,确定是否存在与所述第一读写请求冲突的正在执行的第二读写请求,所述第二读写请求所针对的第二目标区域与所述第一目标区域至少部分地重叠且所述第一读写请求和所述第二读写请求中至少一个为写入请求;以及响应于确定存在冲突的所述第二读写请求,挂起所述第一读写请求而保持所述第一目标区域中未与所述第二目标区域重叠的子区域处于未锁定状态。

【技术特征摘要】
1.一种数据读写的方法,包括:响应于接收到针对第一目标区域的第一读写请求,确定是否存在与所述第一读写请求冲突的正在执行的第二读写请求,所述第二读写请求所针对的第二目标区域与所述第一目标区域至少部分地重叠且所述第一读写请求和所述第二读写请求中至少一个为写入请求;以及响应于确定存在冲突的所述第二读写请求,挂起所述第一读写请求而保持所述第一目标区域中未与所述第二目标区域重叠的子区域处于未锁定状态。2.根据权利要求1所述的方法,还包括:响应于确定不存在冲突的所述第二读写请求,执行所述第一读写请求而不检测所述第一读写请求与目前被挂起的其他读写请求是否存在冲突。3.根据权利要求1所述的方法,还包括:响应于第一读写请求完成,仅激活当前等待的且与第一读写请求冲突的请求。4.根据权利要求1所述的方法,还包括:响应于在所述第一读写请求之后接收到与所述第一读写请求相冲突的第三读写请求并且所述第三读写请求先于所述第一读写请求被执行,递增与所述第一读写请求相关联的计数器;以及响应于所述计数器的值达到预定阈值,提升所述第一读写请求的执行优先级。5.根据权利要求4所述的方法,还包括:响应于接收到第四读写请求,其中所述第四读写请求的第四目标区域与所述第一目标区域至少部分地重叠,且所述第四目标区域可用;比较所述第一读写请求与第四读写请求的优先级;以及响应于第四读写请求的所述优先级低于所述第一读写请求的所述优先级,挂起所述第四读写请求。6.一种数据写入的方法,包括:响应于接收针对文件系统的第一写入请求,基于所述文件系统的逻辑数据单位将所述第一写入请求分裂成至少一个子请求;确定所述至少一个子请求中是否存在所针对的数据块大小小于所述逻辑数据单位的第一子请求;响应于确定存在所述第一子请求,确定是否存在能够与所述第一子请求合并的、当前正被挂起的第二写入请求;以及响应于确定存在所述第二写入请求,将所述第一子写入请求与所述第二写入请求合并以便执行。7.根据权利要求6所述的方法,其中基于所述文件系统的所述逻辑数据单位将所述第一写入请求分裂成所述至少一个子请求包括:获取所述逻辑数据单位的偏移量;以及以所述偏移量作为所述目标区域的分割点而将所述目标区域分裂成一个或多个子区域,所述每个所述子区域对应于每个所述子请求。8.根据权利要求6所述的方法,其中确定是否存在能够与所述第一子请求合并的所述第二写入请求包括:获取第一子请求的第一目标区域;获取所述第二写入请求的第二目标区域;确定所述第一目标区域与所述第二目标区域是否邻接;响应于所述第一目标区域与所述第二目标区域邻接,确定所述第一目标区域与所述第二目标区域的合并是否落在单个所述逻辑数据单位内;以及响应于所述合并落在单个所述逻辑数据单位内,确定所述第二写入请求能够与第一子请求合并。9.根据权利要求8所述的方法,其中确定是否存在能够与所述第一子请求合并的所述第二写入请求还包括:响应于所述第一目标区域与所述第二目标区域的合并落在单个所述逻辑数据单位内,确定所述第一目标区域与所述第二目标区域的合并占单个所述逻辑数据单位大小的比值;确定所述比值是否达到预设的比值阈值;以及响应于所述比值达到所述比值阈值,确定所述第二写入请求能够与第一子请求合并。10.一种电子设备,包括:至少一个处理单元;至少一个存储器,所述至少一个存储器被耦合到所述至少一个处理单元并且存储用于由所述至少一个处理单元执行的指令,所述指令当由所述至少一个处理单元执行时,使得所述设备执行动作,所述动作包括:响应于接收到针对第一目标区域的第一读写请求,确定是否存在与所述第...

【专利技术属性】
技术研发人员:赵彬胡国玉吴俊吕烁周巧生张明
申请(专利权)人:伊姆西IP控股有限责任公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1