数据校验的方法、阵列控制器及硬盘与流程

文档序号:16972006发布日期:2019-02-26 18:38阅读:405来源:国知局
数据校验的方法、阵列控制器及硬盘与流程

本发明存储技术领域,尤其涉及一种数据校验的方法、阵列控制器及硬盘。



背景技术:

一般,硬盘为了保证主机读写数据的一致性和可靠性,需要对主机读写的数据进行校验。

通常在数据的末尾会有8个字节的数据保护位,用来存储数据保护信息(protectinformation,pi)。pi可以是循环冗余校验(cyclicalredundancycheck,crc)信息,在接收主机通过写输入输出(inputandoutput,i/o)传输给硬盘的数据后或者发送主机通过读i/o从硬盘读取的数据前,硬盘可以用crc信息对主机写或读的数据进行校验。

因为数据校验方式的不同,所以产生不同的数据格式,即不同的pi格式。例如,512(data)+8(pi)、4096(data)+8(pi)、4096(data)+8(pi)+56(other)等格式。以512(data)+8(pi)这种格式为例,其表示每512个字节的数据加8个字节的数据保护位,这样,硬盘在进行数据校验时,可对512字节的数据计算出crc,然后将计算出的crc与数据保护位中的crc信息比较,以此来验证数据是否正确。

目前的硬盘只支持一种数据格式的数据校验,但是,主机在下发i/o时,通常会包括多种数据格式,比如业务数据对应i/o的数据格式通常为512(data)+8(pi),而元数据对应i/o的数据格式通常为4096(data)+64(pi)。而硬盘在进行数据校验时,只能对具有其所支持的数据格式的数据进行校验,而对具有其不支持的数据格式的数据,硬盘无法校验,只能直接存储这些数据,这样无法保证数据的可靠性。



技术实现要素:

本发明实施例提供了一种数据校验的方法、阵列控制器及硬盘,能够解决硬盘对其不支持的数据格式的数据无法校验,只能直接存储这些数据,无法保证数据的可靠性的问题。

第一方面,本发明实施例提供了一种数据校验的方法,用于阵列控制器,阵列控制器连接有多块硬盘,该方法包括:

接收输入输出i/o请求;

确定i/o请求所访问的目标数据的数据格式;

根据数据格式确定数据格式对应的格式标识;

在i/o请求中添加格式标识;

将添加格式标识的i/o请求发送至硬盘,以使硬盘根据格式标识对目标数据进行校验。

本发明实施例中,阵列控制器在接收到i/o请求后,先确定出i/o请求所访问的目标数据的数据格式,然后将数据格式对应的格式标识添加至i/o请求中,再将添加格式标识的i/o请求发送给硬盘,使硬盘可以根据i/o请求中格式标识对目标数据进行校验。本发明实施例中,阵列控制器在i/o请求中添加了格式标识,所以硬盘在接收到i/o请求后,可以通过i/o请求中格式标识确定出对目标数据进行校验的方式,进而硬盘可以对目标数据进行校验,由此硬盘可以基于i/o请求中的格式标识,确定出对不同数据格式的数据的数据校验方式,从而实现对不同数据格式的数据的校验,提高了主机读写数据时的一致性和可靠性。同时,本发明实施例中硬盘可以支持多种数据格式的数据进行校验,充分发挥硬盘芯片的校验能力,提升硬盘的易用性。

结合第一方面,在第一方面的第一种可能的实施方式中,在i/o请求中添加格式标识包括:

将格式标识添加至i/o请求的预留字段。

本实施例的实施方式中,在i/o请求的预留字段中添加格式标识,避免了额外增加添加存储格式标识的字段,简化数据格式。

结合第一方面或上述可能的实施方式,在第一方面的第二种可能的实施方式中,还包括:

预设数据格式与格式标识的对应关系;

根据数据格式确定数据格式对应的格式标识,包括:

根据数据格式与格式标识的对应关系确定数据格式对应的格式标识。

本实施例的实施方式中,预设数据格式与格式标识之间的对应关系,使阵列控制器能够直接通过预设的对应关系来确定格式标识,保证格式标识的准确性,实现简单、方便。

第二方面,本发明实施例提供了一种数据校验的方法,用于硬盘,硬盘与阵列控制器连接,硬盘被格式化为支持至少两种数据格式的数据校验,该方法包括:

接收阵列控制器发送的输入输出i/o请求,i/o请求包括目标数据的数据格式所对应的格式标识,目标数据为i/o请求所访问的数据;

根据格式标识确定目标数据的数据校验方式;

按照所确定的数据校验方式对目标数据进行校验。

