基于磁盘簇的数据并行存储方法、装置以及数据读取方法与流程

文档序号:21722190发布日期:2020-08-05 01:12阅读:162来源:国知局
基于磁盘簇的数据并行存储方法、装置以及数据读取方法与流程

本发明涉及云计算数据中心计算领域,特别是涉及一种基于磁盘簇的数据并行存储方法、装置、设备以及计算机可读存储介质,还涉及一种基于磁盘簇的数据读取方法。



背景技术:

在云计算数据中心中,数据存储是用户关心的核心问题。而为了数据的性能和安全性,常使用独立磁盘冗余阵列(raid)的来把相同的数据存储在多个硬盘的不同的地方。通过数据校验提供容错功能,通过在多个磁盘上同时存储和读取数据来大幅提高存储系统的数据吞吐量。然而提供冗余数据校验提高数据安全性的同时,增加了数据的写放大,减小了存储系统的存储容量,降低了存储系统的性能。

因此,对于非关键数据可以采用raid0来提高性能和系统容量。但是由于raid0把同一份数据按照分条存放在不同的磁盘上,任何一块硬盘出现故障,整个系统将会受到破坏,可靠性非常高低;而且raid本身成本较高。

近年来jbod(justabunchofdisks,磁盘簇)逐渐流行起来,jbod为一个有多个磁盘驱动器的存储设备,又称作“span”,span是在逻辑上将几个物理磁盘一个接一个串联到一起,从而提供一个大的逻辑磁盘。span上的数据简单的从第一个磁盘开始存储,当第一个磁盘的存储空间用完后,再依次从后面的磁盘开始存储数据。span存取性能完全等同于对单一磁盘的性能。span也不提供数据安全保障。它只是简单的提供一种利用磁盘空间的方法,span的存储容量等于组成span的所有磁盘的容量的总和。jbod的优点在于成本低,且如果单个磁盘故障不会损失全部数据,其缺点为多个磁盘顺序存储,性能较低。

综上所述可以看出,如何提高数据存储性能是目前有待解决的问题。



技术实现要素:

本发明的目的是提供一种基于磁盘簇的数据并行存储方法、装置、设备以及计算机可读存储介质,已解决现有技术中多个磁盘顺序存储导致数据存储性能较低的问题。本发明还提供了一种基于磁盘簇的数据读取方法。

为解决上述技术问题,本发明提供一种基于磁盘簇的数据并行存储方法,包括:

生成待存储用户数据的元数据,并根据所述元数据的序列号进行随机哈希计算,得到哈希值;

根据所述哈希值,在磁盘簇的多个磁盘中选取存储所述待存储用户数据的目标磁盘;其中,所述磁盘簇中的每个磁盘包括用于存放存储数据的数据区和用于存放描述所述存储数据的元数据的元数据区;所述每个磁盘的元数据区包括用于保存存储到本磁盘上的数据的元数据的磁盘成员元数据区和用于保存整个磁盘簇的磁盘数量,各磁盘数据容量、数据量与剩余存储容量的磁盘簇元数据区;

判断所述目标磁盘的剩余存储容量是否大于等于预设容量阈值;若所述目标磁盘的剩余存储容量大于等于所述预设容量阈值,则将所述待存储用户数据存储至所述目标磁盘的数据区,并将所述待存储用户数据的元数据存储至所述目标磁盘的磁盘成员元数据区;

更新所述磁盘簇中各个磁盘的磁盘簇元数据区中保存的所述目标磁盘的数据量与剩余存储容量。

优选地,所述判断所述目标磁盘的剩余存储容量是否大于等于预设容量阈值后包括:

若所述目标磁盘的剩余存储容量小于所述预设容量阈值,则判断所述磁盘簇中是否存在剩余存储容量大于等于所述预设容量阈值的磁盘;

若所述磁盘簇中存在剩余存储容量大于等于所述预设容量阈值的磁盘,则将所述待存储用户数据存储至所述磁盘簇中当前剩余存储容量最大的备选磁盘中;

将所述待存储用户数据的元数据存储至所述磁盘簇中一号磁盘的磁盘簇元数据区;

每隔预设时间间隔,根据所述一号磁盘的磁盘簇元数据区中元数据对所述磁盘簇的其他磁盘的磁盘簇元数据区中的元数据进行更新,以便所述磁盘簇的每个磁盘的磁盘簇元数据区均保存相同的磁盘簇元数据副本。

