基于软件化存储系统读写数据的方法以及装置与流程

文档序号:13421198阅读:212来源:国知局
基于软件化存储系统读写数据的方法以及装置与流程

本申请涉及存储介质领域,具体涉及一种基于软件化存储系统写数据的方法。本申请同时涉及一种基于软件化存储系统写数据的装置、基于软件化存储系统读数据的方法和基于软件化存储系统读数据的装置。



背景技术:

随着it技术的迅速发展,存储介质也得到了显著发展,存储介质更新换代的周期越来越短,存储介质的快速迭代更新已经成为无法改变的大趋势,一方面新型的高速存储介质逐渐被大规模应用,比如ssd(solidstatedrive,固态硬盘),同时,ssd的单盘容量也在逐年增大,工业级的ssd的单盘容量已经达到16tb;另一方面,传统的存储设备存储密度和读写性能也不断提高,比如以sata硬盘(串口硬盘)为代表的hdd(harddiskdrive,机械硬盘)。由于存储介质的快速变化发展,与存储介质紧密相关的服务器、云存储等领域也受到较大影响,存储介质的快速迭代更新不仅使与这些领域相关的存储设备更新加快,同时,为了适应大规模应用的新型的高速存储介质,应用于存储介质的存储系统的架构也在不断迭代更新。

目前,具有高度读写速度的ssd已经开始大规模应用,但是存储介质的底层存储设计仍然是针对传统的hdd开发,很多存储系统的架构和对象都基于hdd构建,如果将这些存储系统直接应用于ssd,则无法充分发挥ssd的性能,导致ssd性能的浪费;当然不乏许多存储系统针对ssd进行专门优化,即使传统的基于hdd构建的存储系统针对ssd进行了专门优化,能够适应ssd,但是随着存储介质的快速迭代更新,在可预见的将来,必然会出现新型的更高密度的存储介质和更高读写速度的存储介质,存储系统仍然需要针对新型的存储介质不断进行优化,甚至需要针对新型的存储介质构建新的存储介质的架构,耗时耗力。

此外,由于存储介质的存储空间越来越大,存储介质往往被寄希望于实现更灵活的存储模型,比如将单个存储介质的部分区域用于缓存数据的存取,部分区域用于持久化数据的存取,当时,目前的存储系统往往将单个存储介质作为整体加以利用,需要做出较大改变才能适应灵活化的存储方式。

因此,现有的存储系统无法适应存储介质的快速迭代更新,存在存储介质性能浪费的缺陷,以及存储系统的适应性差的缺陷。



技术实现要素:

本申请提供一种基于软件化存储系统写数据的方法,以解决现有技术存在的性能浪费和适应性差的问题。

本申请同时涉及一种基于软件化存储系统写数据的装置、基于软件化存储系统读数据的方法和基于软件化存储系统读数据的装置。。

本申请提供一种基于软件化存储系统写数据的方法,包括:

接收向存储介质写数据的写数据请求;

为所述写数据请求分配一个存储池,并在所述存储池中为所述写数据请求分配一个缓存对象;

读取所述写数据请求对应的缓存对象的对象参数;

在所述对象参数中包含的缓存存储目录下针对所述写数据请求进行写操作,并更新所述写数据请求携带的待写入数据在预设索引中的索引条目。

可选的,所述存储池中记录有至少一个缓存对象和至少一个持久化对象,同一个存储池中记录的缓存对象和持久化对象之间具有对应关系。

可选的,所述缓存存储目录基于所述存储介质建立,所述缓存对象与缓存存储目录具有一一对应关系;

相应的,所述持久化对象的对象参数中包含的持久化存储目录基于所述存储介质建立,所述持久化对象与所述持久化存储目录具有一一对应关系。

可选的,所述缓存存储目录和所述持久化存储目录建立在同一存储介质上;

或者,所述缓存存储目录建立在一个存储介质上,所述持久化存储目录建立在其他存储介质上;

其中,所述其他存储介质包括建立所述缓存存储目录之外的存储介质。

可选的,所述缓存对象的对象参数包括:对象标识、存储介质标识、缓存存储目录和存储容量;

相应的,所述持久化对象的对象参数包括:对象标识、存储介质标识、持久化存储目录和存储容量;

其中,所述存储容量包括:存储容量上限值和已占用存储容量。

可选的,所述索引条目中记录有对应待写入数据的物理文件名、物理存储偏移量、数据长度和所述待写入数据对应缓存对象的对象标识。

可选的,所述写数据请求包含其携带的待写入数据的物理文件名、物理存储偏移量和数据长度。

可选的,所述读取所述写数据请求对应的缓存对象的对象参数步骤执行之后,且所述在所述对象参数中包含的缓存存储目录下针对所述写数据请求进行写操作,并更新所述写数据请求携带的待写入数据在预设索引中的索引条目步骤执行之前,执行下述步骤:

根据所述待写入数据对应的缓存对象的存储容量,计算可用存储容量;

判断所述可用存储容量是否能够满足写入所述待写入数据,若是,执行下一步。

可选的,所述读取所述写数据请求对应的缓存对象的对象参数步骤执行之后,且所述在所述对象参数中包含的缓存存储目录下针对所述写数据请求进行写操作,并更新所述写数据请求携带的待写入数据在预设索引中的索引条目步骤执行之前,执行下述步骤:

根据所述物理存储偏移量和所述数据长度确定的存储域,判断所述待写入数据的存储域是否与所述预设索引中索引条目对应数据的存储域存在重合部分;

如果不存在重合部分,执行所述在所述对象参数中包含的缓存存储目录下针对所述写数据请求进行写操作,并更新所述写数据请求携带的待写入数据在预设索引中的索引条目步骤。

可选的,所述判断所述待写入数据的存储域是否与所述预设索引中索引条目对应的数据的存储域存在重合部分步骤,如果存在重合部分,按照预设的数据写入规则针对所述待写入数据进行写操作,并更新所述待写入数据在所述预设索引中的索引条目。

可选的,所述数据写入规则包括:

删除所述持久化存储目录下与所述待写入数据存在重合部分的存储域和对应数据;以及,根据所述存储域将所述待写入数据与所述缓存存储目录下对应数据进行去重合并,并将去重合并后的待写入数据写入相应缓存存储目录下。

可选的,所述在所述对象参数中包含的缓存存储目录下针对所述写数据请求进行写操作,并更新所述写数据请求携带的待写入数据在预设索引中的索引条目步骤执行之后,执行下述步骤:

更新所述待写入数据对应的缓存对象的存储容量。

可选的,所的基于软件化存储系统写数据的方法,包括:

选择所述缓存存储目录下对应的写入时间最早的数据作为待存储数据;

在所述待存储数据归属的存储池中,为所述待存储数据分配一个持久化对象;

读取分配的持久化对象的对象参数;

在分配的持久化对象的对象参数中包含的持久化存储目录下针对所述待存储数据进行写操作,并更新所述待存储数据在所述预设索引中的索引条目。

可选的,所述选择所述缓存存储目录下对应的写入时间最早的数据作为待存储数据步骤执行之前,执行下述步骤:

判断所述缓存存储目录的已占用存储容量是否大于或者等于预设的存储容量阈值,若是,执行所述选择所述缓存存储目录下对应的写入时间最早的数据作为待存储数据步骤。