本发明实施例中,由于硬盘被格式化为支持至少两种数据格式的数据校验,所以硬盘在接收到阵列控制器发送i/o请求后,可以通过i/o请求中的格式标识确定出对目标数据的数据校验方式,进而按照确定的数据校验方式对目标数据进行校验,由此硬盘可以基于i/o请求中的格式标识,确定出对不同数据格式的数据的校验方式,从而实现对不同数据格式的数据的校验,提高了主机读写数据时的一致性和可靠性。同时,本发明实施例中硬盘可以支持多种数据格式的数据进行校验,充分发挥硬盘芯片的校验能力,提升校验的易用性。

结合第二方面,在第二方面的第一种可能的实施方式中,i/o请求的预留字段包括格式标识。

本实施例的实施方式中,在i/o请求的预留字段中添加格式标识,避免了额外增加添加存储格式标识的字段,简化数据格式。

结合第二方面或上述可能的实施方式,在第二方面的第二种可能的实施方式中,当i/o请求为读请求时,判断读请求对应的地址处是否已经写入数据;

当读请求对应的地址处没有写入数据时,根据读请求的数据格式确定地址中的数据地址及校验地址;

在数据地址处写入0,在校验地址处写入f。

本发明实施例中,在读请求对应的地址处没有写入数据时,硬盘在确定数据地址中写入0,在确定的校验地址中写入f,如此可以保证硬盘对读取的目标数据校验时,目标数据的数据格式与格式标识对应的数据格式,从而使硬盘能够正确的进行数据校验,避免出现校验错误。

结合第二方面或上述可能的实施方式,在第二方面的第三种可能的实施方式中,还包括:

接收格式化命令,格式化命令包括至少两种数据格式,至少两种数据格式中每种数据格式定义了具有这种数据格式的数据单元所包括的数据字节数及校验字节数,且每种数据格式对应的数据单元所包括的数据字节数及校验字节数之和互为整倍数关系;

将硬盘以数据字节数及校验字节数之和最大的数据单元对应的数据格式进行格式化。

本发明实施例中,通过对格式化命令的扩展,使硬盘格式化后可以支持存储至少两种数据格式的数据,进而可以对至少两种数据格式的数据进行校验,提高了主机读写数据时的一致性和可靠性。

第三方面,本发明实施例提供了一种阵列控制器,阵列控制器连接有多块硬盘,阵列控制器包括:

接收单元,用于接收输入输出i/o请求;

确定单元,用于确定i/o请求所访问的目标数据的数据格式;

确定单元还用于根据数据格式确定数据格式对应的格式标识;

添加单元,用于在i/o请求中添加格式标识;

发送单元,用于将添加格式标识的i/o请求发送至硬盘,以使硬盘根据格式标识对目标数据进行校验。

结合第三方面,在第三方面的第一种可能的实施方式中,添加单元具体用于将标识添加至i/o请求的预留字段。

结合第三方面或上述可能的实施方式,在第三方面的第二种可能的实施方式中,还包括:

预设单元,用于预设数据格式与格式标识的对应关系;

确定单元具体用于根据数据格式与格式标识的对应关系确定数据格式对应的格式标识。

第四方面,本发明实施例提供了一种硬盘,硬盘与阵列控制器连接,硬盘被格式化为支持至少两种数据格式的数据校验,硬盘包括:

接收单元,用于接收阵列控制器发送的输入输出i/o请求,i/o请求包括目标数据的数据格式所对应的格式标识,目标数据为i/o请求所访问的数据;

确定单元,用于根据格式标识确定目标数据的数据校验方式;

校验单元,用于按照所确定的数据校验方式对目标数据进行校验。

结合第四方面,在第四方面的第一种可能的实施方式中,i/o请求的预留字段包括格式标识。

结合第四方面或上述可能的实施方式,在第四方面的第二种可能的实施方式中,还包括:

判断单元,用于当i/o请求为读请求时,判断读请求对应的地址处是否已经写入数据;

确定单元还用于当读请求对应的地址处没有写入数据时,根据读请求的数据格式确定地址中的数据地址及校验地址;

写入单元,用于在数据地址处写入0,在校验地址处写入f。

结合第四方面或上述可能的实施方式,在第四方面的第三种可能的实施方式中,接收单元还用于接收格式化命令,格式化命令包括至少两种数据格式,至少两种数据格式中每种数据格式定义了具有这种数据格式的数据单元所包括的数据字节数及校验字节数,且每种数据格式对应的数据单元所包括的数据字节数及校验字节数之和互为整倍数关系;

硬盘还包括:

格式化单元,用于将硬盘以数据字节数及校验字节数之和最大的数据单元对应的数据格式进行格式化。

第五方面,本发明实施例提供一种数据校验的系统,包括如第三方面所述的阵列控制器和如第四方面所述的硬盘。

第六方面,本发明实施例提供一种阵列控制设备,包括:

存储器、处理器、通信接口和总线;

存储器、处理器和通信接口通过总线连接并完成相互间的通信;

存储器用于存储程序代码;

处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行如第一方面所述的方法。

第七方面,本发明实施例提供一种硬盘,包括:

存储器、处理器、通信接口和总线;

存储器、处理器和通信接口通过总线连接并完成相互间的通信;

存储器用于存储程序代码;

处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行如第二方面所述的方法。

第八方面,本发明实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行第一方面所述的方法。

第九方面,本发明实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行第二方面所述的方法。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。

图1是根据本发明实施例提供的一种系统架构示意图;

图2是根据本发明实施例提供的又一种系统架构示意图;

图3是根据本发明一实施例提供的数据校验的方法的示意性流程图;

图4是根据本发明一实施例提供的硬盘格式化时划分数据单元的示意图;

图5是根据本发明一实施例提供的硬盘格式化的方法的示意性流程图;

图6是根据本发明一实施例提供的格式化命令中各字段的示意图;

图7是根据本发明一实施例提供的读写命令中各字段的示意图;

图8是根据本发明一实施例提供的阵列控制器的示意性框图;

图9是根据本发明又一实施例提供的阵列控制器的示意性框图;

图10是根据本发明一实施例提供的硬盘的示意性框图;

图11是根据本发明又一个或多个实施例提供的硬盘的示意性框图;

图12是根据本发明一实施例提供的阵列控制设备的示意性框图;

图13是根据本发明另一实施例的硬盘的示意性框图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

本发明实施例适用于主机访问硬盘阵列中数据时,硬盘阵列中硬盘对主机读写数据进行校验的场景。如图1所示,为本发明实施例的适用的一种系统架构示意图。图1中,主机11与阵列控制器12连接,主机11可以通过接口卡与阵列控制器12之间进行数据传输,阵列控制器12与硬盘阵列13连接,硬盘阵列13中包括多块硬盘14,多块硬盘14组合成大容量的硬盘组,阵列控制器12可以对主机11访问硬盘14的数据进行处理,以及对硬盘14进行管理。如图2所示,为本发明实施例的适用的又一种系统架构示意图。图2中,主机11与硬盘阵列15连接,主机11可以通过硬盘阵列15的接口卡与硬盘阵列15传输数据,硬盘阵列15包括阵列控制器12和多块硬盘14,多块硬盘14组合成大容量的硬盘组,阵列控制器12可以对主机11访问硬盘14的数据进行处理,以及对硬盘14进行管理。本发明实施例中,硬盘14被格式化为支持至少两种数据格式(格式化过程请参见图4和图5中的描述),例如512(data)+8(pi)、4096(data)+8(pi),且硬盘14可以对具有每种数据格式的数据进行校验。如此即使主机11下发的i/o包括多种数据格式,硬盘14也可以针对不同数据格式采用不同的的数据校验方式,实现对不同数据格式的数据的校验,提高了主机11读写数据时的一致性和可靠性。

本发明一实施例提供了一种数据校验的方法,可以用于图1或图2所示的系统架构中,由于本发明实施例所述的方法用于图1或图2所示的系统架构时数据处理过程相同,所以本发明实施例以用于图1所示系统架构为例进行说明,如图3所示,该方法包括以下步骤。

201,阵列控制器12接收主机11下发的i/o请求。

其中,当主机11需要访问硬盘14时,向硬盘14阵列下发i/o请求。阵列控制器12可以通过接口卡接收主机11下发的i/o请求,i/o请求可以为读请求或写请求。读请求是指主机11读取硬盘14中存储的数据,写请求是指主机11向硬盘14写入数据。

202,阵列控制器12确定i/o请求所访问的目标数据的数据格式。

其中,阵列控制器12在接收i/o请求后,可以确定出i/o请求所访问的目标数据的数据格式。本发明实施例中,将i/o请求所访问的数据确定为目标数据,即当i/o请求为读请求时,i/o请求所要读取的数据为目标数据;当i/o请求为写请求时,i/o请求所要写入的数据为目标数据。在i/o请求中会包括目标数据的信息,例如地址信息和数据长度等,阵列控制器12可以基于地址信息确定出目标数据的数据格式。

需要说明的是,硬盘14阵列可以将各硬盘14的存储空间组合成一个大容量的硬盘组,然后基于硬盘组的整体空间,划分出多个逻辑单元(logicalunit,lu),每个逻辑单元的数据格式可以不同。主机11在下发i/o请求时,i/o请求中包括所要访问目标数据对应的逻辑单元号lun、地址和数据长度等信息,如此阵列控制器12在接收i/o请求后,可以根据i/o请求中包括的lun以及各lun与数据格式之间的映射关系确定出目标数据的数据格式。i/o请求为写请求时,阵列控制器12在接收i/o请求时,还需要为i/o请求添加校验信息。

203,阵列控制器12根据数据格式确定数据格式对应的格式标识。

其中,格式标识用于唯一标识数据格式,不同的数据格式对应不同的格式标识。阵列控制器12确定出格式标识后,即可通过格式标识来标识目标数据的数据格式。

本发明实施例的一种可选的实施方式中,阵列控制器12中可以预先设置数据格式与格式标识的对应关系。如此本步骤在执行时,阵列控制器12可以根据数据格式与格式标识的对应关系来确定目标数据的数据格式对应的格式标识。

格式标识可以为数字、字母等多种形式,或多种形式的组合。

例如,本发明实施例中可以预先设置数据格式与格式标识的对应关系为:数据格式为512(data)+8(pi)时,对应的格式标识为1;数据格式为4096(data)+64(pi)时,对应的格式标识为2。此时,如果阵列控制器12确定目标数据的数据格式为512(data)+8(pi),则根据对应关系可以确定目标数据的数据格式对应的格式标识为1。

204,阵列控制器12在i/o请求中添加格式标识。

其中,阵列控制器12在确定出格式标识后,将格式标识添加至i/o请求中,以便于i/o请求发送给硬盘14后,硬盘14可以通过格式标识确定出目标数据的数据格式。

本发明实施例中,阵列控制器12在接收主机11的i/o请求,需要基于i/o请求中目标数据对应的信息确定出对应的lun和lu地址信息,并对i/o请求进行缓存,然后基于阵列控制器12中lu的地址与硬盘逻辑地址之间的映射关系查找出目标数据对应的硬盘14和对应的硬盘逻辑地址,再将i/o请求发送给对应的硬盘14。

本发明实施例的一种可选的实施方式中,阵列控制器12可以将格式标识添加至i/o请求的预留字段。在i/o请求的预留字段中添加格式标识,避免了额外增加添加存储格式标识的字段,简化数据格式。

205,阵列控制器12将添加格式标识的i/o请求发送至硬盘14。

其中,阵列控制器12将添加格式标识的i/o请求发送至硬盘14,以使硬盘14根据格式标识对目标数据进行校验。

本发明实施例中,阵列控制器12与硬盘14之间一般通过传输协议进行数据传输,例如,通过非易失性存储器标准(non-volatilememoryexpress,nvme),所以阵列控制器12在确定出目标数据对应的硬盘14和硬盘逻辑地址后,需要将i/o请求按照传输协议封装成读写命令后再发送给硬盘14,封装的读写命令中包括阵列控制器12确定的格式标识和目标数据对应的硬盘逻辑地址。

206,硬盘14接收阵列控制器12发送的i/o请求后,根据格式标识确定目标数据的数据校验方式。

本发明实施例的一种可选的实施方式中,在硬盘14中可以预先设置数据格式与格式标识的对应关系。如此硬盘14可以根据对应关系来确定格式标识对应目标数据的数据格式。

例如,本发明实施例中在硬盘14中预先设置数据格式与格式标识的对应关系为:数据格式为512(data)+8(pi)时,对应的格式标识为1;数据格式为4096(data)+64(pi)时,对应的格式标识为2。此时,如果硬盘14确定i/o请求中格式标识为1,则根据对应关系可以确定目标数据的数据格式为512(data)+8(pi),进而可以确定出对目标数据的数据校验方式为数据格式为512(data)+8(pi)的数据校验方式。

207,硬盘14按照所确定的数据校验方式对目标数据进行校验。

其中,硬盘14在确定出目标数据的数据校验方式后,既实现可以对目标数据进行校验。

需要说明的是,硬盘14接收的i/o请求中包括了目标数据对应的硬盘逻辑地址,硬盘14根据硬盘逻辑地址和物理地址的映射关系可以确定出目标数据的物理地址。当i/o请求为读请求时,硬盘14通过目标数据的物理地址可以读取出目标数据和目标数据的校验信息,然后对目标数据进行校验。当i/o请求为写请求时,i/o请求中还包括写入硬盘14的目标数据和校验信息,硬盘14需要先对目标数据先进行校验再执行写入操作。

具体校验过程可以为:基于目标数据的数据字节计算出校验信息,例如crc,然后将计算出的校验信息与目标数据的校验字节中校验信息进行比较,两者一致则校验成功,两者不一致则校验失败。

本发明实施例中,阵列控制器12在接收到i/o请求后,先确定出i/o请求所访问的目标数据的数据格式,然后将数据格式对应的格式标识添加至i/o请求中,再将添加格式标识的i/o请求发送给硬盘14;硬盘14在接收到阵列控制器12发送i/o请求后,可以通过i/o请求中的格式标识确定出对目标数据的数据校验方式,进而按照确定的数据校验方式对目标数据进行校验从而实现对不同数据格式的数据的校验,提高了主机11读写数据时的一致性和可靠性,并且充分发挥硬盘芯片的校验能力,提升硬盘14的易用性。

