一种存储设备的数据读写方法及装置与流程

文档序号:11406961阅读:247来源:国知局
一种存储设备的数据读写方法及装置与流程

本发明涉及网络存储技术领域,尤其涉及一种存储设备的数据读写方法及装置。



背景技术:

视频监控数据量大,通常保存在专用存储设备中。对于存储设备而言,视频监控应用包含:数据要求实时写入、数据有保存期限、数据一次写多次读、数据量大、故障率相对较高等特点。

为保证数据可靠性,存储设备通常使用raid(redundantarrayofindependentdisks,独立磁盘冗余阵列)技术对硬盘中数据进行冗余保护。raid是一种把多块独立的物理磁盘按不同的方式组合起来形成一个磁盘组,从而提供比单个磁盘更高的存储性能和数据可靠性的技术。当有数据写入时,根据raid算法计算把数据拆分到多个成员磁盘中,raid级别不同,其数据冗余性也不同。比如传统raid5,可容忍1块磁盘故障或者离线,当检测到1块磁盘故障或者离线时,使用专用热备盘或者全局热备盘进行重建,恢复raid阵列的数据冗余性;如果重建过程中又有1块磁盘故障或离线,该raid故障,不能再被读写,io会返错。raid技术可以在一定程度上提高数据可靠性,但是如果raid中多块磁盘接连故障或离线,还是会导致数据读写失败,对于视频监控类应用,最直接的影响就是视频数据丢失,无法回放,而且后续视频的数据也会无法写入,导致raid故障后的视频数据丢失。



技术实现要素:

有鉴于此,本发明提供一种存储设备的数据读写方法及装置来解决现有技术中raid故障后,视频数据无法写入造成视频数据丢失的问题。

具体地,本发明是通过如下技术方案实现的:

本发明提供一种存储设备的数据读写方法,所述方法包括:

lun接收数据写入指令,根据所述数据写入指令中的待写入数据的lba地址,获取所述lba地址所处的存储区域对应的写重定向标识;

当所述写重定向标识为1时,将待写入数据写入到备用空间;

当所述写重定向标识为0时,将待写入数据写入到该lun所处的raid;

当lun收到该raid返回的硬件错误消息后,lun进行重试写入该待写入数据;

当重试失败时,lun将该待写入数据的地址对应的写重定向标识置位为1以使该待写入数据重定向写入到备用空间。

进一步的,所述将待写入数据重定向写入到备用空间,具体包括:

当备用空间写入成功时,lun记录所述待写入数据的重定向信息,其中所述重定向信息包括:数据所属的lun、数据的lba地址、数据的长度、数据在备用空间的映射表、数据对应的差异位图;

当备用空间写入失败时,lun向上层应用反馈失败通知。

进一步的,所述将待写入数据写入到该lun所处的raid,具体为:

当待写入数据正常写入该lun所处raid时,则向上层应用返回数据写入成功通知;

检查该待写入数据对应的差异位图,如果该差异位图为1,则清零该待写入数据对应的差异位图。

进一步的,所述方法还包括:

lun接收数据读取指令,根据所述数据读取指令中的待读取数据的lba地址,获取lba地址对应的差异位图;

若该差异位图为1,则从备用空间读取该待读取数据;

若该差异位图为0,则从该lun所处的raid中读取该待读取数据返回上层;

当从该lun所处的raid中读取该待读取数据时,若收到该raid返回的介质错误消息,则向上层应用反馈该介质错误消息。

进一步的,所述方法还包括:

当获知该lun所处raid的重新上线事件时,lun下发数据读取探测指令;

若待读取数据返回成功,则将该raid所对应的存储区域的重定向标识置位为0;

根据已记录的差异位图,将该备用空间的数据重新写回到该lun所对应的存储区域,将该差异位图清零,并将该备用空间回收。

基于相同的构思,本发明还提供一种存储设备的数据读写装置,所述装置包括:

