数据读写方法、装置、电子设备与流程

文档序号:18600403发布日期:2019-09-03 22:35阅读:242来源:国知局
数据读写方法、装置、电子设备与流程

本申请涉及存储技术领域,尤其涉及数据读写方法、装置、电子设备及机器可读存储介质。



背景技术:

硬盘通常分为固态硬盘(solidstatedrive)和机械硬盘;其中,机械硬盘是指传统普通硬盘,其主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成;通过磁头可沿盘片的半径方向运动,加上盘片每分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置上进行数据的读写操作;由此,数据通过离磁性表面很近的磁头,由电磁流来改变极性方式被电磁流写到机械磁盘上,数据可以通过相反的方式读取。

而固态硬盘从存储介质角度,分为两大类,一类是采用闪存(flashmemory)作为存储介质的固态硬盘,另一类是采用dram(dynamicrandomaccessmemory,动态随机存取存储器)作为存储介质的固态硬盘。通常人们所说的固态硬盘是指,采用闪存作为存储介质的固态硬盘。

由于固态硬盘相比机械硬盘具有更快的速度以及更高的稳定性,所以固态硬盘被广泛应用于军事、车载、工控、视频监控、网络监控、网络终端、电力、医疗、航空、导航设备等诸多领域。



技术实现要素:

本申请提供一种数据读写方法,所述方法应用于存储系统,所述存储系统包括若干固态硬盘,所述存储系统预设有若干raid阵列,所述方法包括:

基于预设策略从所述若干raid阵列中选择出第一raid阵列;

接收针对所述存储系统对应存储空间的数据的读写请求;

响应于所述数据读写请求,将所述数据读写请求中的所有写请求保存在所述第一raid阵列。

可选的,所述存储系统还包括预读缓存,还包括:

针对所述第二raid对应存储空间的数据执行预读操作,并将预读获得的数据存于所述预读缓存中;

响应于所述数据读写请求中的针对所述第二raid对应存储空间的数据的读请求,从所述预读缓存中查找是否存在匹配数据;若存在,则将所述匹配数据返回给所述读请求对应的应用。

可选的,所述预设策略为基于轮询的raid选取策略。

可选的,所述若干raid阵列由位于所有固态硬盘的不同分区所构建。

可选的,所述固态硬盘为支持多流写的固态硬盘。

可选的,所述存储系统为全闪存存储系统,所述存储系统支持nvme协议管理所述固态硬盘。

本申请还提供一种数据读写装置,所述装置应用于存储系统,所述存储系统包括若干固态硬盘,所述存储系统预设有若干raid阵列,所述装置包括:

选择模块,基于预设策略从所述若干raid阵列中选择出第一raid阵列;

获取模块,接收针对所述存储系统对应存储空间的数据的读写请求;

读写模块,响应于所述数据读写请求,将所述数据读写请求中的所有写请求保存在所述第一raid阵列。

可选的,所述存储系统还包括预读缓存,还包括:

所述选择模块进一步,基于预设策略从所述若干raid阵列中选择出第二raid阵列,其中,所述第二raid为所述若干raid阵列中除所述第一raid阵列外的其它raid阵列;

所述读写模块进一步,针对所述第二raid对应存储空间的数据执行预读操作,并将预读获得的数据存于所述预读缓存中;

所述读写模块进一步,响应于所述数据读写请求中的针对所述第二raid对应存储空间的数据的读请求,从所述预读缓存中查找是否存在匹配数据;若存在,则将所述匹配数据返回给所述读请求对应的应用。

可选的,所述预设策略为基于轮询的raid选取策略。

可选的,所述若干raid阵列由位于所有固态硬盘的不同分区所构建。

可选的,所述固态硬盘为支持多流写的固态硬盘。

可选的,所述存储系统为全闪存存储系统,所述存储系统支持nvme协议管理所述固态硬盘。

本申请还提供一种电子设备,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;

所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行上述的方法。

本申请还提供一种机器可读存储介质,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现上述方法。