本发明实施例中,由于硬盘14支持至少两种数据格式的数据校验,所以才可以对不同数据格式的数据进行校验,所以需要先对硬盘14进行格式化,使硬盘14支持至少两种数据格式的数据校验。

在硬盘14格式化时,可以根据格式化命令中的数据格式对硬盘14存储空间存储数据的方式进行配置。每种数据格式会定义每种数据格式对应的数据单元,所述数据单元表示i/o请求中所请求访问的数据最小字节数,且i/o请求中所请求访问的数据是该数据单元的整数倍。每个数据单元包括数据字节数和校验字节数。例如,512(data)+8(pi)的数据格式定义的数据单元为520个字节,数据字节数为512个,校验字节数为8个。如果格式化命令中定义的数据格式为512(data)+8(pi),则硬盘14会将硬盘14的存储空间以520字节为单位进行划分,在每个520字节中,前512个字节用于存储数据,后面8个字节用于存储校验码。

本发明实施例中,格式化命令中可以包括至少两种数据格式,每种数据格式定义了具有这种数据格式的数据单元所包括的数据字节数和校验字节数,可以使硬盘14将存储空间按照格式化命令中的数据格式进行划分。

需要说明的是,格式化命令中每种数据格式定义了每个数据单元所包括数据字节数及校验字节数,如果硬盘14能够支持存储不同数据格式的数据,则硬盘14所支持的多种数据格式的数据单元的数据字节和校验字节之和为整数倍关系,所以格式化命令中各数据格式所定义的数据单元所包括的数据字节数及校验字节数之和需要互为整倍数关系。如此硬盘14可以按照数据单元所包括的数据字节数及校验字节数之和最大的数据单元进行格式化,格式化后的数据单元也可以支持格式化命令中其他数据格式的数据存储和校验,从而实现硬盘14对混合数据格式的校验。

例如,如图4所示,以格式化命令中包括512(data)+8(pi)和4096(data)+64(pi)的两种数据格式,4096(data)+64(pi)的数据字节和校验字节之和为4160,为512(data)+8(pi)的数据字节和校验字节之和的8倍。此时,硬盘14对存储空间划分时按照4096(data)+64(pi)的数据单元进行划分,划分后数据单元如图4中未存储数据的硬盘存储空间所示,每个数据单元包括4160字节。在硬盘14写入数据时,如果写入的数据为4096(data)+64(pi)的数据格式,则硬盘14可以按照图4中存储数据的硬盘存储空间中第一行数据单元所示的方式存储数据;如果写入的数据为512(data)+8(pi)的数据格式,则硬盘14可以按照图4中存储数据的硬盘存储空间中第二行数据单元所示的方式存储数据。如此硬盘14划分的数据单元可以同时支持512(data)+8(pi)和4096(data)+64(pi)的数据格式的数据存储,也可以同时支持512(data)+8(pi)和4096(data)+64(pi)的两种数据格式的混合数据校验。

需要说明的是,在图4中所示存储数据的硬盘存储空间中,第一行数据单元和第二行所示数据单元中以示意的方式表示出数据单元存储数据时各字节的分配方式,而不表示各字节所占对应数据单元的空间比例和大小。

格式化命令下发到硬盘14后,针对格式化命令中的至少两种数据格式,硬盘14可以在接收到格式化命令后,基于格式化命令所包括数据格式的数据单元中各数据单元的数据字节和校验字节之和是否为整数倍关系,来决策是否能够同时支持,如果能够支持则可以返回成功,如果不支持则可以返回“invalidformat:非法格式”。

所以作为本发明实施例的一种可选的实施方式,如图5所示,本发明实施例的数据校验的方法还可以包括以下过程。

208,硬盘14接收格式化命令。

其中,格式化命令可以包括至少两种数据格式,数据格式的结构如上文所述,在此不再赘述。

209,硬盘14判断至少两种数据格式的数据单元中各数据单元的数据字节和校验字节之和是否为整数倍关系。

210,当至少两种数据格式的数据单元中各数据单元的数据字节和校验字节之和为整数倍关系时,将硬盘14以数据字节数及校验字节数之和最大的数据单元进行格式化。