指令接收单元,用于lun接收数据写入指令,根据所述数据写入指令中的待写入数据的lba地址,获取所述lba地址所处的存储区域对应的写重定向标识;

第一写入单元,用于当所述写重定向标识为1时,将待写入数据写入到备用空间;

第二写入单元,用于当所述写重定向标识为0时,将待写入数据写入到该lun所处的raid;

写入重试单元,用于当lun收到该raid返回的硬件错误消息后,lun进行重试写入该待写入数据;

标识修改单元,用于当重试失败时,lun将该待写入数据的地址对应的写重定向标识置位为1以使该待写入数据重定向写入到备用空间。

进一步的,所述第一写入单元,具体用于当备用空间写入成功时,lun记录所述待写入数据的重定向信息,其中所述重定向信息包括:数据所属的lun、数据的lba地址、数据的长度、数据在备用空间的映射表、数据对应的差异位图;当备用空间写入失败时,lun向上层应用反馈失败通知。

进一步的,所述第二写入单元,具体用于当待写入数据正常写入该lun所处raid时,向上层应用返回数据写入成功通知;检查该待写入数据对应的差异位图,如果该差异位图为1,则清零该待写入数据对应的差异位图。

进一步的,所述装置还包括:

数据读取单元,用于lun接收数据读取指令,根据所述数据读取指令中的待读取数据的lba地址,获取lba地址对应的差异位图;若该差异位图为1,则从备用空间读取该待读取数据;若该差异位图为0,则从该lun所处的raid中读取该待读取数据返回上层;当从该lun所处的raid中读取该待读取数据时,若收到该raid返回的介质错误消息时,则向上层应用反馈该介质错误消息。

进一步的,所述装置还包括:

数据回写单元,用于当获知该lun所处raid的重新上线事件时,lun下发数据读取探测指令;若待读取数据返回成功,则将该raid所对应的存储区域的重定向标识置位为0;根据已记录的差异位图,将该备用空间的数据重新写回到该lun所对应的存储区域,将该差异位图清零,并将该备用空间回收。

由此可见,本发明可以使lun接收数据写入指令时,获取数据写入指令中的lba地址所处的存储区域对应的写重定向标识;当所述写重定向标识为1时,说明磁盘故障,因此可以将待写入数据写入到备用空间;当所述写重定向标识为0时,说明磁盘正常,因此可以将待写入数据写入到该lun所处的raid,但是在将数据写入raid时,当收到该raid返回的硬件错误消息后,lun进行重试写入该待写入数据,并当重试失败时,将该待写入数据的地址对应的写重定向标识置位为1以使该待写入数据重定向写入到备用空间。由于本发明的lun当其所在raid故障时,对于前端下发的数据写入指令不返回错误,而是进行重定向写入到备用空间中,从而确保lun的数据写入指令可以持续下发,确保写入数据有效,能够被正常读出。因此,本发明可以通过预留少数的备份空间,即可实现在存储异常时保证视频监控写业务的连续性,并可以大幅度节省成本。

附图说明

图1是本发明一种示例性实施方式中的一种存储设备的数据读写方法的处理流程图;

图2是lba、pba、映射表以及差异位图的关系示意图;

图3是本发明一种示例性实施方式中的数据写入处理流程图;

图4是本发明一种示例性实施方式中的数据读取处理流程图;

图5是本发明一种示例性实施方式中的数据回写处理流程图;

图6本发明一种示例性实施方式中的存储设备的数据读写装置所在设备的硬件结构图;

图7本发明一种示例性实施方式中的一种存储设备的数据读写装置的逻辑结构图。

具体实施方式

本发明中,raid可用空间不直接提供给应用服务器访问,而是在上面创建lun(logicunitnumber,逻辑单元号),再把lun分配给应用服务器存储数据。对于视频监控类应用,为提高数据可靠性,避免lun的单点故障,通常会利用存储设备的本地镜像特性,为lun在另外一个raid上保存数据副本,在任一个raid故障时,lun的数据流可以继续访问另外一个lun,这样可以保证视频数据写入成功。但是通过本地镜像进行数据保存时,由于数据需要保存2份,即需要使用双倍磁盘,因此这种方式相对之前直接存入raid的方法功耗高、成本高、空间利用率低,由于视频监控业务通常对于成本控制比较严格,因此这种方案不适用于视频监控应用。