通过以上实施例,基于对全闪存存储系统的数据读写请求在raid层面进行隔离及均衡,避免了写请求和预读io产生块(block)级的介质冲突,从而提高了存储系统的数据读写效率。

附图说明

图1是一示例性实施例提供的一种全闪存存储系统的架构图;

图2是一示例性实施例提供的一种数据读写方法的流程图;

图3是一示例性实施例提供的一种ssd的构成示意图;

图4是一示例性实施例提供的一种ssd的分区示意图;

图5是一示例性实施例提供的一种raid阵列的构成示意图;

图6是一示例性实施例提供的一种lun卷与raid阵列的对应关系示意图;

图7是一示例性实施例提供的一种电子设备的硬件结构图;

图8是一示例性实施例提供的一种数据读写装置的框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

为了使本技术领域的人员更好地理解本申请实施例中的技术方案,下面先对本申请实施例涉及的数据读写的相关技术,进行简要说明。

为了方便理解,介绍下全闪存存储系统。请参见图1,图1是本申请一实施例提供的一种全闪存存储系统的架构图。

如图1所示的全闪存存储系统包括:存储控制器和盘柜;其中,盘柜用于管理多块ssd(固态硬盘),存储控制器通过存储总线与盘柜连接,并通过sas(serialattachedscsi,串行scsi)协议或nvme(non-volatilememoryexpress,非易失性内存主机控制器接口规范)协议访问盘柜中的ssd;

其中,一块ssd可以包括若干闪存颗粒,一个闪存颗粒通常被划分成多个block(块);其中,block是ssd的擦写单元,由多个page(页)组成;而page是ssd最小的读写单元,一般是4kb。

在通常情况下,对ssd的读写可以基于ssd所包括的闪存介质的不同单位容量进行读写,例如:可以分别基于单位容量按page、按block(块)、按颗粒、按盘,对ssd进行读写。在对ssd进行读写时,实质是对构成ssd的闪存颗粒的闪存介质进行读写。通常闪存颗粒支持三种操作,包括:读,编程(也即写)和擦除。

与机械硬盘支持覆盖写,不需要擦除的特性不同,在闪存介质执行写操作之前,必须要对其执行擦除操作。而针对闪存介质读写的最小单位是page,但擦除的最小单位是block(即多个page)。

由于闪存介质不支持覆盖写,在一些场景下,需要把待擦除block中的目标page所保存旧数据复制到其它地方,然后在擦除该block,从而可以继续执行对目标page进行写新数据。由此,将会导致额外的“写入放大”现象,也即实际写入闪存介质的物理数据量是计划写入数据量的多倍。

基于以上场景可见,当同时对一个ssd进行读写操作时,并发的读写请求可能会落到ssd的同一个闪存颗粒上,进而落在同一个block上,从而导致写请求会影响读请求的处理,致使读请求的延时增大。例如:在正常情况下,针对ssd读请求的响应延时一般都比较平稳,比如在0.5ms上下小幅波动,但偶尔会出现几个读请求的延时飙升到2ms,甚至5ms,以上情况就是读写请求对同一个block访问冲突造成的。

基于如图1所示全闪存存储系统的架构,本申请旨在提出一种,基于全闪存存储系统的raid层面进行访问隔离的数据读写技术方案。

在实现时,所述存储系统包括若干固态硬盘,所述存储系统预设有若干raid阵列,基于预设策略从所述若干raid阵列中选择出第一raid阵列;接收针对所述存储系统对应存储空间的数据的读写请求;响应于所述数据读写请求,将所述数据读写请求中的所有写请求保存在所述第一raid阵列。

在以上方案中,基于对全闪存存储系统的数据读写请求在raid层面进行隔离及均衡,避免了写请求和预读io产生块(block)级的介质冲突,从而提高了存储系统的数据读写效率。

下面通过具体实施例并结合具体的应用场景对本申请进行描述。

请参考图2,图2是本申请一实施例提供的一种数据读写方法的流程图,所述方法应用于存储系统,所述存储系统包括若干固态硬盘,所述存储系统预设有若干raid阵列,上述方法执行以下步骤:

步骤202、基于预设策略从所述若干raid阵列中选择出第一raid阵列。

步骤204、接收针对所述存储系统对应存储空间的数据的读写请求。

步骤206、响应于所述数据读写请求,将所述数据读写请求中的所有写请求保存在所述第一raid阵列。

以下通过具体的实施例,并结合“raid创建”、“数据读写”,对本申请的涉及的技术方案进行详细描述:

1)raid创建

在本说明书中,上述存储系统,是指由包容若干固态硬盘的存储系统。

在实现时,上述存储系统可以除包括固态硬盘外,还可以包括sas盘或sata盘。

在示出的一种实施方式中,上述存储系统例如为图1所示的全闪存存储系统;其中,上述存储系统管理的硬盘都为固态硬盘,上述存储系统支持nvme协议或sas协议管理上述固态硬盘。

在本说明书中,上述固态硬盘可以包括存储介质为闪存的任何固态硬盘。后续了为描述方便,固态硬盘简称为ssd。

请参见图3,图3是本申请一实施例提供的一种ssd的构成示意图。

如图3所示的ssd包括:控制部件、memory、闪存颗粒;其中,闪存颗粒用于数据存储,是保存数据的物理介质,能持久保存数据,一块ssd会有多个闪存颗粒,并将这些颗粒组织起来,提供更好的读写速度;控制部件是ssd的控制中心,负责与ssd的访问端进行协议处理,从而实现外部逻辑地址到闪存颗粒所包括的闪存介质的映射转换,实现读写等io请求;memory,是ssd的缓存,用来缓存写io和映射元数据,通常具有掉电保护的能力。

在示出的一种实施方式中,进一步地,上述固态硬盘还可以是支持多流写的固态硬盘。为了方便理解,这里介绍下多流写概念。多流写,是指把数据按照不同更新频率分成多个数据流,而写ssd的时候,ssd的控制器识别这些数据流,从而把相同特征的数据流写在一起(ssd中连续的block)。

在本说明书中,上述存储系统支持sas协议管理上述固态硬盘。

在示出的另一种实施方式中,上述存储系统支持nvme协议管理上述固态硬盘。

在本说明书中,上述存储系统基于若干上述固态硬盘,可以创建若干raid阵列。

为了方便理解,先介绍下raid相关基本概念。raid技术是将多个独立的物理磁盘按照不同的方式组合起来,形成一个虚拟磁盘。通过采用raid技术,可以实现并行读写数据,提高了数据的存取速率,同时,raid技术运用了镜像、奇偶校验等技术对数据进行冗余保护,极大地提高了数据的可靠性。

一个raid阵列可以包含多个成员磁盘,raid阵列中的数据组织方式包括条块和条带。其中,条块是raid阵列管理存储空间的最小单位,在创建raid阵列时,将其包括的成员磁盘的存储空间按预设条块大小划分为大小相等、地址相邻的块,这些大小相等、地址相邻的块称为条块;条带是raid阵列的多个成员磁盘上位置相关的条块的集合,根据raid级别不同,raid实现方式不同,raid阵列中成员磁盘的数目不同,成员磁盘状态不同以及raid算法不同,条块中数据的raid冗余性也不同。

在raid技术中,raid阵列对读/写命令的处理是按照条带进行处理的,当raid阵列接收到上层软件下发的读/写命令后,基于该读/写命令中携带的地址确定待操作的条带,之后基于raid级别、raid算法、成员磁盘状态等因素,把该读/写命令拆分为针对该条带中一个或多个成员磁盘的对应条块的读/写命令,将拆分后的读/写命令发给相应的成员磁盘执行。后续,成员磁盘执行接收到的读/写命令,并将执行结果返回至raid阵列。

在本说明书中,上述存储系统,可以以多个固态硬盘的整盘空间,创建raid阵列。

在示出的一种优选的实施方式中,上述存储系统,可以对所有固态硬盘进行分区。

请参见图4,图4是本申请一实施例提供的一种ssd的分区示意图。

图4与图3所示的ssd构成相同,区别在于图4所示的闪存颗粒(对应虚线内的6个矩形小方格)被划分为3个分区(对应图4中的p1、p2、p3)。

例如,上述存储系统,可以对上述存储系统所包括的所有固态硬盘执行如图4所示的分区。

在示出的一种实施方式中,在上述存储系统对所包括的所有固态硬盘执行分区后,进一步地,上述存储系统可以以所有固态硬盘的不同分区构建raid阵列。需要说明是,基于所有固态硬盘的不同分区构建raid阵列,相对于基于现有方案中的基于固态硬盘整盘执行raid阵列创建,可以为每个raid阵列能提供相对比例更高存储空间,以及能提供更快的读写速度。

为了方便理解,这里介绍下现有raid阵列创建方案。比如:上述存储系统有18块ssd,现有raid阵列创建方案包括:上述存储系统raid6算法创建3个raid阵列,则每个raid由6块ssd组成。由于基于raid6算法创建的raid阵列,需要2份校验数据来保持冗余(具体请参见raid6算法说明),所以6块ssd组成的raid阵列只能提供4块ssd的容量,该6块ssd中的其它2块ssd的容量用来计算校验数据。基于以上现有raid阵列创建方案,可见上述3个raid最终能提供的数据容量等于12块ssd的容量;同时,每个raid的读写速度,不会超过6块ssd的总和。

请参见图5,图5是本申请一实施例提供的一种raid阵列的构成示意图。如图5所示的raid阵列的构成示意图,包括多个类似图4所示的4个ssd(分别对应图5顶部的4个实线矩形框);其中,每个ssd都执行类似图4所示的分区(其中,每个ssd包含3个分区,第1个ssd的分区对应图5中的p1、p2、p3;第2个ssd的分区对应图5中的q1、q2、q3;第3个ssd的分区对应图5中的m1、m2、m3;第4个ssd的分区图5中的n1、n2、n3)。

如图5所示,上述存储系统以第1个ssd的分区、第2个ssd的分区、第3个ssd的分区、第4个ssd的分区,作为创建raid-a的“成员磁盘”(参见以上“raid概念”中的介绍),创建如图5所示的raid阵列;其中,上述存储系统创建了3个raid阵列包括:raid-a、raid-b、raid-c。

如图5所示的raid阵列与分区的对应关系,请参见如图5所示的从上述3个raid阵列分别对应的虚线来体现。

例如:请参见图5所示,raid-a由上述存储系统以第1个ssd的分区p1、第2个ssd的分区q1、第3个ssd的分区m1、第4个ssd的分区m1组成;raid-b由上述存储系统以第1个ssd的分区p2、第2个ssd的分区q2、第3个ssd的分区m2、第4个ssd的分区n2组成。raid-c由上述存储系统以第1个ssd的分区p3、第2个ssd的分区q3、第3个ssd的分区m3、第4个ssd的分区n3组成。需要注意的是,上述存储系统可以以上述固态硬盘的不同分区构建任何raid类型的raid阵列,在本说明书中对上述raid阵列对应raid类型不作具体限定。

需要说明的是,由于不同上述raid阵列所包含的分区不同,当并发读写请求落在不同的分区上时,该并发读写请求就不会命中同一个block,从而提高了上述存储系统对并发读写请求的同时处理。例如:请参见图5所示的3个读写请求(分别对应图5中的stream1、stream2、stream3)在第1个ssd的闪存颗粒中中分别对应访问的分区为如图5所示的p1、p2、p3,也即不会命中同一个block。

2)数据读写

在本说明书中,在上述存储系统创建完若干上述raid阵列后,可以基于上述raid阵列,进一步创建lun(logicalunitnumber,逻辑单元号)卷,为用户提供存储业务;其中,lun卷,是指在存储系统中,为用户使用的应用程序,提供的用于数据存储的对象;也即,lun卷是存储系统为存储系统的使用者(应用程序)提供的可以访问对象。

在本说明书中,上述存储系统接收到来自应用程序的读写请求后,上述存储系统可以针对该读写请求进行不同的处理。

在实现时,若接收到来自应用程序的写请求后,上述存储系统找到与该写请求对应的lun卷,在该lun卷位于的对应raid阵列中分配存储空间,将该写请求包含的数据写入至该存储空间;上述存储系统基于该raid阵列对应的raid算法对该数据执行计算和转换,将计算和转换后的数据写入到该raid阵列所包括的ssd或ssd分区中;然后,更新该lun卷的元数据,其中,元数据于记录该lun卷对应逻辑空间到该raid阵列存储空间的映射关系(请参见存储系统中的现有元数据说明,这里不再赘述);最后,向该应用程序返回该写请求的响应。

在本说明书中,若接收到来自应用程序的读请求后,上述存储系统找到与该读请求对应的lun卷;接着,根据该lun卷的元数据,找到该读请求逻辑空间到该lun卷对应raid阵列存储空间的映射关系;再基于该映射关系,基于该raid阵列对应的raid算法,从该raid阵列对应存储空间中读取对应数据;最后,向该应用程序返回该读请求的响应以及对应已读取数据。

请参见图6,图6是本申请一实施例提供的一种lun卷与raid阵列的对应关系示意图。上述lun卷与上述raid阵列的对应关系,例如为图6所示,raid-a(raid阵列)上存在3个lun卷(对应如为图6中的lun-1、lun-2、lun-3)。上述存储系统接收来自应用程序的多个读写请求,如图6所示,可能存在一个要写入lun-1的数据a的写请求;也可能存在一个要写入lun-2的数据b的写请求;还可能同时存在一个要写入lun-3的数据c的写请求以及一个要从lun-3读取数据d的读请求。需要说明的是,上述多个读写请求可以是顺序的,也是可以是并发的。

在本说明书中,在接收到来自应用程序的上述读写请求前,上述存储系统从上述若干raid阵列中选择出第一raid阵列。

在实现时,上述存储系统可以遍历上述若干raid阵列从中选取出上述第一raid阵列。

在示出的一种实施方式中,上述存储系统也可以基于预设策略从上述若干raid阵列中选择出上述第一raid阵列;其中,上述预设策略为基于轮询的raid选取策略。

在实现时,上述轮询的raid选取策略,是指在预设的时间周期t内,不断查询获取上述存储系统的若干raid阵列,在上述若干raid阵列中选取一个raid阵列,作为上述第一raid阵列;而除该第一raid阵列外的其它raid阵列作为上述第二raid阵列,也即上述第二raid阵列可以包括多个raid阵列。在下一时间周期t内,再从上述若干raid阵列中选取另外一个raid阵列(与前一时间周期t内的第一raid阵列不同),作为上述第一raid阵列,而除该第一raid阵列外的其它raid阵列作为上述第二raid阵列。由此类似上述过程,实现在上述若干raid阵列中轮流选取raid阵列作为上述第一raid阵列,而该第一raid阵列外的其它raid阵列为上述第二raid阵列。

例如:基于如图5所述的上述存储系统,存在3个raid阵列:raid-a、raid-b、raid-c。在第1个时间周期t内,上述存储系统选择raid-a作为上述第一raid阵列;在第2个时间周期t内,上述存储系统选择raid-b作为上述第一raid阵列;在第3个时间周期t内,上述存储系统选择raid-c作为上述第一raid阵列。

在本说明书中,在基于上述预设策略从上述若干raid阵列中选择出上述第一raid阵列后,上述存储系统接收针对上述存储系统对应存储空间的数据的读写请求。

其中,上述读写请求,是指应用程序对上述存储系统位于上述若干raid阵列之上的若干lun卷的一个或多个读写请求。需要说明的是,该读写请求可能访问不同raid阵列对应的不同lun卷,该读写请求可能存在并发。

在本说明书中,上述存储系统响应于上述数据读写请求,将上述数据读写请求中的所有写请求保存在上述第一raid阵列。

例如:基于如图5所述的上述存储系统,存在3个raid阵列:raid-a、raid-b、raid-c,在当前时刻(例如为上述预设策略的1个时间周期t内),上述第一raid阵列为raid-a。应用程序对raid-a、raid-b、raid-c上的lun卷都存在读写请求,上述存储系统将上述数据读写请求中的所有写请求保存在raid-a上。

需要说明的是,基于现有实现(请参见“数据读写”中“上述存储系统接收到来自应用程序的读写请求后,上述存储系统可以针对该读写请求进行不同的处理”对应的说明),对位于不同raid阵列的lun卷的写请求都需要保存在对应的不同raid阵列分配的存储空间中,而不是保存一个raid阵列。而上述存储系统响应于上述数据读写请求,将上述数据读写请求中的所有写请求保存在上述第一raid阵列,从而可以实现在同一时间段,所有写请求全部会落在同一个raid。

在示出的一种实施方式中,在上述存储系统基于预设策略从所述若干raid阵列中选择出上述第二raid阵列,其中,上述第二raid为上述若干raid阵列中除上述第一raid阵列外的其它raid阵列。

例如:基于如图5所述的上述存储系统,存在3个raid阵列:raid-a、raid-b、raid-c。在第1个时间周期t内,上述存储系统选择raid-a作为上述第一raid阵列,除raid-a以外的raid-b、raid-c阵列作为上述第二raid阵列;在第2个时间周期t内,上述存储系统选择raid-b作为上述第一raid阵列,除raid-b以外的raid-a、raid-c阵列作为上述第二raid阵列;在第3个时间周期t内,上述存储系统选择raid-c作为上述第一raid阵列,除raid-c以外的raid-a、raid-b阵列作为上述第二raid阵列。

在本说明书中,进一步地,在选择出上述第二raid阵列后,上述存储系统针对上述第二raid对应存储空间的数据执行预读操作,并将预读获得的数据存于上述预读缓存中;其中,上述预读缓存可以基于内存或其它缓存硬件实现,在本说明书中不做具体限定。

在本说明书中,进一步地,在针对上述第二raid对应存储空间的数据执行预读操作后,上述存储系统响应于上述数据读写请求中的针对上述第二raid对应存储空间的数据的读请求,从上述预读缓存中查找是否存在匹配数据;若存在,则将上述匹配数据返回给上述读请求对应的应用。

基于如图5所述的上述存储系统,存在3个raid阵列:raid-a、raid-b、raid-c,在当前时刻(例如为上述预设策略的1个时间周期t内),上述第一raid阵列为raid-a,上述第二raid阵列为raid-b、raid-c。应用程序对raid-a、raid-b、raid-c上的lun卷都存在读写请求,

上述存储系统对raid-b、raid-c(上述第二raid)执行预读并将预读数据保存在上述预读缓存,上述存储系统响应于上述数据读写请求中的针对raid-b、raid-c(上述第二raid)对应存储空间的数据的读请求,在上述预读缓存中查找是否存在匹配数据;若存在,则将上述匹配数据返回给上述读请求对应的应用程序(或简称“应用”)。

需要说明的是,在上述存储系统响应于上述数据读写请求,将上述数据读写请求中的所有写请求保存在上述第一raid阵列的同时,针对上述第二raid对应存储空间的数据执行预读操作对应的raid阵列为上述第二raid阵列,从而可以实现在同一时间段,所有写请求全部会落在同一个raid(上述第一raid),而所有预读io全部落在其他的raid(上述第二raid)上,这样,避免了写请求和预读io产生block级别的介质冲突,既不用担心写请求阻塞预读,也不用担心预读阻塞写请求。

在示出的一种优选的实施方式中,上述存储系统可以进一步扩大上述预读缓存的容量,提升预读命中率。

需要说明的是,上述存储系统基于上述预设策略(例如为基于轮询的raid选取策略),可以均衡地实现写请求以及预读io落在上述若干raid阵列中的每个raid阵列上。

在以上技术方案中,基于对全闪存存储系统的数据读写请求在raid层面进行隔离及均衡,避免了写请求和预读io产生块(block)级的介质冲突,从而提高了存储系统的数据读写效率。

与上述方法实施例相对应,本申请还提供了数据读写装置的实施例。

与上述方法实施例相对应,本说明书还提供了一种数据读写装置的实施例。本说明书的数据读写装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图7所示,为本说明书的数据读写装置所在电子设备的一种硬件结构图,除了图7所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。

图8是本说明书一实施例示出的一种数据读写装置的框图。

请参考图8,所述数据读写装置80可以应用在前述图7所示的电子设备中,所述装置应用于存储设备,所述存储系统包括若干固态硬盘,所述存储系统预设有若干raid阵列,所述装置包括:

选择模块801,基于预设策略从所述若干raid阵列中选择出第一raid阵列;

获取模块802,接收针对所述存储系统对应存储空间的数据的读写请求;

读写模块803,响应于所述数据读写请求,将所述数据读写请求中的所有写请求保存在所述第一raid阵列。

在本实施例中,所述存储系统还包括预读缓存,还包括:

所述选择模块801进一步,基于预设策略从所述若干raid阵列中选择出第二raid阵列,其中,所述第二raid为所述若干raid阵列中除所述第一raid阵列外的其它raid阵列;

所述读写模块803进一步,针对所述第二raid对应存储空间的数据执行预读操作,并将预读获得的数据存于所述预读缓存中;

所述读写模块803进一步,响应于所述数据读写请求中的针对所述第二raid对应存储空间的数据的读请求,从所述预读缓存中查找是否存在匹配数据;若存在,则将所述匹配数据返回给所述读请求对应的应用。

在本实施例中,所述预设策略为基于轮询的raid选取策略。

在本实施例中,所述若干raid阵列由位于所有固态硬盘的不同分区所构建。

在本实施例中,所述固态硬盘为支持多流写的固态硬盘。

在本实施例中,所述存储系统为全闪存存储系统,所述存储系统支持nvme协议管理所述固态硬盘。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

上述实施例阐明的装置、装置、模块或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

与上述方法实施例相对应,本说明书还提供了一种电子设备的实施例。所述电子设备可以应用于存储设备,所述存储系统包括若干固态硬盘,所述存储系统预设有若干raid阵列;该电子设备包括:处理器以及用于存储机器可执行指令的存储器;其中,处理器和存储器通常通过内部总线相互连接。在其他可能的实现方式中,所述设备还可能包括外部接口,以能够与其他设备或者部件进行通信。

在本实施例中,通过读取并执行所述存储器存储的与数据读写逻辑对应的机器可执行指令,所述处理器被促使:

基于预设策略从所述若干raid阵列中选择出第一raid阵列;

接收针对所述存储系统对应存储空间的数据的读写请求;

响应于所述数据读写请求,将所述数据读写请求中的所有写请求保存在所述第一raid阵列。

在本实施例中,所述存储系统还包括预读缓存,通过读取并执行所述存储器存储的与数据读写逻辑对应的机器可执行指令,所述处理器被促使:

基于预设策略从所述若干raid阵列中选择出第二raid阵列,其中,所述第二raid为所述若干raid阵列中除所述第一raid阵列外的其它raid阵列;

针对所述第二raid对应存储空间的数据执行预读操作,并将预读获得的数据存于所述预读缓存中;

响应于所述数据读写请求中的针对所述第二raid对应存储空间的数据的读请求,从所述预读缓存中查找是否存在匹配数据;若存在,则将所述匹配数据返回给所述读请求对应的应用。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。

应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。

以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1