CN104182701A - 一种阵列控制器、阵列和数据处理方法 - Google Patents
一种阵列控制器、阵列和数据处理方法 Download PDFInfo
- Publication number
- CN104182701A CN104182701A CN201410404926.7A CN201410404926A CN104182701A CN 104182701 A CN104182701 A CN 104182701A CN 201410404926 A CN201410404926 A CN 201410404926A CN 104182701 A CN104182701 A CN 104182701A
- Authority
- CN
- China
- Prior art keywords
- data
- control unit
- array control
- thick lun
- read
- 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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明涉及数据处理技术领域,尤其涉及阵列控制器、阵列和数据处理方法,用以解决现有采用胖逻辑单元号thick LUN技术的阵列,若采用数据完整性保证区域DIF技术,为避免用户主机访问未写入的数据区域时发生错误,通过额外的数据写入操作清除残留数据,造成额外的IO写入,时间开销大的问题。本发明实施例提供的阵列控制器,包括:接口,用于接收用户主机发送的读取数据的命令;处理器,用于从thick LUN中读取数据;若逻辑区块地址LBA校验错误,且阵列控制器保存的该thick LUN的第二标识,没有记录该thick LUN上,读取的数据对应的信息字段中,则确定读取的数据为残留数据,从而避免了额外的数据写入。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种阵列控制器、阵列和数据处理方法。
背景技术
数据完整性保证区域(Data Integrity Field,DIF),是目前常用的数据完整性保护方法。其验证数据本身是否正确,以及数据否被正确引用。
对于数据本身是否正确,通常在对数据进行校验计算后,与之前存放的校验值进比较,当两者一致时,表明数据没有被破坏;否则表明数据已被破坏。
对于数据是否被正确引用,通常对数据的偏移进行记录。当再次读取数据时,传入读取的数据偏移,如果该偏移和记录的偏移一致,则表明数据被正常读取;否则表明数据读取位置出现偏差或者偏移记录被破坏。
目前,阵列中常用的DIF技术一般符合T10标准。T10标准规定,在每一个512字节的扇区(称为“数据区域”)后面额外使用8个字节(称为“DIF区域”),如图1所示。其中,前两个字节为校验和(Guard),然后是2字节的应用标签(Application Tag或Meta Tag),通常保存用户自定义的和应用相关的信息;最后是4字节的Ref标签(Ref Tag):通常是逻辑区块地址(Logical BlockAddress,LBA)。
thick LUN,一种常用的逻辑单元号(Logical Unit Number,LUN)实现技术,通常由多个很大的块组成一个用户可见的连续LUN空间,其中每一个LUN空间包括上述的数据区域和对应的DIF区域,在创建LUN后即完成同样大小的空间分配。
对于采用了thick LUN的阵列,若采用DIF进行数据完整性保护,为了避免用户主机在访问未写入的数据区域时,用户主机报IO错误,需要额外进行一次数据写入的操作,用户主机必须要等待该次数据写入的操作完成后再能使用阵列,造成阵列访问速度慢。并且,该额外的数据写入的操作会增加硬盘的IO数目,从而造成阵列性能降低。
发明内容
本发明实施例提供一种阵列控制器、阵列和数据处理方法,用以解决现有采用thick LUN技术的阵列,若采用DIF进行数据完整性保护,为了避免用户主机在访问未写入的数据区域时发生错误,通过额外的数据写入操作清除残留数据,造成额外的IO写入,时间开销大的问题。
第一方面,本发明实施例提供一种阵列控制器,包括:
接口,用于接收用户主机发送的读取数据的第一命令,所述第一命令携带thick LUN的第一标识和第一偏移地址信息;
处理器,用于根据所述第一标识,确定所述用户主机待访问的thick LUN;从所述确定出的thick LUN中,读取所述第一命令待读取的数据;若所述待读取的数据对应的第一信息字段中记录的第二偏移地址信息,与所述第一命令中的所述第一偏移地址信息不一致,且所述阵列控制器保存的所述用户主机要访问的所述thick LUN的第二标识,没有记录在所述待读取的数据对应的第二信息字段中,则确定所述待读取的数据为残留数据,通过所述接口,向所述用户主机返回零数据,其中,所述第一信息字段为所述thick LUN中的用于记录数据的所述第二偏移地址信息的字段;所述第二信息字段为所述thick LUN中的用于记录所述thick LUN的第二标识的字段。
结合第一方面,在第一种可能的实现方式中,所述处理器还用于:
若所述待读取的数据对应的第一信息字段中记录的所述第二偏移地址信息,与所述第一命令中的所述第一偏移地址信息不一致,但所述阵列控制器保存的所述thick LUN的所述第二标识,记录在所述待读取的数据对应的所述第二信息字段中,则
确定所述待读取的数据发生指向错误,通过所述接口,向所述用户主机返回地址校验错误信息。
结合第一方面,在第二种可能的实现方式中,所述处理器还用于:
若所述待读取的数据对应的第一信息字段中记录的所述第二偏移地址信息,与所述第一命令中的所述第一偏移地址信息一致,且所述阵列控制器保存的所述thick LUN的所述第二标识,记录在所述待读取的数据对应的第二信息字段中,则
确定通过所述接口,向所述用户主机返回所述待读取的数据。
结合第一方面,在第三种可能的实现方式中,所述处理器还用于:
若所述待读取的数据对应的第一信息字段中记录的所述第二偏移地址信息,与所述第一命令中的所述第一偏移地址信息一致,但所述阵列控制器保存的所述thick LUN的所述第二标识,没有记录在所述待读取的数据对应的所述第二信息字段中,则
确定通过所述接口,向所述用户主机返回零数据。
结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式、第一方面的第三种可能的实现方式,在第四种可能的实现方式中,
所述接口还用于:接收创建所述thick LUN的第二命令,所述第二命令中携带所述第一标识、以及要创建的所述thick LUN的容量信息;
所述处理器还用于:创建所述thick LUN,所述thick LUN的容量为所述容量信息指示的容量,保存所述thick LUN的所述第一标识,生成并保存所述thick LUN的第二标识。
结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述接口还用于:接收向所述thick LUN写入数据的第三命令,所述第三命令中携带所述第一标识、待写入数据和所述待写入数据在所述thick LUN上的第三偏移地址信息;
所述阵列控制器在所述thick LUN上写入所述待写入数据,根据所述第三偏移地址信息,在所述待写入数据对应的第一信息字段中,记录所述待写入数据的所述第二偏移地址信息,并将所述thick LUN的第二标识,记录在所述第二信息字段中。
第二方面,本发明实施例提供一种阵列,包括:
硬盘,以及本发明第一方面及第一方面的各种可能的实现方式中的阵列控制器,其中所述thick LUN处于所述硬盘上。
第三方面,本发明实施例提供一种数据处理的方法,所述方法应用于阵列控制器中,包括:
所述阵列控制器接收用户主机发送的读取数据的第一命令,所述第一命令携带胖逻辑单元号thick LUN的第一标识和第一偏移地址信息;
所述阵列控制器根据所述第一标识,确定所述用户主机待访问的thickLUN;
所述阵列控制器从所述确定出的thick LUN中,读取所述第一命令待读取的数据;
若所述待读取的数据对应的第一信息字段中记录的第二偏移地址信息,与所述第一命令中的所述第一偏移地址信息不一致,且所述阵列控制器保存的所述thick LUN的第二标识,没有记录在所述待读取的数据对应的第二信息字段中,则所述阵列控制器确定所述待读取的数据为残留数据,向所述用户主机返回零数据,其中,所述第一信息字段为所述thick LUN中的用于记录数据的所述第二偏移地址信息的字段;所述第二信息字段为所述thick LUN中的用于记录所述thick LUN的第二标识的字段。
结合第三方面,在第一种可能的实现方式中,所述方法还包括:
若所述待读取的数据对应的第一信息字段中记录的所述第二偏移地址信息,与所述第一命令中的所述第一偏移地址信息不一致,但所述阵列控制器保存的所述thick LUN的所述第二标识,记录在所述待读取的数据对应的所述第二信息字段中,则
所述阵列控制器确定所述待读取的数据发生指向错误,向所述用户主机返回地址校验错误信息。
结合第三方面,在第二种可能的实现方式中,所述方法还包括:
若所述待读取的数据对应的第一信息字段中记录的所述第二偏移地址信息,与所述第一命令中的所述第一偏移地址信息一致,且所述阵列控制器保存的所述thick LUN的所述第二标识,记录在所述待读取的数据对应的第二信息字段中,则
所述阵列控制器向所述用户主机返回所述待读取的数据。
结合第三方面,在第三种可能的实现方式中,所述方法还包括:
若所述待读取的数据对应的第一信息字段中记录的所述第二偏移地址信息,与所述第一命令中的所述第一偏移地址信息一致,但所述阵列控制器保存的所述thick LUN的所述第二标识,没有记录在所述待读取的数据对应的所述第二信息字段中,则
所述阵列控制器向所述用户主机返回零数据。
结合第三方面、第三方面的第一种可能的实现方式、第三方面的第二种可能的实现方式、第三方面的第三种可能的实现方式,在第四种可能的实现方式中,所述方法还包括:
所述阵列控制器接收创建所述thick LUN的第二命令,所述第二命令中携带所述第一标识、以及要创建的所述thick LUN的容量信息;
所述thick LUN阵列控制器创建所述thick LUN,所述thick LUN的容量为所述容量信息指示的容量,保存所述thick LUN的所述第一标识,生成并保存所述LUN的第二标识。
结合第三发明的第四种可能的实现方式,在第五种可能的实现方式中,在生成LUN并保存所述第二标识之后,还包括:
所述阵列控制器接收向所述thick LUN写入数据的第三命令,所述第三命令中携带所述第一标识、待写入数据和所述待写入数据在所述thick LUN上的第三偏移地址信息;
所述阵列控制器在所述thick LUN上写入所述待写入数据,根据所述第三偏移地址信息,在所述待写入数据对应的第一信息字段中,记录所述待写入数据的所述第二偏移地址信息,并将所述thick LUN的第二标识,记录在所述第二信息字段中。
本发明实施例中,thick LUN除了具有一个与用户主机交互时使用的第一标识之外,还具有一个内部的第二标识,该标识由本发明实施例提供的阵列控制器保存,通过对该第二标识进行判断,即可确定读取的数据是之前的残留数据,然后直接向用户主机返回零数据。无需在创建thick LUN之后,以及在删除thick LUN之后,在对应的数据空间写入零数据,在对应的DIF区域写入特殊的标志信息,避免了额外的IO写入,节省了时间开销。
附图说明
图1为T10标准规定的DIF区域的格式示意图;
图2为本发明实施例一的数据系统的结构示意图;
图3为本发明实施例一数据系统中的阵列控制器的结构示意图;
图4为本发明实施例二的残留数据判断的流程图;
图5为本发明实施例三的创建thick LUN和向thick LUN写入数据的流程图;
图6为本发明实施例四的流程图;
图7为本发明实施例五的流程图。
具体实施方式
本发明实施例提供一种数据处理的方法、阵列控制器和阵列,用以解决现有采用thick LUN技术的阵列,若采用DIF进行数据完整性保护,为了避免用户主机在访问未写入的数据区域时发生错误,通过额外的数据写入操作清除残留数据,造成额外的IO写入,时间开销大的问题。
本发明实施例中,thick LUN除了具有一个与用户主机交互时使用的第一标识之外,还具有一个内部的第二标识,该标识由本发明实施例提供的阵列控制器保存,通过对该第二标识进行判断,即可确定读取的数据是之前的残留数据,然后直接向用户主机返回零数据。无需在创建thick LUN之后,以及在删除thick LUN之后,在对应的数据空间写入零数据,在对应的DIF区域写入特殊的标志信息,避免了额外的IO写入,节省了时间开销。
下面,结合附图对本发明各实施例进行详细介绍。
实施例一
实施例一介绍了本发明实施例提供的数据系统。如图2所示,该数据系统包括:
一个或多个用户主机201,与一个或多个用户主机201连接的阵列202;其中,阵列202中又包括与各用户主机201连接的阵列控制器2021和与阵列控制器2021连接的一个或多个硬盘2022。其中,阵列控制器2021可作为阵列控制器,执行图2所示的处理。本发明实施例中thick LUN处于硬盘2022上。
为了示意简单,图2中仅示出了一个用户主机201,但实际应用中,可存在多个用户主机201,它们分别与阵列202连接。
图2中,用户主机201是业务发起者,其可执行的操作包括但不限于:
向阵列202发送命令,请求创建thick LUN;
向阵列202发送命令,请求删除thick LUN;
向阵列202发送命令,请求读取thick LUN上的数据;
向阵列202发送命令,请求将数据写入thick LUN。
阵列202中,阵列控制器2021为主要的业务执行者,其可执行的操作包括但不限于:
在收到用户主机201发送的创建thick LUN的命令时,建立thick LUN的LBA到硬盘2022的映射关系;
在收到用户主机201发送的删除thick LUN的命令时,将thick LUN在硬盘2022上的空间回收,用于后续thick LUN的使用;
在收到用户主机201发送的读取thick LUN上的数据的命令时,根据thickLUN的LBA到硬盘2022的映射关系,从硬盘2022上读取数据;
在收到用户主机201发送的将数据写入thick LUN的命令后,根据thickLUN的LBA到硬盘2022的映射关系,将数据写入硬盘2022。
硬盘2022,主要用于执行阵列控制器2021的读写请求,并实际存放数据。这里,硬盘2022支持DIF数据完整性保护,可选地,扇区规格为520字节。本发明实施例中,thick LUN处于硬盘2022上。
如图3所示,实施例二中,阵列控制器2021可包括:
接口2021a,用于接收用户主机发送的读取数据的第一命令,第一命令携带thick LUN的第一标识和第一偏移地址信息;
处理器2021b,用于根据第一标识,确定用户主机待访问的thick LUN;从确定出的thick LUN中,读取第一命令待读取的数据;若待读取的数据对应的第一信息字段中记录的第二偏移地址信息,与第一命令中的第一偏移地址信息不一致,且阵列控制器保存的用户主机要访问的thick LUN的第二标识,没有记录在待读取的数据对应的第二信息字段中,则确定待读取的数据为残留数据,通过接口2021a,向用户主机返回零数据,其中,第一信息字段为thick LUN中的用于记录数据的第二偏移地址信息的字段;第二信息字段为thick LUN中的用于记录thick LUN的第二标识的字段。
其中,在图3中,总线架构可以包括任意数量的互联的总线和桥,具体由处理器2021b代表的一个或多个处理器和接口2021a代表的接口装置的各种电路链接在一起。总线架构还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。
通常,对于采用thick LUN技术的阵列,若采用DIF进行数据完整性保护,一种情况是,在删除LUN后再次使用对应的数据空间创建LUN时,该数据空间上还保留有原有数据的LBA信息,如果此时用户主机访问该数据空间,保留的原有数据的LBA和访问LBA通常不匹配,会向用户主机返回LBA校验失败的输入输出(Input Output,IO)错误。另一种情况是,在创建LUN后,未进行数据写入前,用户主机访问对应的数据空间,由于在创建LUN之后,对应的数据空间上会存在一些随机数据,此时要向用户主机返回这些随机数据,而用户主机并不知道收到的数据自身存在错误,还是由于创建LUN后没有写入造成,也会引起用户主机处理的错误。
以上两种情况都是因为在创建了LUN后,未发生数据写入时用户主机就直接访问对应的数据空间而发生的。针对上述可能发生的两种情况,目前无论是在创建LUN空间之后,还是在删除LUN空间之后,都会在对应的数据空间写入零数据,在对应的DIF区域写入特殊的标志信息,当用户主机访问对应的数据区域时,根据DIF区域中特殊的标记信息即可判断对应的数据区域是否发生过数据写入,若确定未发生过数据写入,则不进行LBA校验,也就不会向用户主机返回IO错误。
上述方法的一个缺点是为了保证在访问未写入的数据区域时,不向用户主机报IO错误,需要额外进行一次数据写入的操作,用户主机必须要等待该次数据写入的操作完成后再能使用阵列,造成阵列访问速度慢。并且,该额外的数据写入的操作会增加硬盘的IO数目,从而造成阵列性能降低。
有鉴于此,本发明实施例提供的阵列控制器2021可执行下面实施例二~实施例五的操作,进行相应的数据处理,以解决上述阵列访问速度慢、阵列性能低的问题。具体的,下面实施例二~实施例五中的操作都是由阵列控制器2021的处理器执行的。
实施例二、残留数据的判断
实施例二的方法可应用于阵列控制器2021中。图4为本发明实施例二的方法流程图。如图4所示,该方法包括:
S401:阵列控制器接收用户主机发送的读取数据的第一命令,该第一命令携带thick LUN的第一标识和第一偏移地址信息,根据该第一标识,阵列控制器确定该用户主机待访问的thick LUN;
S402:阵列控制器从确定出的thick LUN中,读取第一命令待读取的数据;
S403:阵列控制器将待读取的数据对应的第一信息字段中记录的第二偏移地址信息,与第一命令中的第一偏移地址信息进行比较,比如:对待读取的数据进行LBA校验;
S404:阵列控制器判断比较结果,若不一致,则执行步骤S405;
S405:阵列控制器判断保存的该thick LUN的第二标识是否记录在该待读取的数据对应的第二信息字段中;若否,则执行步骤S406;
S406:阵列控制器确定读取的数据为残留数据,向用户主机返回零数据。
上述步骤中,第一信息字段为该thick LUN中的用于记录数据的该第二偏移地址信息的字段,比如:该字段位于图1所示的DIF区域的“参考标签”中;第二信息字段为该thick LUN中的用于记录该thick LUN的第二标识的字段,比如:该字段位于图1所示的DIF区域的“应用标签”中。
步骤S403中,第一偏移地址信息与第二偏移地址信息的比较,可通过如下方式实现:
用户主机向阵列控制器发送读取数据的第一命令时,携带待读取的数据在硬盘上的偏移地址,即:第一偏移地址信息,以及待读取数据的容量信息。
阵列控制器按照第一命令中的第一偏移地址信息,以及待读取数据的容量信息,到确定的thick LUN上读取数据。比如,从该第一偏移地址信息指示的偏移地址开始读取数据,读取数据的总容量为第一命令中携带的待读取数据的容量信息指示的容量,并读取每一个512字节的数据对应的DIF区域中的LBA,即第二偏移地址信息。
通常,第一命令中携带的第一偏移地址信息的长度大于4个字节,而DIF区域中的LBA为4个字节,因此,将第一偏移地址信息的后4个字节取出,与读取的第一个512字节的数据对应的DIF区域中的LBA进行比较;将第一偏移地址信息的后4个字节加上512字节,与读取的第二个512字节的数据对应的DIF区域中的LBA进行比较,以此类推,验证读取的数据的每一个512字节的数据对应的DIF区域中的LBA,若都一致,则确定LBA校验正确,否则,确定LBA检验错误。
可选地,用于记录thick LUN第二标识的字段位于DIF区域的应用标签中,比如图1中的应用标签中。
步骤S404中,若第一偏移地址信息与第二偏移地址信息不一致,则需要进一步判断错误是由于数据本身被破坏,还是由于读取了未经写入的残留数据而造成的。所以,步骤S405中,对指定thick LUN的标识进一步判断,当阵列控制器保存的该thick LUN的第二标识没有记录在待读取的数据对应的第二信息字段中,则表明数据是未发生写入的残留数据,该情况下,由于数据未写入,所以向用户主机返回零数据即可。
可选地,若步骤S405的判断结果为是,即阵列控制器保存的该thick LUN的第二标识,记录在了该待读取的数据对应的第二信息字段中,则执行步骤S407:向用户主机返回地址校验错误信息,比如:LBA错误信息。
可选地,若步骤S404的判断结果为一致,则执行步骤S408:判断阵列控制器保存的该thick LUN的第二标识是否记录在待读取的数据对应的第二信息字段中,若是,则执行步骤S409:向用户主机返回读取的数据,否则执行步骤S406:确定读取的数据为残留数据,向用户主机返回零数据。
当地址校验正确,比如:LBA校验正确时,通常都是读取到了该thick LUN中写入的有效数据;但为了避免残留数据的偏移地址信息,这里还是执行了步骤S408,进行了该thick LUN的第二标识的判断。若阵列控制器2021保存的该thick LUN的标识记录在待读取的数据对应的第二信息字段中,则确定读取的数据是该thick LUN写入的有效数据;否则说明读取数据时,传入的读取数据的数据偏移与残留的偏移地址信息恰好相同,此时,读取的数据也是未发生写入的数据,所以向用户主机返回零数据。
实施例二中,通过判断阵列控制器的指定thick LUN的标识是否记录在指定thick LUN上读取的数据对应的第二信息字段中,确定读取的数据是之前的残留数据,然后直接向用户主机返回零数据即可,无需通过在数据空间写入零数据,在对应的DIF区域写入标识信息来标识数据是未发生写入的,减少了硬盘的IO数目和时间开销。
实施例三、创建thick LUN和向thick LUN写入数据
在实施例二的基础上,进一步地,在步骤S401之前,可选地,如图5所示,还包括如下步骤:
S501:阵列控制器接收创建该thick LUN的第二命令,该第二命令中携带上述第一标识,以及要创建的该thick LUN的容量信息;
S502:阵列控制器创建该thick LUN,该thick LUN的容量为上述容量信息指示的容量,保存该thick LUN的上述第一标识,生成并保存该thick LUN的第二标识。
可选地,实施例三也可应用于图2所示的数据系统,此时,实施例三中的各步骤可由图2中的阵列控制器2021执行。
可选地,用户主机主动发起创建该thick LUN的命令,阵列控制器收到该命令后,生成一个16位的唯一标识(Identification,ID)——即该thick LUN的第二标识,并保存在自身的元数据中。一种简单可行的生成thick LUN的第二标识的方法是:每次成功创建一个thick LUN,第二标识计数增加1。可选地,为了工程使用更方便,可预留前面几个数作为特殊用途。16位计数可以表示65536次创建,去除少量预留值,也能有效记录约6万次创建,这在实际中已经满足使用要求。当计数器没有到达翻转前,都返回成功,并给出该标识的计数值;当计数器已经达到翻转条件则不再增加计数,而返回错误和无效的计数值。可选地,设定最大在计数为65530,设定65535为无效标识值。
可选地,在步骤S502之后,还包括:
S503:阵列控制器接收向该thick LUN写入数据的第三命令,第三命令中携带上述第一标识、待写入数据和待写入数据在该thick LUN上的第三偏移地址信息;
S504:阵列控制器在该thick LUN中写入待写入的数据,根据上述第三偏移地址信息,在待写入数据对应的第一信息字段中,记录待写入数据的第二偏移地址信息,并将该thick LUN的第二标识,记录在上述第二信息字段中。
当该thick LUN进行数据写入时,阵列控制器可按照现有方法生成DIF区域的校验和、Ref标签,可选地,阵列控制器将保存的该thick LUN的第二标识标识填在该thick LUN中的写入的数据对应的DIF区域的应用标签中。
步骤S504中,根据上述第三偏移地址信息,在待写入数据对应的第一信息字段中,记录待写入数据的第二偏移地址信息,可通过如下方式实现:
阵列控制器按照第三命令中的第三偏移地址信息,确定在该thick LUN上写入数据的位置,并取该第三偏移地址信息的后4字节,作为第二偏移地址信息,写入第一个512字节数据对应的DIF区域;将第三偏移地址信息的后4个字节加上512字节,作为第二偏移地址信息,写入第二个512字节数据对应的DIF区域;以此类推。在写入数据的每一个512字节对应的DIF区域中,均写入第二偏移地址信息。
当实施例三应用于图2所示的数据系统中时,DIF区域中的数据可由用户主机201生成,也可由阵列控制器2021生成。
实施例三中,16位的thick LUN的第二标识,能够表示6万多个thick LUN的创建,能够满足绝大部分的应用场景。但为了保证该标识的唯一性,需要对标识溢出进行专门处理。当阵列控制器检测到标识即将溢出时,比如:已经达到标识计数上限,则不再增加,返回溢出标志。对于溢出后的处理,直接采用现有的写零方法来进行处理,即在创建LUN空间之后,或在删除LUN空间之后,在对应的数据空间写入零数据,在对应的DIF区域写入特殊的标志信息。
目前,DIF技术的T10标准中,没有对应用标签进行数据保护。当在本发明实施例中使用该应用标签存放thick LUN的标识时,如果该部分数据被破坏,则会错误地返回用户IO。为了保护该部分数据的有效性。在向硬盘写入数据时,将该部分数据的thick LUN的标识和校验和进行一次异或,将异或运算后的校验和写入DIF区域;在访问该thick LUN时,用读取的DIF区域应用标签中的thick LUN的标识对DIF区域的校验和再进行一次异或运算,即恢复了原来的校验和,再和读取的数据的校验和进行比较,比较时,数据本身、校验和或者应用标签中的thick LUN的标识任何一个发生错误,CRC校验都无法通过,将返回数据校验错误。
这样就能及时发现数据被破坏的情况,并且保证thick LUN标识的正确性。在和外部对接T10标准时,可以将DIF区域的校验和与应用标签中的thick LUN标识再进行一次异或,即可恢复外部标准。
以上,对本发明实施例二残留数据判断的方法,以及本发明实施例三的创建thick LUN和向thick LUN写入数据的方法进行了介绍。下面,通过实施例四,给出当实施例二应用于本发明图2所示的数据系统时,从thick LUN上读取数据的处理流程;通过实施例五,给出当实施例三应用于本地发明图2所示的数据系统时,创建thick LUN和向thick LUN写入数据的处理流程。
实施例四
如图6所示,实施例四包括如下步骤:
S601:用户主机发送数据读取命令,命令中指定访问的thick LUN和偏移地址;
S602:阵列控制器根据步骤S601中收到的命令,查找数据存放位置;
S603:阵列控制器向硬盘3022发送数据读取命令;
S604:硬盘3022向阵列控制器返回读取的数据;
S605:阵列控制器进行DIF数据校验;
S606:阵列控制器判断LBA是否正确;若正确,则执行步骤S607;否则执行步骤S610;
S607:阵列控制器判断自身记录的thick LUN的标识是否记录在该thickLUN上、读取的数据对应的DIF区域中的应用标签中;若是,则执行步骤S608,否则,执行步骤S609;
S608:向用户主机返回读取的数据;
S609:向用户主机返回零数据;
S610:阵列控制器判断保存的该thick LUN的第二标识是否记录在该thickLUN中、读取的数据对应的DIF区域中的应用标签中;若是,则执行步骤S611,否则,执行步骤S613;
S611:确定数据发生指向错误;
S612:向用户主机返回LBA错误信息;
S613:确定读取的数据为残留数据;
S614:向用户主机返回零数据。
实施例五
如图7所示,实施例五包括如下步骤:
S701:用户主机向阵列控制器发送创建thick LUN的命令;
S702:阵列控制器生成保存thick LUN的第二标识;
S703:阵列控制器完成thick LUN的创建;
S704:阵列控制器向用户主机返回thick LUN创建成功的消息;
S705:用户主机向阵列控制器发送在thick LUN上写入数据的命令;
S706:阵列控制器生成DIF数据,在DIF区域的应用标签中写入该thickLUN的第二标识;
S707:阵列控制器将带有DIF区域的数据写入硬盘3022;
S708:硬盘3022向阵列控制器返回写入成功消息;
S709:阵列控制器向用户主机返回数据写入成功消息。
实施例五中,步骤S701~步骤S704创建thick LUN的过程中的用户主机,与步骤S705~步骤S709向thick LUN写入数据的用户主机可以为同一用户主机,也可为不同用户主机。
综上,本发明实施例提供的数据处理的方法、阵列控制器和阵列中,thickLUN除了具有一个与用户主机交互时使用的第一标识之外,还具有一个内部的第二标识,该标识由本发明实施例提供的阵列控制器保存,通过对该第二标识进行判断,即可确定读取的数据是之前的残留数据,然后直接向用户主机返回零数据。无需在创建thick LUN之后,以及在删除thick LUN之后,在对应的数据空间写入零数据,在对应的DIF区域写入特殊的标志信息,避免了额外的IO写入,节省了时间开销。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序命令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序命令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的命令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序命令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的命令产生包括命令装置的制造品,该命令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序命令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的命令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (13)
1.一种阵列控制器,其特征在于,包括:
接口,用于接收用户主机发送的读取数据的第一命令,所述第一命令携带胖逻辑单元号thick LUN的第一标识和第一偏移地址信息;
处理器,用于根据所述第一标识,确定所述用户主机待访问的thick LUN;从所述确定出的thick LUN中,读取所述第一命令待读取的数据;若所述待读取的数据对应的第一信息字段中记录的第二偏移地址信息,与所述第一命令中的所述第一偏移地址信息不一致,且所述阵列控制器保存的所述用户主机要访问的所述thick LUN的第二标识,没有记录在所述待读取的数据对应的第二信息字段中,则确定所述待读取的数据为残留数据,通过所述接口,向所述用户主机返回零数据,其中,所述第一信息字段为所述thick LUN中的用于记录数据的所述第二偏移地址信息的字段;所述第二信息字段为所述thick LUN中的用于记录所述thick LUN的第二标识的字段。
2.如权利要求1所述的阵列控制器,其特征在于,所述处理器还用于:
若所述待读取的数据对应的第一信息字段中记录的所述第二偏移地址信息,与所述第一命令中的所述第一偏移地址信息不一致,但所述阵列控制器保存的所述thick LUN的所述第二标识,记录在所述待读取的数据对应的所述第二信息字段中,则
确定所述待读取的数据发生指向错误,通过所述接口,向所述用户主机返回地址校验错误信息。
3.如权利要求1所述的阵列控制器,其特征在于,所述处理器还用于:
若所述待读取的数据对应的第一信息字段中记录的所述第二偏移地址信息,与所述第一命令中的所述第一偏移地址信息一致,且所述阵列控制器保存的所述thick LUN的所述第二标识,记录在所述待读取的数据对应的第二信息字段中,则
确定通过所述接口,向所述用户主机返回所述待读取的数据。
4.如权利要求1所述的阵列控制器,其特征在于,所述处理器还用于:
若所述待读取的数据对应的第一信息字段中记录的所述第二偏移地址信息,与所述第一命令中的所述第一偏移地址信息一致,但所述阵列控制器保存的所述thick LUN的所述第二标识,没有记录在所述待读取的数据对应的所述第二信息字段中,则
确定通过所述接口,向所述用户主机返回零数据。
5.如权利要求1~4任一项所述的阵列控制器,其特征在于,
所述接口还用于:接收创建所述thick LUN的第二命令,所述第二命令中携带所述第一标识、以及要创建的所述thick LUN的容量信息;
所述处理器还用于:创建所述thick LUN,所述thick LUN的容量为所述容量信息指示的容量,保存所述thick LUN的所述第一标识,生成并保存所述thick LUN的第二标识。
6.如权利要求5所述的阵列控制器,其特征在于,
所述接口还用于:接收向所述thick LUN写入数据的第三命令,所述第三命令中携带所述第一标识、待写入数据和所述待写入数据在所述thick LUN上的第三偏移地址信息;
所述阵列控制器在所述thick LUN上写入所述待写入数据,根据所述第三偏移地址信息,在所述待写入数据对应的第一信息字段中,记录所述待写入数据的所述第二偏移地址信息,并将所述thick LUN的第二标识,记录在所述第二信息字段中。
7.一种阵列,其特征在于,包括:
硬盘和权利要求1~6任一项所述的阵列控制器,其中所述thick LUN处于所述硬盘上。
8.一种数据处理的方法,所述方法应用于阵列控制器中,其特征在于,所述方法包括:
所述阵列控制器接收用户主机发送的读取数据的第一命令,所述第一命令携带胖逻辑单元号thick LUN的第一标识和第一偏移地址信息;
所述阵列控制器根据所述第一标识,确定所述用户主机待访问的thickLUN;
所述阵列控制器从所述确定出的thick LUN中,读取所述第一命令待读取的数据;
若所述待读取的数据对应的第一信息字段中记录的第二偏移地址信息,与所述第一命令中的所述第一偏移地址信息不一致,且所述阵列控制器保存的所述thick LUN的第二标识,没有记录在所述待读取的数据对应的第二信息字段中,则所述阵列控制器确定所述待读取的数据为残留数据,向所述用户主机返回零数据,其中,所述第一信息字段为所述thick LUN中的用于记录数据的所述第二偏移地址信息的字段;所述第二信息字段为所述thick LUN中的用于记录所述thick LUN的第二标识的字段。
9.如权利要求8所述的方法,其特征在于,还包括:
若所述待读取的数据对应的第一信息字段中记录的所述第二偏移地址信息,与所述第一命令中的所述第一偏移地址信息不一致,但所述阵列控制器保存的所述thick LUN的所述第二标识,记录在所述待读取的数据对应的所述第二信息字段中,则
所述阵列控制器确定所述待读取的数据发生指向错误,向所述用户主机返回地址校验错误信息。
10.如权利要求8所述的方法,其特征在于,还包括:
若所述待读取的数据对应的第一信息字段中记录的所述第二偏移地址信息,与所述第一命令中的所述第一偏移地址信息一致,且所述阵列控制器保存的所述thick LUN的所述第二标识,记录在所述待读取的数据对应的第二信息字段中,则
所述阵列控制器向所述用户主机返回所述待读取的数据。
11.如权利要求8所述的方法,其特征在于,还包括:
若所述待读取的数据对应的第一信息字段中记录的所述第二偏移地址信息,与所述第一命令中的所述第一偏移地址信息一致,但所述阵列控制器保存的所述thick LUN的所述第二标识,没有记录在所述待读取的数据对应的所述第二信息字段中,则
所述阵列控制器向所述用户主机返回零数据。
12.如权利要求8~11任一项所述的方法,其特征在于,还包括:
所述阵列控制器接收创建所述thick LUN的第二命令,所述第二命令中携带所述第一标识、以及要创建的所述thick LUN的容量信息;
所述thick LUN阵列控制器创建所述thick LUN,所述thick LUN的容量为所述容量信息指示的容量,保存所述thick LUN的所述第一标识,生成并保存所述LUN的第二标识。
13.如权利要求12所述的方法,其特征在于,在生成LUN并保存所述第二标识之后,还包括:
所述阵列控制器接收向所述thick LUN写入数据的第三命令,所述第三命令中携带所述第一标识、待写入数据和所述待写入数据在所述thick LUN上的第三偏移地址信息;
所述阵列控制器在所述thick LUN上写入所述待写入数据,根据所述第三偏移地址信息,在所述待写入数据对应的第一信息字段中,记录所述待写入数据的所述第二偏移地址信息,并将所述thick LUN的第二标识,记录在所述第二信息字段中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410404926.7A CN104182701B (zh) | 2014-08-15 | 2014-08-15 | 一种阵列控制器、阵列和数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410404926.7A CN104182701B (zh) | 2014-08-15 | 2014-08-15 | 一种阵列控制器、阵列和数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104182701A true CN104182701A (zh) | 2014-12-03 |
CN104182701B CN104182701B (zh) | 2017-02-22 |
Family
ID=51963732
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410404926.7A Active CN104182701B (zh) | 2014-08-15 | 2014-08-15 | 一种阵列控制器、阵列和数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104182701B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105045721A (zh) * | 2015-07-23 | 2015-11-11 | 浪潮电子信息产业股份有限公司 | 一种数据一致性校验的方法和装置 |
CN105677585A (zh) * | 2015-12-31 | 2016-06-15 | 联想(北京)有限公司 | 一种数据处理方法、电子设备 |
CN106325762A (zh) * | 2015-06-30 | 2017-01-11 | 华为技术有限公司 | 输入输出控制方法和装置 |
CN107220184A (zh) * | 2017-05-10 | 2017-09-29 | 杭州宏杉科技股份有限公司 | 一种lun存储单元的管理方法及装置 |
WO2018024214A1 (zh) * | 2016-08-04 | 2018-02-08 | 北京忆恒创源科技有限公司 | Io流调节方法与装置 |
CN109144409A (zh) * | 2018-07-11 | 2019-01-04 | 华为技术有限公司 | 数据处理方法及装置、存储介质、数据系统 |
CN109597821A (zh) * | 2018-12-12 | 2019-04-09 | 北京谷数科技有限公司 | 一种存储数据一致性的校验方法 |
CN112732163A (zh) * | 2019-10-14 | 2021-04-30 | 成都华为技术有限公司 | 一种数据校验方法和装置 |
CN113076056A (zh) * | 2020-01-06 | 2021-07-06 | 华为技术有限公司 | 数据访问方法、硬盘和存储设备 |
WO2024169158A1 (zh) * | 2023-02-14 | 2024-08-22 | 华为技术有限公司 | 一种存储系统、数据访问方法、装置及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101169761A (zh) * | 2007-12-03 | 2008-04-30 | 腾讯数码(天津)有限公司 | 大容量缓存实现方法及存储系统 |
US20090019234A1 (en) * | 2007-07-13 | 2009-01-15 | Im Kwang Seok | Cache memory device and data processing method of the device |
CN101996137A (zh) * | 2009-08-20 | 2011-03-30 | 威刚科技(苏州)有限公司 | 存储装置与其资料处理方法 |
US20130232314A1 (en) * | 2012-03-01 | 2013-09-05 | Kabushiki Kaisha Toshiba | Communication management apparatus, communication management method, and computer program product |
-
2014
- 2014-08-15 CN CN201410404926.7A patent/CN104182701B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090019234A1 (en) * | 2007-07-13 | 2009-01-15 | Im Kwang Seok | Cache memory device and data processing method of the device |
CN101169761A (zh) * | 2007-12-03 | 2008-04-30 | 腾讯数码(天津)有限公司 | 大容量缓存实现方法及存储系统 |
CN101996137A (zh) * | 2009-08-20 | 2011-03-30 | 威刚科技(苏州)有限公司 | 存储装置与其资料处理方法 |
US20130232314A1 (en) * | 2012-03-01 | 2013-09-05 | Kabushiki Kaisha Toshiba | Communication management apparatus, communication management method, and computer program product |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106325762A (zh) * | 2015-06-30 | 2017-01-11 | 华为技术有限公司 | 输入输出控制方法和装置 |
CN106325762B (zh) * | 2015-06-30 | 2019-08-20 | 华为技术有限公司 | 输入输出控制方法和装置 |
CN105045721A (zh) * | 2015-07-23 | 2015-11-11 | 浪潮电子信息产业股份有限公司 | 一种数据一致性校验的方法和装置 |
CN105677585A (zh) * | 2015-12-31 | 2016-06-15 | 联想(北京)有限公司 | 一种数据处理方法、电子设备 |
US10642494B2 (en) | 2015-12-31 | 2020-05-05 | Lenovo (Beijing) Limited | Method, electronic device and computer program product for data processing |
CN105677585B (zh) * | 2015-12-31 | 2019-01-15 | 联想(北京)有限公司 | 一种数据处理方法、电子设备 |
WO2018024214A1 (zh) * | 2016-08-04 | 2018-02-08 | 北京忆恒创源科技有限公司 | Io流调节方法与装置 |
CN107220184B (zh) * | 2017-05-10 | 2019-07-09 | 杭州宏杉科技股份有限公司 | 一种lun存储单元的管理方法及装置 |
CN107220184A (zh) * | 2017-05-10 | 2017-09-29 | 杭州宏杉科技股份有限公司 | 一种lun存储单元的管理方法及装置 |
CN109144409A (zh) * | 2018-07-11 | 2019-01-04 | 华为技术有限公司 | 数据处理方法及装置、存储介质、数据系统 |
CN109597821A (zh) * | 2018-12-12 | 2019-04-09 | 北京谷数科技有限公司 | 一种存储数据一致性的校验方法 |
CN112732163A (zh) * | 2019-10-14 | 2021-04-30 | 成都华为技术有限公司 | 一种数据校验方法和装置 |
CN112732163B (zh) * | 2019-10-14 | 2023-02-03 | 成都华为技术有限公司 | 一种数据校验方法和装置 |
CN113076056A (zh) * | 2020-01-06 | 2021-07-06 | 华为技术有限公司 | 数据访问方法、硬盘和存储设备 |
WO2021139199A1 (zh) * | 2020-01-06 | 2021-07-15 | 华为技术有限公司 | 数据访问方法、硬盘和存储设备 |
WO2024169158A1 (zh) * | 2023-02-14 | 2024-08-22 | 华为技术有限公司 | 一种存储系统、数据访问方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104182701B (zh) | 2017-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104182701A (zh) | 一种阵列控制器、阵列和数据处理方法 | |
CN110531940B (zh) | 视频文件处理方法及装置 | |
CN113508382B (zh) | Ssd中数据的选择性擦除 | |
US20150134615A1 (en) | Copying volumes between storage pools | |
CN107564558B (zh) | 实现分散原子i/o写入 | |
EP3336702B1 (en) | Metadata recovery method and device | |
CN106326229B (zh) | 一种嵌入式系统的文件存储方法和装置 | |
KR20170125698A (ko) | 일반화된 기록 동작 검증 방법 | |
CN112558868A (zh) | 一种配置数据存储的方法和装置及设备 | |
CN114924923A (zh) | 一种硬盘写入点正确性验证方法、系统、设备及介质 | |
CN106844491B (zh) | 一种临时数据的写入、读取方法及写入、读取装置 | |
CN110187834B (zh) | 重删副本的数据处理方法、装置、电子设备 | |
CN115857801A (zh) | 一种数据迁移方法、装置、电子设备及存储介质 | |
CN118244989A (zh) | 一种日志处理方法、装置、设备及可读存储介质 | |
CN111639087B (zh) | 数据库中数据更新方法、装置和电子设备 | |
JP4905510B2 (ja) | ストレージ制御装置及びストレージ装置のデータ回復方法 | |
US20150121033A1 (en) | Information processing apparatus and data transfer control method | |
US10216433B2 (en) | Accessing a virtual volume on a storage array | |
KR20120082176A (ko) | 데이터베이스 관리 시스템의 데이터 처리 방법 및 시스템 | |
CN106557263B (zh) | 用于在数据块删除中检查伪共享的方法及设备 | |
CN112148220B (zh) | 一种实现数据处理的方法、装置、计算机存储介质及终端 | |
CN115469806A (zh) | 一种数据处理方法、装置、设备及介质 | |
CN105573862B (zh) | 一种恢复文件系统的方法和设备 | |
CN108121504A (zh) | 数据删除方法及装置 | |
CN109144409B (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 |