CN117112455B - 一种空间地址的转化方法、装置、计算机设备及存储介质 - Google Patents
一种空间地址的转化方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN117112455B CN117112455B CN202311381525.XA CN202311381525A CN117112455B CN 117112455 B CN117112455 B CN 117112455B CN 202311381525 A CN202311381525 A CN 202311381525A CN 117112455 B CN117112455 B CN 117112455B
- Authority
- CN
- China
- Prior art keywords
- packet
- storage
- address
- offset
- disk
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 72
- 238000006243 chemical reaction Methods 0.000 title claims abstract description 28
- 238000009826 distribution Methods 0.000 claims abstract description 137
- 238000012360 testing method Methods 0.000 claims abstract description 43
- 230000015654 memory Effects 0.000 claims description 30
- 238000005192 partition Methods 0.000 claims description 11
- 238000004891 communication Methods 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 abstract description 8
- 230000003044 adaptive effect Effects 0.000 abstract description 5
- 238000013500 data storage Methods 0.000 abstract description 2
- 238000013519 translation Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 4
- 238000007689 inspection Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明涉及计算机数据存储技术领域,公开了一种空间地址的转化方法、装置、计算机设备及存储介质,其中方法包括:根据磁盘地址确定待存储信息在存储磁盘存储时的存储包、及待存储信息在存储磁盘存储时的当前预估条带;根据获取的q检验块在包中的空间分布信息、属性信息及存储包计算存储包中的q检验块在存储磁盘中的第一偏移量;根据当前预估条带的编号及属性信息,计算当前预估条带在存储磁盘中的第二偏移量;基于第一偏移量和第二偏移量确定待存储信息在存储磁盘上存储时的存储条带。提供了一种与Raid 6相适应的空间地址转化算法,并且计算方法简单高效。
Description
技术领域
本发明涉及计算机数据存储技术领域,具体涉及一种空间地址的转化方法、装置、计算机设备及存储介质。
背景技术
存储系统遍布于当前社会的各个角落,只要有数据就离不开存储。Raid 是由一系列独立的磁盘构成的具有冗余特性的阵列,是存储系统的底层架构。冗余意味着可以容忍一定数量的盘故障,可以保证用户数据不丢失。Raid 6 就是其中的一种,冗余度为2,即可以同时掉2块磁盘。Raid6的这一优良特性在于其配置的p校验块和q校验块。
当服务器向存储系统下发输入输出命令(io命令)时,底层架构需要根据给定的磁盘编号(ComponentIndex)进行空间地址转化。
目前Raid 6中并没有合适的空间地址转化方法,而Raid 5的空间地址转化方法非常简单,即,Stride=ComponentLba/Stripsize,其中Stride 表示条带号,ComponentLba 表示磁盘地址,Stripsize为块大小。
但是当存储系统的底层架构采用Raid 6时,由于Raid 6中包含p校验块和q校验块,而q校验块与p校验块、2数据块、3数据块的大小并不相同,Raid 5中的空间地址转化算法对于Raid 6并不适用。
发明内容
有鉴于此,本发明提供了一种空间地址的转化方法、装置、计算机设备及存储介质,以解决Raid 5中的空间地址转化算法对于Raid 6并不适用的问题。
第一方面,本发明实施例提供了一种空间地址的转化方法,方法包括以下步骤:获取待存储信息在存储磁盘存储时的磁盘地址、及存储磁盘的属性信息;根据磁盘地址确定待存储信息在存储磁盘存储时的存储包、及待存储信息在存储磁盘存储时的当前预估条带;获取空间分布地址信息;判断空间分布地址信息中是否包含第一检验块在包中的空间分布信息;当空间分布地址信息中包含第一检验块在包中的空间分布信息时,获取第一检验块在包中的空间分布信息;根据第一检验块在包中的空间分布信息、属性信息及存储包计算存储包中的第一检验块在存储磁盘中的第一偏移量;根据当前预估条带的编号及属性信息,计算当前预估条带在存储磁盘中的第二偏移量;基于第一偏移量和第二偏移量确定待存储信息在存储磁盘上存储时的存储条带。
本实施例提供的空间地址的转化方法,提供了一种与Raid 6相适应的空间地址转化算法,解决Raid 5中的空间地址转化算法对于Raid 6并不适用的问题;同时,由于对于同一磁盘,每个pack的空间分布情况均一致,每个磁盘在首次接收到io命令时,确定存储条带的过程中,只需要计算一次q 检验块在包中的空间分布信息,并存储在存储结构中,后续再有此磁盘的io命令,只需要去存储结构中查找即可得到q 检验块的空间分布信息。由于q检验块在包中的空间分布信息的计算过程相当繁琐,由此可以加速求解io 中的地址转化,能够提高存储系统的每秒存储系统能完成的io个数。
在一种可选的实施方式中,判断空间分布地址信息中是否包含第一检验块在包中的空间分布信息包括:获取空间分布地址信息中的标识信息;根据标识信息确定空间分布地址信息中是否包含第一检验块在包中的空间分布信息。
由此可以方便的确定存储结构中是否保存有第一检验块在包中的空间分布信息。
在一种可选的实施方式中,当存储结构用于存储多个磁盘的存储信息时,获取空间分布地址信息中的标识信息包括:获取存储磁盘的编号;在空间分布地址信息中获取与编号相对应的标识信息。
由于对于同一磁盘,每个pack的空间分布情况均一致,由此可以使得在磁盘阵列时包括多个磁盘时,也能准确的得到每个磁盘中第一检验块在包中的空间分布信息。
在一种可选的实施方式中,存储磁盘的属性信息包括:一个包的条带数量、一个包的纵向长度、第一分块大小。
由此可以保证空间地址的转化方法能够正常执行。
在一种可选的实施方式中,第一检验块在包中的空间分布信息为第一检验块在包中的行数,根据第一检验块在包中的空间分布信息、属性信息及存储包计算存储包中的第一检验块在存储磁盘中的第一偏移量包括:利用存储包的编号、及一个包的纵向长度得到存储包的偏移量;利用第一检验块在包中的行数、及第一分块大小得到第一检验块在存储包的偏移量;将存储包的偏移量与第一检验块在存储包的偏移量相加得到存储包中的第一检验块在存储磁盘中的第一偏移量。
由此可以方便快速的确定存储包中的第一检验块在存储磁盘中的第一偏移量,以便可以利用第一偏移量对当前预估条带的准确性进行验证。
在一种可选的实施方式中,当所述第一检验块在包中的空间分布信息为所述第一检验块在包中的偏移量时,所述根据所述第一检验块在包中的空间分布信息、所述属性信息及所述存储包计算所述存储包中的第一检验块在所述存储磁盘中的第一偏移量包括:利用所述存储包的编号、及所述一个包的纵向长度得到所述存储包的偏移量;将所述存储包的偏移量与所述第一检验块在包中的偏移量相加得到所述存储包中的第一检验块在所述存储磁盘中的第一偏移量。
由此可以方便快速的确定存储包中的第一检验块在存储磁盘中的第一偏移量,以便可以利用第一偏移量对当前预估条带的准确性进行验证。
在一种可选的实施方式中,根据当前预估条带的编号及属性信息,计算当前预估条带在存储磁盘中的第二偏移量包括:利用当前预估条带的编号、一个包的条带数量及一个包的纵向长度得到存储包的偏移量;根据当前预估条带的编号、一个包的条带数量计算当前预估条带在存储包中的行数;利用当前预估条带在存储包中的行数、及第一分块大小得到当前预估条带在存储包的偏移量;将存储包的偏移量与当前预估条带在存储包的偏移量相加得到当前预估条带在存储磁盘中的第二偏移量。
由此可以方便快速的确定当前预估条带在存储磁盘中的第二偏移量,以便得到当前预估条带的首地址和末地址,以便对当前预估条带的准确性进行验证。
在一种可选的实施方式中,基于第一偏移量和第二偏移量确定待存储信息在存储磁盘上存储时的存储条带包括:根据第一偏移量和第二偏移量确定当前预估条带与存储包中的第一检验块的相对位置;根据相对位置确定当前预估条带的首地址、及当前预估条带的末地址;当磁盘地址位于当前预估条带的首地址与当前预估条带的末地址之间时,将当前预估条带作为确定的存储条带。
由此可以对当前预估条带的准确性进行验证。
在一种可选的实施方式中,根据第一偏移量和第二偏移量确定当前预估条带与存储包中的第一检验块的相对位置包括:当第一偏移量大于第二偏移量时,判定存储包中的第一检验块在当前预估条带的下方;当第一偏移量小于第二偏移量时,判定存储包中的第一检验块在当前预估条带的上方。
由此可以确定当前预估条带与存储包中的第一检验块的相对位置,以便得到准确的第二偏移量。
在一种可选的实施方式中,根据相对位置确定当前预估条带的首地址、及当前预估条带的末地址包括:当存储包中的第一检验块在当前预估条带的下方时,将第二偏移量作为当前预估条带的首地址;并根据当前预估条带的首地址确定当前预估条带的末地址;当存储包中的第一检验块在当前预估条带的上方时,利用第二偏移量加上预设的第一阈值,得到当前预估条带的首地址;并根据当前预估条带的首地址确定当前预估条带的末地址。
由此可以根据当前预估条带与存储包中的第一检验块的相对位置准确的确定当前预估条带的首地址、及当前预估条带的末地址。
在一种可选的实施方式中,根据当前预估条带的首地址确定当前预估条带的末地址包括:获取第一分块大小;利用当前预估条带的首地址加上第一分块大小得到当前预估条带的末地址。
由此可以准确方便的得到当前预估条带的末地址。
在一种可选的实施方式中,第一阈值根据第一校验块的第二分块大小与第一分块大小的差值确定。
由此可以准确方便的得到当前预估条带的首地址。
在一种可选的实施方式中,空间地址的转化方法还包括以下步骤:当磁盘地址小于当前预估条带的首地址时,将当前预估条带的编号减1得到下一预估条带;将下一预估条带作为当前预估条带,并返回根据当前预估条带的编号及属性信息,计算当前预估条带在存储磁盘中的第二偏移量的步骤。
由此可以在当前预估条带预估的不正确时,再次进行预估。
在一种可选的实施方式中,空间地址的转化方法还包括以下步骤:当磁盘地址大于当前预估条带的末地址时,将当前预估条带的编号加1得到下一预估条带;将下一预估条带作为当前预估条带,并返回根据当前预估条带的编号及属性信息,计算当前预估条带在存储磁盘中的第二偏移量的步骤。
由此可以在当前预估条带预估的不正确时,再次进行预估。
在一种可选的实施方式中,根据磁盘地址确定待存储信息在存储磁盘存储时的存储包包括:根据磁盘地址、及一个包的纵向长度确定待存储信息在存储磁盘存储时的存储包。
由此可以快速准确的确定待存储信息在存储磁盘存储时的存储包。
在一种可选的实施方式中,根据磁盘地址确定待存储信息在存储磁盘存储时的当前预估条带包括:根据磁盘地址、及一个包的纵向长度确定磁盘地址在存储包中的偏移量;根据一个包的纵向长度、一个包的条带数量计算条带平均长度;根据一个包的条带数量、存储包的编号得到存储包之前包含的条带数量;根据磁盘地址在存储包中的偏移量、及条带平均长度得到存储包中的条带数量;根据存储包之前包含的条带数量、及存储包中的条带数量得到当前预估条带的编号。
由此可以快速准确的确定待存储信息在存储磁盘存储时的当前预估条带。
在一种可选的实施方式中,空间地址的转化方法还包括以下步骤:当空间分布地址信息中不包含第一检验块在包中的空间分布信息时,计算第一检验块在包中的空间分布信息,并保存在存储结构中。
由此可以在存储结构中不包含第一检验块在包中的空间分布信息时,通过计算得到第一检验块在包中的空间分布信息,并保存在存储结构中。
第二方面,本发明实施例还提供了一种空间地址的转化装置,装置包括第一获取模块、当前预估条带确定模块、第二获取模块、判断模块、第三获取模块、第一偏移量确定模块、第二偏移量确定模块和空间地址转化模块,第一获取模块用于获取待存储信息在存储磁盘存储时的磁盘地址、及存储磁盘的属性信息;当前预估条带确定模块用于根据磁盘地址确定待存储信息在存储磁盘存储时的存储包、及待存储信息在存储磁盘存储时的当前预估条带;第二获取模块用于获取空间分布地址信息;判断模块用于判断空间分布地址信息中是否包含第一检验块在包中的空间分布信息;当空间分布地址信息中包含第一检验块在包中的空间分布信息时,第三获取模块用于获取第一检验块在包中的空间分布信息;第一偏移量确定模块用于根据第一检验块在包中的空间分布信息、属性信息及存储包计算存储包中的第一检验块在存储磁盘中的第一偏移量;第二偏移量确定模块用于根据当前预估条带的编号及属性信息,计算当前预估条带在存储磁盘中的第二偏移量;空间地址转化模块用于基于第一偏移量和第二偏移量确定待存储信息在存储磁盘上存储时的存储条带。
第三方面,本发明实施例还提供了一种计算机设备,包括存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的空间地址的转化方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的空间地址的转化方法。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为raid 6的结构示意图;
图2是根据本发明实施例的空间地址转化方法的流程图;
图3是根据本发明实施例的另一空间地址转化方法的流程图;
图4是根据本发明实施例的第一偏移量的确定方法的流程图;
图5是根据本发明实施例的第二偏移量的确定方法的流程图;
图6是根据本发明实施例的存储条带的确定方法的流程图;
图7是根据本发明实施例的再一空间地址转化方法的流程图;
图8是根据本发明实施例的当前预估条带的确定方法的流程图;
图9是根据本发明实施例的空间地址转化方法一示例的流程图;
图10是根据本发明实施例的空间地址转化装置的结构框图;
图11是本发明实施例的计算机设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为方便描述,图1示出了由5块磁盘构成的raid 6磁盘阵列,在图1中,每块磁盘的一个包(pack)均包括校验块和数据块,每块磁盘由多个pack组成。其中最后一个为数字的表示数据块,例如A1、B1、C1、A2、B2、A3、C3……表示数据块,Dp、Cp、Dq、Cq……表示校验块。其中,校验块又可以分为p校验块和q校验块,最后一个为p的表示p校验块,最后一个为q的表示q校验块。需要说明的是,在图1中,仅仅示出了每个块磁盘的部分结构,例如对于磁盘0,在Dp校验块的下面还包括Eq校验块;对于磁盘1,在Dq校验块的下面还包括E3数据块。在每块磁盘的一个pack中, p校验块和q校验块都仅有一个,数据块的个数等于阵列磁盘个数减去检验块个数。
表1示出了由4块磁盘构成的raid 6磁盘阵列。如表1所示,磁盘阵列由多个包(pack)组成,每个pack 由多个条带(stride)组成,pack 和stride 按照次序依次编号。每个stride 由块(strip)组成。在Raid 6中p和q 为校验块,2和3为数据块,p 校验块的编号为0,q 校验块的编号为1。由表1可知,每个pack 的空间分布架构均一致。每个分块均由element 组成,其中q校验块的大小比p校验块以及其他数据块块大1/16,多了一个element的大小,数据块以及p 校验块由16个element组成,q校验块由17个element组成。以数据块大小256kb=512sector为例,那么q 块大小为256×(1+1/16)=272kb=544sector。在表1中,为了绘制方便,将校验块q的大小表示为与数据块的大小相同。
表1 由4块磁盘构成的raid 6磁盘阵列
根据本发明实施例,提供了一种空间地址转化方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中提供了一种空间地址的转化方法,可用于上述的磁盘阵列的CPU,图2是根据本发明实施例的空间地址转化方法的流程图,如图2所示,该流程包括如下步骤:
步骤S201:获取待存储信息在存储磁盘存储时的磁盘地址、及存储磁盘的属性信息。
其中,磁盘地址可以用ComponentLba表示。
具体的,存储磁盘的属性信息包括:一个包的条带数量、一个包的纵向长度(PackComponentLength)、第一分块大小。
在Raid 6中,数据块2,数据块3和p校验块的分块大小保持一致,q校验块的大小与其他不同。将数据块2,数据块3和校验块p的分块大小称为第一分块大小,q校验块的分块大小称为第二分块大小。
步骤S202:根据磁盘地址确定待存储信息在存储磁盘存储时的存储包、及待存储信息在存储磁盘存储时的当前预估条带。
具体的,在步骤S102中,可以暂时不用考虑Raid 6中的q校验块与p校验块、2数据块、3数据块的大小不同这一条件。
需要说明的是,虽然Raid 6中的q校验块与p校验块、2数据块、3数据块的大小不同,但因为每个pack中的包含的q校验块数量是相同的,因此每个pack的纵向长度是相同的。因此即使在步骤S102中暂时不考虑Raid 6中的q校验块与p校验块、2数据块、3数据块的大小不同这一条件,确定的待存储信息在存储磁盘存储时的存储包也是正确的。
由于在计算当前预估条带时,暂时不用考虑Raid 6中的q校验块与p校验块、2数据块、3数据块的大小不同这一条件,所以当前预估条带是估计的,可能正确也可能不正确,在步骤S102之后需要验证当前预估条带是否正确。
步骤S203:获取空间分布地址信息,判断空间分布地址信息中是否包含q检验块在包中的空间分布信息。
需要说明的是,在本发明实施例中,q检验块为第一校验块。
由表1可知,对于同一磁盘,每个pack的空间分布情况均一致。例如,对于表1中的磁盘0而言,pack0、pack1、pack2和pack中的空间分布情况均为检验块p、数据块3、数据块2和检验块q。对于表1中的磁盘1而言,pack0、pack1、pack2和pack中的空间分布情况均为检验块p、检验块q、数据块3、数据块2。
由此,每个磁盘在首次接收到io命令确定存储条带的过程中,只需要计算一次q检验块在包中的空间分布信息,并存储在存储结构中,后续再有此磁盘的io命令时,只需要去存储结构中查找即可得到q 检验块的空间分布信息。由于q 检验块在包中的空间分布信息的计算过程相当繁琐,由此可以加速求解io 中的地址转化,能够提高存储系统的每秒存储系统能完成的io个数(iops)。
步骤S204:当空间分布地址信息中包含q检验块在包中的空间分布信息时,获取q检验块在包中的空间分布信息。
步骤S205:根据q检验块在包中的空间分布信息、属性信息及存储包计算存储包中的q检验块在存储磁盘中的第一偏移量。
步骤S206:根据当前预估条带的编号及属性信息,计算当前预估条带在存储磁盘中的第二偏移量。
步骤S207:基于第一偏移量和第二偏移量确定待存储信息在存储磁盘上存储时的存储条带。
本实施例提供的空间地址的转化方法,提供了一种与Raid 6相适应的空间地址转化算法,解决Raid 5中的空间地址转化算法对于Raid 6并不适用的问题;同时,由于对于同一磁盘,每个pack的空间分布情况均一致,每个磁盘在首次接收到io命令时,确定存储条带的过程中,只需要计算一次q 检验块在包中的空间分布信息,并存储在存储结构中,后续再有此磁盘的io命令,只需要去存储结构中查找即可得到q 检验块的空间分布信息。由于q检验块在包中的空间分布信息的计算过程相当繁琐,由此可以加速求解io 中的地址转化,能够提高存储系统的每秒存储系统能完成的io个数(iops)。
在本实施例中提供了一种空间地址的转化方法,可用于上述的磁盘阵列的CPU,图3是根据本发明实施例的另一空间地址转化方法的流程图,如图3所示,该流程包括如下步骤:
步骤S301:获取待存储信息在存储磁盘存储时的磁盘地址、及存储磁盘的属性信息。
步骤S302:根据磁盘地址确定待存储信息在存储磁盘存储时的存储包、及待存储信息在存储磁盘存储时的当前预估条带。
步骤S303:获取空间分布地址信息。
步骤S304:判断空间分布地址信息中是否包含q检验块在包中的空间分布信息。当空间分布地址信息中包含q检验块在包中的空间分布信息时,转入步骤S305;当空间分布地址信息中不包含q检验块在包中的空间分布信息时,转入步骤S306。
步骤S305:当空间分布地址信息中包含q检验块在包中的空间分布信息时,获取q检验块在包中的空间分布信息;并转入步骤S307。
步骤S306:计算q检验块在包中的空间分布信息,并保存,并转入步骤S307。
具体的,计算q检验块在包中的空间分布信息可以采用相关技术中的方案,例如根据如下公式计算得到q校验块在包中的行数Q_Index。
Q_Index=[ComponentCount-(ComponentIndex+1)]/2
Q_Index+=[{ComponentCount-(ComponentIndex+1)}%2]×[(ComponentCount+1)/2]。
其中,ComponentCount表示磁盘阵列的磁盘个数。
进一步的,还可以q校验块在包中的行数Q_Index计算得到q校验块在包中的偏移量。
步骤S307:根据q检验块在包中的空间分布信息、属性信息及存储包计算存储包中的q检验块在存储磁盘中的第一偏移量。
作为一些可选的实施方式,如图4所示步骤S307包括:
步骤S3071:利用存储包的编号、及一个包的纵向长度得到存储包的偏移量。
具体的,利用存储包的编号乘以一个包的纵向长度得到存储包的偏移量。
步骤S3072:利用q检验块在包中的行数、及第一分块大小得到q检验块在存储包的偏移量。
具体的,利用q检验块在包中的行数乘以及第一分块大小得到q检验块在存储包的偏移量。
步骤S3073:将存储包的偏移量与q检验块在存储包的偏移量相加得到存储包中的q检验块在存储磁盘中的第一偏移量。
其中,步骤S307可以采用以下公式表示:
Q_offset= Q_Index×stripsize+ Pack× PackComponentLength
其中,Q_offset表示存储包中的q检验块在存储磁盘中的第一偏移量,Q_Index表示q检验块在包中的行数,stripsize表示第一分块大小,Pack表示存储包的编号,PackComponentLength表示一个包的纵向长度。
步骤S308:根据当前预估条带的编号及属性信息,计算当前预估条带在存储磁盘中的第二偏移量。
作为一些可选的实施方式,如图5所示,步骤S308包括:
步骤S3081:利用当前预估条带的编号、一个包的条带数量及一个包的纵向长度得到存储包的偏移量。
具体的,利用当前预估条带的编号、一个包的条带数量及一个包的纵向长度得到存储包的偏移量为:当前预估条带的编号除以一个包的条带数量再乘以一个包的纵向长度得到存储包的偏移量。
步骤S3082:根据当前预估条带的编号、一个包的条带数量计算当前预估条带在存储包中的行数。
其中,根据当前预估条带的编号、一个包的条带数量计算当前预估条带在存储包中的行数包括:利用当前预估条带的编号除以一个包的条带数量取余,得到当前预估条带在存储包中的行数。
具体的,Packoffset=Stride%StridePerPack
其中,Packoffset表示当前预估条带在存储包中的行数,Stride表示当前预估条带的编号,StridePerPack表示一个包的条带数量。
步骤S3083:利用当前预估条带在存储包中的行数、及第一分块大小得到当前预估条带在存储包的偏移量。
具体的,利用当前预估条带在存储包中的行数、及第一分块大小得到当前预估条带在存储包的偏移量包括:将当前预估条带在存储包中的行数与及第一分块大小相乘得到当前预估条带在存储包的偏移量。
步骤S3084:将存储包的偏移量与当前预估条带在存储包的偏移量相加得到当前预估条带在存储磁盘中的第二偏移量。
其中,步骤S308可以采用如下公式计算:
StripLba1=(Stride/StridePerPack×PackComponentLength+PackOffset×StripLength
其中,StripLba1表示第二偏移量,Stride表示当前预估条带的编号,StridePerPacK表示一个包的条带数量,PackComponentLength表示一个包的纵向长度,PackOffset表示当前预估条带在存储包中的行数,StripLength表示第一分块大小。
步骤S309:基于第一偏移量和第二偏移量确定待存储信息在存储磁盘上存储时的存储条带。
在一些可选的实施方式中,如图6所示,步骤S309包括:
步骤S3091:根据第一偏移量和第二偏移量确定当前预估条带与存储包中的q检验块的相对位置。
步骤S3092:根据相对位置确定当前预估条带的首地址、及当前预估条带的末地址。
步骤S3093:当磁盘地址位于当前预估条带的首地址与当前预估条带的末地址之间时,将当前预估条带作为确定的存储条带。
具体的,步骤S3091根据第一偏移量和第二偏移量确定当前预估条带与存储包中的q检验块的相对位置包括:当第一偏移量大于第二偏移量时,判定存储包中的q检验块在当前预估条带的下方;当第一偏移量小于第二偏移量时,判定存储包中的q检验块在当前预估条带的上方。
具体的,步骤S3092根据相对位置确定当前预估条带的首地址、及当前预估条带的末地址包括:当存储包中的q检验块在当前预估条带的下方时,将第二偏移量作为当前预估条带的首地址;并根据当前预估条带的首地址确定当前预估条带的末地址;当存储包中的q检验块在当前预估条带的上方时,利用第二偏移量加上预设的第一阈值,得到当前预估条带的首地址;并根据当前预估条带的首地址确定当前预估条带的末地址。
具体的,根据当前预估条带的首地址确定当前预估条带的末地址包括:获取第一分块大小;利用当前预估条带的首地址加上第一分块大小得到当前预估条带的末地址。
示例的,当前预估条带的末地址可以通过下公式得到:
stripLastLba= StripLba+stripsize-1
其中,stripLastLba表示预估条带的末地址,StripLba表示预估条带的首地址,StripLength表示第一分块大小。
具体的,所述第一阈值根据所述第一校验块的第二分块大小与所述第一分块大小的差值确定。
如上,在raid 6中q校验块的大小比p校验块以及其他数据块块大1/16,多了一个element 的大小,数据块以及p 校验块由16个element组成,q校验块由17个element组成。q校验块的第二分块大小与第一分块大小的差值为第一分块大小的1/16。
进一步的,步骤S309还包括:当磁盘地址小于当前预估条带的首地址时,将当前预估条带的编号减1得到下一预估条带;将下一预估条带作为当前预估条带,并返回根据当前预估条带的编号及属性信息,计算当前预估条带在存储磁盘中的第二偏移量的步骤。
进一步的,步骤S309还包括:当磁盘地址大于当前预估条带的末地址时,将当前预估条带的编号加1得到下一预估条带;将下一预估条带作为当前预估条带,并返回根据当前预估条带的编号及属性信息,计算当前预估条带在存储磁盘中的第二偏移量的步骤。
本实施例提供了一种与Raid 6相适应的空间地址转化算法,解决Raid 5中的空间地址转化算法对于Raid 6并不适用的问题;同时,由于对于同一磁盘,每个pack的空间分布情况均一致,每个磁盘在首次接收到io命令时,确定存储条带的过程中,只需要计算一次q检验块在包中的空间分布信息,并存储在存储结构中,后续再有此磁盘的io命令,只需要去存储结构中查找即可得到q 检验块的空间分布信息。由于q 检验块在包中的空间分布信息的计算过程相当繁琐,由此可以加速求解io 中的地址转化,达到提升存储系统的iops。
在本实施例中提供了一种空间地址的转化方法,可用于上述的磁盘阵列的CPU,图7是根据本发明实施例的再一空间地址转化方法的流程图,如图7所示,该流程包括如下步骤:
步骤S701:获取待存储信息在存储磁盘存储时的磁盘地址、及存储磁盘的属性信息。
步骤S702:根据磁盘地址确定待存储信息在存储磁盘存储时的存储包、及待存储信息在存储磁盘存储时的当前预估条带。
在一些可选的实施方式中,根据磁盘地址确定待存储信息在存储磁盘存储时的存储包包括:根据磁盘地址、及一个包的纵向长度确定待存储信息在存储磁盘存储时的存储包。
具体的,利用磁盘地址除以 一个包的纵向长度得到待存储信息在存储磁盘存储时的存储包。
即,Pack= componentLba /PackComponentLength
其中,Pack表示待存储信息在存储磁盘存储时的存储包,componentLba表示磁盘地址,PackComponentLength表示一个包的纵向长度。
在一些可选的实施方式中,如图8所示,根据磁盘地址确定待存储信息在存储磁盘存储时的当前预估条带包括:
步骤S7021:根据磁盘地址、及一个包的纵向长度确定磁盘地址在存储包中的偏移量。
步骤S7022:根据一个包的纵向长度、一个包的条带数量计算条带平均长度。
步骤S7023:根据一个包的条带数量、存储包的编号得到存储包之前包含的条带数量。
步骤S7024:根据磁盘地址在存储包中的偏移量、及条带平均长度得到存储包中的条带数量。
步骤S7025:根据存储包之前包含的条带数量、及存储包中的条带数量得到当前预估条带的编号。
具体的,根据磁盘地址、及一个包的纵向长度确定磁盘地址在存储包中的偏移量包括:利用磁盘地址除以一个包的纵向长度取余得到磁盘地址在存储包中的偏移量。
即,PackLbaOffset = componentLba%PackComponentLength
其中,PackLbaOffset表示磁盘地址在存储包中的偏移量,componentLba表示磁盘地址,PackComponentLength表示一个包的纵向长度。
具体的,根据一个包的纵向长度、一个包的条带数量计算条带平均长度包括:利用一个包的纵向长度除以一个包的条带数量得到条带平均长度。
即AverageLength=PackComponentLength/StridePerPack
其中AverageLength表示条带平均长度,PackComponentLength表示一个包的纵向长度,StridePerPack表示一个包的条带数量。
具体的,根据一个包的条带数量、存储包的编号得到存储包之前包含的条带数量包括:利用一个包的条带数量乘以存储包的编号得到存储包之前包含的条带数量。
具体的,根据磁盘地址在存储包中的偏移量、及条带平均长度得到存储包中的条带数量包括:利用磁盘地址在存储包中的偏移量除以条带平均长度得到存储包中的条带数量。
具体的,根据一个包的条带数量、存储包的编号得到存储包之前包含的条带数量;根据磁盘地址在存储包中的偏移量、及条带平均长度得到存储包中的条带数量;根据存储包之前包含的条带数量、及存储包中的条带数量得到当前预估条带的编号,可以采用以下公式表示:
Stride=(StridePerPack×Pack)+(PackLbaOffsett/AverageLength)
其中,Stride表示当前预估条带的编号,StridePerPack表示一个包的条带数量,Pack表示存储包的编号,PackLbaOffset表示磁盘地址在存储包中的偏移量,AverageLength表示条带平均长度。
步骤S703:获取预设的存储结构中存储的空间分布地址信息。
示例的,存储结构的类型名为ComponentInfo。
Typedef struct
{
…
IntComponentindex;
IntQ_offsetlba_inpack;
Bool Exist;
…
}ComponentInfo;
其中,Componentindex存储磁盘的编号,Q_offsetlba_inpack为q检验块在包中的空间分布信息(以sector单位),Exist为bool类型变量,其值为true表示磁盘编号为componentindex的磁盘保存了q检验块在包中的空间分布信息,相反,false为未保存。
磁盘阵列由大量的pack 组成,磁盘阵列的宽度在4到16的范围内 ,当下发io,给定磁盘总数n,本发明计算最多n次q分块的空间分布信息,就可以免除后续所有io的求解q分块地址的繁琐步骤。将所有的磁盘的信息都存在一个数组里,每个磁盘的q分块信息对应数组的结构成员。
步骤S704:判断空间分布地址信息中是否包含q检验块在包中的空间分布信息。当空间分布地址信息中包含q检验块在包中的空间分布信息时,转入步骤S705;当空间分布地址信息中不包含q检验块在包中的空间分布信息时,转入步骤S706。
在一些可选的实施方式中,上述步骤S704包括:
步骤S7041:获取存储磁盘的编号。
步骤S7042:在空间分布地址信息中获取与编号相对应的标识信息。
具体的,标识信息用于表示q检验块在包中的空间分布信息的存储情况。示例的,可以为上述的Exist或false。
步骤S7043:根据标识信息确定空间分布地址信息中是否包含q检验块在包中的空间分布信息。
步骤S705:当空间分布地址信息中包含q检验块在包中的空间分布信息时,获取存储结构中存储的q检验块在包中的空间分布信息;并转入步骤S707。
步骤S706:计算q检验块在包中的空间分布信息,保存在存储结构中,并转入步骤S707。
步骤S707:根据q检验块在包中的空间分布信息、属性信息及存储包计算存储包中的q检验块在存储磁盘中的第一偏移量。
步骤S708:根据当前预估条带的编号及属性信息,计算当前预估条带在存储磁盘中的第二偏移量。
步骤S709:基于第一偏移量和第二偏移量确定待存储信息在存储磁盘上存储时的存储条带。
本实施例提供的空间地址的转化方法,提供了一种与Raid 6相适应的空间地址转化算法,解决Raid 5中的空间地址转化算法对于Raid 6并不适用的问题;同时,由于对于同一磁盘,每个pack的空间分布情况均一致,每个磁盘在首次接收到io命令时,确定存储条带的过程中,只需要计算一次q 检验块在包中的空间分布信息,并存储在存储结构中,后续再有此磁盘的io命令,只需要去存储结构中查找即可得到q 检验块的空间分布信息。由于q检验块在包中的空间分布信息的计算过程相当繁琐,由此可以加速求解io 中的地址转化,达到提升存储系统的iops;进一步的,当在磁盘阵列时包括多个磁盘时,也能准确的得到每个磁盘中q检验块在包中的空间分布信息。
为了把本发明实施例的空间地址的转化方法说明的更加清楚,给出一个具体的示例。在内存条中,存有磁盘信息的结构体,结构体的类型名为ComponentInfo。
如图9所示,空间地址的转化方法包括以下步骤:
第一步:
在初始化时,componentInfo Geom[n] 分配数组名为 Geom的n个成员为componentInfo结构类型的内存:为n ×componentInfo结构体大小。依据数组下标, Geom[0]缓存磁盘0的信息, Geom[i]存储磁盘i的信息(0=<i<=n-1),其中每个磁盘对应的结构体中成员exist 初始化为false,表示还没缓存磁盘的q分块信息。
第二步:
求该componentLba所在pack上面共有多少完整的pack。
Pack= componentLba /PackComponentLength
其中,Pack表示待存储信息在存储磁盘存储时的存储包,componentLba表示磁盘地址,PackComponentLength表示一个包的纵向长度。
示例的,假设磁盘地址为280,一个包的纵向长度为210,Pack=280/210=1.33,1.33取整为1,即待存储信息在存储磁盘存储时的存储包为包1。
第三步:
求该componentLba在包中的偏移量。
PackLbaOffset =componentLba % PackComponentLength
其中,PackLbaOffset表示磁盘地址在存储包中的偏移量,componentLba表示磁盘地址,PackComponentLength表示一个包的纵向长度。
示例的,假设磁盘地址为280,一个包的纵向长度为210,Pack=280%210=70,即磁盘地址在存储包中的偏移量为70。
第四步:
计算包中的条带平均长度:AverageLength=PackComponentLength/StridePerPack
其中,AverageLength表示条带平均长度,PackComponentLength表示一个包的纵向长度,StridePerPack表示一个包的条带数量。
示例的,表1中,条带平均长度=210/4=55。
第五步:
猜测componentLba的预估条带编号:
Stride=(StridePerPack×Pack)+(PackLBAOffset/AverageLength)
其中,Stride表示当前预估条带的编号,StridePerPack表示一个包的条带数量,Pack表示存储包的编号,PackLbaOffset表示磁盘地址在存储包中的偏移量,AverageLength表示条带平均长度。
示例的,Stride=(4×1)+(70/55)=5,即当前预估条带的编号为5。
其中,存储包的编号为包1,在包1之前包含的条带数量为4×1=4,即存储包之前包含的条带数量为4;利用磁盘地址在存储包中的偏移量70除以条带平均长度55得到存储包中的条带数量为1.27,取整后为1,即存储包中的条带数量为1。
第六步:
针对io的componentindex去数组Geom[componentindex]对应的结构查找成员exist,判断若为true,表示磁盘缓存结构存储了q分块的空间分布信息,则执行第八步,否则执行第七步。
第七步:
求得该pack中所在磁盘 ComponentIndex 中q校验块在pack的偏移行数Q_Index,以及q校验块在pack的偏移量Q_offsetlba_inpack。
Q_Index=[ComponentCount-(ComponentIndex+1)]/2
Q_Index+=[{ComponentCount-(ComponentIndex+1)}%2]×[(ComponentCount+1)/2]
Q_offsetlba_inpack = Q_Index×stripsize。
其中,Q_offsetlba_inpack表示q校验块在pack的偏移量,stripsize表示第一分块大小。
将Q_offsetlba_inpack存储在磁盘编号ComponentIndex 对应的结构体信息中。
第八步:
去磁盘编号所在结构中提取 Q_offsetlba_inpack,然后执行第九步。
第九步:
求componentlba 在所在pack 的指定磁盘上,q分块的磁盘地址Q_lba
Q_lba = Q_offsetlba_inpack+Pack× PackComponentLength (sector单位),
其中,Q_lba表示存储包中的q检验块在存储磁盘中的第一偏移量,Q_offsetlba_inpack表示q校验块在pack的偏移量,Pack表示存储包的编号, PackComponentLength表示一个包的纵向长度。
第十步:求该Stride分块首末地址,验证componentlba是否包含在Stride的分块首地址末地址中,验证猜测的Stride是否正确
Packoffset=Stride%StridePerPack
其中,Packoffset表示当前预估条带在存储包中的行数,Stride表示当前预估条带的编号,StridePerPack表示一个包的条带数量。
示例的,如上,Packoffset=5%4=1,即当前预估条带在包1中的行数为第1行。
StripLba1=(Stride/StridePerPack×PackComponentLength+PackOffset×stripsize
其中,StripLba1表示第二偏移量,Stride表示当前预估条带的编号,StridePerPacK表示一个包的条带数量,PackComponentLength表示一个包的纵向长度,PackOffset表示当前预估条带在存储包中的行数,StripLength表示第一分块大小。
分块首地址:
StripLba = StripLba1+StripOffsetFromStride
其中,StripLba表示预估条带的首地址,StripLba1表示第二偏移量,StripOffsetFromStride表示第一阈值,其为第一分块大小的1/16。
具体的,将 Q_lba与StripLba1 比较,若 Q_lba>StripLba1则表示q分块在componentlba 所在分块的下方, StripOffsetFromStride值为0,否则表示q在分块上面,存在偏移, StripOffsetFromStride 值为stripsize/16的大小。
分块末地址:
stripLastLba= StripLba+stripsize-1
其中,stripLastLba表示预估条带的末地址,StripLba表示预估条带的首地址,StripLength表示第一分块大小。
第十一步:开始判断componentLba与StripLba, stripLastLba 关系并进行调整修改
如果(componentLba<StripLBA),证明Stride猜大了,将第五步得到的条带号减去1即Stride=stride-1;如果(componentlba<StripLastLBA),证明Stride猜小了,将第五步得到的条带号加上1。
第十二步返回stride
第十三步:结束计算流程。
在本实施例中还提供了一种空间地址的转化装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本实施例提供一种空间地址的转化装置,如图10所示,包括:
第一获取模块1001,用于获取待存储信息在存储磁盘存储时的磁盘地址、及存储磁盘的属性信息。
当前预估条带确定模块1002,用于根据磁盘地址确定待存储信息在存储磁盘存储时的存储包、及待存储信息在存储磁盘存储时的当前预估条带。
第二获取模块1003,用于获取空间分布地址信息。
判断模块1004,用于判断空间分布地址信息中是否包含第一检验块在包中的空间分布信息。
第三获取模块1005,当空间分布地址信息中包含第一检验块在包中的空间分布信息时,用于获取第一检验块在包中的空间分布信息。
第一偏移量确定模块1006,用于根据第一检验块在包中的空间分布信息、属性信息及存储包计算存储包中的第一检验块在存储磁盘中的第一偏移量。
第二偏移量确定模块1007,用于根据当前预估条带的编号及属性信息,计算当前预估条带在存储磁盘中的第二偏移量;
空间地址转化模块1008,用于基于第一偏移量和第二偏移量确定待存储信息在存储磁盘上存储时的存储条带。
在一些可选的实施方式中,判断模块1004包括标识信息获取单元和判断单元。标识信息获取单元,用于获取空间分布地址信息中的标识信息;判断单元用于根据标识信息确定空间分布地址信息中是否包含第一检验块在包中的空间分布信息。
在一些可选的实施方式中,当存储结构用于存储多个磁盘的存储信息时,标识信息获取单元用于获取存储磁盘的编号;在空间分布地址信息中获取与编号相对应的标识信息。
在一些可选的实施方式中,存储磁盘的属性信息包括:一个包的条带数量、一个包的纵向长度、第一分块大小。
在一些可选的实施方式中,第一检验块在包中的空间分布信息为第一检验块在包中的行数。
在一些可选的实施方式中,第一偏移量确定模块1006具体用于:利用存储包的编号、及一个包的纵向长度得到存储包的偏移量;利用第一检验块在包中的行数、及第一分块大小得到第一检验块在存储包的偏移量;将存储包的偏移量与第一检验块在存储包的偏移量相加得到存储包中的第一检验块在存储磁盘中的第一偏移量。
在一些可选的实施方式中,所述第一检验块在包中的空间分布信息为所述第一检验块在包中的偏移量。
在一些可选的实施方式中,第一偏移量确定模块1006具体用于:利用所述存储包的编号、及所述一个包的纵向长度得到所述存储包的偏移量;将所述存储包的偏移量与所述第一检验块在包中的偏移量相加得到所述存储包中的第一检验块在所述存储磁盘中的第一偏移量。
在一些可选的实施方式中,第二偏移量确定模块1007具体用于:利用当前预估条带的编号、一个包的条带数量及一个包的纵向长度得到存储包的偏移量;根据当前预估条带的编号、一个包的条带数量计算当前预估条带在存储包中的行数;利用当前预估条带在存储包中的行数、及第一分块大小得到当前预估条带在存储包的偏移量;将存储包的偏移量与当前预估条带在存储包的偏移量相加得到当前预估条带在存储磁盘中的第二偏移量。
在一些可选的实施方式中,空间地址转化模块1008包括相对位置确定单元、首地址确定单元、末地址确定单元、空间地址转化单元。相对位置确定单元用于根据第一偏移量和第二偏移量确定当前预估条带与存储包中的第一检验块的相对位置;首地址确定单元用于根据相对位置确定当前预估条带的首地址;末地址确定单元用于根据当前预估条带的首地址确定当前预估条带的末地址;空间地址转化单元用于当磁盘地址位于当前预估条带的首地址与当前预估条带的末地址之间时,将当前预估条带作为确定的存储条带。
在一些可选的实施方式中,相对位置确定单元用于:当第一偏移量大于第二偏移量时,判定存储包中的第一检验块在当前预估条带的下方;当第一偏移量小于第二偏移量时,判定存储包中的第一检验块在当前预估条带的上方。
在一些可选的实施方式中,首地址确定单元用于:当存储包中的第一检验块在当前预估条带的下方时,将第二偏移量作为当前预估条带的首地址;当存储包中的第一检验块在当前预估条带的上方时,利用第二偏移量加上预设的第一阈值 ,得到当前预估条带的首地址。
在一些可选的实施方式中,首地址确定单元具体用于获取第一分块大小;利用所述当前预估条带的首地址加上所述第一分块大小得到所述当前预估条带的末地址。
在一些可选的实施方式中,所述第一阈值根据所述第一校验块的第二分块大小与所述第一分块大小的差值确定。
在一些可选的实施方式中,空间地址转化单元还用于:当磁盘地址小于当前预估条带的首地址时,将当前预估条带的编号减1得到下一预估条带;将下一预估条带作为当前预估条带,并返回根据当前预估条带的编号及属性信息,计算当前预估条带在存储磁盘中的第二偏移量的步骤。
在一些可选的实施方式中,空间地址转化单元还用于:当磁盘地址大于当前预估条带的末地址时,将当前预估条带的编号加1得到下一预估条带;将下一预估条带作为当前预估条带,并返回根据当前预估条带的编号及属性信息,计算当前预估条带在存储磁盘中的第二偏移量的步骤。
在一些可选的实施方式中,当前预估条带确定模块1002包括存储包确定单元和当前预估条带确定单元。
存储包确定单元用于:根据磁盘地址、及一个包的纵向长度确定待存储信息在存储磁盘存储时的存储包。
当前预估条带确定单元用于:根据磁盘地址、及一个包的纵向长度确定磁盘地址在存储包中的偏移量;根据一个包的纵向长度、一个包的条带数量计算条带平均长度;根据一个包的条带数量、存储包的编号得到存储包之前包含的条带数量;根据磁盘地址在存储包中的偏移量、及条带平均长度得到存储包中的条带数量;根据存储包之前包含的条带数量、及存储包中的条带数量得到当前预估条带的编号。
在一些可选的实施方式中,空间地址的转化装置还包括空间分布地址信息计算单元。当空间分布地址信息中不包含第一检验块在包中的空间分布信息时,空间分布地址信息计算单元用于计算第一检验块在包中的空间分布信息,并保存在存储结构中。
本实施例中的空间地址转化装置是以功能单元的形式来呈现,这里的单元是指ASIC电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
上述各个模块和单元的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
本发明实施例还提供一种计算机设备,具有上述图10所示的空间地址转化装置。
请参阅图11,图11是本发明可选实施例提供的一种计算机设备的结构示意图,如图11所示,该计算机设备包括:一个或多个处理器10、存储器20,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相通信连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在计算机设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在一些可选的实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个计算机设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图11中以一个处理器10为例。
处理器10可以是中央处理器,网络处理器或其组合。其中,处理器10还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路,可编程逻辑器件或其组合。上述可编程逻辑器件可以是复杂可编程逻辑器件,现场可编程逻辑门阵列,通用阵列逻辑或其任意组合。
其中,存储器20存储有可由至少一个处理器10执行的指令,以使至少一个处理器10执行实现上述实施例示出的方法。
存储器20可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据一种小程序落地页的展现的计算机设备的使用所创建的数据等。此外,存储器20可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些可选的实施方式中,存储器20可选包括相对于处理器10远程设置的存储器,这些远程存储器可以通过网络连接至该计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
存储器20可以包括易失性存储器,例如,随机存取存储器;存储器也可以包括非易失性存储器,例如,快闪存储器,硬盘或固态硬盘;存储器20还可以包括上述种类的存储器的组合。
该计算机设备还包括通信接口30,用于该计算机设备与其他设备或通信网络通信。
本发明实施例还提供了一种计算机可读存储介质,上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可记录在存储介质,或者被实现通过网络下载的原始存储在远程存储介质或非暂时机器可读存储介质中并将被存储在本地存储介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件的存储介质上的这样的软件处理。其中,存储介质可为磁碟、光盘、只读存储记忆体、随机存储记忆体、快闪存储器、硬盘或固态硬盘等;进一步地,存储介质还可以包括上述种类的存储器的组合。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件,当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现上述实施例示出的方法。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (19)
1.一种空间地址的转化方法,其特征在于,所述方法包括:
获取待存储信息在存储磁盘存储时的磁盘地址、及所述存储磁盘的属性信息;
根据所述磁盘地址确定所述待存储信息在所述存储磁盘存储时的存储包、及所述待存储信息在所述存储磁盘存储时的当前预估条带;
获取空间分布地址信息,判断所述空间分布地址信息中是否包含第一检验块在包中的空间分布信息;
当所述空间分布地址信息中包含所述第一检验块在包中的空间分布信息时,获取所述第一检验块在包中的空间分布信息;
根据所述第一检验块在包中的空间分布信息、所述属性信息及所述存储包计算所述存储包中的第一检验块在所述存储磁盘中的第一偏移量;
根据所述当前预估条带的编号及所述属性信息,计算所述当前预估条带在所述存储磁盘中的第二偏移量;
基于所述第一偏移量和所述第二偏移量确定所述待存储信息在所述存储磁盘上存储时的存储条带;
所述根据所述磁盘地址确定所述待存储信息在所述存储磁盘存储时的当前预估条带包括:
根据所述磁盘地址、及所述一个包的纵向长度确定所述磁盘地址在所述存储包中的偏移量;
根据所述一个包的纵向长度、所述一个包的条带数量计算条带平均长度;
根据所述一个包的条带数量、所述存储包的编号得到所述存储包之前包含的条带数量;
根据所述磁盘地址在所述存储包中的偏移量、及所述条带平均长度得到所述存储包中的条带数量;
根据所述存储包之前包含的条带数量、及所述存储包中的条带数量得到所述当前预估条带的编号。
2.根据权利要求1所述的方法,其特征在于,所述判断所述空间分布地址信息中是否包含所述第一检验块在包中的空间分布信息包括:
获取所述空间分布地址信息中的标识信息;
根据所述标识信息确定所述空间分布地址信息中是否包含所述第一检验块在包中的空间分布信息。
3.根据权利要求2所述的方法,其特征在于,当存储结构用于存储多个磁盘的存储信息时,所述获取所述空间分布地址信息中的标识信息包括:
获取所述存储磁盘的编号;
在所述空间分布地址信息中获取与所述编号相对应的标识信息。
4.根据权利要求1所述的方法,其特征在于,所述存储磁盘的属性信息包括:一个包的条带数量、一个包的纵向长度、第一分块大小。
5.根据权利要求4所述的方法,其特征在于,所述第一检验块在包中的空间分布信息为所述第一检验块在包中的行数,所述根据所述第一检验块在包中的空间分布信息、所述属性信息及所述存储包计算所述存储包中的第一检验块在所述存储磁盘中的第一偏移量包括:
利用所述存储包的编号、及所述一个包的纵向长度得到所述存储包的偏移量;
利用所述第一检验块在包中的行数、及所述第一分块大小得到所述第一检验块在所述存储包的偏移量;
将所述存储包的偏移量与所述第一检验块在所述存储包的偏移量相加得到所述存储包中的第一检验块在所述存储磁盘中的第一偏移量。
6.根据权利要求4所述的方法,其特征在于,当所述第一检验块在包中的空间分布信息为所述第一检验块在包中的偏移量时,所述根据所述第一检验块在包中的空间分布信息、所述属性信息及所述存储包计算所述存储包中的第一检验块在所述存储磁盘中的第一偏移量包括:
利用所述存储包的编号、及所述一个包的纵向长度得到所述存储包的偏移量;
将所述存储包的偏移量与所述第一检验块在包中的偏移量相加得到所述存储包中的第一检验块在所述存储磁盘中的第一偏移量。
7.根据权利要求4所述的方法,其特征在于,所述根据所述当前预估条带的编号及所述属性信息,计算所述当前预估条带在所述存储磁盘中的第二偏移量包括:
利用所述当前预估条带的编号、所述一个包的条带数量及所述一个包的纵向长度得到所述存储包的偏移量;
根据所述当前预估条带的编号、所述一个包的条带数量计算所述当前预估条带在所述存储包中的行数;
利用所述当前预估条带在所述存储包中的行数、及所述第一分块大小得到所述当前预估条带在所述存储包的偏移量;
将所述存储包的偏移量与所述当前预估条带在所述存储包的偏移量相加得到所述当前预估条带在所述存储磁盘中的第二偏移量。
8.根据权利要求1~7任一项所述的方法,其特征在于,所述基于所述第一偏移量和所述第二偏移量确定所述待存储信息在所述存储磁盘上存储时的存储条带包括:
根据所述第一偏移量和所述第二偏移量确定所述当前预估条带与所述存储包中的第一检验块的相对位置;
根据所述相对位置确定所述当前预估条带的首地址、及所述当前预估条带的末地址;
当所述磁盘地址位于所述当前预估条带的首地址与所述当前预估条带的末地址之间时,将所述当前预估条带作为确定的存储条带。
9.根据权利要求8所述的方法,其特征在于,所述根据所述第一偏移量和所述第二偏移量确定所述当前预估条带与所述存储包中的第一检验块的相对位置包括:
当所述第一偏移量大于所述第二偏移量时,判定所述存储包中的第一检验块在所述当前预估条带的下方;
当所述第一偏移量小于所述第二偏移量时,判定所述存储包中的第一检验块在所述当前预估条带的上方。
10.根据权利要求9所述的方法,其特征在于,所述根据所述相对位置确定所述当前预估条带的首地址、及所述当前预估条带的末地址包括:
当所述存储包中的第一检验块在所述当前预估条带的下方时,将所述第二偏移量作为所述当前预估条带的首地址;并根据所述当前预估条带的首地址确定所述当前预估条带的末地址;
当所述存储包中的第一检验块在所述当前预估条带的上方时,利用所述第二偏移量加上预设的第一阈值,得到所述当前预估条带的首地址;并根据所述当前预估条带的首地址确定所述当前预估条带的末地址。
11.根据权利要求10所述的方法,其特征在于,所述根据所述当前预估条带的首地址确定所述当前预估条带的末地址包括:
获取第一分块大小;
利用所述当前预估条带的首地址加上所述第一分块大小得到所述当前预估条带的末地址。
12.根据权利要求10所述的方法,其特征在于,所述第一阈值根据第一校验块的第二分块大小与所述第一分块大小的差值确定。
13.根据权利要求8所述的方法,其特征在于,还包括:
当所述磁盘地址小于所述当前预估条带的首地址时,将所述当前预估条带的编号减1得到下一预估条带;
将所述下一预估条带作为所述当前预估条带,并返回根据所述当前预估条带的编号及所述属性信息,计算所述当前预估条带在所述存储磁盘中的第二偏移量的步骤。
14.根据权利要求8所述的方法,其特征在于,还包括:
当所述磁盘地址大于所述当前预估条带的末地址时,将所述当前预估条带的编号加1得到下一预估条带;
将所述下一预估条带作为所述当前预估条带,并返回根据所述当前预估条带的编号及所述属性信息,计算所述当前预估条带在所述存储磁盘中的第二偏移量的步骤。
15.根据权利要求4所述的方法,其特征在于,所述根据所述磁盘地址确定所述待存储信息在所述存储磁盘存储时的存储包包括:
根据所述磁盘地址、及所述一个包的纵向长度确定所述待存储信息在所述存储磁盘存储时的存储包。
16.根据权利要求1所述的方法,其特征在于,还包括:
当所述空间分布地址信息中不包含所述第一检验块在包中的空间分布信息时,计算所述第一检验块在包中的空间分布信息并保存。
17.一种空间地址的转化装置,其特征在于,所述装置包括:
第一获取模块,用于获取待存储信息在存储磁盘存储时的磁盘地址、及所述存储磁盘的属性信息;
当前预估条带确定模块,用于根据所述磁盘地址确定所述待存储信息在所述存储磁盘存储时的存储包、及所述待存储信息在所述存储磁盘存储时的当前预估条带;
第二获取模块,用于获取空间分布地址信息;
判断模块,用于判断所述空间分布地址信息中是否包含第一检验块在包中的空间分布信息;
第三获取模块,当所述空间分布地址信息中包含所述第一检验块在包中的空间分布信息时,用于获取所述第一检验块在包中的空间分布信息;
第一偏移量确定模块,用于根据所述第一检验块在包中的空间分布信息、所述属性信息及所述存储包计算所述存储包中的第一检验块在所述存储磁盘中的第一偏移量;
第二偏移量确定模块,用于根据所述当前预估条带的编号及所述属性信息,计算所述当前预估条带在所述存储磁盘中的第二偏移量;
空间地址转化模块,用于基于所述第一偏移量和所述第二偏移量确定所述待存储信息在所述存储磁盘上存储时的存储条带;
所述当前预估条带确定模块包括存储包确定单元和当前预估条带确定单元,所述当前预估条带确定单元用于:
根据所述磁盘地址、及所述一个包的纵向长度确定所述磁盘地址在所述存储包中的偏移量;
根据所述一个包的纵向长度、所述一个包的条带数量计算条带平均长度;
根据所述一个包的条带数量、所述存储包的编号得到所述存储包之前包含的条带数量;
根据所述磁盘地址在所述存储包中的偏移量、及所述条带平均长度得到所述存储包中的条带数量;
根据所述存储包之前包含的条带数量、及所述存储包中的条带数量得到所述当前预估条带的编号。
18.一种计算机设备,其特征在于,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行权利要求1至16中任一项所述的空间地址的转化方法。
19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令,所述计算机指令用于使计算机执行权利要求1至16中任一项所述的空间地址的转化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311381525.XA CN117112455B (zh) | 2023-10-24 | 2023-10-24 | 一种空间地址的转化方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311381525.XA CN117112455B (zh) | 2023-10-24 | 2023-10-24 | 一种空间地址的转化方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117112455A CN117112455A (zh) | 2023-11-24 |
CN117112455B true CN117112455B (zh) | 2024-02-06 |
Family
ID=88806021
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311381525.XA Active CN117112455B (zh) | 2023-10-24 | 2023-10-24 | 一种空间地址的转化方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117112455B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101556802A (zh) * | 2009-05-25 | 2009-10-14 | 杭州华三通信技术有限公司 | 一种raid阵列转换的方法及装置 |
CN104267913A (zh) * | 2014-10-20 | 2015-01-07 | 北京北亚时代科技有限公司 | 一种可动态异步调整raid级别的存储方法及存储系统 |
CN104778100A (zh) * | 2015-04-23 | 2015-07-15 | 成都博元时代软件有限公司 | 一种安全备份数据的方法 |
CN105930099A (zh) * | 2015-05-20 | 2016-09-07 | 德州学院 | 一种消除局部并行中小写操作的双盘容错盘阵列 |
WO2020155930A1 (zh) * | 2019-02-01 | 2020-08-06 | 杭州海康威视数字技术股份有限公司 | 磁盘阵列空间划分方法、装置、电子设备及存储介质 |
-
2023
- 2023-10-24 CN CN202311381525.XA patent/CN117112455B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101556802A (zh) * | 2009-05-25 | 2009-10-14 | 杭州华三通信技术有限公司 | 一种raid阵列转换的方法及装置 |
CN104267913A (zh) * | 2014-10-20 | 2015-01-07 | 北京北亚时代科技有限公司 | 一种可动态异步调整raid级别的存储方法及存储系统 |
CN104778100A (zh) * | 2015-04-23 | 2015-07-15 | 成都博元时代软件有限公司 | 一种安全备份数据的方法 |
CN105930099A (zh) * | 2015-05-20 | 2016-09-07 | 德州学院 | 一种消除局部并行中小写操作的双盘容错盘阵列 |
WO2020155930A1 (zh) * | 2019-02-01 | 2020-08-06 | 杭州海康威视数字技术股份有限公司 | 磁盘阵列空间划分方法、装置、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
磁盘阵列的电子物证检验研究;戴士剑;刘品新;;信息网络安全(第01期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117112455A (zh) | 2023-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108563532B (zh) | 数据处理方法及相关装置 | |
US9274967B2 (en) | FIFO cache simulation using a bloom filter ring | |
CN104391727B (zh) | 数据烧写方法、系统、烧写设备以及目标设备 | |
CN107111452A (zh) | 应用于计算机系统的数据迁移方法和装置、计算机系统 | |
CN105549936B (zh) | 数据表的显示方法和装置 | |
EP3364541A1 (en) | Storage controller, data processing chip, and data processing method | |
CN111984400A (zh) | 神经网络的内存分配方法及装置 | |
CN110413454B (zh) | 基于存储阵列的数据重建方法、装置及存储介质 | |
CN105528183B (zh) | 一种存储数据的方法及存储设备 | |
CN112199342A (zh) | 一种文件上传方法、装置及计算机设备 | |
CN107544863B (zh) | 一种数据存储方法及装置 | |
CN107678894B (zh) | 一种内存测试方法、装置及系统 | |
CN110727399B (zh) | 存储阵列管理方法及装置 | |
US10019158B2 (en) | Determination of a read voltage to be applied to a page based on read voltages of other pages | |
CN114327258B (zh) | 一种固态硬盘处理方法、系统、设备及计算机存储介质 | |
CN108108262A (zh) | 具有检查所选择的存储器访问的硬件检查单元的集成电路 | |
CN111143146A (zh) | 一种存储装置的健康状态预测方法及系统 | |
CN117112455B (zh) | 一种空间地址的转化方法、装置、计算机设备及存储介质 | |
CN112269665B (zh) | 内存的处理方法和装置、电子设备和存储介质 | |
CN110658994B (zh) | 一种基于hdd和ssd混合磁盘阵列的数据处理方法及装置 | |
CN110990207B (zh) | 基于Whitley平台的BPS内存测试方法、系统、终端及存储介质 | |
CN110796229A (zh) | 一种实现卷积运算的装置及方法 | |
US11467973B1 (en) | Fine-grained access memory controller | |
CN112181790A (zh) | 一种存储设备的容量统计方法、系统及相关组件 | |
CN107678977A (zh) | 一种计数器的读写方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |