数据处理方法和装置 【技术领域】
本发明涉及视频监控技术, 特别涉及数据处理方法和装置。背景技术 独立磁盘冗余阵列 (RAID : Redundant Array of Independent Disks), 简称磁盘 阵列, 其原理是利用多个硬盘连成一个阵列, 实现以快速、 准确和安全的方式来读写磁盘数 据, 从而达到提高数据的读写速度和安全性。
目前利用磁盘阵列处理视频数据的方法中, 对视频数据的写入方法主要包括以下 步骤 :
步骤 1, 为视频编解码器 (EC) 的每个通道制定对应的存储计划。
EC 通道的存储计划包含 EC 通道的码流大小、 EC 通道要求其下刷的数据所要保存 的时间 ( 记为数据保存时间 ) 等。
步骤 2, 针对每一 EC 通道, 根据该 EC 通道的存储计划为该 EC 通道选择对应的磁盘 阵列。
步骤 2 是根据存储计划中的数据保存时间为 EC 通道选择磁盘阵列的。
步骤 3, 在步骤 2 选择的磁盘阵列上创建地址连续的 LUN 资源, 该 LUN 资源关联到 上述 EC 通道。
LUN 资源的大小是根据存储计划中的数据保存时间、 EC 通道码流大小计算的。
若步骤 2 中为 EC 的 4 个通道比如通道 1 至通道 4 选择了相同的磁盘阵列 1, 则执 行到步骤 3 时, 可在该磁盘阵列 1 上创建分别关联到该 4 个通道的 LUN 资源。比如, 在步骤 2 选择的磁盘阵列 1 上创建了 4 个 LUN 资源, 分别为 LUN1 至 LUN4, 其分别关联到通道 1 至 通道 4, 具体如图 1 所示。
步骤 4, 当向步骤 2 选择的磁盘阵列写入数据时, 由 EC 上的各个通道按照顺序下刷 数据, 以便顺序向该各个 EC 通道关联的 LUN 资源写入数据。
由于顺序向磁盘阵列写入数据能保证数据写入处理效率最高, 因此, 本步骤 4 顺 序向 LUN 资源写入数据, 能够提高数据写入效率, 同时也提高磁盘阵列的 I/O 处理能力。
但是, 在实际应用过程中, 会出现多路 EC 通道同时下刷数据至磁盘阵列的情况, 比如图 1 中的通道 1、 通道 3 和通道 4 同时下刷数据至磁盘阵列 1, 由于不同的通道关联不 同的 LUN 资源, 如此, 就需要磁盘的磁头不停地寻道, 即呈现出了随机写数据至磁盘阵列的 现象, 这降低了数据写入效率, 同时也降低了磁盘阵列的 I/O 处理能力。
发明内容 本发明提供了数据处理方法和装置, 实现在多路 EC 通道同时向磁盘阵列下刷数 据时, 以全顺序方式写入该数据至磁盘阵列, 提高数据写入效率, 同时也提高该磁盘阵列的 I/O 处理能力。
本发明提供的技术方案包括 :
一种数据处理方法, 包括 :
A, 将磁盘阵列中除保留空间之外的空间划分为 1 个以上大小相同的存储单元组 ; 将每一存储单元组中除预设二级索引空间外的空间划分为 1 个以上大小相同的存储单元 ;
B, 所述磁盘阵列的缓存以单位时间为间隔将同一个单位时间内接收的数据顺序 写入至同一个存储单元, 并在完成写入后, 分别在所述保留空间和所述二级索引空间中添 加每路数据对应的 EC 通道的一级索引表和二级索引表, 以供查询该路数据。
一种数据处理装置, 包括 : 写入模块、 添加模块和查询模块, 其中,
写入模块, 用于以单位时间为间隔将同一个单位时间内接收的数据顺序写入至同 一个存储单元 ;
添加模块, 用于在写入模块完成写入后, 分别在保留空间和二级索引空间中添加 每路数据对应的 EC 通道的一级索引表和二级索引表, 以供所述查询模块查询该路数据 ;
所述存储单元是通过对存储单元组中除所述二级索引空间外的空间划分得到的, 所述存储单元组是通过对磁盘阵列中除保留空间之外的空间划分得到的。
由以上技术方案可以看出, 本发明中, 当多路 EC 通道同时向同一个磁盘阵列下刷 数据时, 以单位时间为间隔将同一个单位时间内接收的多路数据顺序写入至同一存储单 元, 即实现了顺序向磁盘阵列写入数据的目的, 提高了数据写入效率, 也提高了磁盘阵列的 I/O 处理能力, 同时降低了视频业务中由于存储端响应缓慢而导致数据丢失的风险。 附图说明
图 1 为现有数据写入磁盘阵列的示意图 ; 图 2 为本发明实施例提供的磁盘阵列被划分形成的系统结构图 ; 图 3 为本发明实施例提供的处理流程图 ; 图 4 为本发明实施例提供的步骤 308 的处理流程图 ; 图 5 为本发明实施例提供的数据读取流程图 ; 图 6 为本发明实施例提供的装置结构图。具体实施方式
本发明提供的方法主要包括 : A, 将磁盘阵列中除保留空间之外的空间划分为 1 个 以上大小相同的存储单元组 ; 将每一存储单元组中除二级索引空间外的空间划分为 1 个以 上大小相同的存储单元 ; B, 该磁盘阵列的缓存以单位时间为间隔将同一个单位时间内接收 的数据顺序写入至同一个存储单元, 并在完成写入后, 分别在所述保留空间和所述二级索 引空间中添加每路数据对应的 EC 通道的一级索引表和二级索引表, 以供查询该路数据。通 过该方法, 实现了以全顺序方式向磁盘阵列中写入数据的目的, 提高了数据写入效率, 同时 也提高了磁盘阵列的 I/O 处理能力, 并且, 通过设置 EC 通道的一级索引表和二级索引表, 能 够快速实现数据的回放和查询。
为了使本发明的目的、 技术方案和优点更加清楚, 下面先对本发明实施例提供的 磁盘阵列结构进行描述。
假如根据 EC 通道比如通道 1 的存储计划选择了磁盘阵列 1, 其中, 存储计划中包含 通道 1 下刷的数据需要被保存时间 ( 记为数据保存时间 T1) 和通道 1 的码流大小等。如果该磁盘阵列 1 是首次被选择, 则对该磁盘阵列执行以下操作, 以得到图 2 所示的结构 :
首先, 在磁盘阵列 1 中保留大小为 9MB 的空间, 其一般为磁盘阵列 1 中头 9MB 的空 间。该空间可包含 : 大小为 8MB 的一级索引空间和大小为 1MB 的超级块空间。其中, 一级索 引空间用于存放 EC 通道的一级索引表 ( 具体在下文描述 ) ; 而超级块空间用于记录 EC 通 道的超级块信息, 其与本发明实施例的实现关系不大, 不再详述。
其次, 将磁盘阵列 1 中除保留空间外的空间划分成 M 个大小相同的存储单元组 (group), 并将每个存储单元组中除预设二级索引空间 ( 用于存放 EC 通道的二级索引表, 具 体在下文描述 ) 外的空间划分成 N 个大小相同的存储单元。通常, 在划分存储单元组时, 会 根据实际应用确定出 1 个存储单元组包含多少个存储单元 ( 本实施例中存储单元为按单位 时间存放数据的单元, 因此, 其实质上也就是确定 1 个存储单元组最多容纳多少个单位时 间内接收的数据 ), 之后依据该确定的个数和存储计划中的数据保存时间 T1 确定 M。
比如, 单位时间为 1 秒, 1 个 group 包含存储单元的个数 N 为 1024, 即表示 1 个 group 最多容纳 1024 秒内接收的数据, 如此, 假如存储计划中数据保存时间 T1 为 20 天 ( 记 为 20*24*3600 秒 ), 则划分的 group 个数 M 为 :
M = 20*24*3600( 秒 )/1024( 秒 ) = 1688 个。 如果磁盘阵列 1 中除保留空间外的空间为 16TB, 则各个存储单元组的大小为 : 16*1024*1024/1688 = 9939MB。
另外, 如果每个存储单元组中二级索引空间大小为 16MB, 一般为每个存储单元组 中头 16MB 的空间, 存储单元组的大小为 9939B, 则存储单元组中每个存储单元的大小为 (9939-16)/1024 = 9.69MB。
如此, 通过上面操作, 磁盘阵列 1 即可形成图 2 所示的结构。
基于图 2 所示的磁盘阵列结构, 下面对本发明实施例提供的流程进行详细描述。
参见图 3, 图 3 为本发明实施例提供的详细流程图。如图 3 所示, 该流程可包括以 下步骤 :
步骤 301, 针对 EC 的每一通道, 为该通道 ( 以通道 1 为例 ) 制定存储计划。
步骤 302, 根据存储计划中的数据保存时间 T1 为通道 1 选择磁盘阵列, 该选择的磁 盘阵列用于存储通道 1 下刷的数据, 记为磁盘阵列 1。
本步骤可按照现有方式为通道 1 选择磁盘阵列, 如果选择出的磁盘阵列数量比较 多, 可将其中一个作为磁盘阵列 1, 执行下述步骤。
步骤 303, 判断磁盘阵列 1 是否已被其他 EC 通道选择, 如果否, 执行步骤 304, 如果 是, 执行步骤 305。
由于磁盘阵列 1 是根据存储计划中的数据保存时间选择出的, 而不同 EC 通道的存 储计划中可以包含相同的数据保存时间, 所以存在磁盘阵列 1 已被其他 EC 通道选择的可 能。如此, 执行到步骤 303 时, 就需要判断磁盘阵列 1 是否已被其他 EC 通道选择, 并根据不 同的判断结果执行不同的操作, 分别见步骤 304 至步骤 305。
步骤 304, 将磁盘阵列 1 中除保留空间外的空间划分成 M 个大小相同的存储单元 组, 并将每个存储单元组中除二级索引空间外的空间划分成 N 个大小相同的存储单元。该 步骤的具体操作如上所述。之后执行步骤 307。
步骤 305, 判断磁盘阵列 1 是否还能容纳通道 1 下刷的数据量, 如果否, 执行步骤
306, 如果是, 执行步骤 307。
假如执行步骤 302 之前, 已有通道 2 和 3 选择了磁盘阵列 1, 而在步骤 302 中还为 通道 1 选择了磁盘阵列 1, 如此, 执行到本步骤 305 时, 判断该磁盘阵列 1 除了容纳通道 2 和 3 下刷的数据量外, 是否还能进一步容纳通道 1 下刷的数据量, 其中, 通道下刷的数据量是 根据该通道的存储计划中的数据保存时间和该通道的码流大小计算出的, 如果不能, 执行 步骤 306, 如果能, 执行步骤 307。
步骤 306, 如果还能根据存储计划中的数据保存时间 T1 选择除磁盘阵列 1 之外的 其他磁盘阵列来存放通道 1 下刷的数据, 则针对该选择的磁盘阵列按照步骤 303 对磁盘阵 列 1 的操作执行 ; 否则, 结束当前流程。
本步骤 306 中的选择操作可按照现有方式执行。
步骤 307, 允许通道 1 向磁盘阵列 1 下刷数据。之后执行步骤 308。
通过以上步骤 305 至步骤 307 能够确定出向磁盘阵列 1 下刷数据的通道。如果通 过上述步骤 305 至步骤 307 确定出多路 EC 通道都被允许向磁盘阵列 1 下刷数据, 则当该多 路 EC 通道同时向磁盘阵列 1 下刷数据时, 执行步骤 308。
步骤 308, 磁盘阵列 1 的缓存以单位时间为间隔将同一个单位时间内接收的数据 顺序写入至同一个存储单元, 并在完成写入后, 分别在磁盘阵列 1 的保留空间 ( 具体为该保 留空间中的一级索引空间 ) 和该存储单元所在存储单元组的二级索引空间中添加每路数 据对应的 EC 通道的一级索引表和二级索引表, 以供查询该路数据。 至于步骤 308 如何实现, 下面通过图 4 所示的流程进行描述 :
步骤 401, 在向磁盘阵列 1 写入当前单位时间内接收的数据时, 判断当前是否首次 向磁盘阵列 1 写入数据, 如果是, 执行步骤 402 ; 否则, 执行步骤 403 ;
步骤 402, 将该当前单位时间内接收的数据写入至磁盘阵列 1 中第一个存储单元 组的第一个存储单元, 之后执行步骤 406 ;
步骤 403, 如果上一个存储单元为磁盘阵列 1 中最后一个存储单元组的最后一个 存储单元, 则执行步骤 404 ; 否则, 执行步骤 405。
所述上一个存储单元为上一个单位时间接收的数据所写入的存储单元。
步骤 404, 更新第一个存储单元组中第一个存储单元的数据为当前单位时间内接 收的数据, 之后执行步骤 406。
也就是说, 当数据写完磁盘阵列 1 上所有存储单元后, 需要重新回到第一个存储 单元组的第一个存储单元, 覆盖之前保存的数据。
步骤 405, 如果上一个存储单元的下一个存储单元当前还未被写入数据, 则直接将 当前单位时间内接收的数据写入至该下一个存储单元, 之后执行步骤 406 ; 否则, 更新该下 一个存储单元中的数据为当前单位时间内接收的数据, 之后执行步骤 406。
通过以上步骤 401 至步骤 405 可以看出, 本实施例是以单位时间为间隔将同一个 单位时间内接收的数据写入至同一个存储单元。当然, 由于磁盘阵列 1 中的存储单元是依 据单位时间划分的, 如果存储单元不能完全容纳同一单位时间内接收的数据, 则可先填满 当前待写入的存储单元, 将多出的数据写入下一个存储单元, 而在写入下一个单位时间接 收的数据时, 将该下一个单位时间接收的数据接着写入这个存储单元空余的空间, 依次类 推。
通过以上步骤 401 至步骤 405 实现了以全顺序方式向磁盘阵列写入数据。
步骤 406, 针对新写入至存储单元的每路数据, 确定该路由数据对应的 EC 通道, 判断该 EC 通道上次下刷的数据是否写入至该存储单元所在的存储单元组, 是则执行步骤 407, 否则, 执行步骤 408。
本步骤 406 中新写入至存储单元的每路数据具体可为步骤 402 或者步骤 405 写入 的每路数据, 也可为步骤 404 或者步骤 405 中发生更新的每路数据。
步骤 407, 在一级索引空间中添加该 EC 通道的一级索引表, 之后执行步骤 408。
也就是说, 如果 EC 通道本次下刷的数据和上次下刷的数据存放在不同的存储单 元组, 则会在本次下刷的数据写入至存储单元后, 在一级索引空间中记录该 EC 通道的一级 索引表。
优选地, 本实施例为加快添加操作速度, 可先在缓存中执行该添加操作, 之后将添 加的一级索引表复制到一级索引空间。
步骤 408, 在该存储单元所在存储单元组的二级索引空间中添加该 EC 通道的二级 索引表。
本实施例中, 一级索引表和二级索引表主要是便于后续数据查询操作, 下面对一 级索引表和二级索引表进行描述。
本实施例中, 一级索引表大小可为 128KB, 其用于记录 EC 通道的一级索引信息。 其 中, EC 通道的一级索引信息包含该 EC 通道的名称、 该 EC 通道的二级索引表在存储单元组 中的位置 ( 其可通过起始偏移量标识 )、 该 EC 通道下刷的数据写入至存储单元组的时间以 及该存储单元组的编号。以步骤 406 确定的 EC 通道名称为 EC_206-204 为例, 则该 EC 通道 在一级索引空间中的一级索引表如表 1 所示 :
表1
视频通道名称 二级索引表起始偏移量 存储单元组编号 1 2 3 EC2004_206-204 24 写入时间 2010_6_4_8:45:15 2010_6_4_8:50:15 2010_6_4_9:15:23 2010_6_4_9:30:23 4 ……
……在表 1 中, EC 通道的二级索引表在各个存储单元组的位置是相同的 ( 当然, 也可 不同, 原理类似 ), 即二级索引表的起始偏移量相同。至于二级索引表, 其大小可为 256KB, 用于记录 EC 通道的二级索引信息。其中, EC 通道的二级索引信息包含该 EC 通道下刷的数据的大小 ( 通过 block 数量表示 )、 在存储单 元中的位置 ( 通过存储单元的编号和起始偏移量表示 ) 和相应的采集时间 ( 具体为被 EC 通道采集的时间, 记为数据时间 ), 具体可参见表 2 所示。
表2
在表 2 中, 出现了存储单元编号相同, 但存储单元起始偏移量不同的情况, 比如, 表 2 中编号为 2 的存储单元, 之所以会出现这种情况, 主要是由于视频业务中常常存在不稳 定因素比如网络不稳定等导致的多个数据时间不同的数据在一个单位时间内被下刷至磁 盘阵列 1 的缓存, 比如表 2 中数据时间分别为 2010_6_49:00:08 和 2010_6_49:00:09 的数 据在同一个单位时间到达缓存, 则缓存就会将这两个数据顺序写入至同一个存储单元即表 2 中的存储单元 2, 即出现了上述情况。
至此, 完成一级索引表和二级索引表的描述。通过上面步骤 407 至步骤 408 实现 EC 通道的一级索引表和二级索引表的添加操作。需要说明的是, 如果在上述数据写入过程 中, 需要删除某一路 EC 通道的存储计划, 则从磁盘阵列 1 的一级索引空间查找并删除该 EC 通道的一级索引表, 并根据该被删除的一级索引表包含的该 EC 通道二级索引表的位置查 找并删除该 EC 通道的二级索引表。
需要说明的是, 在上述写入过程中, 如果某路 EC 通道暂停向磁盘阵列 1 下刷数据, 这里, EC 通道暂停向磁盘阵列 1 下刷数据通常是表示当前正在对该 EC 通道已下刷的数据 进行核查, 为了方便该核查工作, 需要保证该 EC 通道下刷的数据不被更新, 具体可通过以 下操作实现 : 首先使暂停的 EC 通道下发暂停通知至磁盘阵列 1 的缓存 ; 当缓存接收到暂停 通知后, 在一级索引空间中查找该暂停的 EC 通道的一级索引表, 根据该一级索引表中 EC 通 道二级索引表位置查找到该 EC 通道的二级索引表, 并在查找到的二级索引表中获取该 EC 通道下刷的数据在存储单元中的位置, 之后锁定该位置, 以使该位置的数据不被更新。比 如, 通道 1 需要暂停向磁盘阵列 1 下刷数据, 则该通道 1 就会下发暂停通知告知给磁盘阵列 1 的缓存, 当该缓存接收到通知后, 在一级索引空间中查找到通道 1 的一级索引表, 根据该 查找到的一级索引表包含的该通道 1 二级索引表的位置查找到通道 1 的二级索引表, 在该 查找到的二级索引表中获取该通道 1 下刷的数据在各个存储单元中的位置, 之后锁定该位
置, 以使该位置的数据不被更新。
如此, 上述步骤 404 或步骤 405 执行的更新操作具体可包括 : 如果该存储单元包含 锁定位置, 则更新该存储单元中除锁定位置之外的数据为当前单位时间内接收的数据 ; 否 则, 更新该存储单元中的数据为当前单位时间内接收的数据。
另外, 本实施实例为节省一级索引空间和二级索引空间资源, 可在步骤 404 或者 步骤 405 执行更新操作之前, 执行以下步骤 : 先判断当前待写入数据的存储单元是否锁定 位置, 如果是, 确定该存储单元中除锁定位置之外的数据对应的 EC 通道 ; 如果否, 确定该存 储单元中存放的数据对应的 EC 通道 ; 之后, 在一级索引空间中删除该确定的 EC 通道的一级 索引表, 以及在该存储单元所在存储单元组的二级索引空间中删除该确定的 EC 通道的二 级索引表。
步骤 409, 当针对每一单位时间内接收的数据都按照上述步骤 401 至步骤 408 执行 后, 完成数据写入流程。
至此, 实现了本发明实施例提供的数据写入流程。
之后, 如果某一通道比如通道 1 向磁盘阵列 1 的缓存请求读取数据, 该请求携带了 读取数据的时间段, 则执行图 5 所示的流程。 步骤 501, 在一级索引空间中查找到通道 1 的一级索引表。
由于一级索引表包含通道的名称, 因此, 本步骤 501 可以通道 1 的名称为关键字在 一级索引空间搜索包含该关键字的一级索引表。
步骤 502, 从该一级索引表中确定写入时间早于、 且最接近该时间段起始时间的存 储单元组的编号, 以及确定晚于、 且最接近该时间段结束时间的存储单元组的编号。
比如, 如果请求中携带的时间段为 2010_6_4_8:55:10 至 2010_6_4_9:28:10, 通道 1 的名称为 EC_206-204, 则根据表 1 可以得到写入时间早于、 且最接近 2010_6_4_8:55:10 的存储单元组的编号为 2, 而晚于、 且最接近 2010_6_4_9:28:10 的存储单元组的编号为 4。
步骤 503, 在一级索引表中查找到该 EC 通道的二级索引表分别在上述两个编号、 以及上述两个编号之间的各个编号对应的存储单元组中的位置, 根据该位置上的二级索引 表所包含的数据时间、 数据位置、 以及所述时间段查询数据。
根据表 1 可以看出, 数据是按照时间先后顺序依次写入至磁盘阵列的各个存储单 元组, 因此, 在步骤 502 确定的两个编号对应的存储单元组满足上述时间段时, 该两个编号 之间的各个编号所对应的存储单元组肯定也满足上述时间段。比如, 如果步骤 502 确定 出写入时间早于、 且最接近 2010_6_4_8:55:10 的存储单元组的编号为 2, 晚于、 且最接近 2010_6_4_9:28:10 的存储单元组的编号为 4, 则根据表 1 可以知道, 该编号 2 和编号 4 之间 的编号 3 所对应的存储单元组也满足该时间段, 因此, 本步骤需要确定该 EC 通道的二级索 引表分别在编号 2、 3 和 4 三个存储单元组中的位置, 之后根据该位置上的二级索引表所包 含的数据时间、 数据位置、 以及所述时间段查询数据。
至此, 实现了数据读取流程。
以上对本发明实施例提供的方法进行了描述, 下面对本发明实施例提供的装置进 行描述。
参见图 6, 图 6 为本发明实施例提供的装置结构图。如图 6 所示, 该装置包括 : 写 入模块 601、 添加模块 602 和查询模块 603,
其中, 写入模块 601, 用于在多路 EC 通道同时向磁盘阵列下刷数据时, 将同一个单 位时间内接收的各路数据顺序写入至存储单元 ;
添加模块 602, 用于在写入模块 601 完成写入后, 分别在保留空间和二级索引空间 中添加每路数据对应的 EC 通道的一级索引表和二级索引表, 以供查询模块 603 查询该路数 据;
其中, 所述存储单元是通过对存储单元组中除所述二级索引空间外的空间划分得 到的, 所述存储单元组是通过对磁盘阵列中除保留空间之外的空间划分得到的。
如图 6 所示, 添加模块 602 具体实现时可包括 :
第一判断子模块 6021, 用于针对写入模块 601 写入的每路数据所对应的 EC 通道, 判断该 EC 通道上次下刷的数据是否写入至所述存储单元所在的存储单元组, 如果是, 发送 第二添加通知给第二添加子模块 6023 ; 否则, 发送第一添加通知给第一添加子模块 6022 ;
第一添加子模块 6022, 用于接收到所述第一添加通知时, 在保留空间中添加该 EC 通道的一级索引表, 之后发送第三添加通知给第二添加子模块 6023 ; 该一级索引表包含所 述存储单元组的编号、 数据写入至该存储单元组的时间、 该 EC 通道的名称及其二级索引表 的位置 ; 第二添加子模块 6023, 用于接收到所述第二添加通知或者第三添加通知时, 在该 存储单元组的二级索引空间中添加该 EC 通道的二级索引表 ; 该二级索引表包含该路数据 在存储单元的位置和被采集的数据时间。
优选地, 如图 6 所示, 写入模块 601 可包括 :
第二判断子模块 6011, 用于在向磁盘阵列写入当前单位时间内接收的数据时, 判 断当前是否首次向磁盘阵列写入数据, 如果是, 发送第一写入通知给写入子模块 6012 ; 否 则, 判断上一个存储单元是否为磁盘阵列中最后一个存储单元组的最后一个存储单元, 所 述上一个存储单元为上一个单位时间写入的存储单元, 如果是, 发送第二写入通知给写入 子模块 6012 ; 否则, 发送第三写入通知给写入子模块 6012 ;
写入子模块 6012, 接收到第一写入通知后, 将当前单位时间内接收的数据写入至 所述磁盘阵列中第一个存储单元组的第一个存储单元 ; 接收到第二写入通知后, 更新第一 个存储单元组中第一个存储单元的数据为当前单位时间内接收的数据 ; 接收到第三写入通 知后, 如果上一个存储单元的下一个存储单元还未写入数据, 则将当前单位时间内接收的 数据写入至该下一个存储单元, 否则, 更新该下一个存储单元中的数据为当前单位时间内 接收的数据。
优选地, 如图 6 所示, 查询模块 603 具体实现时可包括 :
查找子模块 6031, 用于接收到 EC 通道请求读取磁盘阵列中的数据时, 所述请求携 带了读取数据的时间段, 在保留空间中查找到该 EC 通道的一级索引表 ;
确定子模块 6032, 用于从查找子模块 6031 查找到的一级索引表中确定写入时间 早于、 且最接近该时间段起始时间的存储单元组的编号 1, 以及确定晚于、 且最接近该时间 段结束时间的存储单元组的编号 2 ;
查询子模块 6033, 用于在一级索引表中查找到该 EC 通道的二级索引表分别在编 号 1、 编号 2 以及编号 1 和编号 2 之间各个编号对应的各个存储单元组中的位置, 根据该位 置上的二级索引表所包含的数据时间、 数据位置、 以及所述时间段查询数据。
由以上技术方案可以看出, 本发明中, 当多路 EC 通道同时向同一个磁盘阵列下刷 数据时, 以单位时间为间隔将同一个单位时间内接收的多路数据顺序写入至同一存储单 元, 即实现了顺序向磁盘阵列写入数据的目的, 提高了数据写入效率, 也提高了磁盘阵列的 I/O 处理能力, 同时降低了视频业务中由于存储端响应缓慢而导致数据丢失的风险。
以上所述仅为本发明的较佳实施例而已, 并不用以限制本发明, 凡在本发明的精 神和原则之内, 所做的任何修改、 等同替换、 改进等, 均应包含在本发明保护的范围之内。