数据的读取方法、装置及分布式存储系统与流程

文档序号:18600410发布日期:2019-09-03 22:35阅读:189来源:国知局
数据的读取方法、装置及分布式存储系统与流程

本申请涉及数据读取技术领域,具体而言,涉及一种数据的读取方法、装置及分布式存储系统。



背景技术:

在目前的分布式数据存储系统中,存储节点一般利用自身的固态物理磁盘和机械物理磁盘来实现对数据存储和读取。其中,由于固态物理磁盘的数据读写速度大于机械物理磁盘的数据读写速度,故存储在固态物理磁盘中的数据能够快速的被读取。但是,随着对数据读写速度的要求越来越高,固态物理磁盘的读写速度已逐渐无法满足高频读取的数据读取需求。



技术实现要素:

本申请在于提供一种数据的读取方法、装置及分布式存储系统,以实现比固态物理磁盘更快的读写速度来进行数据读取。

第一方面,本申请实施例提供了数据的读取方法,应用于分布式存储系统中的任一存储节点,所述存储节点包括虚拟磁盘和物理磁盘,所述虚拟磁盘的数据读写速度大于所述物理磁盘的数据读写速度,所述方法包括:

获取数据读取指令;

在所述虚拟磁盘或所述物理磁盘中查找所述数据读取指令对应的数据;

当在所述虚拟磁盘中查找到所述数据读取指令对应的数据,从所述虚拟磁盘中读取所述数据读取指令对应的数据。

在本申请实施例中,不仅将一部分数据存储在物理磁盘上,还将另一部分数据存储在读写速度大于物理磁盘的虚拟磁盘中。在接收到数据读取指令时,可以在虚拟磁盘或物理磁盘中查找,若通过查找确定该数据读取指令对应的数据存储在虚拟磁盘中,那么就可以直接从虚拟磁盘中读取该数据,所以从整体上实现了比固态物理磁盘更快速度的数据读取。

结合第一方面,在第一种可能的实现方式中,所述方法还包括:

当在所述虚拟磁盘中未查找到所述数据读取指令对应的数据时,从所述物理磁盘上读取所述数据读取指令对应的数据。

本申请实施例中,如果没有在虚拟磁盘中查找到该数据读取指令对应的数据,表征该数据存储在物理磁盘中,所以就从物理磁盘中读取数据,以保证能够读取到对应的数据。

结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,从所述物理磁盘上读取所述数据读取指令对应的数据之后,所述方法还包括:

更新所述数据读取指令对应的数据的读取次数;

判断更新后的读取次数是否大于阈值次数;

在所述更新后的读取次数大于所述阈值次数时,将所述数据读取指令对应的数据写入所述虚拟磁盘中。

本申请实施例中,通过读取次数可以确定存储在物理磁盘中的该数据被高频的读取,故可以将该数据写入虚拟磁盘中,以通过将该数据写入虚拟磁盘而实现该数据能够被快速读取,进一步提高数据读取效率。

结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,在确定所述更新后的读取次数大于所述阈值次数之后,以及在将所述数据读取指令对应的数据写入所述虚拟磁盘中之前,所述方法还包括:

确定所述虚拟磁盘中所有数据的数据量达到上限;

根据所述虚拟磁盘中每个数据的读取次数,确定出所述虚拟磁盘中待删除的数据,其中,所述待删除的数据的读取次数小于所述更新后的读取次数,所述待删除的数据的数据量大于等于所述数据读取指令对应的数据的数据量;

将所述待删除的数据从所述虚拟磁盘中删除。

在本申请实施例中,在虚拟磁盘中所有数据的数据量达到上限时,可以将虚拟磁盘中读取次数较少的数据删除,保证了高频读取的数据能够被合理的存储到虚拟磁盘中。

结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,确定所述虚拟磁盘中所有数据的数据量达到上限,包括:

确定所述虚拟磁盘中当前所有数据与所述数据读取指令对应的数据的数据量之和大于所述上限。

在本申请实施例中,虚拟磁盘中的所有数据是将物理磁盘中数据读取指令对应的数据计算在内,能够更加合理的确定所有数据的数据量是否达到上限。

结合第一方面或第一方面的任一种可能的实现方式,在第五种可能的实现方式中,所述方法还包括:

在设定的时间点,将所述虚拟磁盘中所有数据备份到只读存储的预设存储区域中。

在本申请实施例中,通过定期将虚拟磁盘中所有数据备份到只读存储的预设存储区域中,可以避免在虚拟磁盘中的所有数据被擦除后出现数据丢失。

结合第一方面的第五种可能的实现方式,在第六种可能的实现方式中,在设定的时间点,将所述虚拟磁盘中所有数据备份到对应的所述物理磁盘中之后,所述方法还包括:

在所述存储节点再次上电时,将所述预设存储区域中备份的所述所有数据同步到所述虚拟磁盘中。

在本申请实施例中,在虚拟磁盘中的所有数据被下电擦除后,还可以通过预设存储区域的备份将被擦除的所有数据恢复,实现上下电也不会对虚拟磁盘中数据的读取产生影响。

结合第一方面的第五种可能的实现方式,在第七种可能的实现方式中,在获取数据读取指令之前,所述方法还包括:

通过将所述存储节点的内存虚拟化处理,生成所述虚拟磁盘。

在本申请实施例中,通过将内存虚拟化处理而生成该虚拟磁盘,以利用虚拟磁盘来实现更高的读写速率。

第二方面,本申请实施例提供了一种数据的读取装置,应用于分布式存储系统中的任一存储节点,所述存储节点包括虚拟磁盘和物理磁盘,所述虚拟磁盘的数据读写速度大于所述物理磁盘的数据读写速度,所述装置包括:

指令接收模块,用于获取数据读取指令;

数据读取模块,用于在所述虚拟磁盘或所述物理磁盘中查找所述数据读取指令对应的数据;当在所述虚拟磁盘中查找到所述数据读取指令对应的数据,从所述虚拟磁盘中读取所述数据读取指令对应的数据。

结合第二方面,在第一种可能的实现方式中,

所述数据读取模块,还用于当在所述虚拟磁盘中未查找到所述数据读取指令对应的数据时,从所述物理磁盘上读取所述数据读取指令对应的数据。

结合第二方面的第一种可能的实现方式中,在第二种可能的实现方式中,所述数据读取模块从所述物理磁盘上读取所述数据读取指令对应的数据之后,

所述数据读取模块,还用于更新所述数据读取指令对应的数据的读取次数;判断更新后的读取次数是否大于阈值次数;在所述更新后的读取次数大于所述阈值次数时,将所述数据读取指令对应的数据写入所述虚拟磁盘中。

结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述数据读取模块在确定所述更新后的读取次数大于所述阈值次数之后,以及所述数据读取模块在将所述数据读取指令对应的数据写入所述虚拟磁盘中之前,

所述数据读取模块,还用于确定所述虚拟磁盘中所有数据的数据量达到上限;根据所述虚拟磁盘中每个数据的读取次数,确定出所述虚拟磁盘中待删除的数据,其中,所述待删除的数据的读取次数小于所述更新后的读取次数,所述待删除的数据的数据量大于等于所述数据读取指令对应的数据的数据量;将所述待删除的数据从所述虚拟磁盘中删除。

结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,

所述数据读取模块,用于确定所述虚拟磁盘中当前所有数据与所述数据读取指令对应的数据的数据量之和大于所述上限。

结合第一方面或第一方面的任一种可能的实现方式,在第五种可能的实现方式中,

所述数据读取模块,还用于在设定的时间点,将所述虚拟磁盘中所有数据备份到只读存储的预设存储区域。

结合第一方面的第六种可能的实现方式,在第六种可能的实现方式中,所述数据读取模块在设定的时间点,将所述虚拟磁盘中所有数据备份到对应的所述物理磁盘中之后,

