一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

磁盘阵列分布架构、分块计算方法、系统、设备和介质与流程

2023-01-02 15:51:33 来源:中国专利 TAG:


1.本技术涉及存储技术领域,特别是涉及一种磁盘阵列分布架构、分块计算方法、系统、设备和介质。


背景技术:

2.raid(redundant arrays of independent disks,磁盘阵列)技术广泛应用于存储领域中,raid技术意味独立磁盘构成的一组冗余阵列。raid10为raid技术中的一种类型,raid10的主要技术特征为:构造互为镜像的磁盘,存储数据的内容一致。当其中镜像磁盘中的任一磁盘发生故障时,数据不会丢失,从而保障存储信息的安全性。
3.raid10技术包括条带,条带包括分块,分块大小为256kb(512sector)和128kb(256sector)两种。当条带的分块大小为256kb(512sector)时,一个条带由2个分块组成;由于磁盘的容量固定,如果条带的分块大小为128kb(256sector),针对固定容量的磁盘,条带数量会加倍。由于每个条带都需要一定的内存去存储相应的条带信息,那么针对加倍的条带,内存需求也就成为主要的问题。


技术实现要素:

4.基于此,本技术提供一种磁盘阵列分布架构、分块计算方法、系统、设备和介质,以降低条带信息的内存需求。
5.一方面,提供一种磁盘阵列分布架构,所述磁盘阵列为raid10,所述raid10包括多个条带,每个所述条带至少包括一对分块,当所述raid10中每个磁盘的分块大小设置为第一预设大小时,每个所述条带包括两对分块;当所述raid10中每个磁盘的分块大小设置为第二预设大小时,每个所述条带包括一对分块;其中,每对所述分块互为镜像。
6.在其中一个实施例中,当所述第一预设大小为128kb时,所述raid10中每个磁盘的分块大小设置为128kb,每个所述条带包括两对分块。
7.在其中一个实施例中,当所述第一预设大小为256kb时,所述raid10中每个磁盘的分块大小设置为256kb,每个所述条带包括一对分块。
8.另一方面,提供了一种分块计算方法,所述分块计算方法包括:对所述raid10进行条带划分以及在所述条带下进行分块划分,并对划分好的条带和分块进行编号;接收数据传输指令,并根据所述数据传输指令确定目标条带以及目标条带的目标条带编号和目标条带内偏移;根据目标条带的目标条带编号计算所述raid10中所述目标条带所在行的以上行中的分块数量;根据所述raid10中所述目标条带所在行的以上行中的分块数量计算所述目标条带中的目标分块的目标分块编号;根据所述目标条带的目标条带内偏移计算所述目标分块的目标分块内偏移;
其中,所述分块数量为分块编号不同的分块的数量。
9.在其中一个实施例中,对所述raid10进行条带划分以及在所述条带下进行分块划分,并对划分好的条带和分块进行编号,包括:根据需求进行条带划分,并确定分块大小及其分块对数;根据所述分块大小及其分块对数进行分块划分;对划分好的条带和分块进行编号。
10.在其中一个实施例中,获取到所述目标分块的目标分块编号和目标分块内偏移后,还包括:根据所述目标分块的目标分块编号和目标分块内偏移确定目的地址,将数据读取或写入所述目的地址。
11.在其中一个实施例中,所述根据目标条带的目标条带编号计算所述raid10中所述目标条带所在行的以上行中的分块数量,包括:确定所述raid10中互为镜像的磁盘对数,以及所述raid10每一行分块编号不同的分块的数量;根据所述raid10中互为镜像的磁盘对数和所述raid10每一行分块编号不同的分块的数量通过分块数量计算公式计算出所述raid10中所述目标条带所在行的以上行中的分块数量。
12.在其中一个实施例中,所述分块数量计算公式为:stripfirst=(stretch/mirrors)*rowstripcount;其中,stripfirst为所述raid10中所述目标条带所在行的以上行中的分块数量;stretch为所述目标条带的目标条带编号;mirrors为所述raid10中互为镜像的磁盘对数;rowstripcount为所述raid10每一行分块编号不同的分块的数量。
13.在其中一个实施例中,所述根据所述raid10中目标条带所在行的以上行中的分块数量计算所述目标条带中的目标分块编号,包括:根据所述raid10中所述目标条带所在行的以上行中的分块数量计算所述目标条带所在磁盘的第一个分块的分块编号;根据所述目标条带的目标条带编号和目标条带内偏移计算所述目标分块落在磁盘中具体分块的增量编号;根据所述目标条带所在磁盘的第一个分块的分块编号和所述目标分块落在磁盘中具体分块的增量编号通过分块编号计算公式计算出所述目标条带中的目标分块的目标分块编号。
14.在其中一个实施例中,所述分块编号计算公式为:stripnum=stripfirst stretch%mirrors mirrors*(stretchoffset》》stripsizeshift);其中,stripnum为所述目标条带中的目标分块的目标分块编号;stripfirst stretch%mirrors 为所述目标条带所在磁盘中的第一个分块的编号;stretchoffset为所述目标条带的目标条带内偏移;stripsizeshift为计算指数;stretchoffset》》stripsizeshift运算为stretchoffset/2^(stripsizeshift)。
15.在其中一个实施例中,所述计算指数的计算方法为:
stripsizeshift=log2(2*stripsize);其中,stripsize为分块大小,单位为kb。
16.在其中一个实施例中,所述根据所述目标条带的目标条带内偏移计算所述目标条带中的目标分块的目标分块内偏移,包括:根据所述分块大小计算得到分块计算掩码;根据所述目标条带的目标条带内偏移和所述分块计算掩码通过分块偏移计算公式计算出所述目标分块的目标分块内偏移。
17.在其中一个实施例中,所述分块计算掩码的计算公式为:stripsizemask=2*stripsize-1;其中,stripsizemask为所述分块计算掩码。
18.在其中一个实施例中,所述目标分块内偏移计算公式为:stripoffset=stretchoffset&stripsizemask;其中,stripoffset为所述目标分块内偏移。
19.另一方面,提供了一种分块计算系统,所述分块计算系统包括:条带分块划分模块,用于对raid10进行条带划分以及在所述条带下进行分块划分,并对划分好的条带和分块进行编号;目标条带确定模块,用于接收数据传输指令,并根据所述数据传输指令确定目标条带以及目标条带的目标条带编号和目标条带内偏移;分块数量计算模块,用于根据目标条带的目标条带编号计算所述raid10中所述目标条带所在行的以上行中的分块数量;分块编号计算模块,用于根据所述raid10中所述目标条带所在行的以上行中的分块数量计算所述目标条带中的目标分块的目标分块编号;分块偏移计算模块,根据所述目标条带的目标条带内偏移计算所述目标分块的目标分块内偏移。
20.再一方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:对所述raid10进行条带划分以及在所述条带下进行分块划分,并对划分好的条带和分块进行编号;接收数据传输指令,并根据所述数据传输指令确定目标条带以及目标条带的目标条带编号和目标条带内偏移;根据目标条带的目标条带编号计算所述raid10中所述目标条带所在行的以上行中的分块数量;根据所述raid10中所述目标条带所在行的以上行中的分块数量计算所述目标条带中的目标分块的目标分块编号;根据所述目标条带的目标条带内偏移计算所述目标分块的目标分块内偏移。
21.又一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有程序,当所述程序被处理器执行时,使得所述处理器执行以下步骤:对所述raid10进行条带划分以及在所述条带下进行分块划分,并对划分好的条带和分块进行编号;
接收数据传输指令,并根据所述数据传输指令确定目标条带以及目标条带的目标条带编号和目标条带内偏移;根据目标条带的目标条带编号计算所述raid10中所述目标条带所在行的以上行中的分块数量;根据所述raid10中所述目标条带所在行的以上行中的分块数量计算所述目标条带中的目标分块的目标分块编号;根据所述目标条带的目标条带内偏移计算所述目标分块的目标分块内偏移。
22.本技术的上述技术方案相比现有技术具有以下优点:上述磁盘阵列分布架构、分块计算方法、系统、设备和介质,所述磁盘阵列为raid10,raid10包括多个条带,每个条带至少包括一对分块,当raid10中每个磁盘的分块大小设置为第一预设大小时,每个条带包括两对分块;当raid10中每个磁盘的分块大小设置为第二预设大小时,每个条带包括一对分块,无论是分块大小为第一预设大小128kb(256sector),还是第二预设大小256kb(512sector),在硬盘容量固定的情况下,两种大小的条带数量相同,需要的内存相同,无需增加条带的数量,也就不需要增加内存来存储额外的条带信息,有效地降低了对内存的需求;此外,采用raid10分布架构的分块计算方法,去掉了现有技术中对两种分块大小的判断,直接将分块大小及其它信息代入分块计算方法便可以得到目标分块的目标分块编码和目标分块内偏移,降低了计算方法的复杂度,提高了分块计算效率。
附图说明
23.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
24.图1是本技术实施例提供的磁盘阵列分布架构的第一架构图;图2是本技术实施例提供的磁盘阵列分布架构的第二架构图;图3是本技术实施例提供的分块计算方法的第一方法流程图;图4是本技术实施例提供的分块计算方法的第二方法流程图;图5是本技术实施例提供的分块计算系统的系统结构图;图6是本技术实施例提供的计算机设备的设备结构图。
具体实施方式
25.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
26.实施例一:参照图1和图2所示,图1为本技术实施例提供的磁盘阵列分布架构的第一架构图;图2为本技术实施例提供的磁盘阵列分布架构的第二架构图。
27.所述磁盘阵列为raid10,所述raid10的分部架构(空间分布架构)包括多个条带,
每个所述条带至少包括一对分块,当所述raid10中每个磁盘的分块大小设置为第一预设大小时,每个所述条带包括两对分块;当所述raid10中每个磁盘的分块大小设置为第二预设大小时,每个所述条带包括一对分块;其中,每对所述分块互为镜像。
28.具体地,现有技术中每个条带包括一对分块,每个分块的大小包括128kb和256kb两种规格。在一个磁盘中,如果分块大小从256kb更改为128kb,由于每个磁盘的容量是固定的,则需要增加条带的数量,而保存条带信息需要内存,增加的条带便需要增加内存来存储条带信息,便提高了对内存的需求。因此,本发明提出一种raid10分布架构,如图1和图2所示,该raid10分布架构包括多个条带,每个条带至少包括一对分块。本发明中的raid10分布架构不再局限于只包括一对分块,而是增加了分块的数量。当raid10中每个磁盘的分块大小设置为第一预设大小时,每个条带包括两对分块;当raid10中每个磁盘的分块大小设置为第二预设大小时,每个条带包括一对分块;无论是分块大小是第一预设大小还是第二预设大小,均控制条带的数量相同,无需增加条带的数量,也就不需要增加内存来存储额外的条带信息,有效地降低了对内存的需求。其中,无论是第一预设大小还是第二预设大小的分块,每对分块互为镜像,也就是每对分块所存储的数据相同,实现数据冗余,以提高存储信息的安全性。
29.在其中一个实施方式中,当所述第一预设大小为128kb时,所述raid10中每个磁盘的分块大小设置为128kb,每个所述条带包括两对分块。
30.具体地,分块大小包括两种,一种为256kb(512sector),另一种为128kb(256sector)。因此分块的预设大小包括两种,第一预设大小为256kb(512sector),第二预设大小为128kb(256sector)。当第一预设大小为128kb时,raid10中每个磁盘的分块大小设置为128kb(256sector),每个条带包括两对分块,如图1所示,包括9个条带,每个条带包括两对分块。
31.在其中一个实施方式中,当所述第二预设大小为256kb时,所述raid10中每个磁盘的分块大小设置为256kb,每个所述条带包括一对分块。
32.具体地,当第二预设大小为256kb时,raid10中每个磁盘的分块大小设置为256kb(512sector),每个条带包括一对分块,如图2所示,包括9个条带,每个条带包括一对分块。
33.由此可见,无论是分块大小为第一预设大小128kb(256sector),还是第二预设大小256kb(512sector),在硬盘容量固定的情况下,两种大小的条带数量相同,需要的内存相同,无需增加条带的数量,也就不需要增加内存来存储额外的条带信息,有效地降低了对内存的需求。
34.实施例二:参照图3所示,图3为本技术实施例提供的分块计算方法的第一方法流程图。
35.方法包括以下步骤:s101,对所述raid10进行条带划分以及在所述条带下进行分块划分,并对划分好的条带和分块进行编号;具体地,数据传输前需要做好准备工作,即,对raid10进行条带划分以及在条带下进行分块划分,并对划分好的条带和分块进行编号,以便于后续根据目标条带的目标条带编号和目标条带内偏移通过计算得到目标分块的目标分块编号和目标分块内偏移。
36.s102,接收数据传输指令,并根据所述数据传输指令确定目标条带以及目标条带
的目标条带编号和目标条带内偏移;具体地,接收到数据传输指令后,根据数据传输指令可以确定目标条带以及目标条带的目标条带编号和目标条带内偏移,以便于根据目标条带的目标条带编号和目标条带内偏移通过计算得到目标分块的目标分块编号和目标分块内偏移,获取到具体的地址,将数据传输到相应的地址。
37.s103,根据目标条带的目标条带编号计算所述raid10中所述目标条带所在行的以上行中的分块数量;具体地,要想将数据存储到磁盘里,需要对磁盘的存储地址进行计算,即,根据条带编号和条带内偏移来计算分块的分块编号和分块内偏移。在本发明中,需要存储数据的条带称为目标条带,需要存储数据的分块称为目标分块。因此,本发明的分块计算方法即,根据目标条带的目标条带编号和目标条带内偏移来计算目标分块的目标分块编号和目标分块内偏移。首先是根据目标条带的目标条带编号计算raid10中目标条带所在行的以上行中的分块数量,如图1所示,例如目标条带编号为stretch4,则目标条带stretch4所在行的以上行中的分块数量为第一行中的分块数量6。其中,分块数量为分块编号不同的分块的数量,因此第一行中的分块数量为6。
38.s104,根据所述raid10中所述目标条带所在行的以上行中的分块数量计算所述目标条带中的目标分块的目标分块编号;具体地,根据目标条带的目标条带编号计算raid10中目标条带所在行的以上行中的分块数量后,根据raid10中目标条带所在行的以上行中的分块数量便可以通过计算得到目标条带中的目标分块的目标分块编号。
39.s105,根据所述目标条带的目标条带内偏移计算所述目标分块的目标分块内偏移;具体地,通过计算得到目标条带中的目标分块的目标分块编号后,根据目标条带的目标条带内偏移通过计算可以得到目标分块的目标分块内偏移,目标分块编号加上目标分块内偏移便可以得到磁盘中具体的地址,便可以将数据写入磁盘的该地址内。给出了采用raid10分布架构的分块计算方法,去掉了现有技术中对两种分块大小的判断,直接将分块大小及其它信息代入分块计算方法便可以得到目标分块的目标分块编码和目标分块内偏移,降低了计算方法的复杂度,提高了分块计算效率。
40.其中,所述分块数量为分块编号不同的分块的数量。
41.在其中一个实施方式中,对所述raid10进行条带划分以及在所述条带下进行分块划分,并对划分好的条带和分块进行编号,包括:根据需求进行条带划分,并确定分块大小及其分块对数;具体地,根据实际需求进行条带划分,确定需要划分多少个条带;然后根据实际需求确定分块大小,即,分块大小为128kb,或者是256kb,并确定好分块对数。
42.根据所述分块大小及其分块对数进行分块划分;具体地,确定好分块大小和分块对数后,便可以根据分块大小和分块对数对分块进行划分。
43.对划分好的条带和分块进行编号。
44.具体地,条带和分块均划分完毕后,对所有的条带和分块进行编号,以便于后续根
据目标条带的目标条带编号和目标条带内偏移通过计算得到目标分块的目标分块编号和目标分块内偏移。
45.在其中一个实施方式中,获取到所述目标分块的目标分块编号和目标分块内偏移后,还包括:根据所述目标分块的目标分块编号和目标分块内偏移确定目的地址,将数据读取或写入所述目的地址。
46.具体地,根据目标条带的目标条带编号和目标条带内偏移通过计算得到目标分块的目标分块编号和目标分块内偏移后,根据目标分块的目标分块编号和目标分块内偏移确定目的地址,将数据读取或写入目的地址,完成数据传输操作。
47.在其中一个实施方式中,所述根据目标条带的目标条带编号计算所述raid10中所述目标条带所在行的以上行中的分块数量,包括:确定所述raid10中互为镜像的磁盘对数,以及所述raid10每一行分块编号不同的分块的数量;具体地,要想通过计算得到目标分块编号,便要根据目标条带的目标条带编号通过相应的计算得到目标分块编号。首先要根据raid10确定该磁盘阵列中互为镜像的磁盘对数,以及在该raid10磁盘阵列中每一行分块编号不同的分块的数量,以便于通过互为镜像的磁盘对数和每一行分块编号不同的分块的数量来确定目标条带所在行的以上行中的分块数量。
48.根据所述raid10中互为镜像的磁盘对数和所述raid10每一行分块编号不同的分块的数量通过分块数量计算公式计算出所述raid10中所述目标条带所在行的以上行中的分块数量。
49.具体地,获取到通过互为镜像的磁盘对数和每一行分块编号不同的分块的数量后,便可以通过相关的计算公式,通过互为镜像的磁盘对数和每一行分块编号不同的分块的数量计算得到raid10中目标条带所在行的以上行中的分块数量,以便于根据raid10中目标条带所在行的以上行中的分块数量计算目标条带所在磁盘的第一个分块的分块编号。
50.在其中一个实施方式中,所述分块数量计算公式为:stripfirst=(stretch/mirrors)*rowstripcount;其中,stripfirst为所述raid10中所述目标条带所在行的以上行中的分块数量;stretch为所述目标条带的目标条带编号;mirrors为所述raid10中互为镜像的磁盘对数;rowstripcount为所述raid10每一行分块编号不同的分块的数量。
51.具体地,根据raid10中互为镜像的磁盘对数和raid10每一行分块编号不同的分块的数量通过分块数量计算公式计算出raid10中目标条带所在行的以上行中的分块数量,分块数量计算公式为stripfirst=(stretch/mirrors)*rowstripcount。如图1所示,分块大小为128kb,mirrors为raid10中互为镜像的磁盘对数(磁盘数目除以2),图1所示的分布架构包括6个磁盘,磁盘0和磁盘1互为镜像,磁盘2和磁盘3互为镜像,磁盘4和磁盘5互为镜像,即,三对磁盘(磁盘数目6除以2等于3)。假设给定stretch4,则stripfirst=(stretch/mirrors)*rowstripcount=(4/3)*6=6,其中运算符号“/”为取商,且分块数量为分块编号不同的分块的数量,则目标条带所在行的以上行中的分块数量为6,即,strip0、strip1、strip2、strip3、strip4、strip5。
52.在其中一个实施方式中,所述根据所述raid10中目标条带所在行的以上行中的分块数量计算所述目标条带中的目标分块编号,包括:根据所述raid10中所述目标条带所在行的以上行中的分块数量计算所述目标条带所在磁盘的第一个分块的分块编号;具体地,获取到raid10中目标条带所在行的以上行中的分块数量后,根据raid10中目标条带所在行的以上行中的分块数量通过相应的计算公式通过计算便可以得到目标条带所在磁盘的第一个分块的分块编号,以便于通过分块编号计算出目标条带中的目标分块的目标分块编号。
53.根据所述目标条带的目标条带编号和目标条带内偏移计算所述目标分块落在磁盘中具体分块的增量编号;具体地,获取到目标条带所在磁盘的第一个分块的分块编号后,根据目标条带的目标条带编号和目标条带内偏移通过相应的计算公式便可以计算得出目标分块落在磁盘中具体分块的增量编号,以便于通过第一个分块的分块编号和增量编号计算出目标条带中的目标分块的目标分块编号。
54.根据所述目标条带所在磁盘的第一个分块的分块编号和所述目标分块落在磁盘中具体分块的增量编号通过分块编号计算公式计算出所述目标条带中的目标分块的目标分块编号。
55.具体地,获取到目标条带所在磁盘的第一个分块的分块编号和目标分块落在磁盘中具体分块的增量编号后,将目标条带所在磁盘的第一个分块的分块编号和目标分块落在磁盘中具体分块的增量编号代入相应的计算公式便可以得到目标条带中的目标分块的目标分块编号。
56.在其中一个实施方式中,所述分块编号计算公式为:stripnum=stripfirst stretch%mirrors mirrors*(stretchoffset》》stripsizeshift);其中,stripnum为所述目标条带中的目标分块的目标分块编号;stripfirst stretch%mirrors 为所述目标条带所在磁盘中的第一个分块的编号;stretchoffset为所述目标条带的目标条带内偏移;stripsizeshift为计算指数;stretchoffset》》stripsizeshift运算为stretchoffset/2^(stripsizeshift)。
57.具体地,要想得到目标分块的目标分块编号,则需首先根述raid10中目标条带所在行的以上行中的分块数量计算目标条带所在磁盘的第一个分块的分块编号,然后根据目标条带的目标条带编号和目标条带内偏移计算目标分块落在磁盘中具体分块的增量编号,再根据目标条带所在磁盘的第一个分块的分块编号和目标分块落在磁盘中具体分块的增量编号通过分块编号计算公式计算出目标条带中的目标分块的目标分块编号。分块编号计算公式为:stripnum=stripfirst stretch%mirrors mirrors*(stretchoffset》》stripsizeshift);其中,根述raid10中目标条带所在行的以上行中的分块数量计算目标条带所在磁盘的第一个分块的分块编号的计算方法为stripfirst stretch%mirrors;例如给定stretch4,则如图2所示,当分块大小为256kb时,stripfirst stretch%mirrors =(4/3)*3 (4%3)=4,对应图2中的分块编号4(strip4);当分块大小为128kb时,stripfirst stretch%mirrors =(4/3)*6 (4%3)=7,对应图1中的分块编号7(strip4),其中,运算符号“%”为取余。根据目标条带的目标条带编号和目标条带内偏移计算目标分块落在磁盘中具体分块的增量编号的计算方法为stretchoffset 》》stripsizeshift,具体运算为stretchoffset/2^(stripsizeshift);例如给定目标条带的目标条编号为stretch4,目标条带的目标条编内偏移为stretchoffset=258sector,如图1所示,分块大小为128kb=256sector=2^8=2^stripsizeshift,则stretchoffset》》stripsizeshift= stretchoffset/2^(stripsizeshift)=258/256=1,表示落在两个分块中第二个分块上(落在第一个分块计算结果为0,落在第二个分块计算结果为1)。如图2所示,分块大小为256kb=512sector=2^9=2^stripsizeshift,则stretchoffset》》stripsizeshift= stretchoffset/2^(stripsizeshift)=256/512=0,此架构中,一个磁盘在一行中只有一个分块,因此,stretchoffset/512值恒为0,表示落在第一个上。再根据目标条带所在磁盘的第一个分块的分块编号和目标分块落在磁盘中具体分块的增量编号通过分块编号计算公式计算出目标条带中的目标分块的目标分块编号的计算方法为stripnum=stripfirst stretch%mirrors mirrors*(stretchoffset》》stripsizeshift);如图1所示,假设给定目标条带的目标条编号为stretch4,目标条带的目标条编内偏移为stretchoffset=258sector,则stripfirst stretch%mirrors mirrors*(stretchoffset》》stripsizeshift)=(4/3)*6 (4%3) 3*(258/2^8)=10,则对应图1中的strip10。
58.在其中一个实施方式中,所述计算指数的计算方法为:stripsizeshift=log2(2*stripsize);其中,stripsize为分块大小,单位为kb。
59.具体地,根据目标条带的目标条带编号和目标条带内偏移计算目标分块落在磁盘中具体分块的增量编号的计算方法为stretchoffset/2^(stripsizeshift),其中,stripsizeshift的计算方法为stripsizeshift=log2(2*stripsize);stripsize为分块大小,单位为kb,2*stripsize表示单位转换为sector,即,分块大小=128kb,转换成sector单位为256sector。
60.在其中一个实施方式中,所述根据所述目标条带的目标条带内偏移计算所述目标条带中的目标分块的目标分块内偏移,包括:根据所述分块大小计算得到分块计算掩码;具体地,根据raid10中目标条带所在行的以上行中的分块数量计算目标条带中的目标分块编号后,要进一步根据目标条带的目标条带内偏移计算目标条带中的目标分块的目标分块内偏移,首先要根据分块大小计算得到分块计算掩码,以便于通过目标条带的目标条带内偏移和分块计算掩码通过分块偏移计算公式计算出目标分块的目标分块内偏移。
61.根据所述目标条带的目标条带内偏移和所述分块计算掩码通过分块偏移计算公式计算出所述目标分块的目标分块内偏移。
62.具体地,根据分块大小计算得到分块计算掩码后,根据目标条带的目标条带内偏移和分块计算掩码通过分块偏移计算公式计算出目标分块的目标分块内偏移,通过以上计算得到目标分块的目标分块编号和目标分块内偏移,这样也就定位到了磁盘中具体的地址,便可以将数据写入到该地址中。
63.在其中一个实施方式中,所述分块计算掩码的计算公式为:stripsizemask=2*stripsize-1;
其中,stripsizemask为所述分块计算掩码。
64.具体地,根据分块大小计算得到分块计算掩码的计算公式为stripsizemask=2*stripsize-1,其中stripsizemask为分块计算掩码,stripsize为分块大小,单位为kb。例如,当分块大小为128kb时,分块计算掩码为2*128-1=255;当分块大小为256kb时,分块计算掩码为2*256-1=511。
65.在其中一个实施方式中,所述目标分块内偏移计算公式为:stripoffset=stretchoffset & stripsizemask;其中,stripoffset为所述目标分块内偏移。
66.具体地,根据分块大小计算得到分块计算掩码后,根据目标条带的目标条带内偏移和分块计算掩码通过分块偏移计算公式计算出目标分块的目标分块内偏移,分块偏移计算公式为:stripoffset=stretchoffset & stripsizemask;如图2所示,当分块大小为256kb时,转换成sector单位为512sector,stripsizemask=512-1=2^9-1=511(二进制11111111),此时stripsizeshift为9,当给定目标条带的目标条带内偏移stretchoffset=510sector时(二进制111111110),stripoffset=stretchoffset & stripsizemask=111111110&11111111=111111110(十进制510),因此可得目标分块的目标分块内偏移为510sector。
67.实施例三:参照图4所示,图4为本技术实施例提供的方法的第二方法流程图。其中,图4所示方法中,与图3所示方法中相同或相似的内容,可以参考图3方法中的描述,此处不做赘述。
68.s201,根据需求进行条带划分,并确定分块大小及其分块对数;根据实际需求进行条带划分,确定需要划分多少个条带;然后根据实际需求确定分块大小,即,分块大小为128kb,或者是256kb,并确定好分块对数。
69.s202,根据所述分块大小及其分块对数进行分块划分;确定好分块大小和分块对数后,便可以根据分块大小和分块对数对分块进行划分。
70.s203,对划分好的条带和分块进行编号。
71.条带和分块均划分完毕后,对所有的条带和分块进行编号,以便于后续根据目标条带的目标条带编号和目标条带内偏移通过计算得到目标分块的目标分块编号和目标分块内偏移。
72.s204,接收数据传输指令,并根据所述数据传输指令确定目标条带以及目标条带的目标条带编号和目标条带内偏移;接收到数据传输指令后,根据数据传输指令可以确定目标条带以及目标条带的目标条带编号和目标条带内偏移,以便于根据目标条带的目标条带编号和目标条带内偏移通过计算得到目标分块的目标分块编号和目标分块内偏移,获取到具体的地址,将数据传输到相应的地址。
73.s205,确定所述raid10中互为镜像的磁盘对数,以及所述raid10每一行分块编号不同的分块的数量;要想通过计算得到目标分块编号,便要根据目标条带的目标条带编号通过相应的计算得到目标分块编号。首先要根据raid10确定该磁盘阵列中互为镜像的磁盘对数,以及
在该raid10磁盘阵列中每一行分块编号不同的分块的数量,以便于通过互为镜像的磁盘对数和每一行分块编号不同的分块的数量来确定目标条带所在行的以上行中的分块数量。
74.s206,根据所述raid10中互为镜像的磁盘对数和所述raid10每一行分块编号不同的分块的数量通过分块数量计算公式计算出所述raid10中所述目标条带所在行的以上行中的分块数量;获取到通过互为镜像的磁盘对数和每一行分块编号不同的分块的数量后,便可以通过相关的计算公式,通过互为镜像的磁盘对数和每一行分块编号不同的分块的数量计算得到raid10中目标条带所在行的以上行中的分块数量,以便于根据raid10中目标条带所在行的以上行中的分块数量计算目标条带所在磁盘的第一个分块的分块编号。
75.s207,根据所述raid10中所述目标条带所在行的以上行中的分块数量计算所述目标条带所在磁盘的第一个分块的分块编号;获取到raid10中目标条带所在行的以上行中的分块数量后,根据raid10中目标条带所在行的以上行中的分块数量通过相应的计算公式通过计算便可以得到目标条带所在磁盘的第一个分块的分块编号,以便于通过分块编号计算出目标条带中的目标分块的目标分块编号。
76.s208,根据所述目标条带的目标条带编号和目标条带内偏移计算所述目标分块落在磁盘中具体分块的增量编号;获取到目标条带所在磁盘的第一个分块的分块编号后,根据目标条带的目标条带编号和目标条带内偏移通过相应的计算公式便可以计算得出目标分块落在磁盘中具体分块的增量编号,以便于通过第一个分块的分块编号和增量编号计算出目标条带中的目标分块的目标分块编号。
77.s209,根据所述目标条带所在磁盘的第一个分块的分块编号和所述目标分块落在磁盘中具体分块的增量编号通过分块编号计算公式计算出所述目标条带中的目标分块的目标分块编号;获取到目标条带所在磁盘的第一个分块的分块编号和目标分块落在磁盘中具体分块的增量编号后,将目标条带所在磁盘的第一个分块的分块编号和目标分块落在磁盘中具体分块的增量编号代入相应的计算公式便可以得到目标条带中的目标分块的目标分块编号。
78.s210,根据所述分块大小计算得到分块计算掩码;根据raid10中目标条带所在行的以上行中的分块数量计算目标条带中的目标分块编号后,要进一步根据目标条带的目标条带内偏移计算目标条带中的目标分块的目标分块内偏移,首先要根据分块大小计算得到分块计算掩码,以便于通过目标条带的目标条带内偏移和分块计算掩码通过分块偏移计算公式计算出目标分块的目标分块内偏移。
79.s211,根据所述目标条带的目标条带内偏移和所述分块计算掩码通过分块偏移计算公式计算出所述目标分块的目标分块内偏移;根据分块大小计算得到分块计算掩码后,根据目标条带的目标条带内偏移和分块计算掩码通过分块偏移计算公式计算出目标分块的目标分块内偏移,通过以上计算得到目标分块的目标分块编号和目标分块内偏移,这样也就定位到了磁盘中具体的地址,便可以将数据写入到该地址中。
80.s212,根据所述目标分块的目标分块编号和目标分块内偏移确定目的地址,将数据读取或写入所述目的地址。
81.根据目标条带的目标条带编号和目标条带内偏移通过计算得到目标分块的目标分块编号和目标分块内偏移后,根据目标分块的目标分块编号和目标分块内偏移确定目的地址,将数据读取或写入目的地址,完成数据传输操作。
82.应该理解的是,虽然图3~图4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3~图4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
83.实施例四:参照图5所示,图5为本技术实施例提供的分块计算系统的系统结构图。
84.本实施例的分块计算系统,包括:条带分块划分模块,用于对raid10进行条带划分以及在所述条带下进行分块划分,并对划分好的条带和分块进行编号;数据传输前需要做好准备工作,即,通过条带分块划分模块对raid10进行条带划分以及在条带下进行分块划分,并对划分好的条带和分块进行编号,以便于后续根据目标条带的目标条带编号和目标条带内偏移通过计算得到目标分块的目标分块编号和目标分块内偏移。
85.目标条带确定模块,用于接收数据传输指令,并根据所述数据传输指令确定目标条带以及目标条带的目标条带编号和目标条带内偏移;接收到数据传输指令后,根据数据传输指令可以通过目标条带确定模块确定目标条带以及目标条带的目标条带编号和目标条带内偏移,以便于根据目标条带的目标条带编号和目标条带内偏移通过计算得到目标分块的目标分块编号和目标分块内偏移,获取到具体的地址,将数据传输到相应的地址。
86.分块数量计算模块,用于根据目标条带的目标条带编号计算所述raid10中所述目标条带所在行的以上行中的分块数量;要想将数据存储到磁盘里,需要对磁盘的存储地址进行计算,即,根据条带编号和条带内偏移来计算分块的分块编号和分块内偏移。在本发明中,需要存储数据的条带称为目标条带,需要存储数据的分块称为目标分块。因此,本发明的分块计算方法即,根据目标条带的目标条带编号和目标条带内偏移来计算目标分块的目标分块编号和目标分块内偏移。首先是通过分块数量计算模块根据目标条带的目标条带编号计算raid10中目标条带所在行的以上行中的分块数量。
87.分块编号计算模块,用于根据所述raid10中所述目标条带所在行的以上行中的分块数量计算所述目标条带中的目标分块的目标分块编号;根据目标条带的目标条带编号计算raid10中目标条带所在行的以上行中的分块数量后,通过分块编号计算模块根据raid10中目标条带所在行的以上行中的分块数量便可
以通过计算得到目标条带中的目标分块的目标分块编号。
88.分块偏移计算模块,根据所述目标条带的目标条带内偏移计算所述目标分块的目标分块内偏移。
89.通过计算得到目标条带中的目标分块的目标分块编号后,通过分块偏移计算模块根据目标条带的目标条带内偏移通过计算可以得到目标分块的目标分块内偏移,目标分块编号加上目标分块内偏移便可以得到磁盘中具体的地址,便可以将数据写入磁盘的该地址内。
90.在其中一个实施方式中,所述分块计算系统还包括:第一分块计算模块,用于根据所述raid10中所述目标条带所在行的以上行中的分块数量计算所述目标条带所在磁盘的第一个分块的分块编号;获取到raid10中目标条带所在行的以上行中的分块数量后,通过第一分块计算模块根据raid10中目标条带所在行的以上行中的分块数量通过相应的计算公式通过计算便可以得到目标条带所在磁盘的第一个分块的分块编号,以便于通过分块编号计算出目标条带中的目标分块的目标分块编号。
91.增量编号计算模块,用于根据所述目标条带的目标条带编号和目标条带内偏移计算所述目标分块落在磁盘中具体分块的增量编号;获取到目标条带所在磁盘的第一个分块的分块编号后,通过增量编号计算模块根据目标条带的目标条带编号和目标条带内偏移通过相应的计算公式便可以计算得出目标分块落在磁盘中具体分块的增量编号,以便于通过第一个分块的分块编号和增量编号计算出目标条带中的目标分块的目标分块编号。
92.分块掩码计算模块,用于根据所述分块大小计算得到分块计算掩码。
93.根据raid10中目标条带所在行的以上行中的分块数量计算目标条带中的目标分块编号后,要进一步根据目标条带的目标条带内偏移计算目标条带中的目标分块的目标分块内偏移,首先要通过分块掩码计算模块根据分块大小计算得到分块计算掩码,以便于通过目标条带的目标条带内偏移和分块计算掩码通过分块偏移计算公式计算出目标分块的目标分块内偏移。
94.关于分块计算系统的具体限定可以参见上文中对于方法的限定,在此不再赘述。上述分块计算系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
95.实施例五:本实施例提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现分块计算方法的步骤。
96.该计算机设备可以是终端,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现分块计算方法。该计算机设备的显示屏
可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
97.本领域内的技术人员应明白,图6中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
98.在其中一个实施方式中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:对所述raid10进行条带划分以及在所述条带下进行分块划分,并对划分好的条带和分块进行编号;接收数据传输指令,并根据所述数据传输指令确定目标条带以及目标条带的目标条带编号和目标条带内偏移;根据目标条带的目标条带编号计算所述raid10中所述目标条带所在行的以上行中的分块数量;根据所述raid10中所述目标条带所在行的以上行中的分块数量计算所述目标条带中的目标分块的目标分块编号;根据所述目标条带的目标条带内偏移计算所述目标分块的目标分块内偏移。
99.实施例六:本实施例提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:对所述raid10进行条带划分以及在所述条带下进行分块划分,并对划分好的条带和分块进行编号;接收数据传输指令,并根据所述数据传输指令确定目标条带以及目标条带的目标条带编号和目标条带内偏移;根据目标条带的目标条带编号计算所述raid10中所述目标条带所在行的以上行中的分块数量;根据所述raid10中所述目标条带所在行的以上行中的分块数量计算所述目标条带中的目标分块的目标分块编号;根据所述目标条带的目标条带内偏移计算所述目标分块的目标分块内偏移。
100.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
101.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
102.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献