本发明实施例中,为了使硬盘14能够格式化为支持存储两种以上数据格式的数据,可以对硬盘14格式化命令进行改进,在原格式化命令的基础上,自定义了两个预留字段,分别用于表示格式化命令中是否包括其他额外的数据格式,以及格式化命令中额外的数据格式的标识。如图6所示,为阵列控制器12通过nvme协议发送给硬盘14的格式化命令时,改进后格式化命令中各字段的含义。在图6中,字节0-11为格式换命令中的原有字段,字节12-16为自定义的预留字段。原格式化命令的预留字段中字节12被自定义为albas,表示格式化命令中是否额外设置数据格式,即硬盘14格式化后除了支持原数据格式外,是否还可以支持其他数据格式。字节12的值可以根据实际应用场景设置,例如,设置为0或1,0表示格式化命令中不包括其他额外的数据格式,1表示格式化命令包括其他额外的数据格式原格式化命令的预留字段中字节13-16被自定义为albaf,表示额外的数据格式的标识,即硬盘14除了支持原数据格式外,还可以支持的额外数据格式,字节13-16的值可以为数据格式对应的目标逻辑块地址格式(logicblockaddressformat,lbaf)格式名称。在图6中,字节0-3的lbaf表示格式化命令中原数据格式,例如512(data)+8(pi)或4096(data)+64(pi)等等;字节4的mset表示元数据设置;字节5-7的pi表示数据保护信息设置;字节8的pil表示保护信息位置设置;字节9-11的ses表示安全擦除信息设置;字节17-31的reserve表示预留字段。

需要说明的是,数据格式不同,即为数据中校验位不同,即为pi格式不同,而pi格式与lbaf相对应,所以确定了lbaf即确定了pi格式,进而确定了数据格式。所以在格式化命令中可以通过lbaf来确定数据格式。

本发明实施例中,通过在格式化命令增加至少一种数据格式,这样,硬盘14在根据所述格式化命令进行格式化时,可以将硬盘14格式化为支持存储至少两种数据格式的数据,并可以实现对不同格式的数据的校验。

本发明实施例的一种可选的实施方式中,步骤104中在i/o请求中添加格式标识时,可以将格式标识添加至预留字段中,此时可以将格式标识添加至传输协议规定的读写命令的预留字段中。

具体的,以阵列控制器12与硬盘14之间传输协议为nvme协议为例,对i/o请求进行nvme封装成读写命令时,通过预留字段来存储格式标识。

例如,如图7所示,对原读写命令格式中dword12的预留字段进行自定义,使用原预留字段中的4位来描述格式标识。

如图7所示,字段位置dword12的字段中,0-15位和20-31位为原读写命令的原有字段,16-19位为自定义的预留字段。其中,第31位中lr表示限制重试;第30位中fua表示强制单元访问;第26-29位中prinfo表示保护信息域操作信息,用来描述pi行为;第00-15位中nlb表示逻辑块的数量;第20-25位中reserved表示预留字段。第16-19位中lbaformat表示格式标识,例如,设置1表示数据格式为512(data)+8(pi)对应的格式标识,则目标数据的数据格式为512(data)+8(pi)时,扩展字段lbaformat的值为1。

需要说明的是,由于阵列控制器12可以接收到i/o请求后需要进行多次处理,为了避免在处理过程中因失误等原因改变目标数据的数据格式,所以阵列控制器12可以接收到i/o请求时先确定出目标数据的数据格式,将确定的数据格式添加至预设标记中,当阵列控制器12对i/o请求进行协议封装时,再通过预设标记中的数据格式来确定格式标识,并将格式标识添加至预留字段中。例如,可以通过预设ctrlflag标识来存储目标数据的数据格式。

本发明实施例的一种可选的实施方式中,在i/o请求可以为读请求时,可能会存在未写先读的情况,即硬盘14中读请求所对应地址未写入数据,所以硬盘14需要在读取读请求对应地址的数据之前,判断读取读请求对应地址是否写入了数据。

此时在硬盘14接收阵列控制器12发送的i/o请求后,本发明实施例所示的方法还可以包括以下过程。

211,当i/o请求为读请求时,硬盘14判断读请求对应的地址处是否已经写入数据.

212,当读请求对应的地址处没有写入数据时,硬盘14根据读请求的数据格式确定地址中的数据地址及校验地址.

213,硬盘14在数据地址处写入0,在校验地址处写入f。

其中,在硬盘14格式化后,并不一定所有的存储空间均有数据写入,所以当i/o请求为读请求时,硬盘14可以判断一下读请求对应的地址处是否已经写入数据。如果读命令对应地址写入了数据,则可以执行正常处理流程,即数据读取和数据校验的流程。如果读命令对应地址未写入数据,则硬盘14可以先根据读请求的数据格式确定地址中的数据地址及校验地址,然后在数据地址处写入0,在校验地址处写入f。

本发明实施例中,在读请求对应的地址处没有写入数据时,硬盘14在确定数据地址中写入0,在确定的校验地址中写入f,如此可以保证硬盘14对读取的目标数据校验时,目标数据的数据格式与格式标识对应的数据格式一致,从而使硬盘14能够正确的进行数据校验,避免出现校验错误或无法校验的情况。