所述数据读取模块,还用于在所述存储节点再次上电时,将所述预设存储区域中备份的所述所有数据同步到所述虚拟磁盘中。

结合第一方面或第一方面的任一种可能的实现方式,在第七种可能的实现方式中,

所述数据读取模块,用于通过将所述存储节点的内存虚拟化处理,生成所述虚拟磁盘。

第三方面,本申请实施例提供了一种分布式存储系统,包括:多个存储节点,

每个所述存储节点包括:虚拟磁盘和物理磁盘,每个所述存储节点,用于执行如第一方面或第一方面的任一种可能的实现方式所述的数据的读取方法。

第四方面,本申请实施例提供了一种非易失计算机可读储存介质,存储有程序代码,当所述程序代码被计算机运行时执行如第一方面或第一方面的任一种可能的实现方式所述的数据的读取方法。

为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本申请实施例提供的一种分布式存储系统的结构框图;

图2示出了本申请实施例提供的一种分布式存储系统中存储节点的结构框图;

图3示出了本申请实施例提供的一种数据的读取方法的第一流程图;

图4示出了本申请实施例提供的一种数据的读取方法的第二流程图;

图5示出了本申请实施例提供的一种数据的读取装置的结构框图。

具体实施方式

下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行描述。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

请参阅图1,本申请实施例提供了一种分布式存储系统10,该种分布式存储系统10可以是基于ceph分布式存储系统,但并不作为限定,例如其还可以是gluster分布式存储系统、luster分布式存储系统或sheepdog分布式存储系统等。

该分布式存储系统10可以包括:多个存储节点11,每个存储节点11可以与该分布式存储系统10中的其它存储节点11连接。每个存储节点11可以接收其它存储节点11发送的需要自身存储的数据,或者每个存储节点11还可以将需要其它节点存储的数据发送至其它存储节点11,从而实现将数据较为均匀的分布存储到各存储节点11上。

请参阅图2,每个存储节点11可以是例如具有大存储空间的存储型服务器,或是功能比较均衡的通用服务器。而针对每个存储节点11的结构,由于每个存储节点11的结构大致相同,为便于理解,下面将以某一个存储节点11为例对存储节点11的结构进行说明。

具体的,该存储节点11可以包括:虚拟磁盘111、物理磁盘112和处理器113。其中,虚拟磁盘111和物理磁盘112电连接,而处理器113则分别与虚拟磁盘111和物理磁盘112通信连接。

示例性的,虚拟磁盘111可以是通过将存储节点11的内存进行虚拟化获得。虚拟磁盘111需要达到较快的数据读写速度,故内存条可以采用ddr3或ddr4等读写速度较快的型号。本实施例中,存储节点11中经常被读取的数据需要被存储到虚拟磁盘111中,以便这些高频读取的数据每次都能够被快速的读取,其需要虚拟磁盘111提供较大的存储空间。故存储节点11中可以设置多根内存条,且每根内存条的存储空间可以比较大。例如,存储节点11中可以有32根内存条,且每根内存条的存储空间大小可以为较大的16g,这样多根内存条提供的内存经虚拟化后获得的虚拟磁盘111最多可以提供近500gb的存储空间,以实现可以存储较大的数据量。当然,采用数量众多的内存条,以及采用存储空间比较大的内存条仅为本实施例的示例性方式,并不作为对本实施例的限定;例如,若需要尽量控制成本,则在内存条的数量使得虚拟磁盘111的存储空间达到需求大小的情况下,可以尽量采用存储空间较小的内存条例如8g或4g的虚拟磁盘111条,以降低成本。