为了解决上述问题,本发明提供一种存储设备的数据读写方法及装置,可以使lun接收数据写入指令时,获取数据写入指令中的lba地址所处的存储区域对应的写重定向标识;当所述写重定向标识为1时,说明磁盘故障,因此可以将待写入数据写入到备用空间;当所述写重定向标识为0时,说明磁盘正常,因此可以将待写入数据写入到该lun所处的raid,但是在将数据写入raid时,当收到该raid返回的硬件错误消息后,lun进行重试写入该待写入数据,并当重试失败时,将该待写入数据的地址对应的写重定向标识置位为1以使该待写入数据重定向写入到备用空间。由于本发明的lun当其所在raid故障时,对于前端下发的数据写入指令不返回错误,而是进行重定向写入到备用空间中,从而确保lun的数据写入指令可以持续下发,确保写入数据有效,能够被正常读出。因此,本发明可以通过预留少数的备份空间,即可实现在存储异常时保证视频监控写业务的连续性,并可以大幅度节省成本。

请参考图1,是本发明一种示例性实施方式中的一种存储设备的数据读写方法的处理流程图,所述方法包括:

步骤101、lun接收数据写入指令,根据所述数据写入指令中的待写入数据的lba地址,获取所述lba地址所处的存储区域对应的写重定向标识;

存储设备中包括多个lun(logicalunitnumber,逻辑单元号),用于为应用服务器提供可访问的逻辑存储资源,lun中有分为多个逻辑块,其对应的地址lba(logicalblockaddress,逻辑块地址)是应用服务器访问lun时使用的地址,而实际存储数据的raid上的地址为pba(physicalblockaddress,物理块地址);记录数据的lba地址与其对应的pba的对应关系的表项可以称为映射表。所述lba、pba、映射表以及的关系如图2所示。

在本实施例中,lun可以收到上层的应用服务器发送的数据写入指令,该数据写入指令通常包括待写入数据、待写入数据的长度、写入的的lba地址等信息。lun收到数据写入指令时,可以根据所述数据写入指令中的待写入数据的lba地址,根据上述对应关系,查找所述lba地址所处的存储区域。在本实施例中,可以在raid中的存储区域中添加写重定向标识来表示raid是否正常工作,所述写重定向标识可以用“0”和“1”分别表示“正常”和“不正常”。因此当lun要向该存储区域写入数据时,可以先获取该存储区域对应的写重定向标识,判断该存储区域是否能够正常工作。

步骤102、当所述写重定向标识为1时,将待写入数据写入到备用空间;

当lun确定所述写重定向标识为1时,可以认为该存储区域无法正常工作,因此可以将待写入数据写入到该raid中预设的备用空间。在可选的实施例中,可以存储设备上保留一部分备用空间,设置备用空间的方法有两种,一是,手动保留备用空间,比如在系统盘上划分备用空间,或者存储设备配置少量可靠性更高磁盘,创建raid,作为备用空间;一是,自动保留备用空间,比如每个raid上按指定比率预留备用空间,提供给其他raid上lun使用。保留的备用空间不能用于创建lun,比如raid总容量是20tb,保留5%,则该raid中19tb的空间可用于创建lun,剩下1tb预留。由于本发明在磁盘中预设的备用空间远低于本地镜像所需的空间大小,并且采用按需分配的精简配置技术,可以有效地节省空间,因此可以降低空间成本。