优选地,所述判断所述磁盘簇中是否存在剩余存储容量大于等于所述预设容量阈值的磁盘后包括:

若所述磁盘簇中不存在剩余存储容量大于等于所述预设容量阈值的磁盘,则返回磁盘簇存储空间不足的消息。

优选地,所述生成待存储用户数据的元数据,并根据所述元数据的序列号进行随机哈希计算,得到哈希值;

根据待存储文件的系统特征数据生成所述待存储文件的元数据;其中,所述待存储文件的系统特征数据包括文件名、文件大小、文件使用的数据块总数、数据块大小、数据块存储位置、文件类型、访问权限、创建及访问时间;

根据所述待存储文件的文件号进行随机哈希计算,生成哈希值。

本发明还提供了一种基于磁盘簇的数据读取方法,包括:

获取待读取用户数据的元数据,根据所述待读取用户数据的元数据的序列号进行随机哈希计算,得到哈希值;

根据所述哈希值确定所述待读取数据在磁盘簇中所处的磁盘,并根据所述待读取用户数据的元数据获取所述待读取用户数据的磁盘位置以便读取所述待读取数据。

优选地,所述根据所述哈希值确定所述待读取数据在磁盘簇中所处的磁盘与磁盘位置,以便读取所述待读取数据包括:

根据所述哈希值确定所述待读取用户数据在所述磁盘簇中所处的目标磁盘;

判断在所述目标磁盘的数据区是否可查找到所述待读取用户数据;

若在所述目标磁盘的数据区可查找到所述待读取用户数据,则读取所述待读取用户数据。

优选地,所述判断在所述目标磁盘的数据区是否可查找到所述待读取用户数据后包括:

若在所述目标磁盘的数据区未查找到所述待读取用户数据,则根据所述目标磁盘元数据区的磁盘簇元数据区中的元数据确定所述待读取用户数据所处的实际磁盘;

在所述实际磁盘的数据区中读取所述待读取用户数据。

本发明还提供了一种基于磁盘簇的数据并行存储装置,包括:

哈希计算模块,用于生成待存储用户数据的元数据,并根据所述元数据的序列号进行随机哈希计算,得到哈希值;

选取模块,用于根据所述哈希值,在磁盘簇的多个磁盘中选取存储所述待存储用户数据的目标磁盘;其中,所述磁盘簇中的每个磁盘包括用于存放存储数据的数据区和用于存放描述所述存储数据的元数据的元数据区;所述每个磁盘的元数据区包括用于保存存储到本磁盘上的数据的元数据的磁盘成员元数据区和用于保存整个磁盘簇的磁盘数量,各磁盘数据容量、数据量与剩余存储容量的磁盘簇元数据区;

判断模块,用于判断所述目标磁盘的剩余存储容量是否大于等于预设容量阈值;

存储模块,用于若所述目标磁盘的剩余存储容量大于等于所述预设容量阈值,则将所述待存储用户数据存储至所述目标磁盘的数据区,并将所述待存储用户数据的元数据存储至所述目标磁盘的磁盘成员元数据区;

更新模块,用于更新所述磁盘簇中各个磁盘的磁盘簇元数据区中保存的所述目标磁盘的数据量与剩余存储容量。

本发明还提供了一种基于磁盘簇的数据并行存储设备,包括:

存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现上述一种基于磁盘簇的数据并行存储方法的步骤。

本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述一种基于磁盘簇的数据并行存储方法的步骤。

本发明所提供的基于磁盘簇的数据并行存储方法,可以将不同的用户数据并行存储到磁盘簇中不同的磁盘上。本发明通过对磁盘按组划分,指定的一组磁盘为当前磁盘簇的成员。所述磁盘簇中的每个磁盘均划分为数据区和元数据区,所述数据区用于存放存储数据,所述元数据区用于存放描述所述存储数据的元数据;所述元数据区又划分为磁盘成员元数据区与磁盘簇元数据区,所述磁盘成员元数据区用于保存存储到本磁盘上的数据的元数据,所述磁盘簇元数据区用于保存整个磁盘簇的磁盘数量,各磁盘数据容量、数据量与剩余存储容量。所述磁盘簇中每个磁盘的磁盘簇元数据区均保存相同的磁盘簇元数据副本。当用户数据需要存储时,首先分配并生成待存储用户数据的元数据结构,并根据元数据序列号进行随机哈希计算,得到哈希值,并根据所述哈希值在所述磁盘簇的多个磁盘中确定存储所述待存储用户数据的目标磁盘。其次,判断所述目标磁盘的剩余存储容量是否大于等于预设容量阈值。若所述目标磁盘的剩余存储容量大于等于所述预设容量阈值,表明所述目标磁盘中还存在较多存储空间,则将所述待存储用户数据存储于所述目标磁盘的数据区,并将所述待存储用户数据的元数据存储于所述目标磁盘的磁盘成员元数据区。完成所述待存储用户数据的存储后,更新所述磁盘簇中各个磁盘的磁盘元数据区中保存的所述目标磁盘的数据量与剩余存储容量。本发明所提供的方法,在存储不同用户数据时,可以分别对不同用户数据的元数据序列号进行随机哈希计算,从而随机将不同的用户数据并行存储至不同的磁盘上,相对于传统jbod多个磁盘顺序存储的方法,大大提高了数据存储性质。且本发明不会存在单个磁盘故障而损失全部数据的现象,大大提高了非关键数据存储的性能的同时,降低了非关键数据存储的成本。