示例性的,物理磁盘112可以采用固态硬盘或者机械硬盘,其可以根据实际需求进行选择。例如,若实际中需要尽量快的读写速度,物理磁盘112可以采用固态硬盘;而若实际中需要尽量控制成本,物理磁盘112也可以采用机械硬盘。另外,物理磁盘112的存储空间大小也可以根据实际需求进行选择,例如,若存储的数据量很大,可以将物理磁盘112的存储空间部署的比较大,反之,则将物理磁盘112的存储空间部署的比较小。

本实施例中,物理磁盘112或虚拟磁盘111除用于存储数据外,物理磁盘112或虚拟磁盘111还可以用于存储程序指令。这样,处理器113用于通过调用并运行存储在物理磁盘112或虚拟磁盘111中的程序以执行本申请中所述的数据的读取方法。通过对数据的读取方法的执行,处理器113可以控制在物理磁盘112存储高频读取和非高频读取的数据,同时还可以控制将高频读取的数据迁移存储到虚拟磁盘111,以及还可以控制从虚拟磁盘111或物理磁盘在12中读取出各自存储的数据。

下面将以存储节点11执行数据的读取方法为例,对如何实现数据的读取和迁移进行详细说明。

结合图2,并参阅图3,本申请实施例提供了一种数据的读取方法,该数据的读取方法可以由分布式存储系统10中的任一个存储节点11执行,该数据的读取方法可以包括:步骤s100、步骤s200和步骤s300。

步骤s100:获取数据读取指令。

步骤s200:在所述虚拟磁盘或所述物理磁盘中查找所述数据读取指令对应的数据。

步骤s300:当在所述虚拟磁盘中查找到所述数据读取指令对应的数据,从所述虚拟磁盘中读取所述数据读取指令对应的数据。

下面将对步骤s100-步骤s300的流程进行详细地说明。

本实施例中,若要利用虚拟磁盘111进行数据读写,存储节点11可以先生成虚拟磁盘111。

作为实现生成虚拟磁盘111的示例性方式,可以对内存进行虚拟化处理,将内存中的一块区域虚拟化为虚拟磁盘111。具体的,可以通过在内存的内核源码中重新配置内核的参数,将内存中的预设区域虚拟为虚拟存储区域,使得存储节点11将该虚拟存储区域识别为虚拟磁盘111,实现生成该虚拟磁盘111。例如,内存的储存空间大小为512g,可以将其中500g大小的预设区域虚拟为虚拟存储区域,另外未虚拟的12g大小的内存空间则可以用于存储节点11的运行使用。

生成虚拟磁盘111后,存储节点11可以利用该虚拟磁盘111和物理磁盘112进行数据的读写。在数据读写的过程中,存储节点11可以将物理磁盘112存储的所有数据中高频读取的数据迁移到虚拟磁盘111中。这样,存储节点11便利用虚拟磁盘111或物理磁盘112不断地进行数据的读取。换言之,存储节点11可以反复地执行步骤s100至步骤s300。为便于理解本方案,本实施例将以存储节点11某一次执行步骤s100至步骤s300为例进行说明。

步骤s100:获取数据读取指令。

在其它设备需要获取该存储节点11中存储的数据时,其它设备可以向该存储节点11发送数据读取指令。其中,其它设备可以是分布式存储系统10中其它的存储节点11,或者也可以是与分布式存储系统10通信的外部设备。相应的,该存储节点11便可以实时的获取该数据读取指令。

可以理解到的是,若存储节点11需要通过读取自身存储的数据而执行一些操作例如对数据进行清洗或整理,存储节点11自身也可以生成并执行该数据读取指令,其相当于存储节点11也可以获取自身生成的数据读取指令。

步骤s200:在所述虚拟磁盘或所述物理磁盘中查找所述数据读取指令对应的数据。

存储节点11可以对获取的数据读取指令进行解析,获取数据读取指令携带的数据标识,其中,该数据标识可以是需要读取的数据的数据名称。这样,存储节点11利用该数据标识可以找到数据读取指令对应的数据。