可选的,所述读取分配的持久化对象的对象参数步骤执行之后,且所述在分配的持久化对象的对象参数中包含的持久化存储目录下针对所述待存储数据进行写操作,并更新所述待存储数据在所述预设索引中的索引条目步骤执行之前,执行下述步骤:

根据分配的持久化对象的存储容量,计算第二可用存储容量;

判断所述第二可用存储容量是否能够满足写入所述待存储数据,若是,执行下一步。

可选的,所述读取分配的持久化对象的对象参数步骤执行之后,且所述在分配的持久化对象的对象参数中包含的持久化存储目录下针对所述待存储数据进行写操作,并更新所述待存储数据在所述预设索引中的索引条目步骤执行之前,执行下述步骤:

根据所述物理存储偏移量和所述数据长度确定的存储域,判断所述待存储数据的存储域是否与所述预设索引中索引条目对应数据的存储域存在重合部分;

如果不存在重合部分,执行所述在分配的持久化对象的对象参数中包含的持久化存储目录下针对所述待存储数据进行写操作,并更新所述待存储数据在所述预设索引中的索引条目步骤。

可选的,所述判断所述待存储数据的存储域是否与所述预设索引中索引条目对应数据的存储域存在重合部分步骤,如果存在重合部分,按照预设的数据存储规则针对所述待存储数据进行写操作,并更新所述待存储数据在所述预设索引中的索引条目。

可选的,所述数据存储规则包括:

删除所述待存储数据中、与所述缓存存储目录下数据存在重合部分的存储域和对应数据;以及,根据所述存储域将所述待存储数据与所述持久化存储目录下对应数据进行去重合并,并将去重合并后的待存储数据写入相应持久化存储目录下。

可选的,所述在分配的持久化对象的对象参数中包含的持久化存储目录下针对所述待存储数据进行写操作,并更新所述待存储数据在所述预设索引中的索引条目步骤执行之后,执行下述步骤:

回收所述待存储数据在所述缓存存储目录下占用的存储空间。

可选的,所述为所述写数据请求分配一个存储池,基于预设的存储池管理单元执行,所述存储池管理单元中设置有至少一个所述存储池;

所述存储池设置有一一对应存储池标识,所述存储池标识存储在所述存储池管理单元中。

可选的,所述读取所述写数据请求对应的缓存对象的对象参数步骤,基于预设的缓存对象管理单元执行,所述缓存对象的对象参数存储在所述缓存对象管理单元中。

可选的,所述读取分配的持久化对象的对象参数步骤,基于预设的持久化对象管理单元执行,所述持久化对象的对象参数存储在所述持久化对象管理单元中。

本申请另外提供一种基于软件化存储系统写数据的装置,包括:

写数据请求接收单元,用于接收向存储介质写数据的写数据请求;

缓存对象分配单元,用于为所述写数据请求分配一个存储池,并在所述存储池中为所述写数据请求分配一个缓存对象;

对象参数读取单元,用于读取所述写数据请求对应的缓存对象的对象参数;

数据写入单元,用于在所述对象参数中包含的缓存存储目录下针对所述写数据请求进行写操作,并更新所述写数据请求携带的待写入数据在预设索引中的索引条目。

可选的,所述存储池中记录有至少一个缓存对象和至少一个持久化对象,同一个存储池中记录的缓存对象和持久化对象之间具有对应关系。

可选的,所述缓存存储目录基于所述存储介质建立,所述缓存对象与缓存存储目录具有一一对应关系;

相应的,所述持久化对象的对象参数中包含的持久化存储目录基于所述存储介质建立,所述持久化对象与所述持久化存储目录具有一一对应关系。

可选的,所述缓存对象的对象参数包括:对象标识、存储介质标识、缓存存储目录和存储容量;

相应的,所述持久化对象的对象参数包括:对象标识、存储介质标识、持久化存储目录和存储容量;

其中,所述存储容量包括:存储容量上限值和已占用存储容量。

可选的,所述索引条目中记录有对应待写入数据的物理文件名、物理存储偏移量、数据长度和所述待写入数据对应缓存对象的对象标识。

可选的,所述写数据请求包含其携带的待写入数据的物理文件名、物理存储偏移量和数据长度。

可选的,所述基于软件化存储系统写数据的装置,包括:

可用存储容量计算单元,用于根据所述待写入数据对应的缓存对象的存储容量,计算可用存储容量;

可用存储容量判断单元,用于判断所述可用存储容量是否能够满足写入所述待写入数据,若是,运行所述数据写入单元。

可选的,所述基于软件化存储系统写数据的装置,包括:

数据重合判断单元,用于根据所述物理存储偏移量和所述数据长度确定的存储域,判断所述待写入数据的存储域是否与所述预设索引中索引条目对应数据的存储域存在重合部分;

如果不存在重合部分,运行所述数据写入单元。

可选的,所述基于软件化存储系统写数据的装置,包括:

存储容量更新单元,用于更新所述待写入数据对应的缓存对象的存储容量。

可选的,所述基于软件化存储系统写数据的装置,包括:

待存储数据选择单元,用于选择所述缓存存储目录下对应的写入时间最早的数据作为待存储数据;

持久化对象分配单元,用于在所述待存储数据归属的存储池中,为所述待存储数据分配一个持久化对象;

第二对象参数读取单元,用于读取分配的持久化对象的对象参数;

数据存储单元,用于在分配的持久化对象的对象参数中包含的持久化存储目录下针对所述待存储数据进行写操作,并更新所述待存储数据在所述预设索引中的索引条目。

可选的,所述基于软件化存储系统写数据的装置,包括:

已占用存储容量判断单元,用于判断所述缓存存储目录的已占用存储容量是否大于或者等于预设的存储容量阈值,若是,运行所述待存储数据选择单元。

可选的,所述基于软件化存储系统写数据的装置,包括:

第二可用存储容量计算单元,用于根据分配的持久化对象的存储容量,计算第二可用存储容量;

第二可用存储容量判断单元,用于判断所述第二可用存储容量是否能够满足写入所述待存储数据,若是,运行所述数据存储单元。

可选的,所述基于软件化存储系统写数据的装置,包括:

第二数据重合判断单元,用于根据所述物理存储偏移量和所述数据长度确定的存储域,判断所述待存储数据的存储域是否与所述预设索引中索引条目对应数据的存储域存在重合部分;

如果不存在重合部分,运行所述数据存储单元。

本申请还提供一种基于软件化存储系统读数据的方法,包括:

接收从存储介质读数据的读数据请求;

根据所述读数据请求中携带的物理存储位置信息,在预设索引中查找所述读数据请求对应的索引条目;

根据所述索引条目中记录的缓存对象和/或持久化对象,读取所述缓存对象和/或所述持久化对象的对象参数;

在所述对象参数中包含的缓存存储目录和/或持久化存储目录下,读取所述读数据请求对应的待读取数据;

发送读取到的所述待读取数据。

可选的,所述缓存对象和所述持久化对象记录在预设的存储池中,同一个存储池中记录有至少一个缓存对象和至少一个持久化对象,且同一个存储池中记录的缓存对象和持久化对象之间具有对应关系。

