CN109144409A - 数据处理方法及装置、存储介质、数据*** - Google Patents
数据处理方法及装置、存储介质、数据*** Download PDFInfo
- Publication number
- CN109144409A CN109144409A CN201810759961.9A CN201810759961A CN109144409A CN 109144409 A CN109144409 A CN 109144409A CN 201810759961 A CN201810759961 A CN 201810759961A CN 109144409 A CN109144409 A CN 109144409A
- Authority
- CN
- China
- Prior art keywords
- data
- offset address
- background logic
- logic offset
- control unit
- 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.)
- Granted
Links
Classifications
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本申请公开了一种数据处理方法及装置、存储介质、数据***,涉及数据处理技术领域。该数据处理方法包括:向磁盘阵列中的目标磁盘发送读请求,该读请求用于请求读取第一数据;接收目标磁盘发送的读响应,读响应包括第二数据,第二数据包括第二数据本体和第二后台逻辑偏移地址;将第二后台逻辑偏移地址和预先记录的第一数据的第一后台逻辑偏移地址进行比较;当第二后台逻辑偏移地址和第一后台逻辑偏移地址不一致时,确定第一数据的后台数据引用错误。有效的解决了目前无法感知后台的读写偏移,导致数据出现错误的问题。
Description
技术领域
本申请涉及数据处理技术领域,特别涉及一种数据处理方法及装置、存储介质、数据***。
背景技术
目前的数据***,通常包括一个或多个主机(host),以及与主机连接的磁盘阵列。其中,磁盘阵列包括与各个主机连接的阵列控制器(也称存储阵列),以及与该阵列控制器连接的一个或多个磁盘。
为了保证磁盘阵列中的数据的完整性,目前提出了数据完整性保证区域(DataIntegrity Field,DIF)技术。该DIF技术一般符合T10标准,T10标准规定,每512个字节的数据存储区域后面格外增加8个字节的DIF区域,该DIF区域也称为保护信息(ProtectionInformation,PI)区域。该PI区域中可以填充循环冗余校验(Cyclical Redundancy Check,CRC)值和逻辑区块地址(Logical Block Address,LBA)。在阵列磁盘中的阵列控制器接收到主机发送的读取命令进行读取数据的操作时,阵列控制器可以通过CRC值确定数据本身是否正确,阵列控制器还可以通过LBA确定数据是否被正确引用。
当阵列控制器进行磁盘阵列后台的读写操作时,容易产生后台的读写偏移,造成后续后台数据的引用错误,而目前的T10标准只针对主机的读写操作所产生的数据偏移进行校验,无法感知后台的读写偏移(也即无法感知后台数据的引用错误),因此,亟需一种感知后台读写偏移的数据处理方法。
发明内容
本申请实施例提供了一种数据处理方法及装置、存储介质、数据***,能够解决目前的阵列控制器无法感知后台的读写偏移的问题。所述技术方案如下:
第一方面,提供了一种数据处理方法,所述方法应用于磁盘阵列中的阵列控制器,所述方法包括:
向所述磁盘阵列中的目标磁盘发送读请求,所述读请求用于请求读取第一数据;
接收所述目标磁盘发送的读响应,所述读响应包括第二数据,所述第二数据包括第二数据本体和第二后台逻辑偏移地址,所述第二后台逻辑偏移地址是所述第二数据本体在被写入所述目标磁盘前由所述阵列控制器基于所述第二数据本体确定的;
将所述第二后台逻辑偏移地址和预先记录的所述第一数据的第一后台逻辑偏移地址进行比较,所述第一后台逻辑偏移地址是基于所述第一数据的第一数据本体确定的;
当所述第二后台逻辑偏移地址和所述第一后台逻辑偏移地址不一致时,确定所述第一数据的后台数据引用错误。
在本申请中,当阵列控制器在进行磁盘阵列后台的读取操作时,阵列控制器首先可以获取到第二数据,该第二数据包括第二数据本体和第二后台逻辑偏移地址,再将第二后台逻辑偏移地址与预先记录的第一数据的第一后台逻辑偏移地址进行比较,当第二后台逻辑偏移地址与第一后台逻辑偏移地址不一致时,确定第一数据的后台数据应用错误,有效的解决了目前无法感知后台的读写偏移,导致数据出现错误的问题。
可选的,在所述向所述磁盘阵列中的目标磁盘发送读请求之前,所述方法还包括:
基于待存储的第一数据本体确定所述第一后台逻辑偏移地址;
生成写请求,所述写请求用于请求写入所述第一数据,所述写入请求包括所述第一数据,所述第一数据包括所述第一数据本体和所述第一后台逻辑偏移地址;
向所述目标磁盘发送所述写请求。
在本申请中,当阵列控制器在进行磁盘阵列后台的写入操作时,阵列控制器可以基于待存储的第一数据本体确定第一后台逻辑偏移地址,该第一数据本体和第一后台逻辑偏移地址可以构成第一数据,阵列控制器可以将该第一数据发送给目标磁盘,以便目标磁盘可以存储该第一数据。在本申请中,在阵列控制器基于第一数据本体确定出第一后台逻辑偏移地址后,可以对该第一后台逻辑偏移地址进行记录,便于后续在再次读取该第一数据时,阵列控制器可以基于记录的第一后台逻辑偏移地址与读取到的的数据中携带的后台逻辑偏移地址进行比较。
可选的,所述阵列控制器以扇区的形式存储读写的数据,每个被读写的数据包括数据本体以及保护信息PI,所述PI包括目标字段,所述目标字段用于携带基于所述数据本体确定的后台逻辑偏移地址。在本申请中,基于数据(也即被读取的数据或者被写入的数据)本体确定的后台逻辑偏移地址可以记录在,与该数据本体对应的PI中的目标字段中。
可选的,所述阵列控制器以扇区的形式存储读写的数据,每个被读写的数据包括数据本体以及PI,每个所述PI包括指示位,所述指示位用于指示所述数据是否支持元数据自定义,当所述数据支持元数据自定义时,所述PI还包括目标字段,所述目标字段用于携带基于所述数据本体确定的后台逻辑偏移地址。
通过在PI中添加指示位,当PI中的指示位指示数据支持元数据自定义时,该数据中的数据本体对应的后台逻辑偏移地址才可以记录在该数据中的PI中。当PI中的指示位不支持元数据自定义时,阵列控制器无需查找目标字段,避免不必要的数据开销。
可选的,在所述接收所述目标磁盘发送的读响应之后,所述方法还包括:
检测所述第二数据中的PI的指示位,当所述PI的指示位指示所述第二数据支持元数据自定义时,在所述第二数据中的PI的目标字段读取所述第二后台逻辑偏移地址。
可选的,所述生成写请求,包括:
检测所述阵列控制器是否支持数据的元数据自定义;
当所述阵列控制器支持数据的元数据自定义时,生成所述第一数据,所述第一数据包括所述第一数据本体和PI,所述第一数据中的PI包括指示位和目标字段,所述指示位用于指示所述第一数据支持元数据自定义,所述目标字段用于携带所述第一后台逻辑偏移地址。
可选的,所述PI包括校验和GRD字段、应用标签APP字段和参考标签REF字段,所述目标字段为所述PI中的任一字段。
可选的,所述后台逻辑偏移地址存储在所述PI的APP字段中的预留比特位中。
可选的,所述后台逻辑偏移地址存储在所述PI的REF字段中的未使用数据或者空白比特位中。
本申请是在目前的T10标准的基础上,调整了PI格式,不仅可以实现对目前的PI格式的向下兼容,还可以使得阵列控制器可以感知后台的读写偏移,以下实施例中的读写操作均是阵列控制器进行磁盘阵列后台的读写操作。
可选的,所述后台逻辑偏移地址为磁盘偏移地址或数据块的偏移地址。
可选的,所述方法还包括:
在确定所述第一数据的后台数据引用错误后,采用磁盘阵列的冗余技术或纠错码EC冗余技术进行数据修复。有效的避免了出错的数据在磁盘阵列中进行扩散。
第二方面,提供了一种数据处理装置,所述装置应用于磁盘阵列中的阵列控制器,所述装置包括:
第一发送模块,用于向所述磁盘阵列中的目标磁盘发送读请求,所述读请求用于请求读取第一数据;
接收模块,用于接收所述目标磁盘发送的读响应,所述读响应包括第二数据,所述第二数据包括第二数据本体和第二后台逻辑偏移地址,所述第二后台逻辑偏移地址是所述第二数据本体在被写入所述目标磁盘前由所述阵列控制器基于所述第二数据本体确定的;
比较模块,用于将所述第二后台逻辑偏移地址和预先记录的所述第一数据的第一后台逻辑偏移地址进行比较,所述第一后台逻辑偏移地址是基于所述第一数据的第一数据本体确定的;
第一确定模块,用于当所述第二后台逻辑偏移地址和所述第一后台逻辑偏移地址不一致时,确定所述第一数据的后台数据引用错误。
可选的,所述装置还包括:
第二确定模块,用于基于待存储的第一数据本体确定所述第一后台逻辑偏移地址;
生成模块,用于生成写请求,所述写请求用于请求写入所述第一数据,所述写入请求包括所述第一数据,所述第一数据包括所述第一数据本体和所述第一后台逻辑偏移地址;
第二发送模块,用于向所述目标磁盘发送所述写请求。
可选的,所述阵列控制器以扇区的形式存储读写的数据,每个被读写的数据包括数据本体以及保护信息PI,所述PI包括目标字段,所述目标字段用于携带基于所述数据本体确定的后台逻辑偏移地址。
可选的,所述阵列控制器以扇区的形式存储读写的数据,每个被读写的数据包括数据本体以及PI,每个所述PI包括指示位,所述指示位用于指示所述数据是否支持元数据自定义,当所述数据支持元数据自定义时,所述PI还包括目标字段,所述目标字段用于携带基于所述数据本体确定的后台逻辑偏移地址。
可选的,所述装置还包括:
检测模块,用于检测所述第二数据中的PI的指示位,当所述PI的指示位指示所述第二数据支持元数据自定义时,在所述第二数据中的PI的目标字段读取所述第二后台逻辑偏移地址。
可选的,所述生成模块,用于:
检测所述阵列控制器是否支持数据的元数据自定义;
当所述阵列控制器支持数据的元数据自定义时,生成所述第一数据,所述第一数据包括所述第一数据本体和PI,所述第一数据中的PI包括指示位和目标字段,所述指示位用于指示所述第一数据支持元数据自定义,所述目标字段用于携带所述第一后台逻辑偏移地址。
可选的,所述PI包括校验和GRD字段、应用标签APP字段和参考标签REF字段,所述目标字段为所述PI中的任一字段。
可选的,所述后台逻辑偏移地址存储在所述PI的APP字段中的预留比特位中。
可选的,所述后台逻辑偏移地址存储在所述PI的REF字段中的未使用数据或者空白比特位中。
可选的,所述后台逻辑偏移地址为磁盘偏移地址或数据块的偏移地址。
可选的,所述装置还包括:
修复模块,用于在确定所述第一数据的后台数据引用错误后,采用磁盘阵列的冗余技术或纠错码EC冗余技术进行数据修复。
第三方面,提供了一种数据***,包括:
一个或多个主机,以及与所述主机连接的磁盘阵列,所述磁盘阵列包括阵列控制器和至少一个磁盘,所述阵列控制器包括第二方面任一所述的数据处理装置。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,当所述指令被阵列控制器中的处理器执行时,实现如第一方面任一所述的数据处理方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
当阵列控制器在进行磁盘阵列后台的写入操作时,可以将第一数据写入目标磁盘中,该第一数据包括第一数据本体和第一后台逻辑偏移地址。当阵列控制器在进行磁盘阵列后台的读取操作时,阵列控制器首先可以获取到第二数据,该第二数据包括第二数据本体和第二后台逻辑偏移地址,再将第二后台逻辑偏移地址与预先记录的第一数据的第一后台逻辑偏移地址进行比较,当第二后台逻辑偏移地址与第一后台逻辑偏移地址不一致时,确定第一数据的后台数据应用错误,有效的解决了目前无法感知后台的读写偏移,导致数据出现错误的问题。并且,还可以对后台数据应用错误的第一数据进行修复,有效的避免了出错的数据在磁盘阵列中进行扩散。
附图说明
图1是一种数据***的结构示意图;
图2是一种数据中的数据存储区域和PI区域的示意图;
图3是一种PI区域中的数据格式示意图;
图4是本申请实施例提供的一种数据处理方法的流程图;
图5是本申请实施例提供的一种PI区域中的目标字段的示意图;
图6是本申请实施例提供的一种数据处理装置的框图;
图7是本申请实施例提供的另一种数据处理装置的框图;
图8是本申请实施例提供的又一种数据处理装置的框图;
图9是本申请实施例提供的再一种数据处理装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
请参考图1,图1是一种数据***的结构示意图,该数据***可以包括:一个或多个主机200,以及与主机200连接的磁盘阵列100。该磁盘阵列100可以包括阵列控制器101以及与该阵列控制器101建立连接的一个或多个磁盘102。
在数据***中,阵列控制器101以扇区的形式存储读写的数据,每个扇区可以包括512个字节的数据。根据T10标准规定,可以将读写的数据划分为数据存储区域和PI区域,例如,如图2所示,数据存储区域中可以存储512个字节的数据,也即一个扇区的数据,PI区域可以存储8个字节的PI,通过该PI可以保证磁盘阵列中的数据的完整性。
该PI主要用来防止和检测静态数据破坏,该静态数据破坏包括数据通道上的硬件故障和软件漏洞(bug)导致的数据破坏,以及磁盘不可检测和纠正的数据错误等。如图3所示,图3是一种PI区域中的数据格式示意图,前两个字节为校验和(Guard,GRD)字段,在GRD字段中填充CRC值,用于保护数据本身的完整性;然后是2字节的应用标签(ApplicationTag,APP)字段,在APP字段中通常保存用户自定义的和应用相关的信息;最后是4字节的参考标签(Reference Tag,REF)字段,在Ref字段中LBA,用于保护数据存储位置的正确性。
但是,阵列控制器200进行磁盘阵列100后台(该后台是一个相对概念,指的是数据***中主机无法感知的区域,例如磁盘阵列100内部)的读写操作时,例如,阵列控制器200进行重构写、大写、小写或降级写等操作时,容易产生后台的读写偏移。由于Ref字段中的数据(例如,LBA)是主机200生成的,在T10标准中,阵列控制器101无权改写该Ref字段中已有的数据,因此目前的T10标准只针对主机100的读写操作所产生的数据偏移进行校验,无法感知后台的读写偏移。
本申请实施例提供的数据处理方法中,通过在读写请求中携带基于读写的数据本体所确定的后台逻辑偏移地址,以校验数据是否后台引用错误,从而实现感知后台的读写偏移。其中,读写请求的格式可以有多种,只要保证读写请求中能够有效携带读写的数据所对应的后台逻辑偏移地址即可。
示例的,本申请实施例中,阵列控制器以扇区的形式存储读写的数据,每个被读写的数据(也即被读取的数据或者被写入的数据)包括数据本体以及PI,该数据本体可以记录在如图2所示的数据存储区域中,PI可以记录在如图2所示的PI区域中。
本申请实施例中,该PI可以包括目标字段,该目标字段用于携带基于数据(也即被读取的数据或者被写入的数据)本体确定的后台逻辑偏移地址。可选的,该后台逻辑偏移地址可以为磁盘偏移地址或数据块的偏移地址。在本申请实施例中,当阵列控制器进行后台的读写操作时,该阵列控制器可以基于目标字段中携带的后台逻辑偏移地址确定后台是否出现读写偏移的问题。
需要说明的是,请参考T10中的PI,本申请实施例提供的PI也可以包括GRD字段、APP字段和REF字段,该PI的格式可以参考图3。其中,目标字段可以为GRD字段、APP字段和REF字段中的任一字段。
例如,目标字段为APP字段,APP字段中设置有预留比特位,数据的后台逻辑偏移地址可以存储在该预留比特位中。又例如,目标字段为REF字段,数据的后台逻辑偏移地址可以存储在该REF字段的未使用数据(例如,压缩数据或元数据)或者空白比特位中。
这样,本申请实施例在目前的T10标准的基础上,调整了PI格式,不仅可以实现对目前的PI格式的向下兼容,还可以使得阵列控制器可以感知后台的读写偏移,以下实施例中的读写操作均是阵列控制器进行磁盘阵列后台的读写操作。
本申请实施例以后台逻辑偏移地址携带在PI中为例,以下实施例对本申请中的数据处理方法进行示意性说明:
请参考图4,图4是本申请实施例提供的一种数据处理方法的流程图,该方法用于磁盘阵列中的阵列控制器,该方法包括:
步骤401、基于待存储的第一数据本体确定第一后台逻辑偏移地址。
在本申请实施例中,当需要将第一数据本体(即待写入数据)写入目标磁盘中时,需要先根据该第一数据本体确定需要将该第一数据本体需要写入的目标磁盘,以及在目磁盘中需要写入的目标地址,该目标地址包括物理地址和第一后台逻辑偏移地址,阵列控制器后续可以根据该目标地址将第一数据本体写入目标磁盘中。
步骤402、生成写请求。
在阵列控制器基于第一数据本体确定第一后台逻辑偏移地址后,该阵列控制器可以生成写请求,该写请求用于请求写入第一数据,该写入请求包括由第一数据本体和第一后台逻辑偏移地址所组成的第一数据。在该第一数据中,如图5所示,第一数据本体可以记录在数据存储区域中,第一后台逻辑偏移地址可以记录在PI中,在本申请实施例中,第一后台逻辑偏移地址记录在PI中的目标字段中,例如,该目标字段可以为APP字段。
需要说明的是,该请求还包括上述目标地址,该目标地址用于供目标磁盘进行第一数据的写入。
步骤403、向目标磁盘发送该写请求。
在本申请实施例中,阵列控制器将写请求发送给目标磁盘后,目标磁盘可以根据该写请求中携带的目标地址,将第一数据写入目标磁盘中该目标地址对应位置。可选的,在目标磁盘写入了第一数据后,可以生成写响应,并发送给阵列控制器,以告知阵列控制器数据写入成功。
需要说明的是,阵列控制器还可以生成与第一数据本体对应的CRC值,在生成写请求时,将该CRC值写入PI中。在目标磁盘进行第一数据的写入之前,目标磁盘可以基于第一数据本体生成CRC值,并与存储在PI中的CRC值进行完整性校验,如果校验通过,说明待写入的第一数据为完整的数据,则目标磁盘可以写入该第一数据。
步骤404、接收目标磁盘发送的写响应。
该写响应可以包括用于指示第一数据已经写入目标磁盘中的指示信息。在阵列控制器接收到目标磁盘发送的写响应后,可以确定第一数据的写入成功。
需要说明的是,上述步骤401至步骤404是以待写入数据为第一数据进行写入操作的过程为例进行说明的,在一种可选的实现方式中,通过上述步骤401至步骤404还可以完成对其他数据的写入操作,其写入过程可以参考上述第一数据的写入过程。
步骤405、向磁盘阵列中的目标磁盘发送读请求。
当阵列控制器确定了第一数据本体需要写入的目标磁盘以及在目磁盘中需要写入的目标地址后,可以记录该目标磁盘的标识以及目标地址,当需要读取第一数据时,阵列控制器可以基于该目标磁盘的标识向目标磁盘发送读请求,该读请求用于请求读取第一数据,该读请求携带该目标地址。
步骤406、接收目标磁盘发送的读响应。
由于阵列控制器在进行数据写入操作时,是将待写入数据整体写入磁盘中的,该待写入数据包括数据本体以及该数据本体对应的后台逻辑偏移地址,因此,从磁盘中读取的数据也包括数据本体以及对应的后台逻辑偏移地址,本申请实施例假设目标磁盘基于上述读请求读取的数据为第二数据,该第二数据包括第二数据本体和第二后台逻辑偏移地址,则该目标磁盘基于该第二数据生成包括该第二数据的读响应,并发送给阵列控制器。该第二后台逻辑偏移地址是该第二数据本体在被写入目标磁盘前由阵列控制器基于该第二数据本体确定的,其确定过程可以参考上述步骤401。
步骤407、将该第二后台逻辑偏移地址与预先记录的第一数据的第一后台逻辑偏移地址进行比较。
在阵列控制器基于第一数据本体确定出第一后台逻辑偏移地址后,可以对该第一后台逻辑偏移地址进行记录。当该阵列控制器接收到目标磁盘发送的读响应时,阵列控制器可以从第二数据的PI中的目标字段中读取第二后台逻辑偏移地址,并读取其预先记录的第一后台逻辑偏移地址。然后将该第一后台逻辑偏移地址与第二后台逻辑偏移地址进行比较。
步骤408、当该第二后台逻辑偏移地址和第一后台逻辑偏移地址一致时,确定第一数据的后台数据无引用错误。
当该第二后台逻辑偏移地址和第一后台逻辑偏移地址一致时,说明第一数据和第二数据的后台偏移量一致,没有出现读写偏移,读请求所引用的数据位置正确。
需要说明的是,阵列控制器还需要采用CRC值对第二数据进行完整性验证,在验证通过后,说明读响应中携带的第二数据是一个完整数据,当对读写偏移的验证和对数据完整性的验证均通过时,说明第二数据与第一数据相同,则数据读取成功,第一数据的读取操作完成。
步骤409、当该第二后台逻辑偏移地址和第一后台逻辑偏移地址不一致时,确定第一数据的后台数据引用错误。
当第二后台逻辑偏移地址与第一后台逻辑偏移地址不一致时,阵列控制器可以确定第一数据的后台数据引用错误。例如,第一数据可能发生数据写入错误;或者;在对第一数据进行读取时,发生数据读取错误。在阵列控制器确定出第一数据的后台数据引用错误后,可以执行步骤410。
步骤410、在确定第一数据的后台数据引用错误后,采用磁盘阵列的冗余技术或纠错码(Erasure Code,EC)冗余技术进行数据修复。
在本申请实施例中,当确定出第一数据的后台数据引用错误时,可以采用磁盘阵列的冗余技术或者EC冗余技术对该第一数据进行降级修复,有效的避免了出错的数据在磁盘阵列中进行扩散。
上述实施例是以PI默认携带目标字段为例进行示意性说明的,在另一种可选的实现方式中,每个PI包括指示位,该指示位用于指示携带该PI的读写的数据(如上述第一数据或第二数据)是否支持元数据(即描述数据的数据)自定义,当该数据支持元数据自定义时,说明阵列控制器所读写的数据中的PI可以定义新的参数,此时,该PI还包括目标字段,该目标字段可以位于指示位之后,该目标字段与上述实施例中的目标字段相同,本申请实施例在此不再赘述。如果数据不支持元数据自定义,则PI中无法携带目标字段。
此时,在一种可实现方式中,在执行上述步骤401时,该步骤401可以包括以下步骤:
步骤A1、检测阵列控制器是否支持元数据自定义。
步骤B1、当阵列控制器支持元数据自定义时,生成第一数据。
该第一数据包括第一数据本体和PI,该第一数据中的PI包括指示位和目标字段,该指示位用于指示第一数据支持元数据自定义,该目标字段用于携带第一后台逻辑偏移地址。
通过上述步骤A1和步骤B1,可以在第一数据中的PI中添加第一后台逻辑偏移地址。
在该种可实现方式中,相应的,若进行第一数据的读取操作,在执行上述步骤406后,该数据处理方法还包括以下步骤:
步骤A3、检测第二数据中的PI的指示位,当该PI的指示位指示第二数据支持元数据自定义时,在该第二数据中的PI的目标字段读取第二后台逻辑偏移地址。
通过上述步骤A3,可以读取第二数据中的PI中添加第二后台逻辑偏移地址。
在该种实现方式中,通过在PI中添加指示位,可以指示读写的数据是否支持元数据自定义,在其不支持元数据自定义时,阵列控制器无需查找目标字段,避免不必要的数据开销。
综上所述,本申请实施例提供的数据处理方法,当阵列控制器在进行磁盘阵列后台的写入操作时,可以将第一数据写入目标磁盘中,该第一数据包括第一数据本体和第一后台逻辑偏移地址。当阵列控制器在进行磁盘阵列后台的读取操作时,阵列控制器首先可以获取到第二数据,该第二数据包括第二数据本体和第二后台逻辑偏移地址,再将第二后台逻辑偏移地址与预先记录的第一数据的第一后台逻辑偏移地址进行比较,当第二后台逻辑偏移地址与第一后台逻辑偏移地址不一致时,确定第一数据的后台数据应用错误,有效的解决了目前无法感知后台的读写偏移,导致数据出现错误的问题。并且,还可以对后台数据应用错误的第一数据进行修复,有效的避免了出错的数据在磁盘阵列中进行扩散。
需要说明的是,本申请实施例提供的数据处理方法步骤的先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本申请的保护范围之内,因此不再赘述。
本申请实施例还提供了一种数据处理装置,请参考图6,图6是本申请实施例提供的一种数据处理装置的框图,该数据处理装置600包括:
第一发送模块601,用于向磁盘阵列中的目标磁盘发送读请求,读请求用于请求读取第一数据。
接收模块602,用于接收目标磁盘发送的读响应,读响应包括第二数据,第二数据包括第二数据本体和第二后台逻辑偏移地址,第二后台逻辑偏移地址是第二数据本体在被写入目标磁盘前由阵列控制器基于第二数据本体确定的。
比较模块603,用于将第二后台逻辑偏移地址和预先记录的第一数据的第一后台逻辑偏移地址进行比较,第一后台逻辑偏移地址是基于第一数据的第一数据本体确定的。
第一确定模块604,用于当第二后台逻辑偏移地址和第一后台逻辑偏移地址不一致时,确定第一数据的后台数据引用错误。
可选的,请参考图7,图7是本申请实施例提供的另一种数据处理装置的框图,该数据处理装置600还包括:
第二确定模块605,用于基于待存储的第一数据本体确定第一后台逻辑偏移地址。
生成模块606,用于生成写请求,写请求用于请求写入第一数据,写入请求包括第一数据,第一数据包括第一数据本体和第一后台逻辑偏移地址。
第二发送模块607,用于向目标磁盘发送写请求。
可选的,阵列控制器以扇区的形式存储读写的数据,每个被读写的数据包括数据本体以及PI,PI包括目标字段,目标字段用于携带基于数据本体确定的后台逻辑偏移地址。
可选的,阵列控制器以扇区的形式存储读写的数据,每个被读写的数据包括数据本体以及PI,每个PI包括指示位,指示位用于指示数据是否支持元数据自定义,当数据支持元数据自定义时,PI还包括目标字段,目标字段用于携带基于数据本体确定的后台逻辑偏移地址。
可选的,该数据处理装置还包括:
检测模块,用于检测第二数据中的PI的指示位,当PI的指示位指示第二数据支持元数据自定义时,在第二数据中的PI的目标字段读取第二后台逻辑偏移地址。
可选的,生成模块606,用于:检测阵列控制器是否支持数据的元数据自定义;当阵列控制器支持数据的元数据自定义时,生成第一数据,第一数据包括第一数据本体和PI,第一数据中的PI包括指示位和目标字段,指示位用于指示第一数据支持元数据自定义,目标字段用于携带第一后台逻辑偏移地址。
可选的,PI包括GRD字段、APP字段和REF字段,目标字段为PI中的任一字段。
可选的,后台逻辑偏移地址存储在PI的APP字段中的预留比特位中。
可选的,后台逻辑偏移地址存储在PI的REF字段中的未使用数据或者空白比特位中。
可选的,后台逻辑偏移地址为磁盘偏移地址或数据块的偏移地址。
可选的,请参考图8,图8是本申请实施例提供的又一种数据处理装置的框图,该数据处理装置600还包括:
修复模块608,用于在确定第一数据的后台数据引用错误后,采用磁盘阵列的冗余技术或EC冗余技术进行数据修复。
综上所述,本申请实施例提供的数据处理装置,当阵列控制器在进行磁盘阵列后台的写入操作时,可以将第一数据写入目标磁盘中,该第一数据包括第一数据本体和第一后台逻辑偏移地址。当阵列控制器在进行磁盘阵列后台的读取操作时,阵列控制器首先可以获取到第二数据,该第二数据包括第二数据本体和第二后台逻辑偏移地址,再将第二后台逻辑偏移地址与预先记录的第一数据的第一后台逻辑偏移地址进行比较,当第二后台逻辑偏移地址与第一后台逻辑偏移地址不一致时,确定第一数据的后台数据应用错误,有效的解决了目前无法感知后台的读写偏移,导致数据出现错误的问题。并且,还可以对后台数据应用错误的第一数据进行修复,有效的避免了出错的数据在磁盘阵列中进行扩散。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
图9是本申请实施例提供的再一种数据处理装置的结构示意图,参考图9,该数据处理装置700可以包括:处理器710、通信接口720和存储器730,通信接口720和存储器730分别与处理器710相连,示例地,如图9所示,通信接口720和存储器730通过总线740与处理器710相连。
其中,处理器710可以为中央处理器(CPU),处理器710包括一个或者一个以上处理核心。处理器710通过运行软件程序,从而执行各种功能应用以及数据处理。
其中,通信接口720可以为多个,该通信接口720用于数据处理装置700与外部设备进行通信,该外部设备例如主机或磁盘等。
其中,存储器730存储有可在该处理器710上运行的计算机程序,该存储器730可以包括但不限于:随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、快闪存储器、光存储器。该存储器730负责信息存储,例如,该存储器730用于存储软件程序。
可选地,该数据处理装置700还可以包括:输入/输出(I/O)接口(图9中未示出)。I/O接口与处理器710、通信接口720以及存储器730连接。I/O接口例如可以为通用串行总线(USB)。
处理器710被配置为执行存储器730中存储的计算机程序,处理器730通过执行该计算机程序来实现如上述图4所示实施例中步骤401至步骤410的方法。
本申请示例性实施例还提供了一种数据***,该数据***包括:一个或多个主机,以及与主机连接的磁盘阵列,该磁盘阵列包括阵列控制器和至少一个磁盘。该数据***的结构可以参考图1示出的数据***。该阵列控制器可以包括例如图6、图7、图8或图9所示的数据处理装置。
本申请示例性实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有指令,当该指令被阵列控制器中的处理器执行时,实现如上述图4所示实施例中步骤401至步骤410的方法。
本申请示例性实施例还提供了一种包含指令的计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行本申请示例性实施例提供的数据处理方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (24)
1.一种数据处理方法,其特征在于,所述方法应用于磁盘阵列中的阵列控制器,所述方法包括:
向所述磁盘阵列中的目标磁盘发送读请求,所述读请求用于请求读取第一数据;
接收所述目标磁盘发送的读响应,所述读响应包括第二数据,所述第二数据包括第二数据本体和第二后台逻辑偏移地址,所述第二后台逻辑偏移地址是所述第二数据本体在被写入所述目标磁盘前由所述阵列控制器基于所述第二数据本体确定的;
将所述第二后台逻辑偏移地址和预先记录的所述第一数据的第一后台逻辑偏移地址进行比较,所述第一后台逻辑偏移地址是基于所述第一数据的第一数据本体确定的;
当所述第二后台逻辑偏移地址和所述第一后台逻辑偏移地址不一致时,确定所述第一数据的后台数据引用错误。
2.根据权利要求1所述的方法,其特征在于,在所述向所述磁盘阵列中的目标磁盘发送读请求之前,所述方法还包括:
基于待存储的第一数据本体确定所述第一后台逻辑偏移地址;
生成写请求,所述写请求用于请求写入所述第一数据,所述写入请求包括所述第一数据,所述第一数据包括所述第一数据本体和所述第一后台逻辑偏移地址;
向所述目标磁盘发送所述写请求。
3.根据权利要求2所述的方法,其特征在于,所述阵列控制器以扇区的形式存储读写的数据,每个被读写的数据包括数据本体以及保护信息PI,所述PI包括目标字段,所述目标字段用于携带基于所述数据本体确定的后台逻辑偏移地址。
4.根据权利要求2所述的方法,其特征在于,所述阵列控制器以扇区的形式存储读写的数据,每个被读写的数据包括数据本体以及PI,每个所述PI包括指示位,所述指示位用于指示所述数据是否支持元数据自定义,当所述数据支持元数据自定义时,所述PI还包括目标字段,所述目标字段用于携带基于所述数据本体确定的后台逻辑偏移地址。
5.根据权利要求4所述的方法,其特征在于,
在所述接收所述目标磁盘发送的读响应之后,所述方法还包括:
检测所述第二数据中的PI的指示位,当所述PI的指示位指示所述第二数据支持元数据自定义时,在所述第二数据中的PI的目标字段读取所述第二后台逻辑偏移地址。
6.根据权利要求4所述的方法,其特征在于,
所述生成写请求,包括:
检测所述阵列控制器是否支持数据的元数据自定义;
当所述阵列控制器支持数据的元数据自定义时,生成所述第一数据,所述第一数据包括所述第一数据本体和PI,所述第一数据中的PI包括指示位和目标字段,所述指示位用于指示所述第一数据支持元数据自定义,所述目标字段用于携带所述第一后台逻辑偏移地址。
7.根据权利要求3至6任一所述的方法,其特征在于,
所述PI包括校验和GRD字段、应用标签APP字段和参考标签REF字段,所述目标字段为所述PI中的任一字段。
8.根据权利要求7所述的方法,其特征在于,
所述后台逻辑偏移地址存储在所述PI的APP字段中的预留比特位中。
9.根据权利要求7所述的方法,其特征在于,
所述后台逻辑偏移地址存储在所述PI的REF字段中的未使用数据或者空白比特位中。
10.根据权利要求3至6任一所述的方法,其特征在于,所述后台逻辑偏移地址为磁盘偏移地址或数据块的偏移地址。
11.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在确定所述第一数据的后台数据引用错误后,采用磁盘阵列的冗余技术或纠错码EC冗余技术进行数据修复。
12.一种数据处理装置,其特征在于,所述装置应用于磁盘阵列中的阵列控制器,所述装置包括:
第一发送模块,用于向所述磁盘阵列中的目标磁盘发送读请求,所述读请求用于请求读取第一数据;
接收模块,用于接收所述目标磁盘发送的读响应,所述读响应包括第二数据,所述第二数据包括第二数据本体和第二后台逻辑偏移地址,所述第二后台逻辑偏移地址是所述第二数据本体在被写入所述目标磁盘前由所述阵列控制器基于所述第二数据本体确定的;
比较模块,用于将所述第二后台逻辑偏移地址和预先记录的所述第一数据的第一后台逻辑偏移地址进行比较,所述第一后台逻辑偏移地址是基于所述第一数据的第一数据本体确定的;
第一确定模块,用于当所述第二后台逻辑偏移地址和所述第一后台逻辑偏移地址不一致时,确定所述第一数据的后台数据引用错误。
13.根据权利要求12所述的装置,其特征在于,所述装置还包括:
第二确定模块,用于基于待存储的第一数据本体确定所述第一后台逻辑偏移地址;
生成模块,用于生成写请求,所述写请求用于请求写入所述第一数据,所述写入请求包括所述第一数据,所述第一数据包括所述第一数据本体和所述第一后台逻辑偏移地址;
第二发送模块,用于向所述目标磁盘发送所述写请求。
14.根据权利要求13所述的装置,其特征在于,所述阵列控制器以扇区的形式存储读写的数据,每个被读写的数据包括数据本体以及保护信息PI,所述PI包括目标字段,所述目标字段用于携带基于所述数据本体确定的后台逻辑偏移地址。
15.根据权利要求13所述的装置,其特征在于,所述阵列控制器以扇区的形式存储读写的数据,每个被读写的数据包括数据本体以及PI,每个所述PI包括指示位,所述指示位用于指示所述数据是否支持元数据自定义,当所述数据支持元数据自定义时,所述PI还包括目标字段,所述目标字段用于携带基于所述数据本体确定的后台逻辑偏移地址。
16.根据权利要求15所述的装置,其特征在于,所述装置还包括:
检测模块,用于检测所述第二数据中的PI的指示位,当所述PI的指示位指示所述第二数据支持元数据自定义时,在所述第二数据中的PI的目标字段读取所述第二后台逻辑偏移地址。
17.根据权利要求15所述的装置,其特征在于,
所述生成模块,用于:
检测所述阵列控制器是否支持数据的元数据自定义;
当所述阵列控制器支持数据的元数据自定义时,生成所述第一数据,所述第一数据包括所述第一数据本体和PI,所述第一数据中的PI包括指示位和目标字段,所述指示位用于指示所述第一数据支持元数据自定义,所述目标字段用于携带所述第一后台逻辑偏移地址。
18.根据权利要求14至17任一所述的装置,其特征在于,
所述PI包括校验和GRD字段、应用标签APP字段和参考标签REF字段,所述目标字段为所述PI中的任一字段。
19.根据权利要求18所述的装置,其特征在于,
所述后台逻辑偏移地址存储在所述PI的APP字段中的预留比特位中。
20.根据权利要求18所述的装置,其特征在于,
所述后台逻辑偏移地址存储在所述PI的REF字段中的未使用数据或者空白比特位中。
21.根据权利要求14至17任一所述的装置,其特征在于,所述后台逻辑偏移地址为磁盘偏移地址或数据块的偏移地址。
22.根据权利要求12所述的装置,其特征在于,所述装置还包括:
修复模块,用于在确定所述第一数据的后台数据引用错误后,采用磁盘阵列的冗余技术或纠错码EC冗余技术进行数据修复。
23.一种数据***,其特征在于,包括:
一个或多个主机,以及与所述主机连接的磁盘阵列,所述磁盘阵列包括阵列控制器和至少一个磁盘,所述阵列控制器包括权利要求12至22任一所述的数据处理装置。
24.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有指令,当所述指令被阵列控制器中的处理器执行时,实现如权利要求1至11任一所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810759961.9A CN109144409B (zh) | 2018-07-11 | 2018-07-11 | 数据处理方法及装置、存储介质、数据*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810759961.9A CN109144409B (zh) | 2018-07-11 | 2018-07-11 | 数据处理方法及装置、存储介质、数据*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109144409A true CN109144409A (zh) | 2019-01-04 |
CN109144409B CN109144409B (zh) | 2020-02-21 |
Family
ID=64800206
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810759961.9A Active CN109144409B (zh) | 2018-07-11 | 2018-07-11 | 数据处理方法及装置、存储介质、数据*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109144409B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024087877A1 (zh) * | 2022-10-27 | 2024-05-02 | 华为技术有限公司 | 一种存储设备、数据查找方法及*** |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6775090B2 (en) * | 2001-03-09 | 2004-08-10 | Seagate Technology Llc | Adapting logical track addresses in relation to head offsets |
CN101238431A (zh) * | 2005-08-03 | 2008-08-06 | 桑迪士克股份有限公司 | 大容量数据存储*** |
CN103413569A (zh) * | 2013-07-22 | 2013-11-27 | 华为技术有限公司 | 一读且一写静态随机存储器 |
CN104182701A (zh) * | 2014-08-15 | 2014-12-03 | 华为技术有限公司 | 一种阵列控制器、阵列和数据处理方法 |
CN104346298A (zh) * | 2013-08-06 | 2015-02-11 | 北京数码视讯软件技术发展有限公司 | 基于智能卡的数据处理方法、装置及智能卡 |
CN106021147A (zh) * | 2011-09-30 | 2016-10-12 | 英特尔公司 | 在逻辑驱动器模型下呈现直接存取的存储设备 |
-
2018
- 2018-07-11 CN CN201810759961.9A patent/CN109144409B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6775090B2 (en) * | 2001-03-09 | 2004-08-10 | Seagate Technology Llc | Adapting logical track addresses in relation to head offsets |
CN101238431A (zh) * | 2005-08-03 | 2008-08-06 | 桑迪士克股份有限公司 | 大容量数据存储*** |
CN106021147A (zh) * | 2011-09-30 | 2016-10-12 | 英特尔公司 | 在逻辑驱动器模型下呈现直接存取的存储设备 |
CN103413569A (zh) * | 2013-07-22 | 2013-11-27 | 华为技术有限公司 | 一读且一写静态随机存储器 |
CN104346298A (zh) * | 2013-08-06 | 2015-02-11 | 北京数码视讯软件技术发展有限公司 | 基于智能卡的数据处理方法、装置及智能卡 |
CN104182701A (zh) * | 2014-08-15 | 2014-12-03 | 华为技术有限公司 | 一种阵列控制器、阵列和数据处理方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024087877A1 (zh) * | 2022-10-27 | 2024-05-02 | 华为技术有限公司 | 一种存储设备、数据查找方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN109144409B (zh) | 2020-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7546436B2 (en) | Storage device with SCSI formatting | |
US20140068208A1 (en) | Separately stored redundancy | |
US9898216B2 (en) | Data storage system and specific command execution method thereof | |
US10108481B1 (en) | Early termination error recovery | |
KR20100082710A (ko) | 데이터 메모리 디바이스 및 인터페이스 에러 검출 및 처리 논리를 갖는 제어기 | |
JP2008539474A (ja) | パワーセーフディスクストレージ装置、システム及び方法 | |
US10127099B2 (en) | Bad sector repair method and apparatus | |
US10229742B2 (en) | Flash memory device | |
US8788752B2 (en) | Storage apparatus, patrolling method and storage system | |
CN115587011A (zh) | 管理存储装置中的调试日志的方法 | |
JP2005004753A (ja) | データのバージョンチェックを行う方法及び装置 | |
US8418029B2 (en) | Storage control device and storage control method | |
US7577804B2 (en) | Detecting data integrity | |
CN109144409A (zh) | 数据处理方法及装置、存储介质、数据*** | |
JP6052288B2 (ja) | ディスクアレイ制御装置、ディスクアレイ制御方法及びディスクアレイ制御プログラム | |
CN111897685A (zh) | 掉电时校验数据的方法、装置、存储介质及电子设备 | |
CN107168650B (zh) | 一种对bios的存储器中的数据的处理方法及装置 | |
US10014983B2 (en) | System, receiving device, and method | |
CN111124742B (zh) | Flash数据校验方法及Flash控制器、存储介质、设备 | |
US8595418B2 (en) | Memory configuring method, memory controller and memory storage apparatus | |
US9043544B2 (en) | Writing of new data of a first block size in a raid array that stores both parity and data in a second block size | |
JP6318769B2 (ja) | ストレージ制御装置、制御プログラム、および制御方法 | |
US20150301956A1 (en) | Data storage system with caching using application field to carry data block protection information | |
CN113936728A (zh) | 一种数据处理方法、***、计算机设备及可读存储介质 | |
CN109388513B (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 |