作为利用数据标识找到数据读取指令对应的数据的示例性方式,为保证虚拟磁盘111中的数据能够被快速的读取,存储节点11可以利用数据标识优先在虚拟磁盘111中查找是否有该数据标识匹配的数据。具体的,存储节点11利用数据标识,采用bloomfilter算法、地址偏移算法或遍历等方式对虚拟磁盘111中的所有数据进行查找,以判断是否有与该数据标识匹配的数据。

可以理解到,采用优先在虚拟磁盘111中进行查找的方式为本实施例的示例性方式,其不作为本实施例的限定,实际中可以根据实际情况采取其他方式。

例如:存储节点11为能够准确的统计哪些数据是高频读取的数据,存储节点11可以采用周期性的方式记录每个数据在一个周期中的读取次数。其中,周期的时长可以根据实际需求进行设置,例如,若存储节点11的数据读写频率比较高,可以将周期的时长设置的比较短如5分钟、10分钟等;反之,则可以将周期的时长设置比较长如30分钟、60分钟等。故在查找数据前,存储节点11可以先根据数据标识获取该数据标识匹配的数据在当期周期中记录的读取次数,并通过判断读取次数是否大于已经确定的阈值次数来确定虚拟磁盘111中是否存储有该数据,其中,读取次数大于阈值次数表示该数据读取指令对应的数据作为高频读取的数据而被存储在虚拟磁盘11中。因此,若确定读取次数大于阈值次数,存储节点11便可以直接在虚拟磁盘111中进行查找,反之,则在物理磁盘112中进行查找。

步骤s300:当在所述虚拟磁盘中查找到所述数据读取指令对应的数据,从所述虚拟磁盘中读取所述数据读取指令对应的数据。

存储节点11通过对虚拟磁盘111中的数据进行遍历,若在虚拟磁盘111中查找到虚拟磁盘111中有数据的数据标识与数据读取指令携带的该数据标识匹配,那么虚拟磁盘111中该数据标识匹配的数据便可以是数据读取指令对应的数据。从而存储节点11可以从虚拟磁盘111中读取该数据读取指令对应的数据,并将该数据读取指令对应的数据发送给需要获取该数据的其它设备或者自身对该数据读取指令对应的数据做进一步处理。

与此同时,存储节点11可以更新该数据读取指令对应的数据在当前周期中的读取次数,例如将读取次数自加1,从而获得更新后的读取次数。

结合图2,并参阅图4,若存储节点11在虚拟磁盘111中没有查找到该数据读取指令对应的数据,存储节点11还可以在物理磁盘112中继续查找该数据读取指令对应的数据,即存储节点11还可以执行步骤s400、步骤s500、步骤s600和步骤s700。

步骤s400:当在所述虚拟磁盘中未查找到所述数据读取指令对应的数据时,从所述物理磁盘上读取所述数据读取指令对应的数据。

步骤s500:更新所述数据读取指令对应的数据的读取次数。

步骤s600:判断更新后的读取次数是否大于阈值次数。

步骤s700:在所述更新后的读取次数大于所述阈值次数时,将所述数据读取指令对应的数据写入所述虚拟磁盘中。

下面将对步骤s400-步骤s700的流程进行详细地说明。

步骤s400:当在所述虚拟磁盘中未查找到所述数据读取指令对应的数据时,从所述物理磁盘上读取所述数据读取指令对应的数据。

存储节点11利用数据标识,也可以采用bloomfilter算法、地址偏移算法或遍历等方式对物理磁盘112中的所有数据进行查找,以判断是否有与该数据标识匹配的数据。

若该数据存储在存储节点11,通过对数据的遍历,存储节点11可以在物理磁盘112中查找到有数据的数据标识与数据读取指令携带的该数据标识匹配,那么物理磁盘112中该数据标识匹配的数据便可以是数据读取指令对应的数据。从而存储节点11可以从物理磁盘112中读取该数据读取指令对应的数据,并将该数据读取指令对应的数据发送给需要获取该数据的其它设备或者自身对该数据读取指令对应的数据做进一步处理。