相应地,本发明提供的一种基于磁盘簇的数据并行存储装置、设备以及计算机可读存储介质,也同样具有上述技术效果。

本发明所提供的一种基于磁盘簇的数据读取方法,可提高数据读取效率。

附图说明

为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明所提供的基于磁盘簇的数据并行存储方法的第一种具体实施例的流程图;

图2为本发明所提供的磁盘簇的结构示意图;

图3为本发明所提供的磁盘簇中每个磁盘的数据区及元数据区的示意图;

图4为本发明所提供的基于磁盘簇的数据并行存储方法的第二种具体实施例的流程图;

图5为本发明所提供的基于磁盘簇的数据读取方法的第一种具体实施例的流程图;

图6为本发明所提供的基于磁盘簇的数据读取方法的第二种具体实施例的流程图;

图7为本发明实施例提供的一种基于磁盘簇的数据并行存储装置的结构框图。

具体实施方式

本发明的核心是提供一种基于磁盘簇的数据并行存储方法、装置、设备以及计算机可读存储介质,提高了数据存储性能,降低了数据存储成本。本发明还提供了一种基于磁盘簇的数据读取方法,提高了数据读取效率。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参考图1,图1为本发明所提供的基于磁盘簇的数据并行存储方法的第一种具体实施例的流程图;具体操作步骤如下:

步骤s101:生成待存储用户数据的元数据,并根据所述元数据的序列号进行随机哈希计算,得到哈希值;

当用户数据需要存储时,首先分配并生成其元数据结构,然后根据其元数据序列号,进行随机hash计算,根据hash值将待存储用户数据存储到相应的磁盘中。

需要说明的是,在本实施例中,所述待存储用户数据可以为待存储文件或待存储数据块等。当需要存储待存储文件时,首先根据所述待存储文件的系统特征数据生成所述待存储文件的元数据,然后根据所述待存储文件的文件号进行随机哈希计算,生成哈希值;其中,所述待存储文件的系统特征数据包括文件名、文件大小、文件使用的数据块总数、数据块大小、数据块存储位置、文件类型、访问权限、创建及访问时间等。

步骤s102:根据所述哈希值,在磁盘簇的多个磁盘中选取存储所述待存储用户数据的目标磁盘;其中,所述磁盘簇中的每个磁盘包括用于存放存储数据的数据区和用于存放描述所述存储数据的元数据的元数据区;所述每个磁盘的元数据区包括用于保存存储到本磁盘上的数据的元数据的磁盘成员元数据区和用于保存整个磁盘簇的磁盘数量,各磁盘数据容量、数据量与剩余存储容量的磁盘簇元数据区;

本发明通过对磁盘按组划分,指定的一组磁盘作为该磁盘簇的成员,磁盘簇的结构如图2所示;需要说明的是,在本发明中并未对磁盘簇中的磁盘成员数量进行限定。如图3所示,所述磁盘簇中的每个磁盘均划分为元数据区和数据区,所诉元数据区又划分为磁盘成员元数据区和磁盘簇元数据区;所述数据区用于存放存储数据,所述元数据区用于存放描述所述存储数据的元数据;所述磁盘成员元数据区用于保存存储到本磁盘上的数据的元数据,所述磁盘簇元数据区用于保存整个磁盘簇的磁盘数量,各磁盘数据容量、数据量与剩余存储容量等元数据。

所述磁盘簇中每个磁盘的存储容量可以相同,也可以不同。

步骤s103:判断所述目标磁盘的剩余存储容量是否大于等于预设容量阈值;

步骤s104:若所述目标磁盘的剩余存储容量大于等于所述预设容量阈值,则将所述待存储用户数据存储至所述目标磁盘的数据区,并将所述待存储用户数据的元数据存储至所述目标磁盘的磁盘成员元数据区;

步骤s105:更新所述磁盘簇中各个磁盘的磁盘簇元数据区中保存的所述目标磁盘的数据量与剩余存储容量。

在更新所述磁盘簇中各个磁盘的磁盘簇元数据区中的元数据时,根据磁盘成员序号,可以首先更新所述磁盘簇中一号磁盘的磁盘簇元数据区中的元数据,然后每隔预设时间间隔,根据所述磁盘簇中其他磁盘的磁盘簇元数据区中的元数据;也可以在更新所述一号磁盘的磁盘簇元数据区中的元数据后,实时更新其他磁盘的磁盘簇元数据区中的元数据,以保证所述磁盘簇中各个磁盘的磁盘簇元数据区均保存相同元数据样本。

需要说明的是,在本实施例中也可以首先更新所述磁盘簇中其他磁盘的磁盘簇元数据,如二号磁盘、三号磁盘等。也可以根据各个磁盘成员的其他性能,设定首先更新磁盘簇元数据的磁盘。

本实施例所提供的数据并行存储方法,在存储不同用户数据时,可以分别对不同用户数据的元数据序列号进行随机哈希计算,从而将不同的用户数据并行存储至不同的磁盘上,从而大大提高了非关键数据存储系统得性能,降低了非关键数据存储系统得成本。

基于上述实施例,在本实施中,当根据哈希值确定存储用户数据的目标磁盘的剩余存储容量小于预设容量阈值时,则在磁盘簇的其他磁盘成员中选取备用磁盘存储用户数据。

请参考图4,图4为本发明所提供的基于磁盘簇的数据并行存储方法的第二种具体实施例的流程图;具体操作步骤如下:

步骤s401:生成待存储用户数据的元数据,并根据所述元数据的序列号进行随机哈希计算,得到哈希值;

步骤s402:根据所述哈希值,在磁盘簇的多个磁盘中选取存储所述待存储用户数据的目标磁盘;

步骤s403:判断所述目标磁盘的剩余存储容量是否大于等于预设容量阈值;

步骤s404:若所述目标磁盘的剩余存储容量小于所述预设容量阈值,则判断所述磁盘簇中是否存在剩余存储容量大于等于所述预设容量阈值的磁盘;

步骤s405:若所述磁盘簇中不存在剩余存储容量大于等于所述预设容量阈值的磁盘,则返回磁盘簇存储空间不足的消息;

步骤s406:若所述磁盘簇中存在剩余存储容量大于等于所述预设容量阈值的磁盘,则将所述待存储用户数据存储至所述磁盘簇中当前剩余存储容量最大的备选磁盘中;

步骤s407:将所述待存储用户数据的元数据存储至所述磁盘簇中一号磁盘的磁盘簇元数据区;

步骤s408:每隔预设时间间隔,根据所述一号磁盘的磁盘簇元数据区中元数据对所述磁盘簇的其他磁盘的磁盘簇元数据区中的元数据进行更新,以便所述磁盘簇的每个磁盘的磁盘簇元数据区均保存相同的磁盘簇元数据副本。

在本实施例中,当用户数据需要存储时首先分配并生成其元数据结构,然后根据其元数据序列号,进行随机hash计算,根据hash值将其随机存储到相应的目标磁盘中。如果所述目标磁盘的数据存储容量耗尽,则将所述用户数据存储到磁盘簇成员磁盘中剩余容量最大的磁盘上,并且将所述用户数据的元数据信息保存到所述磁盘簇的一号磁盘的磁盘簇元数据区。如果所述磁盘簇所有成员盘都无可存储所述用户数据的剩余容量,则返回磁盘簇存储空间不足的消息。

请参考图5,图5为本发明所提供的基于磁盘簇的数据读取方法的第一种具体实施例的流程图;具体操作步骤如下:

步骤s501:获取待读取用户数据的元数据,根据所述待读取用户数据的元数据的序列号进行随机哈希计算,得到哈希值;

步骤s502:根据所述哈希值确定所述待读取数据在磁盘簇中所处的磁盘,并根据所述待读取用户数据的元数据获取所述待读取用户数据的磁盘位置,以便读取所述待读取数据。