在本发明可选的实施例中,将待写入数据重定向写入到备用空间,具体来讲,当待写入数据在备用空间写入成功时,lun记录所述待写入数据的重定向信息,其中所述重定向信息包括:数据所属的lun、数据的lba地址、数据的长度、数据在备用空间的映射表、数据对应的差异位图,所述差异位图用于表示数据写入到备用空间之后与原lun中的数据不一致,举例来讲,可以将数据划分为等长的数据块,差异位图中的一小格代表一个数据块(如图2所示),该数据块中的数据更新后与原lun中的数据不一致时,可以将该数据块对应的表格中标为“1”,用于表示数据更新了,如果数据没有更新,则标为“0”。lun记录重定向信息可以保证lun可以在raid恢复正常后,根据重定向信息将该数据回写到该raid中。

当备用空间写入失败时,lun可以向上层应用反馈失败通知。

步骤103、当所述写重定向标识为0时,将待写入数据写入到该lun所处的raid;

当所述写重定向标识为0时,说明该raid中的存储区域工作正常,因此可以将待写入数据写入到该lun所处的raid。在本实施例中,当待写入数据正常写入到该lun所处raid时,lun可以向上层应用返回数据写入成功通知;然后lun还可以检查该待写入数据对应的差异位图,如果该差异位图为1,说明此时写入的数据为最新的数据,因此可以将该待写入数据对应的差异位图清零。

步骤104、当lun收到该raid返回的硬件错误消息后,lun进行重试写入该待写入数据;

在将待写入数据写入raid时,如果raid出现硬件错误,则lun会收到该raid返回的硬件错误消息,由于不确定该硬件错误消息是raid的瞬时状态,还是持续状态,为了不影响数据写入,lun可以进行多次重试写入该待写入数据。

步骤105、当重试失败时,lun将该待写入数据的地址对应的写重定向标识置位为1以使该待写入数据重定向写入到备用空间。

当多次重试均失败时,可以认为该raid确实出现故障,因此lun将该待写入数据的地址对应的写重定向标识置位为1以使lun将该待写入数据重定向写入到备用空间。

在本发明可选的实施例中,lun接收数据读取指令时,该数据读取指令中包括待读取数据的lba地址和数据长度,lun可以根据所述数据读取指令中的待读取数据的lba地址,获取lba地址对应的差异位图;若该差异位图为1,则说明该最新的数据存在备用空间中,因此可以从备用空间读取该待读取数据返回上层;若该差异位图为0,则说明该最新的数据存在raid中,因此可以从该lun所处的raid中读取该待读取数据返回上层;当从该lun所处的raid中读取该待读取数据时,若收到该raid返回的介质错误消息,则向上层应用反馈该介质错误消息,以使上层应用针对该介质错误消息进行处理。

在本发明可选的实施例中,如果raid故障恢复时,可以重新上线。当获知该lun所处raid的重新上线事件时,lun可以下发数据读取探测指令,所述数据读取探测指令包括数据的lba地址和数据长度;若待读取数据返回成功,则说明raid的确已经恢复正常,因此可以将该raid所对应的存储区域的重定向标识置位为0,以使后续写入的数据可以写入到该raid中,并且获取已记录的差异位图,确定最新的数据,例如差异位图为“1”说明最新的数据在备用空间,差异位图为“0”表示最新的数据在raid中,如果此时该差异位图对应的lba地址中正在写入新的数据,则将该新的数据直接写入到raid中。在确定哪些最新的数据在备用空间后,可以将备用空间的最新数据重新写回到该lun所对应的存储区域,然后再将该差异位图清零,并将该备用空间回收。回收备用空间可以通过更改备用空间的标识来表示备用空间是否可用。例如备用空间标识为“1”时,可以表示该备用空间已经被使用,而备用空间标识为“0”时,可以表示该备用空间空闲,可以申请使用。回收备用空间有两种方案,第一,每拷贝一部分数据就回收一部分空间;第二,所有数据都拷贝完成之后,再统一回收空间;两种方案都不影响本方案的执行效果。

为使本发明的目的、技术方案及优点更加清楚明白,下面结合图3、图4、图5对本发明的方案作进一步地详细说明。

请参考图3,是本发明实施例中的一种数据写入处理流程图,其中包括:

步骤301、lun接收到视频服务器下发的数据写入指令;

步骤302、判断数据写入指令中数据所处存储区域的写重定向标识是否为1;如果是,则转步骤303;如果否,则转步骤307;

步骤303、判断备用空间是否有余量,如果是,则转步骤304;如果否,则转步骤305;

步骤304、写入数据,将差异位图修改为1,返回写入成功消息,记录重定向信息,并结束;

写入数据时,记录数据的重定向信息,其中包括,数据所属的lun、数据的lba地址、数据长度、数据在备用空间的映射表、数据的差异位图等。

步骤305、向视频服务器反馈写入失败消息,并结束;

步骤306、将数据写入指令下发到lun所处的raid,转步骤307;

步骤307、判断数据是否正常写入,如果是,则转步骤308;如果否,则转步骤311;

步骤308、差异位图是否为1,如果是,则转步骤309;如果否,则转步骤310;

步骤309、清零该数据对应的差异位图,转步骤309;

这样表示备用空间中的数据不需要再拷贝到原lun所处raid;

步骤310、返回写入成功消息,并结束;

步骤311、重试写入是否成功,如果是,则转步骤310,如果否,则转步骤312;

当该raid的多块组成磁盘出现异常,数据无法写入时,raid对lun模块返回hardwareerror即硬件错误消息,lun接收到该hardwareerror之后,会进行重试n次的数据写入操作;

步骤312、将存储区域的写重定向标识置位为1,转步骤302;

重试失败后,就会把该数据对应存储区域的写重定向标识置位为1,然后把这个数据重定向写入到备用空间,如果备用空间中还有可用的空间,则返回写入成功消息;如果备用空间已经用完,则给上层应用返回写入失败消息。

因此,本发明对于前端下发的数据写入指令,不管lun所处raid的状态如何,本技术确保这些写入的数据可以被完整存放下来,从而提高数据存储的完整性。

请参考图4,是本发明的实施例中的一种数据读取处理流程图,其中包括:

步骤401、lun接收数据读取指令;

步骤402、判断数据读取指令中的lba对应的差异位图是否为1;若是,则转步骤403;若否,则转步骤404;

步骤403、从备用空间读取数据,并结束;

如果对应的差异位图为1,则说明备用空间的数据有效,则根据lba地址以及映射表从备用空间读取数据返回上层应用;

步骤404、原lun所处raid是否正常;若是,则转步骤405;若否,则转步骤406;

步骤405、从lun所处raid中读取数据,并结束;

如果对应的差异位图为0,则说明原lun所处raid正常,因此可以从lun所处raid读出数据返回上层应用;

步骤406、向上层返回mediumerror消息,并结束;

如果原lun所处raid异常,则会给上层返回mediumerror的错误消息,以使上层应用根据相应的错误码进行处理。

因此,本发明可以当前端下发的数据读取指令时,尽量读取备用空间或者raid中的数据。

请参考图5,是本发明的实施例中的一种数据回写处理流程图,其中包括:

步骤501、lun接收raid重新上线事件;

当原lun所处raid中的磁盘修复之后,raid重新上线;

步骤502、下发数据读取探测指令;

步骤503、是否反馈读取成功消息;如果是,则转步骤504;如果否,则转步骤507;

如果反馈读取成功,则说明该raid可以正常读取数据;

步骤504、修改该raid所属存储区域的写重定向标识;

步骤505、差异位图是否全为0,如果是,则转步骤506;如果否,则转步骤507;

步骤506、回收lun占用的备用空间,并结束;

差异位图全变成0之后,表示备用空间的数据全部同步到了原lun所处raid,之后可以回收备用空间,以便被其他lun使用。

步骤507、将备用空间的数据写回到原lun,将差异位置为0,转步骤505;

步骤508、将raid标为离线状态,并结束。