图8是根据本发明一实施例提供的阵列控制器300的示意性框图。阵列控制器300连接有多块硬盘,如图8所示,该阵列控制器300包括:

接收单元301,用于接收输入输出i/o请求。

其中,接收单元301在本步骤执行内容与图3所示的步骤201中所述内容相同,在此不再赘述。

确定单元302,用于确定i/o请求所访问的目标数据的数据格式。

其中,确定单元302在本步骤执行内容与图3所示的步骤202中所述内容相同,在此不再赘述。

确定单元302还用于根据数据格式确定数据格式对应的格式标识。

其中,确定单元302在本步骤执行内容与图3所示的步骤203中所述内容相同,在此不再赘述。

添加单元303,用于在i/o请求中添加格式标识。

其中,添加单元303在本步骤执行内容与图3所示的步骤204中所述内容相同,在此不再赘述。

发送单元304,用于将添加格式标识的i/o请求发送至硬盘,以使硬盘根据格式标识对目标数据进行校验。

其中,发送单元304在本步骤执行内容与图3所示的步骤205中所述内容相同,在此不再赘述。

本发明实施例中,阵列控制器300在接收到i/o请求后,先确定出i/o请求所访问的目标数据的数据格式,然后将数据格式对应的格式标识添加至i/o请求中,再将添加格式标识的i/o请求发送给硬盘14,使硬盘14可以根据i/o请求中格式标识对目标数据进行校验。本发明实施例中,阵列控制器300在i/o请求中添加了格式标识,所以硬盘14在接收到i/o请求后,可以通过i/o请求中格式标识确定出对目标数据进行校验的方式,进而硬盘14可以对目标数据进行校验,由此硬盘14可以基于i/o请求中的格式标识,确定出对不同数据格式的数据的数据校验方式,从而实现对不同数据格式的数据的校验,提高了主机读写数据时的一致性和可靠性。同时,本发明实施例中硬盘14可以支持多种数据格式的数据进行校验,充分发挥硬盘芯片的校验能力,提升硬盘的易用性。

可以理解的是,添加单元303具体用于将格式标识添加至i/o请求的预留字段。

其中,以阵列控制器300与硬盘之间传输协议为nvme协议为例,对i/o请求进行nvme封装成读写命令时,通过预留字段来存储格式标识。例如,如图7所示,对原读写命令格式中dword12的预留字段进行自定义,使用原预留字段中的4位来描述格式标识,具体dword12的内容参见如上文中对图7的解释,在此不再赘述。

需要说明的是,由于阵列控制器300可以接收到i/o请求后需要进行多次处理,为了避免在处理过程中因失误等原因改变目标数据的数据格式,所以阵列控制器12可以接收到i/o请求时先确定出目标数据的数据格式,将确定的数据格式添加至预设标记中,当阵列控制器300对i/o请求进行协议封装时,再通过预设标记中的数据格式来确定格式标识,并将格式标识添加至预留字段中。例如,可以通过预设ctrlflag标识来存储目标数据的数据格式。

图9为根据本发明又一实施例提供的阵列控制器300的示意性框图。

可以理解的是,如图9所示,阵列控制器300还可以包括:

预设单元305,用于预设数据格式与格式标识的对应关系;

确定单元302具体用于根据数据格式与格式标识的对应关系确定数据格式对应的格式标识。

其中,预设单元305中可以预先设置数据格式与格式标识的对应关系。如此确定单元302可以根据数据格式与格式标识的对应关系来确定目标数据的数据格式对应的格式标识。

格式标识可以为数字、字母等多种形式,或多种形式的组合。

例如,本发明实施例中预设单元305可以预先设置数据格式与格式标识的对应关系为:数据格式为512(data)+8(pi)时,对应的格式标识为1;数据格式为4096(data)+64(pi)时,对应的格式标识为2。此时,如果确定单元302确定目标数据的数据格式为512(data)+8(pi),则根据对应关系可以确定目标数据的数据格式对应的格式标识为1。

根据本发明实施例的阵列控制器300,可对应于根据本发明实施例的数据校验的方法中的执行主体,并且阵列控制器300中的各个模块的上述和其它操作和/或功能分别为了实现图3至图7所示实施例中阵列控制器12执行的各个方法的相应流程,为了简洁,在此不再赘述。

图10是根据本发明一实施例提供的硬盘400的示意性框图。硬盘400与阵列控制器连接,硬盘400被格式化为支持存储至少两种数据格式的数据,如图10所示,该硬盘400包括:

接收单元401,用于接收阵列控制器发送的输入输出i/o请求,i/o请求包括目标数据的数据格式所对应的格式标识,目标数据为i/o请求所访问的数据。

确定单元402,用于根据格式标识确定目标数据的数据校验方式。