用户数据的磁盘位置由元数据保存和获取,因此可以根据所述元数据获取所述待读取用户数据的磁盘位置。

当对本发明所提供的磁盘簇中的用户数据进行读取时,首先获取待读取用户数据的元数据,根据所述元数据序列号进行随机哈希计算,根据计算得到的哈希值找到相应的磁盘及磁盘位置,读取相应位置的数据。

基于上述实施例,在本实施例中,在读取磁盘簇中的用户数据时,获取所述用户数据的元数据,根据所述元数据确定所述用户数据所存储的目标磁盘后,首先在所述目标磁盘中查找所述用户数据,若未查找到,则在所述目标磁盘的磁盘簇元数据区中查找存储所述用户数据的实际磁盘以及磁盘位置,以读取所述用户数据。

请参考图6,图6为本发明所提供的基于磁盘簇的数据读取方法的第二种具体实施例的流程图;具体操作步骤如下:

步骤s601:获取待读取用户数据的元数据,根据所述待读取用户数据的元数据的序列号进行随机哈希计算,得到哈希值;

步骤s602:根据所述哈希值确定所述待读取用户数据在所述磁盘簇中所处的目标磁盘;

步骤s603:判断在所述目标磁盘的数据区是否可查找到所述待读取用户数据;

通过查询用户数据(或文件)的元数据是否在某一磁盘上来确定该用户数据(或文件)是否存储在该磁盘上。

步骤s604:若在所述目标磁盘的数据区可查找到所述待读取用户数据,则读取所述待读取用户数据;

步骤s605:若在所述目标磁盘的数据区未查找到所述待读取用户数据,则根据所述目标磁盘元数据区的磁盘簇元数据区中的元数据确定所述待读取用户数据所处的实际磁盘;

需要说明的是,在本发明的其他实施例中,若在所述目标磁盘的数据区未查找到所述待读取用户数据时,可以在所述磁盘簇的任意一个磁盘成员的磁盘簇元数据区的元数据中查找所述待读取用户数据所处的实际磁盘。

步骤s606:在所述实际磁盘的数据区中读取所述待读取用户数据。

本实施例所提供的方法,可以高效、快速地读取本发明所提供的磁盘簇中的用户数据。

请参考图7,图7为本发明实施例提供的一种基于磁盘簇的数据并行存储装置的结构框图;具体装置可以包括:

哈希计算模块100,用于生成待存储用户数据的元数据,并根据所述元数据的序列号进行随机哈希计算,得到哈希值;

选取模块200,用于根据所述哈希值,在磁盘簇的多个磁盘中选取存储所述待存储用户数据的目标磁盘;其中,所述磁盘簇中的每个磁盘包括用于存放存储数据的数据区和用于存放描述所述存储数据的元数据的元数据区;所述每个磁盘的元数据区包括用于保存存储到本磁盘上的数据的元数据的磁盘成员元数据区和用于保存整个磁盘簇的磁盘数量,各磁盘数据容量、数据量与剩余存储容量的磁盘簇元数据区;

判断模块300,用于判断所述目标磁盘的剩余存储容量是否大于等于预设容量阈值;

存储模块400,用于若所述目标磁盘的剩余存储容量大于等于所述预设容量阈值,则将所述待存储用户数据存储至所述目标磁盘的数据区,并将所述待存储用户数据的元数据存储至所述目标磁盘的磁盘成员元数据区;

更新模块500,用于更新所述磁盘簇中各个磁盘的磁盘簇元数据区中保存的所述目标磁盘的数据量与剩余存储容量。

本实施例的基于磁盘簇的数据并行存储装置用于实现前述的基于磁盘簇的数据并行存储方法,因此基于磁盘簇的数据并行存储装置中的具体实施方式可见前文中的基于磁盘簇的数据并行存储方法的实施例部分,例如,哈希计算模块100,选取模块200,判断模块300,存储模块400,更新模块500,分别用于实现上述基于磁盘簇的数据并行存储方法中步骤s101,s102,s103,s104和s105,所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再赘述。

本发明具体实施例还提供了一种基于磁盘簇的数据并行存储设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现上述一种基于磁盘簇的数据并行存储方法的步骤。

本发明具体实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述一种基于磁盘簇的数据并行存储方法的步骤。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的一种基于磁盘簇的数据并行存储方法、装置、设备、计算机可读存储介质以及一种基于磁盘簇的数据读取方法进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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