若该数据未存储在存储节点11,通过对数据的遍历,存储节点11无法在物理磁盘112中查找到有数据的数据标识与数据读取指令携带的该数据标识匹配。存储节点11可以确定数据读取失败,并进行报错。

步骤s500:判断更新后的读取次数是否大于阈值次数。

相应的,存储节点11在从物理磁盘112读取该数据读取指令对应的数据的同时,存储节点11也可以更新该数据读取指令对应的数据的读取次数,例如将读取次数自加1,从而获得更新后的读取次数。

步骤s600:判断更新后的读取次数是否大于阈值次数。

为准确的确定出物理磁盘112中需要迁移到虚拟磁盘111的数据,在当前时刻为每个周期的结束时间点时,存储节点11可以获取物理磁盘112中每个数据在当前周期中的读取次数。

与此同时,也为准确的确定出物理磁盘112中需要写入虚拟磁盘111的数据,在当前时刻为每个周期的结束时间点时,存储节点11还可以重新确定出数据读取的阈值次数,以便利用阈值次数对物理磁盘112中的数据进行筛选,确定出读取次数大于该阈值次数的高频读取的数据。

存储节点11可以动态的确定出阈值次数,存储节点11可以确定虚拟磁盘111中读取次数为当前周期中最少的数据的读取次数为阈值次数,或者还可以确定虚拟磁盘111中所有数据在当前周期中的平均读取次数为阈值次数。其中,获取平均读取次数的方式可以采用将虚拟磁盘111中所有数据的读取次数进行算术平均、几何平均、调和平均、加权平均、平放平均或指数平均。

当然,采用动态确定的阈值次数方式也为本实施例的示例性方式,其也不作为本实施例的限定,例如,存储节点11也可以采用非动态的方式设置阈值次数。例如,用户可以预先将阈值次数设置为某个值,那么在每次需要判断读取次数是否大于阈值次数时,存储节点11可以直接获取该设置好的阈值次数。

进一步的,基于获取到物理磁盘112中每个数据的读取次数,以及基于确定出的阈值次数,存储节点11可以判断物理磁盘112中每个数据的读取次数是否大于阈值次数。换言之,针对该数据读取指令对应的数据更新后的读取次数,存储节点11也可以判断该更新后的读取次数是否大于阈值次数,其中,该更新后的读取次数是指该数据读取指令对应的数据更新至当前周期的结束时间点时的读取次数。

为便于进一步理解本方案,本实施例将结合一个应用示例进行说明。假设,存储节点11在当前周期的结束时间点获取了存储在物理磁盘112中的5个数据在当前周期的读取次数,其可以包括:数据a的读取次数为10次、数据b的读取次数为32次(且数据b为数据读取指令对应的数据)、数据c的读取次数为2次、数据d的读取次数为2次、数据e的读取次数为14次。

与此同时,存储节点11还可以同步的获取存储在虚拟磁盘111中的3个数据在当前周期的读取次数,其可以包括:数据a的读取次数为22次、数据b的读取次数为34次、数据c的读取次数为28次。若以平均读取次数作为阈值次数,存储节点11可以对数据a、数据b和数据c的读取次数进行算数求平均,从而确定出阈值次数为28。

这样,存储节点11便可以数据a、数据b和数据c的读取次数依次与确定出阈值次数比较。

步骤s700:在所述更新后的读取次数大于所述阈值次数时,将所述数据读取指令对应的数据写入所述虚拟磁盘中。

本实施例中,存储节点11通过判断物理磁盘112中每个数据的读取次数是否大于阈值次数,若确定出读取次数大于阈值次数的数据,继续前述假设,通过比较存储节点11可以确定出数据b为读取次数大于阈值次数的数据。

在虚拟磁盘111空间允许的情况下,存储节点11便可以将读取次数大于阈值次数的每个数据迁移到虚拟磁盘111,即继续前述假设,在虚拟磁盘111空间允许的情况下,存储节点11可以将数据b迁移到虚拟磁盘11中。其中,由于存储节点11对每个高频读取的数据迁移的方式大致相同,为便于理解本方案,本实施例后续将以存储节点11以如何对数据读取指令对应的数据进行迁移为例进行说明。

若存储节点11通过判断确定更新后的读取次数不大于阈值次数,其表示物理磁盘112中该数据读取指令对应的数据在当前周期内不是高频读取的数据,存储节点11无需将该数据读取指令对应的数据写入虚拟磁盘111。

若存储节点11通过判断确定更新后的读取次数大于阈值次数,其表示物理磁盘112中该数据读取指令对应的数据在当前周期内为高频读取的数据,该高频读取的数据需要被写入到虚拟磁盘111中。

在存储节点11确定物理磁盘112中该数据读取指令对应的数据需要写入虚拟磁盘111中后,存储节点11可以进一步确定虚拟磁盘111的剩余空间是否满足该数据的写入。

作为虚拟磁盘111的剩余空间是否满足该数据的写入的示例性方式,存储节点11中预设了虚拟磁盘111存储的上限,该上限表示该虚拟磁盘111中最多能够存储的数据量。进一步的,存储节点11可以获取虚拟磁盘111的虚拟存储区域中当前所有数据的数据量,以及获取该数据读取指令对应的数据的数据量,并判断虚拟磁盘111中当前所有数据与该数据读取指令对应的数据的数据量之和是否大于该上限。

若确定不大于该上限,其表示该数据读取指令对应的数据可以直接写入到虚拟磁盘111中,故存储节点11可以对应的将该数据读取指令对应的数据写入虚拟磁盘111中。

若确定大于该上限,其表示需要对虚拟磁盘111的存储空间进行优化,该数据读取指令对应的数据才可能写入到虚拟磁盘111中。

作为对虚拟存储区域的存储空间进行优化的示例性方式,存储节点11可以判断虚拟磁盘111中是否存在可以被迁移到物理磁盘112中的数据。

具体的,存储节点11可以将虚拟磁盘111中每个数据在当前周期内的读取次数与该数据读取指令对应的数据更新后的读取次数比较,以及将虚拟磁盘111中每个数据的数据量与该数据读取指令对应的数据的数据量进行比较,以确定虚拟磁盘111中是否有待删除的数据,其中,待删除的数据的读取次数小于该数据读取指令对应的数据更新后的读取次数,且待删除的数据的数据量大于等于数据读取指令对应的数据的数据量。

若确定没有待删除的数据,其表示本次无法对虚拟磁盘111的存储空间进行优化,该数据读取指令对应的数据无法写入到虚拟磁盘111中,存储节点11可以结束本次对方法的执行。

若确定有待删除的数据,其表示可以通过将该待删除的数据从虚拟磁盘111中删除。

作为将待删除的数据从虚拟磁盘111中删除的一种示例性方式,存储节点11虽然将物理磁盘112中高频读取的数据迁移到虚拟磁盘中,但存储节点11并未将该高频读取的数据从物理磁盘112中删除,故虚拟磁盘111存储的每个数据也对应的存储在物理磁盘112上。因此,存储节点11可以直接将该待删除的数据从虚拟磁盘111中删除。

作为将待删除的数据从虚拟磁盘111中删除的另一种示例性方式,存储节点11将物理磁盘112中高频读取的数据迁移到虚拟磁盘后,存储节点11也将该高频读取的数据从物理磁盘112中删除,故虚拟磁盘111存储的每个数据并没有对应的存储在物理磁盘112上。因此,存储节点11可以先将该待删除的数据迁移到物理磁盘112后,再将该待删除的数据从虚拟磁盘111中删除。

需要说明的是,确定出的待删除的数据的数量可以不用太多,数量太多会导致对虚拟磁盘111的存储空间过度释放。可选的,待删除的数据的数量为在满足待删除的数据的数据量大于等于数据读取指令对应的数据的数据量时的最少数量。