因此,本发明可以当lun所处raid能修复时,将备用空间回写到原lun所处raid上;当raid的磁盘无法修复时,当lun在备用空间(处于其他raid的情况)中占用的空间等于原lun大小时,lun就会整体重定位到备用空间中,此时也不会影响数据的读写。更换新的磁盘创建新的raid之后,这些存储空间又可以变成备用空间;这样就不会导致空间的浪费;同时又可以有效地保证前端视频监控业务的连续性。

基于相同的构思,本发明还提供一种存储设备的数据读写装置,该装置可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,本发明的存储设备的数据读写装置作为一个逻辑意义上的装置,是通过其所在存储设备的cpu将存储器中对应的计算机程序指令读取后运行而成。

请参考图6是本发明一种示例性实施方式中的一种存储设备的数据读写装置700,该装置基本运行环境包括cpu,存储器以及其他硬件,从逻辑层面上来看,该存储设备的数据读写装置的组成如图7所示,其中该装置700包括:

指令接收单元701,用于lun接收数据写入指令,根据所述数据写入指令中的待写入数据的lba地址,获取所述lba地址所处的存储区域对应的写重定向标识;

第一写入单元702,用于当所述写重定向标识为1时,将待写入数据写入到备用空间;

第二写入单元703,用于当所述写重定向标识为0时,将待写入数据写入到该lun所处的raid;

写入重试单元704,用于当lun收到该raid返回的硬件错误消息后,lun进行重试写入该待写入数据;

标识修改单元705,用于当重试失败时,lun将该待写入数据的地址对应的写重定向标识置位为1以使该待写入数据重定向写入到备用空间。

可选的,所述第一写入单元702,具体用于当备用空间写入成功时,lun记录所述待写入数据的重定向信息,其中所述重定向信息包括:数据所属的lun、数据的lba地址、数据的长度、数据在备用空间的映射表、数据对应的差异位图;当备用空间写入失败时,lun向上层应用反馈失败通知。

可选的,所述第二写入单元703,具体用于当待写入数据正常写入该lun所处raid时,向上层应用返回数据写入成功通知;检查该待写入数据对应的差异位图,如果该差异位图为1,则清零该待写入数据对应的差异位图。

可选的,所述装置还包括:

数据读取单元706,用于lun接收数据读取指令,根据所述数据读取指令中的待读取数据的lba地址,获取lba地址对应的差异位图;若该差异位图为1,则从备用空间读取该待读取数据;若该差异位图为0,则从该lun所处的raid中读取该待读取数据返回上层;当从该lun所处的raid中读取该待读取数据时,若收到该raid返回的介质错误消息时,则向上层应用反馈该介质错误消息。

可选的,所述装置还包括:

数据回写单元707,用于当获知该lun所处raid的重新上线事件时,lun下发数据读取探测指令;若待读取数据返回成功,则将该raid所对应的存储区域的重定向标识置位为0;根据已记录的差异位图,将该备用空间的数据重新写回到该lun所对应的存储区域,将该差异位图清零,并将该备用空间回收。

综上所述,本发明可以使lun接收数据写入指令时,获取数据写入指令中的lba地址所处的存储区域对应的写重定向标识;当所述写重定向标识为1时,说明磁盘故障,因此可以将待写入数据写入到备用空间;当所述写重定向标识为0时,说明磁盘正常,因此可以将待写入数据写入到该lun所处的raid,但是在将数据写入raid时,当收到该raid返回的硬件错误消息后,lun进行重试写入该待写入数据,并当重试失败时,将该待写入数据的地址对应的写重定向标识置位为1以使该待写入数据重定向写入到备用空间。由于本发明的lun当其所在raid故障时,对于前端下发的数据写入指令不返回错误,而是进行重定向写入到备用空间中,从而确保lun的数据写入指令可以持续下发,确保写入数据有效,能够被正常读出。因此,本发明可以通过预留少数的备份空间,即可实现在存储异常时保证视频监控写业务的连续性,并可以大幅度节省成本。

上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

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