可选的,所述缓存存储目录和所述持久化存储目录基于所述存储介质建立,所述缓存对象与缓存存储目录具有一一对应关系,所述持久化对象与所述持久化存储目录具有一一对应关系。

可选的,所述缓存对象的对象参数包括:对象标识、存储介质标识、缓存存储目录和存储容量;

相应的,所述持久化对象的对象参数包括:对象标识、存储介质标识、持久化存储目录和存储容量;

其中,所述存储容量包括:存储容量上限值和已占用存储容量。

可选的,所述索引条目中记录有所述物理存储位置信息和所述缓存对象的对象标识,或者所述物理存储位置信息和所述持久化对象的对象标识;

其中,所述物理存储位置信息包括:物理文件名、物理存储偏移量和数据长度。

可选的,所述在所述对象参数中包含的缓存存储目录和/或持久化存储目录下,读取所述读数据请求对应的待读取数据,采用如下方式实现:

在所述缓存对象的对象参数包含的缓存存储目录下,读取所述读数据请求对应的待读取数据;

或者,在所述持久化对象的对象参数包含的持久化存储目录下,读取所述读数据请求对应的待读取数据;

或者,在所述缓存对象的对象参数包含的缓存存储目录下读取对应数据,在所述持久化对象的对象参数包含的持久化存储目录下读取对应数据,并将读取到的数据整合为所述读数据请求对应的待读取数据。

可选的,所述存储池设置有一一对应存储池标识,所述存储池标识存储在预设的存储池管理单元中,所述存储池管理单元中设置有至少一个所述存储池。

可选的,所述读取所述缓存对象和/或所述持久化对象的对象参数步骤,基于预设的缓存对象管理单元或者持久化对象管理单元执行,或者基于所述缓存对象管理单元和所述持久化对象管理单元执行;

所述缓存对象的对象参数存储在所述缓存对象管理单元中,所述持久化对象的对象参数存储在所述持久化对象管理单元中。

本申请还提供一种基于软件化存储系统读数据的装置,包括:

读数据请求接收单元,用于接收从存储介质读数据的读数据请求;

索引条目查找单元,用于根据所述读数据请求中携带的物理存储位置信息,在预设索引中查找所述读数据请求对应的索引条目;

对象参数读取单元,用于根据所述索引条目中记录的缓存对象和/或持久化对象,读取所述缓存对象和/或所述持久化对象的对象参数;

待读取数据读取单元,用于在所述对象参数中包含的缓存存储目录和/或持久化存储目录下,读取所述读数据请求对应的待读取数据;

待读取数据发送单元,用于发送读取到的所述待读取数据。

与现有技术相比,本申请具有以下优点:

本申请提供的基于软件化存储系统写数据的方法,包括:接收向存储介质写数据的写数据请求;为所述写数据请求分配一个存储池,并在所述存储池中为所述写数据请求分配一个缓存对象;读取所述写数据请求对应的缓存对象的对象参数;在所述对象参数中包含的缓存存储目录下针对所述写数据请求进行写操作,并更新所述写数据请求携带的待写入数据在预设索引中的索引条目。

本申请提供的所述基于软件化存储系统写数据的方法,针对向存储介质写数据的写数据请求分配一个存储池,并在所述存储池中为所述写数据请求分配一个缓存对象,根据读取的所述写数据请求对应的缓存对象的对象参数中包含的缓存存储目录,将所述写数据请求携带的待写入数据写入所述缓存存储目录下,并更新所述待写入数据在预设索引中的索引条目。所述基于软件化存储系统写数据的方法,适用于不同配置的物理机器的存储介质,同时还能对存储介质上的存储区域进行组合管理,具有较大的性能优势;此外,还能适应存储介质的快速迭代更新,具有较强的适应性。

附图说明

附图1是本申请实施例提供的一种基于软件化存储系统写数据的方法处理流程图;

附图2是本申请实施例提供的第一种软件化存储系统的示意图;

附图3是本申请实施例提供的一种缓存存储层和持久化存储层的示意图;

附图4是本申请实施例提供的第二种软件化存储系统的示意图;

附图5是本申请实施例提供的第一种存储介质组合方式的示意图;

附图6是本申请实施例提供的第二种存储介质组合方式的示意图;

附图7是本申请实施例提供的一种基于软件化存储系统写数据的装置的示意图;

附图8是本申请实施例提供的一种基于软件化存储系统读数据的方法处理流程图;

附图9是本申请实施例提供的一种基于软件化存储系统读数据的装置实施例的示意图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其他方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。

本申请提供一种基于软件化存储系统写数据的方法,本申请还提供一种基于软件化存储系统写数据的装置、基于软件化存储系统读数据的方法和基于软件化存储系统读数据的装置。以下分别结合本申请提供的实施例的附图逐一进行详细说明,并且对方法的各个步骤进行说明。

本申请提供的一种基于软件化存储系统写数据的方法实施例如下:

参照附图1,其示出了本实施例提供的一种基于软件化存储系统写数据的方法处理流程图;参照附图2,其示出了本实施例提供的第一种软件化存储系统的示意图;参照附图3,其示出了本实施例提供的一种缓存存储层和持久化存储层的示意图;参照附图4,其示出了本实施例提供的第二种软件化存储系统的示意图;参照附图5,其示出了本实施例提供的第一种存储介质组合方式的示意图;参照附图6,其示出了本实施例提供的第二种存储介质组合方式的示意图。

此外,所述基于软件化存储系统写数据的方法实施例的各个步骤之间的关系,请根据附图1确定。

步骤s101,接收向存储介质写数据的写数据请求。

本申请提供的所述基于软件化存储系统写数据的方法,将存储介质的存储管理功能抽象为一层软件化存储系统提供给上层逻辑,上层逻辑通过软件化存储系统访问存储介质。在此基础上,存储介质进行迭代更新时,更新工作只发生在软件化存储系统和存储介质之间,上层逻辑不受影响。在具体实施时,软件化存储系统中的任意一个存储对象,不仅可以与一个存储介质建立对应关系,还可以与存储介质上的存储区域建立对应关系,增强软件化存储系统对存储介质的兼容性。此外,为了支持单一存储介质以及多种存储介质混合使用等不同硬件环境,还可以将软件化存储系统的抽象存储层抽象为多层,不同的抽象存储层对应不同的存储介质组合。

如附图2所示的软件化存储系统,抽象存储层管理单元可加载各种存储算法,例如,基于混合存储介质的存储算法和基于单一单存储介质存储算法。抽象存储层当中的缓存存储层负责支持对作为数据缓存的存储介质进行抽象,比如高速存储介质;持久化存储层负责支持对作为数据持久化的存储介质进行抽象,比如低速存储介质。除此之外,所述抽象存储层还可以对存储介质上的存储区域进行抽象。上层逻辑在访问存储介质时,通过抽象存储层发起相应数据请求。

在软件化存储系统中,数据的定位不在是基于存储数据的存储介质的存储介质标识(diskid),而是基于缓存存储层上缓存对象的对象标识进行定位,或者是基于持久化存储层上持久化对象的对象标识进行定位。

本实施例中,缓存存储层上设置的缓存对象不仅可以和存储介质映射,还可以和存储介质上的存储区域映射。相应的,持久化存储层上设置的持久化对象不仅可以和存储介质映射,还可以和存储介质上的存储区域映射。此外,针对所述缓存对象和所述持久化对象,设置用于管理所述缓存对象和所述持久化对象的存储池。所述存储池中记录有至少一个缓存对象和至少一个持久化对象,同一个存储池中记录的缓存对象和持久化对象之间具有对应关系。所述缓存对象和所述持久化对象的对应关系存储在对应存储池当中,由所述存储池进行所述缓存对象和所述持久化对象的分配管理,所述存储池通过其记录的缓存对象和持久化对象与所述存储介质建立对应关系,或者与所述存储介质上的存储区域建立对应关系。例如,如附图3所示的缓存存储层和持久化存储层,每个存储池管理一个虚线框内的缓存对象持久化对象,即:每个存储池管理一个缓存对象和若干持久化对象。

具体实施时,所述缓存对象与所述存储介质上建立的缓存存储目录对应,所述持久化对象与所述存储介质上建立的持久化存储目录对应。所述缓存存储目录基于所述存储介质建立,所述缓存对象与缓存存储目录具有一一对应关系。相应的,所述持久化对应的持久化存储目录基于所述存储介质建立,所述持久化对象与所述持久化存储目录具有一一对应关系。例如,一块磁盘设备,/dev/sdb,可以挂载为/disk1,/disk1目录下创建的目录包括:/disk1/cache、/disk1/data_1、/disk1/data_2和/disk1/data_3;其中,目录/disk1/cache为缓存对象对应的缓存存储目录,目录/disk1/data_1、/disk1/data_2和/disk1/data_3为持久化对象对应的持久化存储目录。

此外,所述缓存对象会记录对应缓存存储目录的可用存储容量,所述缓存存储目录的状态(normal、error或loading),以及所述缓存存储目录下文件数目等信息。所述缓存对象还负责对外提供一系列接口,例如,在所述缓存存储目录下查找/删除/创建/打开/关闭文件的接口,检查所述缓存存储目录所在存储介质或者存储介质的存储区域是否正常的接口,以及软件化存储系统启动时的初始化接口。相应的,所述持久化对象会记录对应持久化存储目录的可用存储容量,所述持久化存储目录的状态(normal、error或loading),以及所述持久化存储目录下文件数目等信息。此外,所述持久化对象还负责对外提供一系列接口,例如,在所述持久化存储目录下查找/删除/创建/打开/关闭文件的接口,检查所述持久化存储目录所在存储介质或者存储介质的存储区域是否正常的接口,以及软件化存储系统启动时的初始化接口。

如附图4所示的软件化存储系统,设置有缓存对象管理单元、持久化对象管理单元和存储池管理单元。

所述缓存对象管理单元用于管理所有的缓存对象,并且用于存储并管理所述缓存对象的对象参数,所述缓存对象的对象参数包括:对象标识、存储介质标识、缓存存储目录和存储容量。

所述缓存对象设置有唯一对应的对象标识,通过所述对象标识来区分不同的缓存对象。如上所述,所述缓存对象与一个存储介质或者存储介质上的一个存储区域建立对应关系,所述存储介质标识是指对应存储介质的存储介质标识。所述存储容量,是指所述缓存存储目录下可以存储数据的容量,以及所述缓存存储目录下当前已经存储的数据所占容量。

相应的,所述持久化对象管理单元用于管理所有的持久化对象,并且用于存储并管理所述持久化对象的对象参数,所述持久化对象的对象参数包括:对象标识、存储介质标识、持久化存储目录和存储容量。

所述持久化对象设置有唯一对应的对象标识,通过所述对象标识来区分不同的持久化对象。如上所述,所述持久化对象与一个存储介质或者存储介质上的一个存储区域建立对应关系,所述存储介质标识是指对应存储介质的存储介质标识。所述存储容量,是指所述持久化存储目录下可以存储数据的容量,以及所述持久化存储目录下当前已经存储的数据所占容量。

软件化存储系统中设置有至少一个存储池,每个存储池设置有一一对应存储池标识,所述存储池管理单元用于管理所有的存储池,所述存储池标识存储在所述存储池管理单元中,所述存储池管理单元通过所述存储池标识对储存池进行分配管理。

如上所述,所述缓存存储目录和所述持久化目录基于所述存储介质建立,且所述缓存对象与缓存存储目录具有一一对应关系,所述持久化对象与持久化存储目录具有一一对应关系,在具体实施时,所述缓存对象对应的缓存存储目录和所述持久化对象对应的持久化存储目录,可以基于同一存储介质建立。

例如,如附图5所示,ssd1_cache为存储介质ssd1上的一个存储区域,该存储区域用于存储缓存存储目录下的数据;ssd1_data为存储介质ssd1上的另外一个或者多个存储区域,每个存储区域用于存储对应持久化存储目录下的数据;ssd2_cache为存储介质ssd2上的一个存储区域,该存储区域用于存储缓存存储目录下的数据;ssd2_data为存储介质ssd2上的另外一个或者多个存储区域,每个存储区域用于存储对应持久化存储目录下的数据。同时,处于同一虚线框内的各存储区域对应的缓存对象和持久化存储对象具有对应关系,由同一个存储池进行管理,ssd1_cache对应的缓存对象和ssd1_data对应的持久化存储对象,具有对应关系,由同一个存储池进行管理;ssd2_cache对应的缓存对象和ssd2_data对应的持久化存储对象,同样具有对应关系,由另一个存储池进行管理。

在实际应用中,可以采用多种具体的实现方式,实现基于所述存储介质建立所述缓存对象对应的缓存存储目录和所述持久化对象对应的持久化存储目录。实现基于所述存储介质建立所述缓存存储目录和所述持久化存储目录的各种形式的变化,都只是具体实现方式的变更,都不偏离本申请的核心,因此都在本申请的保护范围之内。例如,具有对应关系的缓存存储目录和持久化存储目录建立在不同存储介质上,如附图6所示,处于同一虚线框内的各存储区域对应的缓存对象和持久化存储对象具有对应关系,由同一个存储池进行管理,但缓存对象对应的存储区域和持久化对象对应的存储区域不同存储介质上。

如上所述,所述缓存对象对应的缓存存储目录,以及所述持久化对象的持久化存储目录,既可以基于同一存储介质建立,也可以基于不同的存储介质建立(同一类型的不同存储介质,或者不同类型的存储介质),基于同一存储介质或者不同存储介质,只是存储介质上存储区域的不同组合方式。在实际应用中,当有新型的存储介质被应用时,可将新型存储介质的存储区域加入上述存储区域的组合方式,提升了软件化存储系统对存储介质的兼容性。

本申请实施例中,上层逻辑的i/o线程与所述存储介质建立关联,即所述i/o线程与所述存储介质之间建立的映射关系;映射关系建立后,所述i/o线程会为所述存储介质上建立的缓存存储目录和持久化存储目录服务,所有针对缓存存储目录和持久化存储目录的i/o操作,都由对应i/o线程来处理。在本步骤执行之前,通过上层逻辑与所述存储介质建立的i/o线程,来接收所述写数据请求。其中,所述写数据请求携带向所述存储介质写入的待写入数据。

本实施例中,软件化存储系统通过维护一个预设索引来管理针对所述存储介质读写操作。具体的,所述预设索引的索引条目中记录有对应待写入数据的物理文件名、物理存储偏移量、数据长度和所述待写入数据对应缓存对象的对象标识。上层逻辑向所述存储介质写入数据时,向软件化存储系统下发待写入数据的待写入数据的物理文件名、物理存储偏移量和数据长度,即:所述写数据请求包含其携带的待写入数据的物理文件名、物理存储偏移量和数据长度,软件化存储系统通过所述api返回所述待写入数据的对应缓存对象的对象标识,对应持久化对象的对象标识,或者对应缓存对象和对应持久化对象的对象标识。由此可知,所述写数据请求包含其携带的待写入数据的物理文件名、物理存储偏移量和数据长度。

步骤s102,为所述写数据请求分配一个存储池,并在所述存储池中为所述写数据请求分配一个缓存对象。

本步骤中,针对上述步骤s101接收到的所述写数据请求,在所述存储池管理单元中,为所述写数据请求分配一个存储池,作为所述写数据请求对应的存储池,并根据所述存储池的存储池标识,在所述写数据请求对应的存储池中为所述写数据请求分配一个缓存对象。

步骤s103,读取所述写数据请求对应的缓存对象的对象参数。

上述步骤s102中,在所述存储池管理单元中为所述写数据请求分配了一个存储池,并在所述存储池中为所述写数据请求分配一个缓存对象。本步骤中,读取所述写数据请求对应的缓存对象的对象参数。如上所述,所述缓存对象的对象参数存储在所述缓存对象管理单元中,因此,本步骤读取所述写数据请求对应的缓存对象的对象参数基于所述缓存对象管理单元执行。具体的,根据上述步骤s102为所述写数据请求分配的所述缓存对象的对象标识,在所述缓存对象管理单元中查找所述写数据请求对应的缓存对象,并读取所述写数据请求对应的缓存对象的对象参数,为下述步骤将所述写数据请求携带的带写入数据写入对应缓存存储目录做准备。

具体实施时,本步骤执行之后,读取到所述写数据请求对应的缓存对象的对象参数之后,根据所述写数据请求对应的缓存对象的对象参数,可执行存储容量判断操作,判断对应缓存存储目录可用的存储容量,是否能够满足写入所述待写入数据。

所述存储容量判断操作具体实现如下:

根据所述待写入数据对应的缓存对象的存储容量,计算可用存储容量;

判断所述可用存储容量是否能够满足写入所述待写入数据;

若是,执行下述步骤s104,在所述对象参数中包含的缓存存储目录下针对所述写数据请求进行写操作,并更新所述写数据请求携带的待写入数据在预设索引中的索引条目;或者,执行下述数据重合判断操作;

若否,则返回执行上述步骤s102,在所述存储池管理单元中,为所述写数据请求重新分配一个对应存储池,并在所述写数据请求对应的存储池中为所述写数据请求分配缓存对象;或者,在所述写数据请求对应的存储池中,为所述写数据请求重新分配一个缓存对象。

此外,在具体实施时,在上述存储容量判断操作的基础上,根据所述写数据请求包含的其携带的待写入数据的物理文件名、物理存储偏移量和数据长度,可执行数据重合判断操作,来判断所述待写入数据是否与所述缓存储存目录下的数据有重合部分,以及是否与所述持久化存储目录下的数据有重合部分。

所述数据重合判断操作具体实现如下:

根据所述物理存储偏移量和所述数据长度确定的存储域,判断所述待写入数据的存储域是否与所述预设索引中索引条目对应数据的存储域存在重合部分;

如果存在重合部分,按照预设的数据写入规则针对所述待写入数据进行写操作,并更新所述待写入数据在所述预设索引中的索引条目;

其中,所述数据写入规则为:删除所述持久化存储目录下与所述待写入数据存在重合部分的存储域和对应数据;以及,根据所述存储域将所述待写入数据与所述缓存存储目录下对应数据进行去重合并,并将去重合并后的待写入数据写入相应缓存存储目录下。

如果不存在重合部分,执行下述步骤s104。

例如,待写入数据s1<filex,1000,320>,根据待写入数据s1的物理存储偏移量1000和数据长度320,确定待写入数据s1的存储域为【1000,1320】;

待写入数据s2<filex,50,320>,根据待写入数据s2的物理存储偏移量50和数据长度320,确定待写入数据s2的存储域为【50,370】。

预设索引中已经记录了这几个索引条目:

a<filex,0,100,data_1>,存储域为【0,100】;

b<filex,150,50,cache_1>,存储域为【150,200】;

c<filex,300,100,cache_1>,存储域为【300,400】;

d<filex,600,50,data_1>,存储域为【600,650】。

其中,data_1为该数据对应的持久化对象的对象标识,cache_1为该数据对应的缓存对象的对象标识。

针对待写入数据s1<filex,1000,320>,待写入数据s1的存储域与索引条目对应数据的存储域并无重合部分,执行下述步骤s104即可。

针对待写入数据s2<filex,50,320>,待写入数据s2的存储域【50,370】,与索引条目a、索引条目b和索引条目c对应数据的存储域有重合部分;

索引条目a对应数据在持久化存储目录下,则删除索引条目a对应数据待写入数据s2的存储域【50,370】存在重合部分的存储域和对应数据,删除之后,索引条目a为a<filex,0,50,data_1>,存储域为【0,50】;

索引条目b和索引条目c对应数据在缓存存储目录下,待写入数据s2与索引条目b和索引条目c对应数据进行去重合并,去重合并后的待写入数据s2为:<filex,50,350>,索引条目b和索引条目c被删除,将待写入数据s2<filex,50,350>写入缓存存储目录下,在预设索引中生成新的索引条目e<filex,50,350,cache_1>。

在实际应用中,可以采用多种具体的实现方式,实现所述存储容量判断操作和所述数据重合判断操作。实现所述存储容量判断操作和所述数据重合判断操作的各种形式的变化,都只是具体实现方式的变更,都不偏离本申请的核心,因此都在本申请的保护范围之内。

步骤s104,在所述对象参数中包含的缓存存储目录下针对所述写数据请求进行写操作,并更新所述写数据请求携带的待写入数据在预设索引中的索引条目。

本步骤中,在所述对象参数中包含的缓存存储目录下针对所述写数据请求进行写操作,并更新所述写数据请求携带的待写入数据在预设索引中的索引条目。

例如,待写入数据s1<filex,1000,320>,存储域为【1000,1320】;

预设索引中已经记录了这几个索引条目:

a<filex,0,100,data_1>,存储域为【0,100】;

b<filex,150,50,cache_1>,存储域为【150,200】;

c<filex,300,100,cache_1>,存储域为【300,400】;

d<filex,600,50,data_1>,存储域为【600,650】。

将待写入数据s1写入缓存存储目录下,在预设索引中生成新的索引条目f<filex,1000,320,cache_1>。

具体实施时,还可以在上述存储容量判断操作和/或上述数据重合判断操作的基础上执行步骤,基于此,本步骤得以实施的前提是:上述存储容量判断操作中,对应缓存存储目录可用的存储容量能够满足写入所述待写入数据,和/或,上述数据重合判断操作中,所述待写入数据与所述缓存储存目录下的数据没有重合部分,并且与所述持久化存储目录下的数据没有重合部分。

将所述待写入数据写入所述缓存存储目录之后,所述所述缓存存储目录的存储容量发生变化,更新所述待写入数据对应的缓存对象的存储容量。

以上对所述待写入数据写入所述缓存存储目录的步骤进行了详细说明,但上述只是针对所述待写入数据写入缓存的过程;众所周知,所述存储介质上的缓存存储目录的存储容量是有限的,需要将所述缓存存储目录下的数据存储至持久化存储中。下面针对数据从缓存写入持久化的过程进行说明。

所述缓存存储目录下的数据写入所述持久化存储目录的具体实现如下:

1)选择所述缓存存储目录下对应的写入时间最早的数据作为待存储数据;

在本步骤执行之前,可执行判断所述缓存存储目录的已占用存储容量是否大于或者等于预设的存储容量阈值步骤,若所述缓存存储目录的已占用存储容量大于或者等于所述存储容量阈值,则执行本步骤;若所述缓存存储目录的已占用存储容量小于所述存储容量阈值,不作处理即可。

2)在所述待存储数据归属的存储池中,为所述待存储数据分配一个持久化对象;

本步骤中,所述缓存存储目录下的数据,只能存储到与所述缓存存储目录具有对应关系的持久化存储目录下。基于此,本步骤在所述待存储数据归属的存储池(所述待存储数据对应缓存对象归属的存储池)当中,为所述待存储数据分配一个持久化对象。

3)读取分配的持久化对象的对象参数;

本步骤基于所述持久化对象管理单元执行。具体的,根据上述步骤2)分配的所述持久化对象的对象标识,在所述持久化对象管理单元中查找并读取分配的所述持久化对象的对象参数,为下述步骤将所述待存储数据写入对应持久化存储目录做准备。

具体实施时,在本步骤执行之后,读取到分配的持久化对象的对象参数之后,根据分配的持久化对象的对象参数,执行第二存储容量判断操作,判断对应持久化存储目录可用的存储容量是否能够满足写入所述待存储数据。

所述第二存储容量判断操作具体实现如下:

根据分配的持久化对象的存储容量,计算第二可用存储容量;

判断所述第二可用存储容量是否能够满足写入所述待存储数据;

若是,执行下述步骤4),在分配的持久化对象的对象参数中包含的持久化存储目录下针对所述待存储数据进行写操作,并更新所述待存储数据在所述预设索引中的索引条目;或者,执行下述第二数据重合判断操作;

若否,返回执行上述步骤2),在所述待存储数据归属的存储池中,为所述待存储数据重新分配一个持久化对象。

此外,还可以在上述第二存储容量判断操作的基础上,根据所述待存储数据对应的索引条目中记录的物理文件名、物理存储偏移量和数据长度,判断所述待存储数据是否与所述缓存储存目录下的数据有重合部分,以及是否与所述持久化存储目录下的数据有重合部分。

所述第二数据重合判断操作具体实现如下:

根据所述物理存储偏移量和所述数据长度确定的存储域,判断所述待存储数据的存储域是否与所述预设索引中索引条目对应数据的存储域存在重合部分;

如果存在重合部分,按照预设的数据存储规则针对所述待存储数据进行写操作,并更新所述待存储数据在所述预设索引中的索引条目;

其中,所述数据存储规则为:删除所述待存储数据中、与所述缓存存储目录下数据存在重合部分的存储域和对应数据;以及,根据所述存储域将所述待存储数据与所述持久化存储目录下对应数据进行去重合并,并将去重合并后的待存储数据写入相应持久化存储目录下。

如果不存在重合部分,执行下述步骤4)。

例如,待存储数据s3<filex,30,140>,存储域为【30,170】;

预设索引中已经记录了这几个索引条目:

a<filex,0,100,data_1>,存储域为【0,100】;

b<filex,150,50,cache_1>,存储域为【150,200】;

c<filex,300,100,cache_1>,存储域为【300,400】;

d<filex,600,50,data_1>,存储域为【600,650】。

待存储数据s3索引条目a和索引条目b对应数据的存储域有重合部分;

索引条目b对应数据在缓存存储目录下,删除待存储数据s3与索引条目b对应数据存在重合部分的存储域和对应数据,删除之后,待存储数据s3为<filex,30,120>;

索引条目a对应数据在持久化存储目录下,将待存储数据s3<filex,30,120>与索引条目a对应数据进行去重合并,去重合并后的待存储数据s3为<filex,0,150>,索引条目a被删除,将待存储数据s3为<filex,0,150>写入持久化存储目录下,在预设索引中生成新的索引条目g<filex,0,150,data_1>。

在实际应用中,可以采用多种具体的实现方式,实现所述第二存储容量判断操作和所述第二数据重合判断操作。实现所述第二存储容量判断操作和所述第二数据重合判断操作的各种形式的变化,都只是具体实现方式的变更,都不偏离本申请的核心,因此都在本申请的保护范围之内。

4)在分配的持久化对象的对象参数中包含的持久化存储目录下针对所述待存储数据进行写操作,并更新所述待存储数据在所述预设索引中的索引条目。

例如,待存储数据s4<filex,700,50>,存储域为【700,750】;

预设索引中已经记录了这几个索引条目:

a<filex,0,100,data_1>,存储域为【0,100】;

b<filex,150,50,cache_1>,存储域为【150,200】;

c<filex,300,100,cache_1>,存储域为【300,400】;

d<filex,600,50,data_1>,存储域为【600,650】。

将待存储数据s4写入持久化存储目录下,在预设索引中生成新的索引条目h<filex,700,50,data_1>。

在上述步骤将所述待存储数据写入所述持久化存储目录之后,回收所述待存储数据在所述缓存存储目录下占用的存储空间。

具体实施时,还可以区分所述待写入数据写入缓存的i/o操作和所述待存储数据写入持久化存储的i/o操作,针对不同的i/o操作设置不同的处理优先级,例如,由于所述待写入数据写入缓存的i/o操作要响应上层逻辑的写数据请求,针对写入缓存的i/o操作设置高优先级,写入持久化存储的i/o操作设置低优先级;但是,当所述缓存存储目录的已占用存储容量达到预设的存储容量阈值时,将写入持久化存储的i/o操作提升为高优先级,写入缓存的i/o操作设置降为低优先级,促使所述缓存存储目录尽快释放存储空间,以响应上层逻辑的写数据请求。

基于本申请实现的软件化存储系统,在ssd和hdd共同使用的场景中,可以体现出较大的性能优势;特别地,在分布式集群中,当不同的物理机器具有异构存储介质(有的物理机器配置ssd,有的物理机器配置hdd),软件化存储系统可以对不同配置的物理机器的存储介质进行组合管理,具有较大的性能优势。

另一方面,随着存储介质的存储密度不断提高,存储性能持续上升,以及新型存储介质的更新换代,基于本申请实现的软件化存储系统,能够适应不断提高的存储介质的存储密度,同时能够适应存储介质的快速迭代更新,具有较强的适应性。

综上所述,本申请提供的所述基于软件化存储系统写数据的方法,首先接收向存储介质写数据的写数据请求,针对向存储介质写数据的写数据请求分配一个存储池,并在所述存储池中为所述写数据请求分配一个缓存对象,根据读取的所述写数据请求对应的缓存对象的对象参数中包含的缓存存储目录,将所述写数据请求携带的待写入数据写入所述缓存存储目录下,并更新所述待写入数据在预设索引中的索引条目。所述基于软件化存储系统写数据的方法,适用于不同配置的物理机器的存储介质,同时还能够对同一或者不同存储介质上的存储区域进行组合管理,具有较大的性能优势;此外,还能适应存储介质的快速迭代更新,具有较强的适应性。

本申请提供的一种基于软件化存储系统写数据的装置实施例如下:

在上述的实施例中,提供了一种基于软件化存储系统写数据的方法,与之相对应的,本申请还提供了一种基于软件化存储系统写数据的装置,下面结合附图进行说明。

参照附图7,其示出了本申请提供的一种基于软件化存储系统写数据的装置实施例的示意图。

由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关的部分请参见上述提供的方法实施例的对应说明即可。下述描述的装置实施例仅仅是示意性的。

本申请提供一种基于软件化存储系统写数据的装置,包括:

写数据请求接收单元701,用于接收向存储介质写数据的写数据请求;

缓存对象分配单元702,用于为所述写数据请求分配一个存储池,并在所述存储池中为所述写数据请求分配一个缓存对象;

对象参数读取单元703,用于读取所述写数据请求对应的缓存对象的对象参数;

数据写入单元704,用于在所述对象参数中包含的缓存存储目录下针对所述写数据请求进行写操作,并更新所述写数据请求携带的待写入数据在预设索引中的索引条目。

可选的,所述存储池中记录有至少一个缓存对象和至少一个持久化对象,同一个存储池中记录的缓存对象和持久化对象之间具有对应关系。

可选的,所述缓存存储目录基于所述存储介质建立,所述缓存对象与缓存存储目录具有一一对应关系;

相应的,所述持久化对象的对象参数中包含的持久化存储目录基于所述存储介质建立,所述持久化对象与所述持久化存储目录具有一一对应关系。

可选的,所述缓存存储目录和所述持久化存储目录建立在同一存储介质上;

或者,所述缓存存储目录建立在一个存储介质上,所述持久化存储目录建立在其他存储介质上;

其中,所述其他存储介质包括建立所述缓存存储目录之外的存储介质。

可选的,所述缓存对象的对象参数包括:对象标识、存储介质标识、缓存存储目录和存储容量;

相应的,所述持久化对象的对象参数包括:对象标识、存储介质标识、持久化存储目录和存储容量;

其中,所述存储容量包括:存储容量上限值和已占用存储容量。

可选的,所述索引条目中记录有对应待写入数据的物理文件名、物理存储偏移量、数据长度和所述待写入数据对应缓存对象的对象标识。

可选的,所述写数据请求包含其携带的待写入数据的物理文件名、物理存储偏移量和数据长度。

可选的,所述基于软件化存储系统写数据的装置,包括:

可用存储容量计算单元,用于根据所述待写入数据对应的缓存对象的存储容量,计算可用存储容量;

存储容量判断单元,用于判断所述可用存储容量是否能够满足写入所述待写入数据,若是,运行所述数据写入单元704。

可选的,所述基于软件化存储系统写数据的装置,包括:

数据重合判断单元,用于根据所述物理存储偏移量和所述数据长度确定的存储域,判断所述待写入数据的存储域是否与所述预设索引中索引条目对应数据的存储域存在重合部分;

如果不存在重合部分,运行所述数据写入单元704。

可选的,如果所述数据重合判断单元的判断结果为:所述待写入数据的存储域与所述预设索引中索引条目对应数据的存储域存在重合部分,则按照预设的数据写入规则针对所述待写入数据进行写操作,并更新所述待写入数据在所述预设索引中的索引条目。

可选的,所述数据写入规则包括:

删除所述持久化存储目录下与所述待写入数据存在重合部分的存储域和对应数据;以及,根据所述存储域将所述待写入数据与所述缓存存储目录下对应数据进行去重合并,并将去重合并后的待写入数据写入相应缓存存储目录下。

可选的,所述基于软件化存储系统写数据的装置,包括:

存储容量更新单元,用于更新所述待写入数据对应的缓存对象的存储容量。

可选的,所述基于软件化存储系统写数据的装置,包括:

待存储数据选择单元,用于选择所述缓存存储目录下对应的写入时间最早的数据作为待存储数据;

持久化对象分配单元,用于在所述待存储数据归属的存储池中,为所述待存储数据分配一个持久化对象;

第二对象参数读取单元,用于读取分配的持久化对象的对象参数;

数据存储单元,用于在分配的持久化对象的对象参数中包含的持久化存储目录下针对所述待存储数据进行写操作,并更新所述待存储数据在所述预设索引中的索引条目。

可选的,所述基于软件化存储系统写数据的装置,包括:

已占用存储容量判断单元,用于判断所述缓存存储目录的已占用存储容量是否大于或者等于预设的存储容量阈值,若是,运行所述待存储数据选择单元。

可选的,所述基于软件化存储系统写数据的装置,包括:

第二可用存储容量计算单元,用于根据分配的持久化对象的存储容量,计算第二可用存储容量;

第二可用存储容量判断单元,用于判断所述第二可用存储容量是否能够满足写入所述待存储数据,若是,运行所述数据存储单元。

可选的,所述基于软件化存储系统写数据的装置,包括:

第二数据重合判断单元,用于根据所述物理存储偏移量和所述数据长度确定的存储域,判断所述待存储数据的存储域是否与所述预设索引中索引条目对应数据的存储域存在重合部分;

如果不存在重合部分,运行所述数据存储单元。

可选的,如果所述第二数据重合判断单元的判断结果为:所述待存储数据的存储域与所述预设索引中索引条目对应数据的存储域存在重合部分,则按照预设的数据存储规则针对所述待存储数据进行写操作,并更新所述待存储数据在所述预设索引中的索引条目。

可选的,所述数据存储规则包括:

删除所述待存储数据中、与所述缓存存储目录下数据存在重合部分的存储域和对应数据;以及,根据所述存储域将所述待存储数据与所述持久化存储目录下对应数据进行去重合并,并将去重合并后的待存储数据写入相应持久化存储目录下。

可选的,所述基于软件化存储系统写数据的装置,包括:

存储空间回收单元,用于回收所述待存储数据在所述缓存存储目录下占用的存储空间。

可选的,所述基于软件化存储系统写数据的装置,设置有存储池管理单元执行,所述存储池管理单元中设置有至少一个所述存储池;

所述存储池设置有一一对应存储池标识,所述存储池标识存储在所述存储池管理单元中。

可选的,所述基于软件化存储系统写数据的装置,设置有缓存对象管理单元执行,所述缓存对象的对象参数存储在所述缓存对象管理单元中。

可选的,所述基于软件化存储系统写数据的装置,设置有持久化对象管理单元执行,所述持久化对象的对象参数存储在所述持久化对象管理单元中。

本申请提供的一种基于软件化存储系统读数据的方法实施例如下:

在上述的实施例中,提供了一种基于软件化存储系统写数据的方法,此外,本申请还提供了一种基于软件化存储系统读数据的方法,二者相互配合。下面结合附图进行说明。

参照附图8,其示出了本申请提供的一种基于软件化存储系统读数据的方法处理流程图。

由于所述基于软件化存储系统读数据的方法与上述提供的基于软件化存储系统写数据的方法相互对应,所以描述得比较简单,相关的部分请参见上述提供的上述提供的基于软件化存储系统写数据的方法实施例的对应说明即可。下述描述的实施例仅仅是示意性的。

本申请提供一种基于软件化存储系统读数据的方法,包括:

步骤s801,接收从存储介质读数据的读数据请求;

步骤s802,根据所述读数据请求中携带的物理存储位置信息,在预设索引中查找所述读数据请求对应的索引条目;

步骤s803,根据所述索引条目中记录的缓存对象和/或持久化对象,读取所述缓存对象和/或所述持久化对象的对象参数;

步骤s804,在所述对象参数中包含的缓存存储目录和/或持久化存储目录下,读取所述读数据请求对应的待读取数据;

步骤s805,发送读取到的所述待读取数据。

可选的,所述缓存对象和所述持久化对象记录在预设的存储池中,同一个存储池中记录有至少一个缓存对象和至少一个持久化对象,且同一个存储池中记录的缓存对象和持久化对象之间具有对应关系。

可选的,所述缓存存储目录和所述持久化存储目录基于所述存储介质建立,所述缓存对象与缓存存储目录具有一一对应关系,所述持久化对象与所述持久化存储目录具有一一对应关系。

可选的,所述缓存存储目录和所述持久化存储目录建立在同一存储介质上;

或者,所述缓存存储目录建立在一个存储介质上,所述持久化存储目录建立在其他存储介质上;

其中,所述其他存储介质包括建立所述缓存存储目录之外的存储介质。

可选的,所述缓存对象的对象参数包括:对象标识、存储介质标识、缓存存储目录和存储容量;

相应的,所述持久化对象的对象参数包括:对象标识、存储介质标识、持久化存储目录和存储容量;

其中,所述存储容量包括:存储容量上限值和已占用存储容量。

可选的,所述索引条目中记录有所述物理存储位置信息和所述缓存对象的对象标识,或者所述物理存储位置信息和所述持久化对象的对象标识;

其中,所述物理存储位置信息包括:物理文件名、物理存储偏移量和数据长度。

可选的,所述在所述对象参数中包含的缓存存储目录和/或持久化存储目录下,读取所述读数据请求对应的待读取数据,采用如下方式实现:

在所述缓存对象的对象参数包含的缓存存储目录下,读取所述读数据请求对应的待读取数据;

或者,在所述持久化对象的对象参数包含的持久化存储目录下,读取所述读数据请求对应的待读取数据;

或者,在所述缓存对象的对象参数包含的缓存存储目录下读取对应数据,在所述持久化对象的对象参数包含的持久化存储目录下读取对应数据,并将读取到的数据整合为所述读数据请求对应的待读取数据。

可选的,所述存储池设置有一一对应存储池标识,所述存储池标识存储在预设的存储池管理单元中,所述存储池管理单元中设置有至少一个所述存储池。

可选的,所述读取所述缓存对象和/或所述持久化对象的对象参数步骤,基于预设的缓存对象管理单元或者持久化对象管理单元执行,或者基于所述缓存对象管理单元和所述持久化对象管理单元执行;

所述缓存对象的对象参数存储在所述缓存对象管理单元中,所述持久化对象的对象参数存储在所述持久化对象管理单元中。

本申请提供的一种基于软件化存储系统读数据的装置实施例如下:

在上述的实施例中,提供了一种基于软件化存储系统读数据的方法,与之相对应的,本申请还提供了一种基于软件化存储系统读数据的装置,下面结合附图进行说明。

参照附图9,其示出了本申请提供的一种基于软件化存储系统读数据的装置实施例的示意图。

由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关的部分请参见上述提供的方法实施例的对应说明即可。下述描述的装置实施例仅仅是示意性的。

本申请提供一种基于软件化存储系统读数据的装置,包括:

读数据请求接收单元901,用于接收从存储介质读数据的读数据请求;

索引条目查找单元902,用于根据所述读数据请求中携带的物理存储位置信息,在预设索引中查找所述读数据请求对应的索引条目;

对象参数读取单元903,用于根据所述索引条目中记录的缓存对象和/或持久化对象,读取所述缓存对象和/或所述持久化对象的对象参数;

待读取数据读取单元904,用于在所述对象参数中包含的缓存存储目录和/或持久化存储目录下,读取所述读数据请求对应的待读取数据;

待读取数据发送单元905,用于发送读取到的所述待读取数据。

可选的,所述缓存对象和所述持久化对象记录在预设的存储池中,同一个存储池中记录有至少一个缓存对象和至少一个持久化对象,且同一个存储池中记录的缓存对象和持久化对象之间具有对应关系。

可选的,所述缓存存储目录和所述持久化存储目录基于所述存储介质建立,所述缓存对象与缓存存储目录具有一一对应关系,所述持久化对象与所述持久化存储目录具有一一对应关系。

可选的,所述缓存存储目录和所述持久化存储目录建立在同一存储介质上;

或者,所述缓存存储目录建立在一个存储介质上,所述持久化存储目录建立在其他存储介质上;

其中,所述其他存储介质包括建立所述缓存存储目录之外的存储介质。

可选的,所述缓存对象的对象参数包括:对象标识、存储介质标识、缓存存储目录和存储容量;

相应的,所述持久化对象的对象参数包括:对象标识、存储介质标识、持久化存储目录和存储容量;

其中,所述存储容量包括:存储容量上限值和已占用存储容量。

可选的,所述索引条目中记录有所述物理存储位置信息和所述缓存对象的对象标识,或者所述物理存储位置信息和所述持久化对象的对象标识;

其中,所述物理存储位置信息包括:物理文件名、物理存储偏移量和数据长度。

可选的,所述待读取数据读取单元904,包括:

第一数据读取子单元,用于在所述缓存对象的对象参数包含的缓存存储目录下,读取所述读数据请求对应的待读取数据;

第二数据读取子单元,用于在所述持久化对象的对象参数包含的持久化存储目录下,读取所述读数据请求对应的待读取数据;

数据读取整合子单元,用于在所述缓存对象的对象参数包含的缓存存储目录下读取对应数据,在所述持久化对象的对象参数包含的持久化存储目录下读取对应数据,并将读取到的数据整合为所述读数据请求对应的待读取数据。

可选的,所述存储池设置有一一对应存储池标识,所述存储池标识存储在预设的存储池管理单元中,所述存储池管理单元中设置有至少一个所述存储池。

可选的,所述基于软件化存储系统读数据的装置,设置有缓存对象管理单元、持久化对象管理单元;

所述缓存对象的对象参数存储在所述缓存对象管理单元中,所述持久化对象的对象参数存储在所述持久化对象管理单元中。

本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、对象、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

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