进一步的,在确定虚拟磁盘111的存储空间满足写入该数据读取指令对应的数据,存储节点11便可以将该数据读取指令对应的数据写入到存储到该虚拟磁盘11中。

继续前述假设,根据阈值次数为28,存储节点11可以确定读取次数为32次的数据b为需要写入虚拟磁盘111的数据。

而在虚拟存储区域的上限为500g情况下,若数据b的数据量为50g、数据a的数据量为60g、数据b的数据量为360g和数据c的数据量为60g,那么存储节点11可以确定虚拟磁盘111的当前所有数据与数据b的数据量之和为530g,其大于上限的500g。故存储节点11需要对虚拟磁盘111的存储空间进行优化。通过遍历,存储节点11可以确定数据a的数据量大于数据b的数据量,且数据a的读取次数小于数据b的读取次数,故存储节点11可以确定数据a为虚拟磁盘111中待删除的数据,并将该数据a迁移到物理磁盘112中存储,使得虚拟磁盘111中剩余的空间达到180g。利用该180g的剩余空间,存储节点11便可以将数据b写入到虚拟磁盘111中。

在本实施例中,为避免虚拟磁盘111中的数据在存储节点11下电后丢失,存储节点11可以将虚拟磁盘111中所有数据备份到只读存储的预设存储区域中,其中,该预设存储区域可以是物理磁盘112中的单独区域,该单独区域不存储虚拟磁盘111中的数据以外的数据。

作为将虚拟磁盘111中所有数据备份到预设存储区域中的示例性方式,存储节点11可以预先建立虚拟磁盘111与该预设存储区域的映射关系,即将该虚拟磁盘111挂载到该物理磁盘112的预设存储区域上。

在此基础上,存储节点11通过设置以周期的方式不断将虚拟磁盘111中的所有数据备份到预设存储区域。其中,周期的时长也可以根据实际需求进行设置,例如,若存储节点11的性能强大,则备份的周期时长可以设置的较短如10分钟、15分钟等;反之,则比较长如30分钟、60分钟等。

通过备份,在存储节点11再次上电时,存储节点11便可以将预设存储区域中备份的所有数据同步到虚拟磁盘111中,从而避免了数据的丢失。

请参阅图5,本申请实施例提供了一种数据的读取装置100,应用于分布式存储系统10中的任一存储节点11,该数据的读取装置100包括:

指令接收模块110,用于获取数据读取指令;

数据读取模块120,用于在所述虚拟磁盘或所述物理磁盘中查找所述数据读取指令对应的数据;当在所述虚拟磁盘中查找到所述数据读取指令对应的数据,从所述虚拟磁盘中读取所述数据读取指令对应的数据。

需要说明的是,由于所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

本申请一些实施例还提供了一种计算机可执行的非易失的程序代码的计算机可读储存介质,该计算机可读存储介质上存储有程序代码,该程序代码被计算机运行时执行上述任一实施方式的数据的读取方法的步骤。

示例性的,该存储介质能够为通用的存储介质,如移动磁盘、物理磁盘等,该存储介质上的程序代码被运行时,能够执行上述施例的数据的读取方法的步骤。

本申请实施例所提供的数据的读取方法的程序代码产品,包括存储了程序代码的计算机可读存储介质,程序代码包括的指令可用于执行前面方法实施例中的方法,具体实现可参见方法实施例,在此不再赘述。

综上所述,不仅将一部分数据存储在物理磁盘上,还将另一部分数据存储在读写速度大于物理磁盘的虚拟磁盘中。在接收到数据读取指令时,可以在虚拟磁盘或物理磁盘中查找,若通过查找确定该数据读取指令对应的数据存储在虚拟磁盘中,那么就可以直接从虚拟磁盘中读取该数据,所以从整体上实现了比固态物理磁盘更快速度的数据读取。

以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

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