其中,接收单元401和确定单元402执行内容与图3所示的步骤206中所述内容相同,在此不再赘述。

校验单元403,用于按照所确定的数据校验方式对目标数据进行校验。

其中,校验单元403在本步骤执行内容与图3所示的步骤207中所述内容相同,在此不再赘述。

本发明实施例中,由于硬盘400被格式化为支持存储至少两种数据格式的数据,所以硬盘400在接收到阵列控制器12发送i/o请求后,可以通过i/o请求中的格式标识确定出对目标数据的数据校验方式,进而按照确定的数据校验方式对目标数据进行校验,由此硬盘400可以基于i/o请求中的格式标识确定出对不同数据格式的数据的数据校验方式,从而实现对不同数据格式的数据的校验,提高了主机读写数据时的一致性和可靠性。同时,本发明实施例中硬盘400可以支持多种数据格式的数据进行校验,充分发挥硬盘400芯片的校验能力,提升校验的易用性。

可以理解的是,i/o请求的预留字段包括格式标识。

其中,i/o请求的预留字段包括格式标识的方式可以如图7所示,具体内容参见如上文中对图7的解释,在此不再赘述。

图11为根据本发明另一各或多个实施例提供的硬盘400的示意性框图。

可以理解的是,如图11所示,硬盘400还可以包括:

判断单元404,用于当i/o请求为读请求时,判断读请求对应的地址处是否已经写入数据。

其中,判断单元404在本步骤执行内容与步骤211中所述内容相同,在此不再赘述。

确定单元402还用于当读请求对应的地址处没有写入数据时,根据读请求的数据格式确定地址中的数据地址及校验地址.

其中,确定单元402在本步骤执行内容与步骤212中所述内容相同,在此不再赘述。

写入单元405,用于在数据地址处写入0,在校验地址处写入f。

其中,写入单元405在本步骤执行内容与步骤213中所述内容相同,在此不再赘述。

可以理解的是,接收单元401还用于接收格式化命令,格式化命令包括至少两种数据格式,每种数据格式定义了每种数据单元所包括数据字节数及校验字节数,且每种数据单元所包括的数据字节数及校验字节数之和互为整倍数关系。

其中,接收单元401在本步骤执行内容与图5所示步骤208中所述内容相同,在此不再赘述。

如图11所示,硬盘400还可以包括:

格式化单元406,用于将硬盘以数据字节数及校验字节数之和最大的数据单元进行格式化。

其中,格式化单元406在本步骤执行内容与图5所示步骤209和210中所述内容相同,在此不再赘述。

根据本发明实施例的硬盘400,可对应于根据本发明实施例的数据校验的方法中的执行主体,并且硬盘400中的各个模块的上述和其它操作和/或功能分别为了实现图2至图7所示实施例中硬盘14执行的各个方法的相应流程,为了简洁,在此不再赘述。

图12是根据本发明一实施例的阵列控制设备500的示意性框图。阵列控制设备500连接有多块硬盘,如图12所示,阵列控制设备500包括处理器501、存储器502和通信接口503,存储器502用于存储可执行的程序代码,处理器501通过读取存储器502中存储的可执行程序代码来运行与可执行程序代码对应的程序,通信接口503用于与外部设备通信,阵列控制设备500还可以包括总线504,总线504用于连接处理器501、存储器502和通信接口503,使处理器501、存储器502和通信接口503通过总线504进行相互通信。

根据本发明实施例的阵列控制设备500,可对应于根据本发明实施例的数据校验的方法中的执行主体,并且阵列控制设备500中的各个模块的上述和其它操作和/或功能分别为了实现图2至图7中阵列控制器12执行的各个方法的相应流程,为了简洁,在此不再赘述。

图13是根据本发明另一实施例的硬盘600的示意性框图。硬盘600与阵列控制器连接,硬盘600被格式化为支持存储至少两种数据格式的数据,如图13所示,硬盘600包括处理器601、存储器602和通信接口603,存储器602用于存储可执行的程序代码,处理器601通过读取存储器602中存储的可执行程序代码来运行与可执行程序代码对应的程序,通信接口603用于与外部设备通信,硬盘600还可以包括总线604,总线604用于连接处理器601、存储器602和通信接口603,使处理器601、存储器602和通信接口603通过总线604进行相互通信。

根据本发明实施例的硬盘600,可对应于根据本发明实施例的数据校验的方法中的执行主体,并且硬盘600中的各个模块的上述和其它操作和/或功能分别为了实现图2至图7中硬盘14执行的各个方法的相应流程,为了简洁,在此不再赘述。

本发明一个实施例提供了一种数据校验的系统,包括如图8或图9所示的阵列控制器300和如图10或图11所示的硬盘400。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘(olidstatedisk,ssd))等。

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