CN103019880A - 一种数据校验方法及存储设备、存储系统 - Google Patents
一种数据校验方法及存储设备、存储系统 Download PDFInfo
- Publication number
- CN103019880A CN103019880A CN2012105445430A CN201210544543A CN103019880A CN 103019880 A CN103019880 A CN 103019880A CN 2012105445430 A CN2012105445430 A CN 2012105445430A CN 201210544543 A CN201210544543 A CN 201210544543A CN 103019880 A CN103019880 A CN 103019880A
- Authority
- CN
- China
- Prior art keywords
- user data
- data block
- check code
- verification
- block address
- 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
Images
Landscapes
- Storage Device Security (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种数据校验方法及存储设备、存储系统。方法包括存储管理器接收写入请求后,根据校验规则利用用户数据生成校验码;在将用户数据写入用户数据块之前,存储管理器在校验得到用户数据与校验码相匹配时,将校验码写入校验数据块、将用户数据写入用户数据块、以及在关联数据中记录用户数据块地址与校验数据块地址的对应关系;存储管理器接收读请求后,分别从用户数据块和校验数据块读用户数据和校验码;在校验得到用户数据和校验码相匹配时,返回用户数据。通过上述方式,本发明既实现用户数据的校验,用户数据和校验数据的存储又不受物理存储介质或者操作系统的扇区分区大小的限制,不改变现有的物理存储介质的存储空间布局,更加灵活。
Description
技术领域
本发明涉及数据存储技术领域,特别是涉及一种数据校验方法及存储设备、存储系统。
背景技术
随着计算机技术的高速发展,用户数据越来越多,计算机自身携带的单个硬盘已经没无法满足用户数据的存储需求,需要使用独立的存储系统存储用户数据。为了检测用户数据在存储系统内部的传输和保存的过程中,因存储系统的硬件故障、软件故障、硬盘错误等导致用户数据的损坏,保证用户数据的完整性,则需要对用户数据进行校验。
现有技术中,提供两种用户数据的校验方法:
其一:在主机侧实现数据完整性字段(Data Integrity Field,DIF)数据校验。当需要向存储系统写入用户数据时,主机总线适配器(HostBus Adapte,HBA)根据用户数据和逻辑块地址生成DIF校验码,并把DIF校验码添加到用户数据的末尾,形成写入数据。写入数据包括用户数据和DIF校验码,如图1所示。然后,HBA将写入数据发送到存储系统。存储系统接收到写入数据后,从写入数据提取用户数据和DIF校验码,并校验用户数据是否与DIF校验码相匹配。如果用户数据与DIF校验码相匹配,则将写入数据写入物理存储介质。当需要从存储系统读写入数据时,存储系统向HBA返回写入数据。HBA从写入数据提取用户数据和DIF校验码,并校验用户数据是否与DIF校验码相匹配。如果用户数据与DIF校验码相匹配,则HBA剔除DIF校验码,仅向主机返回用户数据。
其二:在存储系统侧实现DIF数据校验。存储系统接收用户数据时,根据用户数据生成DIF校验码。当存储系统需要将用户数据写入物理存储介质时,存储系统校验用户数据是否与DIF校验码相匹配。如果用户数据与DIF校验码相匹配,则存储系统将用户数据与DIF校验码一起写入物理存储介质。当需要读取用户数据时,存储系统再一次校验用户数据是否与DIF校验码相匹配,并在用户数据与DIF校验码相匹配时,则剔除DIF校验码,仅返回用户数据。
本发明人在长期研究中发现:现有技术的两种用户数据的校验方法,在向物理存储介质存储用户数据时,均将DIF校验码与用户数据写入物理存储介质的一个逻辑块中。又如图1所示,一个DIF校验码共8个字节,包含一个2个字节的循环冗余校验码(Cyclic Redundancy Check,CRC)、一个2字节的应用标签(Application tag,App Tag)和一个4字节的参照标签(Reference tag,参照标签Ref Tag),一个DIF校验码可对512字节的用户数据进行校验。简而言之,存储512字节的用户数据时,额外需要8字节来存储DIF校验码,而用户数据与DIF校验码均存储在物理存储介质的同一个扇区,因此,扇区的容量需要为520字节,或者为520字节的整数倍。但是,目前通用的硬盘或者操作系统支持一个扇区的大小为512字节或4096字节,无法满足需求,若要增加DIF校验,会更改物理存储介质的存储空间布局。
发明内容
本发明实施方式主要解决的技术问题是提供一种数据校验方法及装置,既能够实现用户数据的校验,而用户数据和校验数据的存储又不受物理存储介质或者操作系统的扇区分区大小的限制,不需要改变现有的物理存储介质的存储空间布局,更加灵活。
第一方面,提供一种数据校验方法,包括:接收将用户数据写入用户数据块的写入请求,写入请求包括用户数据以及用户数据块所对应的用户数据块地址,用户数据块用于存储用户数据;根据校验规则利用用户数据生成校验码;在将用户数据写入用户数据块之前,根据校验规则校验用户数据与校验码是否匹配;若用户数据与校验码匹配,则将校验码写入校验数据块、将用户数据写入用户数据块、以及在关联数据中记录用户数据块对应的用户数据块地址与校验数据块对应的校验数据块地址的对应关系,校验数据块用于存储校验码。
结合第一方面实现方式,在第一方面的第一种可能实现方式中,将校验码写入校验数据块、将用户数据写入用户数据块、以及在关联数据中记录用户数据块地址与校验数据块地址的对应关系的步骤包括:在关联数据中查询是否存在与用户数据块地址相对应的校验数据块地址;若查询到校验数据块地址,则将校验码写入校验数据块地址所对应的校验数据块,并将用户数据写入用户数据块,若没有查询到校验数据块地址,则申请新的校验数据块,并将校验码写入新的校验数据块、以及在关联数据中记录用户数据块地址与新的校验数据块地址的对应关系。
第二方面,提供一种数据校验方法,包括:接收读用户数据的读请求,读请求包括用户数据所在的用户数据块所对应的用户数据块地址;从关联数据中获取与用户数据块地址相对应的校验数据块地址,关联数据用于记录用户数据块地址与校验数据块地址的对应关系;从校验数据块地址所对应的校验数据块读取校验码,以及从用户数据块读取用户数据;根据校验规则校验用户数据与校验码是否匹配;若用户数据与校验码相匹配,则返回用户数据。
结合第二方面的实现方式,在第二方面的第一种可能实现方式中,根据校验规则校验用户数据与校验码是否匹配的步骤包括:在读取用户数据和校验码完成时,根据校验规则校验用户数据与校验码是否匹配;若用户数据与校验码相匹配,则在返回用户数据时,根据校验规则校验用户数据与校验码是否匹配。
结合第二方面的第一种可能实现方式,在第二方面的第二种可能实现方式中,方法还包括:在读取用户数据和校验码完成时,若校验得到用户数据与校验码不匹配,则修复用户数据,并在修复成功后,进入在返回用户数据时,根据校验规则校验用户数据与校验码是否匹配的步骤。
第三方面,提供一种存储设备,包括:接收模块,用于接收将用户数据写入用户数据块的写入请求,写入请求包括用户数据以及用户数据块所对应的用户数据块地址,用户数据块用于存储用户数据;生成模块,用于根据校验规则利用用户数据生成校验码;校验模块,在将用户数据写入用户数据块之前,根据校验规则校验用户数据与校验码是否匹配;写入模块,用于在用户数据与校验码匹配时,将校验码写入校验数据块、将用户数据写入用户数据块、以及在关联数据中记录用户数据块的用户数据块地址与校验数据块的校验数据块地址的对应关系;其中,校验数据块用于存储校验码。
结合第三方面实现方式,在第三方面的第一种可能实现方式中,存储设备还包括:查询模块,用于在校验模块校验得到用户数据与校验码相匹配时,在关联数据中查询是否存在与用户数据块地址相对应的校验数据块地址;写入模块包括第一写入单元和第二写入单元;第一写入单元,用于在查询模块在关联数据中查询到存在与用户数据块地址相对应的校验数据块地址时,将校验码写入校验数据块地址所对应的校验数据块,并将用户数据写入用户数据块;第二写入单元,用于在查询模块在关联数据中查询到不存在与用户数据块地址相对应的校验数据块地址时,申请新的校验数据块,并将校验码写入新的校验数据块、将用户数据写入用户数据块、以及在关联数据中记录用户数据块地址与新的校验数据块的校验数据块地址的对应关系。
第四方面,提供一种存储设备,包括接收模块,用于接收读用户数据的读请求,读请求包括用户数据所在的用户数据块所对应的用户数据块地址;获取模块,用于从关联数据中获取与用户数据块地址相对应的校验数据块地址,关联数据用于记录用户数据块地址与校验数据块地址的对应关系;读取模块,用于从校验数据块地址所对应的校验数据块读取校验码,以及从用户数据块读取用户数据;校验模块,用于根据校验规则校验用户数据是否与校验码相匹配;数据返回模块,用于在用户数据与校验码相匹配时,返回用户数据。
结合第四方面实现方式,在第四方面的第一种可能实现方式中,校验模块包括第一校验单元和第二校验单元;第一校验单元,用于在读取用户数据和校验码完成时,根据校验规则校验用户数据与校验码是否匹配;第二校验单元,用于在第一校验单元校验得到用户数据与校验码相匹配,并在进入数据返回模块之前,校验用户数据与校验码是否匹配;数据返回模块具体用于在第二校验单元校验得到用户数据与校验码相匹配,返回用户数据。
结合第四方面的第一种可能实现方式,在第四方面的第二种可能实现方式中,校验模块还包括修复单元;修复单元用于在第一校验模块校验得到用户数据与校验码不相匹配时,修复用户数据。
第五方面,提供一种存储系统,包括存储系统包括处理设备和存储设备;存储设备包括存储处理器和存储器,存储器包括存储块,存储块划分有用户数据块和校验数据块,用户数据块用于存储用户数据,校验数据块用于存储校验码;存储管理器接收来自处理器的将用户数据写入用户数据块的写入请求,写入请求包括用户数据以及用户数据块所对应的用户数据块地址,用户数据块用于存储用户数据;存储管理器根据校验规则利用用户数据生成校验码;在将用户数据写入用户数据块之前,存储管理器根据校验规则校验用户数据与校验码是否匹配;若用户数据与校验码匹配,存储管理器将校验码写入校验数据块、将用户数据写入用户数据块、以及在关联数据中记录用户数据块对应的用户数据块地址与校验数据块对应的校验数据块地址的对应关系。
本发明实施方式的有益效果是:本发明将用户数据与校验码分开存储,用户数据存储用户数据块中,校验码存储在校验数据块中。并通过在关联数据中建立用户数据块地址与校验数据块地址的对应关系,从而通过用户数据块地就能查找到校验码。使得用户数据与校验码不再需要同时存储在物理存储介质的一个逻辑块中,并且用户数据或者校验码的大小均没超过现有技术中物理存储介质或者操作系统的扇区分区大小,进而使得用户数据和校验数据的存储不再受物理存储介质或者操作系统的扇区分区大小的限制,不需要改变现有的物理存储介质的存储空间布局,非常灵活。
附图说明
为了更清楚地说明本发明实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中用户数据与校验码合并成一个数据字段的示意图;
图2是本发明存储系统实施方式的结构示意图;
图3是本发明数据校验方法第一实施方式的流程图;
图4是本发明数据校验方法第二实施方式的流程图;
图5是本发明数据校验方法第三实施方式的流程图;
图6是本发明数据校验方法第四实施方式的流程图;
图7是本发明存储设备第一实施方式的结构示意图;
图8是本发明存储设备第二实施方式的结构示意图;
图9是本发明存储设备第三实施方式的结构示意图;
图10是本发明存储设备第四实施方式的结构示意图。
具体实施方式
请参阅图2,图2是本发明存储系统实施方式的结构示意图。如图所述,存储系统10包括处理设备11和存储设备12。存储设备12包括存储管理器121和存储器122。存储器122包括存储块123,存储块123划分有用户数据块1231和校验数据块1232。用户数据块1231用于存储用户数据,校验数据块1232用于存储校验码。
需要说明的是:存储块123可为存储器122的最小存储单元,即为扇区。将存储块123划分为用户数据块1231和校验数据块1232,并不需要改动的存储器123的存储空间布局,仅需要从逻辑上进行定义即可,比如:存储器123有150兆存储空间,可将其中50兆存储空间定义用于存储校验码,剩余的100兆存储空间定义用于存储用户数据,则该50兆存储空间中的存储块为校验数据块,剩余的100兆存储空间内的存储块为用户数据块,并且用户数据块1231和校验数据块1232位于存储器122的不同扇区。
进一步的,存储器123的数量可以为多个,用户数据块1231和校验数据块1232的数量也可为多个。每一个用户数据块1231对应有唯一标识的用户数据块地址,每一个校验数据块1232对应有唯一标识的校验数据块地址。就在操作系统层面而言,校验数据块地址和用户数据块地址可为逻辑单元编号(Logic Unit Number,LUN),以逻辑单元编号映射存储块123。操作系统进行操作时,是对逻辑单元编号进行操作。值得说明的是,在本发明实施方式中,校验数据块地址和用户数据块地址可以分属在不同的LUN,在接收写入请求之前存储系统可以分配一段LUN用于存储处理设备下发的用户数据,在根据校验规则利用用户数据生成校验码之后,可以再分配另一段LUN用于存储校验码。
在使用上述存储系统10时,又具体分为写和读两方面。
对于写方面,存储管理器121接收来自处理器11的将用户数据写入用户数据块的写入请求,写入请求包括用户数据以及用户数据块所对应的用户数据块地址。存储管理器121根据校验规则利用用户数据生成校验码。其中,校验规则不作具体限定,可为DIF校验、奇偶校验等等。在将用户数据写入用户数据块1231之前,存储管理器121根据校验规则校验用户数据与校验码是否匹配。若用户数据与校验码匹配,存储管理器121将校验码写入校验数据块1232,将用户数据写入用户数据块,并在关联数据中记录用户数据块1231的用户数据块地址与校验数据块1232的校验数据块地址的对应关系。关联数据可存储于存储管理器121自身配置的存储空间中。
对于读方面,存储管理器121接收来自处理器11的读用户数据的读请求,读请求包括用户数据所在的用户数据块1231对应的用户数据块地址。存储管理器121在从关联数据中获取与用户数据块地址相对应的校验数据块地址。存储管理器121从校验数据块地址所对应的校验数据块1232读取校验码,从用户数据块1231读取用户数据。存储管理器根据校验规则校验用户数据与校验码是否匹配。若用户数据与校验码相匹配,则存储管理器121向处理器11返回用户数据。
在本发明实施方式中,存储管理器121将用户数据存储用户数据块1231中,将校验码存储在校验数据块1232中,并且在关联数据中记录用户数据块地址与校验数据块地址的对应关系。使得用户数据与校验码不再需要同时存储在物理存储介质的一个逻辑块中,避免了用户数据和校验数据的存储受到物理存储介质或者操作系统的扇区分区大小的限制。当需要对数据添加校验时,直接添加即可,不需要改变现有的物理存储介质的存储空间布局,非常灵活。
本发明又提供一种数据校验方法的实施方式。请参阅图3,图3是本发明数据校验方法第一实施方式的流程图。如图所示,所述方法包括:
步骤S201:存储管理器接收将用户数据写入用户数据块的写入请求,写入请求包括用户数据以及用户数据块所对应的用户数据块地址,用户数据块用于存储用户数据;
存储管理器用于管理用户数据块和校验数据块。每一个用户数据块都有唯一标识的用户数据块地址,同样的,每一个校验数据块都有唯一标识的校验数据块。
进一步的,用户数据块和校验数据块可以预先划分好的,比如150兆存储空间,可将其中50兆存储空间定义用于存储校验码,剩余的100兆存储空间定义用于存储用户数据,则该50兆存储空间中的存储块为校验数据块,剩余的100兆存储空间内的存储块为用户数据块。就操作系统层面而言,用户数据块地址和校验数据块地址相当于LUN,以LUN映射用户数据块和校验数据块,则划分用户数据块和校验数据块,可直接对LUN进行划分即可。
步骤S202:存储管理器根据校验规则利用用户数据生成校验码;
在本发明实施方式中,校验规则不作具体限定,可为DIF校验、奇偶校验、总数校验等等,不同的校验规则,生成的校验码不一定相同,例如校验规则为DIF校验,则生成的校验码为DIF校验码,若为奇偶校验,则生成的校验码为奇偶校验码。
步骤S203:在将用户数据写入用户数据块之前,存储管理器根据校验规则校验用户数据与校验码是否匹配,若用户数据与校验码相匹配,则进入步骤S204,否则进入步骤S205;
存储管理器接收用户数据后,可能需要对用户数据进行处理和转发,在进行对用户数据处理和转发的过程中,有可能会损坏用户数据。为了避免向用户数据块写入错误的用户数据,在对用户数据进行处理和转发完成后,在将用户数据写入用户数据块之前,对用户数据进行校验,确保写入用户数据块的用户数据为完整的数据。步骤S203所说的在将用户数据写入用户数据块之前具体为:存储管理器已经完成对用户数据的转发和处理后,将进入将用户数据写入用户数据块的前一刻。
步骤S204:存储管理器将校验码写入校验数据块、将用户数据写入用户数据块、以及在关联数据中记录用户数据块地址与校验数据块地址的对应关系,关联数据用于记录用户数据块地址与校验数据块地址的对应关系,校验数据块用于存储校验码;
关联数据可存储在存储管理器自身携带的存储空间中。关联数据块不同于校验数据块和用户数据块,关联数据块仅用于存储关联数据。
步骤S205:存储管理器返回写错误消息,并结束流程。
在本发明实施方式中,将用户数据与校验码分开存储,用户数据存储用户数据块中,校验码存储在校验数据块中,并通过在关联数据中建立用户数据对应的用户数据块地址与校验数据块对应的校验数据块地址的对应关系,从而通过用户数据块地址就能查找到校验码。使得用户数据与校验码不再需要同时存储在物理存储介质的一个逻辑块中,避免了用户数据和校验数据的存储受到物理存储介质或者操作系统的扇区分区大小的限制。当需要对数据添加校验时,直接添加即可,不需要改变现有的物理存储介质的存储空间布局,非常灵活。
请参阅图4,图4是本发明数据校验方法第二实施方式的流程图。如图所示,所述方法包括:
步骤S301:存储管理器接收将用户数据写入用户数据块的写入请求,写入请求包括用户数据以及用户数据块所对应的用户数据块地址,用户数据块用于存储用户数据;
值得注意的是:用户数据块和校验数据块的数量为多个,每一个用户数据块通过唯一用户数据块地址标识,每一个校验数据块通过唯一的校验数据块地址标识。存储管理器用于管理用户数据块和校验数据块。
步骤S302:存储管理器根据校验规则利用用户数据生成校验码;
数据校验规则不作限定,可根据实情况进行选择,例如,若校验规则为DIF校验,则生成的校验码为DIF校验码,若校验规则为奇偶校验,则生成的校验码为奇偶校验码。
步骤S303:在将用户数据写入用户数据块之前,存储管理器根据校验规则校验用户数据与校验码是否匹配,若用户数据与校验码相匹配,则步骤S305,否则进入步骤S304;
存储管理器接收用户数据后,可能需要对用户数据进行处理和转发,在进行对用户数据处理和转发的过程中,有可能会损坏用户数据,为了避免向用户数据块写入错误的用户数据,需要写用户数据之前对用户数据进行校验。步骤S203所述的在将用户数据写入用户数据块之前具体为:存储管理器已经完成用户数据的转发和处理后,将进入将用户数据写入用户数据块的前一刻。
步骤S304:存储管理器返回写错误消息,并结束流程。
存储管理器校验用户数据与校验码是否匹配的方式是根据具体数据校验规则进行,例如:数据校验规则为奇偶校验,校验码为奇数,则计算用户数据的位数,并判断是否为奇数。
步骤S305:存储管理器在关联数据中查询是否存在与用户数据块地址相对应的校验数据块地址,若找到与用户数据块地址相对应的校验数据块地址,则进入步骤S306,否则进入步骤S307;
通过关联数据记录用户数据块地址与校验数据块地址的对应关系,使用户数据块内的用户数据与校验数据块地址内的校验码存在一一对应关系,进而使得用户数据和校验码可分开存储。
步骤S306:存储管理器将校验码写入校验数据块地址所对应的校验数据块、并将用户数据写入用户数据块;
步骤S307:存储管理器申请新的校验数据块,并将校验码写入新的校验数据块、将用户数据写入用户数据块、以及在关联数据中记录用户数据块地址与新的校验数据块地址的对应关系。
在本发明实施方式中,将用户数据存储用户数据块中,将校验码存储在校验数据块中,并且在关联数据中记录用户数据块地址与校验数据块地址的对应关系。使得用户数据与校验码不再需要同时存储在物理存储介质的一个逻辑块中,避免了用户数据和校验数据的存储受到物理存储介质或者操作系统的扇区分区大小的限制。当需要对数据添加校验时,直接添加即可,不需要改变现有的物理存储介质的存储空间布局,非常灵活。
请参阅图5,图5是本发明数据校验方法第三实施方式的流程图。如图所示,所述方法包括:
步骤S401:存储管理器接收读用户数据的读请求,读请求包括用户数据所在的用户数据块的用户数据块地址;
用户数据块仅用于存储用户数据。每一个用户数据块都有唯一标识的用户数据块地址。
步骤S402:存储管理器从关联数据中获取与用户数据块地址相对应的校验数据块地址,关联数据用于记录用户数据块地址与校验数据块地址的对应关系;
校验数据块地址为校验数据块的标识,一个校验数据块对应一个唯一校验数据块地址。关联数据可存储于存储管理器自身携带的存储空间中,关联数据块仅用于存储关联数据。
步骤S403:存储管理器从校验数据块地址所对应的校验数据块读取校验码,以及从用户数据块读取用户数据;
校验码为在数据校验规则下,根据用户数据生成的,而本发明实施方式不限定具体的数据校验规则,可根据实际情况进行选择,比如:数据校验为DIF校验,则校验码为DIF校验码。
步骤S404:存储管理器根据校验规则校验用户数据与校验码是否匹配,若用户数据与校验码相匹配,则进入步骤S405,否则进入步骤S406;
若用户数据与校验码相匹配,则说明当前的读取到的用户数据为完整可靠的数据,可直接返回该用户数据。
步骤S405:存储管理器返回用户数据;
步骤S406:存储管理器返回读用户数据失败消息,并结束流程;
在本发明实施方式中,存储管理器从关联数据中获取与用户数据块地址相对应的校验数据块地址,并从用户数据块地址对应的用户数据块读取用户数据,从校验数据块地址对应的校验数据块读取校验码,以及在用户数据与校验码相匹配时,返回用户数据。其中,用户数据存储用户数据块中,校验码存储在校验数据块,使得用户数据与校验码不再需要同时存储在物理存储介质的一个逻辑块中,避免了用户数据和校验数据的存储受到物理存储介质或者操作系统的扇区分区大小的限制。当需要对数据添加校验时,直接添加即可,不需要改变现有的物理存储介质的存储空间布局,非常灵活。
请参阅图6,图6是本发明数据校验方法第四实施方式的流程图。如图所示,所述方法包括:
步骤S501:存储管理器接收读用户数据的读请求,读请求包括用户数据所在的用户数据块的用户数据块地址;
存储管理器用于管理用户数据块和校验数据块。用户数据块仅用于存储用户数据。校验数据块用于存储校验码。每一个用户数据块都有唯一标识的用户数据块地址。每一个校验数据块都有唯一标识的校验数据块地址。
步骤S502:存储管理器从关联数据中获取与用户数据块地址相对应的校验数据块地址,关联数据用于记录用户数据块地址与校验数据块地址的对应关系;
通过关联数据记录用户数据块地址与校验数据块地址的对应关系,使用户数据块内的用户数据与校验数据块地址内的校验码存在一一对应关系,进而使得用户数据和校验码可分开存储。
步骤S503:存储管理器从校验数据块地址所对应的校验数据块读取校验码,以及从用户数据块获取用户数据;
校验码为在数据校验规则下,根据用户数据生成的,而本发明实施方式不限定具体的数据校验规则,可根据实际情况进行选择。
步骤S504:在读取用户数据和校验码完成时,存储管理器根据校验规则校验用户数据与校验码是否匹配,若用户数据与校验码相匹配,则进入步骤S506,否则进入步骤S505;
存储管理器在读取用户数据完成时,对用户数据进行校验,若用户数据与校验码相匹配,则说明当前读取的用户数据为完整的数据。
若若用户数据与校验码不匹配,则说明用户数据不完整,进入步骤S506;
步骤S505:存储管理器修复用户数据,并在修复成功后,进入步骤S506,若修复失败,则进入步骤S507;
步骤S506:在返回用户数据时,存储管理器根据校验规则校验用户数据与校验码是否匹配,若用户数据与校验码相匹配,则进入步骤S508,否则进入步骤S507;
存储管理器在读取到完整的用户数据后,可能还需要经过转发等操作,才能向处理器返回用户数据。而转发用户数据的过程中,有可能损坏用户数据,因此,在向处理器返回用户数据时,需要再次对用户数据进行校验,避免返回错误的用户数据。
步骤S507:存储管理器返回读用户数据失败消息,结束流程。
步骤S508:存储管理器返回用户数据;
在本发明实施方式中,存储管理器从关联数据中获取与用户数据块地址相对应的校验数据块地址,并从用户数据块地址对应的用户数据块读取用户数据,从校验数据块地址对应的校验数据块读取校验码,以及在用户数据与校验码相匹配时,返回用户数据。其中,用户数据存储用户数据块中,校验码存储在校验数据块,使得用户数据与校验码不再需要同时存储在物理存储介质的一个逻辑块中,避免了用户数据和校验数据的存储受到物理存储介质或者操作系统的扇区分区大小的限制。当需要对数据添加校验时,直接添加即可,不需要改变现有的物理存储介质的存储空间布局,非常灵活。
请参阅图7,图7是本发明存储设备第一实施方式的结构示意图。如图所示,所述存储设备60包括接收模块601、生成模块602、校验模块603和写入模块605。
接收模块601接收接收用户数据以及将用户数据写入的用户数据块的写入请求,用户数据块用于存储用户数据。生成模块602根据校验规则利用用户数据生成校验码。校验规则不作具体限定,可为DIF校验、奇偶校验等等。校验模块603在将用户数据写入用户数据块之前,根据校验规则校验用户数据与校验码是否匹配。写入模块605用于在校验模块603校验得到用户数据与校验码相匹配时,将校验码写入校验数据块、将用户数据写入用户数据块、以及在关联数据中记录用户数据块地址与校验数据块地址的对应关系,关联数据用于记录用户数据块地址与校验数据块地址的对应关系,校验数据块用于存储校验码。
可选的,存储设备60还包括查询模块604。写入模块605包括第一写入单元6051和第二写入单元6052。
查询模块604在校验模块603校验得到用户数据与校验码相匹配时,在关联数据中查询是否存在与用户数据块地址相对应的校验数据块地址。第一写入单元6051在查询模块604在关联数据中查询到存在与用户数据块地址相对应的校验数据块地址时,将校验码写入校验数据块地址所对应的校验数据块,以及将用户数据写入用户数据块。第二写入单元6052在查询模块604在关联数据中查询到不存在与用户数据块地址相对应的校验数据块地址时,申请新的校验数据块,并将校验码写入新的校验数据块、将用户数据写入用户数据块、以及在关联数据中记录用户数据块地址与新的校验数据块校验数据块的校验数据块地址的对应关系。
可选的,存储设备还包括错误返回模块606。错误返回模块606在校验模块603校验得到用户数据与校验码相不匹配时,返回用户错误消息。
在本发明实施方式中,写入模块605将接收模块601接收的用户数据和生成模块602生成的校验码分别存储在用户数据块中和校验数据块中,并在关联数据中记录用户数据块地址与校验数据块地址的对应关系。使得用户数据与校验码不再需要同时存储在物理存储介质的一个逻辑块中,避免了用户数据和校验数据的存储受到物理存储介质或者操作系统的扇区分区大小的限制。当需要对数据添加校验时,直接添加即可,不需要改变现有的物理存储介质的存储空间布局,非常灵活。
请参阅图8,图8是本发明存储设备第二实施方式的结构示意图。如图所示,所述存储设备70包括处理器701、存储器702和总线703。存储器702包括用户数据块7021和校验数据块7022。处理器701、用户数据块7021和校验数据块7022均与总线703连接。
处理器701用于接收将用户数据写入的用户数据块703的写入请求,写入请求包括用户数据和用户数据块对应的用户数据块地址;用户数据块703用于存储用户数据;根据校验规则利用用户数据生成校验码;在将用户数据写入用户数据块之前,根据校验规则校验用户数据与校验码是否匹配;若用户数据与校验码匹配,将校验码写入校验数据块702、将用户数据写入用户数据块703、以及在关联数据中记录用户数据块地址与校验数据块地址的对应关系,关联数据用于记录用户数据块地址与校验数据块地址的对应关系,校验数据块用于存储校验码。
请参阅图9,图9是本发明存储设备第三实施方式的结构示意图。如图所示,所述存储设备80包括:接收模块801、获取模块802、读取模块803、校验模块804和数据返回模块805。
接收模块801接收读用户数据的读请求,读请求包括用户数据所在的用户数据块的用户数据块地址。获取模块802从关联数据中获取与用户数据块地址相对应的校验数据块地址,关联数据用于记录用户数据块地址与校验数据块地址的对应关系。读取模块803从校验数据块地址所对应的校验数据块读取校验码,以及从用户数据块读取用户数据。校验模块804校验根据校验规则校验用户数据与校验码是否匹配。数据返回模块805在校验模块804校验得到用户数据与校验码相匹配时,返回用户数据。
可选的,存储设备80还包括错误返回模块806。校验模块804包括第一校验单元8041、第二校验单元8042以及修复单元8043。
第一校验单元8041在读取模块803读取校验码和用户数据完成时,根据校验规则校验用户数据是否与校验码相匹配。第二校验单元8042在第一校验单元8041校验得到用户数据与校验码相匹配后,以及在进入所述数据返回单元之前,根据校验规则校验用户数据是否与校验码相匹配。数据返回模块805具体在第二校验单元8042校验得到用户数据与校验码相匹配,返回用户数据。若第二校验单元8042校验得到用户数据与校验码不相匹配时,错误返回模块806返回读取失败消息。
进一步的,若第一校验单元8041校验得到用户数据与校验码不相匹配,则修复单元8043修复用户数据。并且修复单元8043成功修复用户数据后,进入第二校验单元8042。若修复单元8043修复用户数据失败,则错误返回模块806返回读取失败消息。
在本发明实施方式中,获取模块802从关联数据中获取与用户数据块地址相对应的校验数据块地址。读取模块803从用户数据块地址对应的用户数据块读取用户数据,从校验数据块地址对应的校验数据块读取校验码,数据返回模块805在用户数据与校验码相匹配时,返回用户数据。其中,用户数据存储用户数据块中,校验码存储在校验数据块,使得用户数据与校验码不再需要同时存储在物理存储介质的一个逻辑块中,避免了用户数据和校验数据的存储受到物理存储介质或者操作系统的扇区分区大小的限制。当需要对数据添加校验时,直接添加即可,不需要改变现有的物理存储介质的存储空间布局,非常灵活。
请参阅图10,图10是本发明存储设备第四实施方式的结构示意图。如图所示,所述存储设备90包括处理器901、存储器902和总线903。存储器902包括用户数据块9021和校验数据块9022。处理器901、用户数据块9021和校验数据块9022均与总线903连接。
处理器901用于接收读用户数据的读请求,读请求包括用户数据所在的用户数据块的用户数据块地址;从关联数据中获取与用户数据块地址相对应的校验数据块地址,关联数据用于记录用户数据块地址与校验数据块地址的对应关系;从校验数据块地址所对应的校验数据块读取校验码,以及从用户数据块读取用户数据;根据校验规则校验用户数据是否与校验码相匹配;若用户数据与所述校验码相匹配,则返回用户数据。
以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (11)
1.一种数据校验方法,其特征在于,所述方法包括:
接收将用户数据写入用户数据块的写入请求,所述写入请求包括所述用户数据以及所述用户数据块所对应的用户数据块地址,所述用户数据块用于存储用户数据;
根据校验规则利用所述用户数据生成校验码;
在将所述用户数据写入所述用户数据块之前,根据所述校验规则校验所述用户数据与所述校验码是否匹配;
若所述用户数据与所述校验码匹配,则将所述校验码写入校验数据块、将所述用户数据写入用户数据块、以及在关联数据中记录所述用户数据块对应的用户数据块地址与所述校验数据块对应的校验数据块地址的对应关系,所述校验数据块用于存储所述校验码。
2.根据权利要求1所述的方法,其特征在于,所述将所述校验码写入校验数据块、将所述用户数据写入用户数据块、以及在所述关联数据中记录所述用户数据块地址与所述校验数据块地址的对应关系的步骤包括:
在所述关联数据中查询是否存在与用户数据块地址相对应的校验数据块地址;
若查询到所述校验数据块地址,则将所述校验码写入所述校验数据块地址所对应的校验数据块,并将所述用户数据写入用户数据块,若没有查询到所述校验数据块地址,则申请新的校验数据块,并将所述校验码写入所述新的校验数据块、以及在所述关联数据中记录所述用户数据块地址与所述新的校验数据块地址的对应关系。
3.一种数据校验的方法,其特征在于,所述方法包括:
接收读用户数据的读请求,所述读请求包括用户数据所在的用户数据块所对应的用户数据块地址;
从关联数据中获取与所述用户数据块地址相对应的校验数据块地址,所述关联数据用于记录用户数据块地址与校验数据块地址的对应关系;
从所述校验数据块地址所对应的校验数据块读取校验码,以及从所述用户数据块读取所述用户数据;
根据校验规则校验所述用户数据与所述校验码是否匹配;
若所述用户数据与所述校验码相匹配,则返回所述用户数据。
4.根据权利要求3所述的方法,其特征在于,所述根据校验规则校验所述用户数据与所述校验码是否匹配的步骤包括:
在读取所述用户数据和所述校验码完成时,根据所述校验规则校验所述用户数据与所述校验码是否匹配;
若所述用户数据与所述校验码相匹配,则在返回所述用户数据时,根据所述校验规则校验所述用户数据与所述校验码是否匹配。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在读取所述用户数据和所述校验码完成时,若校验得到所述用户数据与所述校验码不匹配,则修复所述用户数据,并在修复成功后,进入所述在返回所述用户数据时,根据所述校验规则校验所述用户数据与所述校验码是否匹配的步骤。
6.一种存储设备,其特征在于,包括:
接收模块,用于接收将用户数据写入用户数据块的写入请求,所述写入请求包括所述用户数据以及所述用户数据块所对应的用户数据块地址,所述用户数据块用于存储用户数据;
生成模块,用于根据校验规则利用所述用户数据生成校验码;
校验模块,在将所述用户数据写入所述用户数据块之前,根据所述校验规则校验所述用户数据与所述校验码是否匹配;
写入模块,用于在所述用户数据与所述校验码匹配时,将所述校验码写入校验数据块、将所述用户数据写入用户数据块、以及在关联数据中记录所述用户数据块的用户数据块地址与所述校验数据块的校验数据块地址的对应关系;
其中,所述校验数据块用于存储校验码。
7.根据权利要求6所述的存储设备,其特征在于,所述存储设备还包括:
查询模块,用于在所述校验模块校验得到所述用户数据与校验码相匹配时,在所述关联数据中查询是否存在与所述用户数据块地址相对应的校验数据块地址;
所述写入模块包括第一写入单元和第二写入单元;
所述第一写入单元,用于在所述查询模块在所述关联数据中查询到存在与所述用户数据块地址相对应的校验数据块地址时,将所述校验码写入所述校验数据块地址所对应的校验数据块,并将所述用户数据写入用户数据块;
第二写入单元,用于在所述查询模块在所述关联数据中查询到不存在与所述用户数据块地址相对应的校验数据块地址时,申请新的校验数据块,并将所述校验码写入所述新的校验数据块、将所述用户数据写入用户数据块、以及在所述关联数据中记录所述用户数据块地址与所述新的校验数据块的校验数据块地址的对应关系。
8.一种存储设备,其特征在于,所述存储设备包括:
接收模块,用于接收读用户数据的读请求,所述读请求包括用户数据所在的用户数据块所对应的用户数据块地址;
获取模块,用于从关联数据中获取与所述用户数据块地址相对应的校验数据块地址,所述关联数据用于记录用户数据块地址与校验数据块地址的对应关系;
读取模块,用于从所述校验数据块地址所对应的校验数据块读取校验码,以及从所述用户数据块读取所述用户数据;
校验模块,用于根据校验规则校验所述用户数据是否与所述校验码相匹配;
数据返回模块,用于在所述用户数据与所述校验码相匹配时,返回所述用户数据。
9.根据权利要求8所述存储设备,其特征在于,所述校验模块包括第一校验单元和第二校验单元;
所述第一校验单元,用于在读取所述用户数据和所述校验码完成时,根据所述校验规则校验所述用户数据与所述校验码是否匹配;
所述第二校验单元,用于在所述第一校验单元校验得到所述用户数据与校验码相匹配,并在进入所述数据返回模块之前,校验所述用户数据与所述校验码是否匹配;
所述数据返回模块具体用于在所述第二校验单元校验得到所述用户数据与所述校验码相匹配,返回所述用户数据。
10.根据权利要求9所述的存储设备,其特征在于,所述校验模块还包括修复单元;
所述修复单元用于在所述第一校验模块校验得到所述用户数据与校验码不相匹配时,修复所述用户数据。
11.一种存储系统,其特征在于,所述存储系统包括处理设备和存储设备;
所述存储设备包括存储处理器和存储器,所述存储器包括存储块,所述存储块划分有用户数据块和校验数据块,所述用户数据块用于存储用户数据,所述校验数据块用于存储校验码;
所述存储管理器接收来自处理器的将用户数据写入用户数据块的写入请求,所述写入请求包括用户数据以及所述用户数据块所对应的用户数据块地址,所述用户数据块用于存储用户数据;
所述存储管理器根据校验规则利用所述用户数据生成校验码;
在将所述用户数据写入所述用户数据块之前,所述存储管理器根据所述校验规则校验所述用户数据与所述校验码是否匹配;
若所述用户数据与所述校验码匹配,所述存储管理器将所述校验码写入校验数据块、将所述用户数据写入用户数据块、以及在关联数据中记录所述用户数据块对应的用户数据块地址与所述校验数据块对应的校验数据块地址的对应关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210544543.0A CN103019880B (zh) | 2012-12-14 | 2012-12-14 | 一种数据校验方法及存储设备、存储系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210544543.0A CN103019880B (zh) | 2012-12-14 | 2012-12-14 | 一种数据校验方法及存储设备、存储系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103019880A true CN103019880A (zh) | 2013-04-03 |
CN103019880B CN103019880B (zh) | 2016-06-29 |
Family
ID=47968510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210544543.0A Active CN103019880B (zh) | 2012-12-14 | 2012-12-14 | 一种数据校验方法及存储设备、存储系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103019880B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577275A (zh) * | 2013-10-24 | 2014-02-12 | 华为技术有限公司 | 一种数据校验的方法、设备和系统 |
CN104731672A (zh) * | 2013-12-24 | 2015-06-24 | 华为技术有限公司 | 数据存储的方法及设备 |
CN105678163A (zh) * | 2016-01-01 | 2016-06-15 | 广州亦云信息技术有限公司 | 一种数据校验方法和系统 |
CN105824713A (zh) * | 2016-03-10 | 2016-08-03 | 中国银行股份有限公司 | 一种数据校验方法及装置 |
CN107844273A (zh) * | 2017-11-01 | 2018-03-27 | 深信服科技股份有限公司 | 一种数据写入方法及装置、验证方法及装置 |
CN109189759A (zh) * | 2018-08-01 | 2019-01-11 | 华为技术有限公司 | Kv存储系统中的数据读取方法、数据查询方法、装置及设备 |
CN109545268A (zh) * | 2018-11-05 | 2019-03-29 | 西安智多晶微电子有限公司 | 一种测试ram的方法 |
CN112732163A (zh) * | 2019-10-14 | 2021-04-30 | 成都华为技术有限公司 | 一种数据校验方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6970890B1 (en) * | 2000-12-20 | 2005-11-29 | Bitmicro Networks, Inc. | Method and apparatus for data recovery |
CN1862479A (zh) * | 2006-06-19 | 2006-11-15 | 威盛电子股份有限公司 | 磁盘阵列的数据配置结构及其数据存取方法 |
CN101140807A (zh) * | 2007-04-13 | 2008-03-12 | 福州瑞芯微电子有限公司 | Bch纠错技术中的校验码写入方法及其写入装置 |
CN101517543A (zh) * | 2006-08-10 | 2009-08-26 | 鲍尔法尔有限公司 | 用于盘存储介质的纠错 |
CN101901115A (zh) * | 2010-07-23 | 2010-12-01 | 华中科技大学 | 一种磁盘阵列raid6级别的构建方法 |
-
2012
- 2012-12-14 CN CN201210544543.0A patent/CN103019880B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6970890B1 (en) * | 2000-12-20 | 2005-11-29 | Bitmicro Networks, Inc. | Method and apparatus for data recovery |
CN1862479A (zh) * | 2006-06-19 | 2006-11-15 | 威盛电子股份有限公司 | 磁盘阵列的数据配置结构及其数据存取方法 |
CN101517543A (zh) * | 2006-08-10 | 2009-08-26 | 鲍尔法尔有限公司 | 用于盘存储介质的纠错 |
CN101140807A (zh) * | 2007-04-13 | 2008-03-12 | 福州瑞芯微电子有限公司 | Bch纠错技术中的校验码写入方法及其写入装置 |
CN101901115A (zh) * | 2010-07-23 | 2010-12-01 | 华中科技大学 | 一种磁盘阵列raid6级别的构建方法 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577275A (zh) * | 2013-10-24 | 2014-02-12 | 华为技术有限公司 | 一种数据校验的方法、设备和系统 |
CN104731672B (zh) * | 2013-12-24 | 2018-06-26 | 华为技术有限公司 | 数据存储的方法及设备 |
CN104731672A (zh) * | 2013-12-24 | 2015-06-24 | 华为技术有限公司 | 数据存储的方法及设备 |
CN105678163A (zh) * | 2016-01-01 | 2016-06-15 | 广州亦云信息技术有限公司 | 一种数据校验方法和系统 |
CN105678163B (zh) * | 2016-01-01 | 2018-10-09 | 广州亦云信息技术有限公司 | 一种数据校验方法和系统 |
CN105824713A (zh) * | 2016-03-10 | 2016-08-03 | 中国银行股份有限公司 | 一种数据校验方法及装置 |
CN105824713B (zh) * | 2016-03-10 | 2019-07-16 | 中国银行股份有限公司 | 一种数据校验方法及装置 |
CN107844273A (zh) * | 2017-11-01 | 2018-03-27 | 深信服科技股份有限公司 | 一种数据写入方法及装置、验证方法及装置 |
CN107844273B (zh) * | 2017-11-01 | 2021-05-04 | 深信服科技股份有限公司 | 一种数据写入方法及装置、验证方法及装置 |
CN109189759A (zh) * | 2018-08-01 | 2019-01-11 | 华为技术有限公司 | Kv存储系统中的数据读取方法、数据查询方法、装置及设备 |
CN109189759B (zh) * | 2018-08-01 | 2021-11-19 | 华为技术有限公司 | Kv存储系统中的数据读取方法、数据查询方法、装置及设备 |
CN109545268A (zh) * | 2018-11-05 | 2019-03-29 | 西安智多晶微电子有限公司 | 一种测试ram的方法 |
CN112732163A (zh) * | 2019-10-14 | 2021-04-30 | 成都华为技术有限公司 | 一种数据校验方法和装置 |
CN112732163B (zh) * | 2019-10-14 | 2023-02-03 | 成都华为技术有限公司 | 一种数据校验方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103019880B (zh) | 2016-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103019880A (zh) | 一种数据校验方法及存储设备、存储系统 | |
US20200225861A1 (en) | Method and system for managing storage system | |
CN108733314B (zh) | 用于独立冗余阵列(raid)重建的方法、设备和计算机可读存储介质 | |
US11099955B2 (en) | Method and device for rebuilding raid | |
CN103631721A (zh) | 一种隔离内存中坏块的方法及系统 | |
CN103534688B (zh) | 数据恢复方法、存储设备和存储系统 | |
CN105706059B (zh) | 非易失性存储器中的错误校正 | |
CN111433746A (zh) | 使用故障存储设备的重建助手 | |
US9026845B2 (en) | System and method for failure protection in a storage array | |
CN105122213A (zh) | 用于数据存储系统中的错误检测和纠正的方法和装置 | |
CN104423889A (zh) | 一种多路径管理方法和系统 | |
CN105745627A (zh) | 用于非易失性存储器存储设备的地址转换 | |
CN112513804B (zh) | 一种数据处理方法及装置 | |
CN107203442B (zh) | 独立磁盘冗余阵列的重建性能的评估方法和设备 | |
CN104246708A (zh) | 针对nand闪存上数据的存储的架构 | |
US11340986B1 (en) | Host-assisted storage device error correction | |
CN110413208B (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
CN103631670B (zh) | 存储器储存装置、存储器控制器与数据处理方法 | |
CN105556477B (zh) | 与主机处理器的存储器模块通信的方法和系统 | |
TW201445306A (zh) | 磁碟陣列系統及資料處理方法 | |
CN105138281A (zh) | 一种物理磁盘的共享方法及装置 | |
JP2009064238A (ja) | メモリシステム | |
CN102890645A (zh) | 存储器储存装置、存储器控制器与数据写入方法 | |
CN108073471A (zh) | 链接的存储系统和主机系统错误校正码 | |
CN117193672B (zh) | 存储设备的数据处理方法及装置、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |