一种数据存储方法、装置及设备.pdf

上传人:e1 文档编号:5881214 上传时间:2019-03-28 格式:PDF 页数:16 大小:943.71KB
返回 下载 相关 举报
摘要
申请专利号:

CN201510882662.0

申请日:

2015.12.03

公开号:

CN105528180A

公开日:

2016.04.27

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 3/06申请日:20151203|||公开

IPC分类号:

G06F3/06

主分类号:

G06F3/06

申请人:

浙江宇视科技有限公司

发明人:

余丽

地址:

310051 浙江省杭州市滨江区西兴街道江陵路88号10幢南座1-11层

优先权:

专利代理机构:

北京博思佳知识产权代理有限公司 11415

代理人:

林祥

PDF下载: PDF下载
内容摘要

本申请提供一种数据存储方法、装置及设备,所述方法包括:缓存管理模块接收上层发送的将数据写入缓存的写命令,所述缓存为与独立磁盘冗余阵列Raid对应的缓存;缓存管理模块根据Raid的条带状态判断是否能下发所述写命令;如果不能下发所述写命令,则向所述上层发送写失败错误信息。本申请中,缓存管理模块在接收到写命令时,根据Raid的条带状态判断能否下发写命令,并在不能下发时,向上层反馈错误缓存错误信息,避免了Raid因少量条带错误而导致整个Raid不可用的问题。由于缓存管理模块严格根据每个条带情况来判断写命令是否下发,Raid对应的写缓存不会被冻结而产生大量不可用的写缓存块,提高了整个写缓存的利用率。

权利要求书

1.一种数据存储方法,其特征在于,包括:
缓存管理模块接收上层发送的将数据写入缓存的写命令,所述缓存为与
独立磁盘冗余阵列Raid对应的缓存;
所述缓存管理模块根据所述Raid的条带状态判断是否能下发所述写命
令;
如果不能下发所述写命令,则所述缓存管理模块向所述上层发送错误信
息,所述错误信息中包括与所述写命令对应的缓存不可写的信息。
2.根据权利要求1所述的方法,其特征在于,所述缓存管理模块根据所
述Raid的条带状态来判断是否能下发所述写命令,包括:
所述缓存管理模块将所述写命令按照Raid条带大小拆分成多个写子命
令,每个写子命令对应一个条带;
所述缓存管理模块遍历每个写子命令;
所述缓存管理模块判断所述每个写子命令对应的条带是否可写;
如果有一个写子命令对应的条带不可写,则所述缓存管理模块确定不能
下发所述写命令;
如果所有子命令所对应的条带均可写时,则所述缓存管理模块确定能下
发所述写命令。
3.根据权利要求1或2所述的方法,其特征在于,还包括:
如果能下发所述写命令,则所述缓存管理模块判断是否能命中写缓存;
如果能命中写缓存,所述缓存管理模块将所述数据写入命中的所述写缓
存中,并在所述写缓存中的数据满足刷新条件时,将所述写缓存中的数据刷
新到Raid中。
4.根据权利要求3所述的方法,其特征在于,还包括:
如果不能命中写缓存,则所述缓存管理模块获取空闲的写缓存块;
所述缓存管理模块判断是否能获取到空闲的写缓存块,如果能获取到,
则将所述数据写入获取空闲的所述写缓存块中,并在所述写缓存块中的数据
满足刷新条件时,将所述写缓存块中的数据刷新到所述Raid中;
如果不能获取到,则所述缓存管理模块将所述写命令下发给所述Raid
处理。
5.一种数据存储装置,其特征在于,包括:
接收单元,用于接收上层发送的将数据写入缓存的写命令,所述缓存为
与独立磁盘冗余阵列Raid对应的缓存;
第一判断单元,用于根据所述Raid的条带状态判断是否能下发所述写命
令;
第一发送单元,用于在所述第一判断单元判断不能下发所述写命令时,
向所述上层发送错误信息,所述错误信息中包括与所述写命令对应的缓存不
可写的信息。
6.根据权利要求5所述的装置,其特征在于,所述第一判断单元包括:
拆分单元,用于将所述写命令按照Raid条带大小拆分成多个写子命令,
每个写子命令对应一个条带;
遍历单元,用于遍历所述拆分单元拆分后的每个写子命令;
第一判断子单元,用于判断所述每个写子命令对应的条带是否可写;
第一确定单元,用于在所述第一判断子单元判断有一个写子命令对应的
条带不可写时,确定不能下发所述写命令;
第二确定单元,用于在所述第一判断子单元判断所有子命令所对应的条
带均可写时,确定能下发所述写命令。
7.根据权利要求6所述的装置,其特征在于,所述第一判断单元还包括:
第二判断子单元,用于在所述第一判断子单元判断所有子命令所对应的
条带均可写时,判断是否遍历完所有的写子命令;
所述第二确定单元,还用于在所述第二判断子单元判断遍历完所有的写
子命令时,确定能下发所述写命令;
所述遍历单元,还用于在所述第二判断子单元判断没有遍历完所有的写
子命令时,继续遍历每个写子命令。
8.根据权利要求5至7任一项所述的装置,其特征在于,还包括:
第二判断单元,用于在所述第一判断单元判断能下发所述写命令时,判
断是否能命中写缓存;
第一写入单元,用于在所述第二判断单元判断能命中写缓存时,将所述
数据写入命中的所述写缓存中,并将所述写缓存中的数据满足刷新条件时,
将所述写缓存中的数据刷新到Raid中。
9.根据权利要求8所述的装置,其特征在于,还包括:
获取单元,用于在所述第二判断单元判断不能命中写缓存时,获取空闲
的写缓存块;
第三判断单元,用于判断是否能获取到空闲的写缓存块;
第二写入单元,用于在所述第三判断单元判断能获取到空闲的写缓存时,
将所述数据写入获取到的所述写缓存块中,并在所述写缓存块中的数据满足
刷新条件时,将所述写缓存块中的数据刷新到所述Raid中。
第二发送单元,用于在所述第三判断单元判断不能获取到空闲的写缓存
块时,将所述写命令下发给所述Raid处理。
10.一种数存储设备,其特征在于,包括:
处理器,以及用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为:
接收上层发送的将数据写入缓存的写命令,所述缓存为与独立磁盘冗余阵
列Raid对应的缓存;
根据所述Raid的条带状态判断是否能下发所述写命令;
如果不能下发所述写命令,则向所述上层发送错误信息,所述错误信息中
包括与所述写命令对应的缓存不可写的信息。

说明书

一种数据存储方法、装置及设备

技术领域

本申请涉及数据存储技术领域,特别涉及一种数据存储方法、装置及设备。

背景技术

目前通用的存储产品中,高速缓冲存储器(Cache)管理模块使用缓存来提
高独立磁盘冗余阵列(Raid)的写入性能是常用做法。以Raid5为例,业务数据
写到缓存后,缓存里的数据如果能凑成整条带,Cache管理模块则将数据写入
Raid中,以提高产品的性能。但是,如果Raid条带出现错误时,比如,Raid的
一个条带发生错误时,则该Raid会进入失败(Failed)状态,此时,Cache管理
模块会将该Raid的缓存设置为冻结(Frozen)状态,导致整个Raid的缓存不可
用,降低了Raid空间的利用率和Raid的容错率。

因此,现有技术中,在Raid中只要有一个条带发生错误时,Raid就进入失
败状态时,Cache也会被冻结,导致Raid中正常的条带不可用,也降低了Cache
的利用率。

发明内容

有鉴于此,本申请提供一种数据存储方法、装置及设备,以解决现有技术
中由于Raid中的一个条带错误导致整个Raid不可用,以及写缓存利用率降
低的问题。

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

根据本申请实施例的第一方面,提供一种数据存储方法,包括:

所缓存管理模块接收上层发送的将数据写入缓存的写命令,所述缓存为
与独立磁盘冗余阵列Raid对应的缓存;

所述缓存管理模块根据所述Raid的条带状态判断是否能下发所述写命
令;

如果不能下发所述写命令,则所述缓存管理模块向所述上层发送错误信
息,所述错误信息中包括与所述写命令对应的缓存不可写的信息。

根据本申请实施例的第二方面,提供一种数据存储装置,包括:

接收单元,用于接收上层发送的将数据写入缓存的写命令,所述缓存为
与独立磁盘冗余阵列Raid对应的缓存;

第一判断单元,用于根据所述Raid的条带状态判断是否能下发所述写命
令;

第一发送单元,用于在所述第一判断单元判断不能下发所述写命令时,
向所述上层发送错误信息,所述错误信息中包括与所述写命令对应的缓存不
可写的信息。

根据本申请实施例的第三方面,提供一种数存储设备,包括:

处理器,以及用于存储所述处理器可执行指令的存储器;

其中,所述处理器被配置为:

接收上层发送的将数据写入缓存的写命令,所述缓存为与独立磁盘冗余阵
列Raid对应的缓存;

根据所述Raid的条带状态判断是否能下发所述写命令;

如果不能下发所述写命令,则向所述上层发送错误信息,所述错误信息中
包括与所述写命令对应的缓存不可写的信息。

本申请实施例中,Cache管理模块在接收到写命令时,先根据Raid的条
带状态判断是否下发写命令,并在不能下发所述写命令时,向上层反馈写失
败错误信息,此时不会冻结该缓存(比如,在后续接收到读命令时,可以读
取该缓存中的数据),避免了Raid因少量条带错误而导致整个Raid不可用
的问题。进一步,由于缓存管理模块严格根据每个条带情况来判断写命令是
否下发,Raid对应的写缓存不会被冻结而产生大量不可用的写缓存块,提高
了整个写缓存的利用率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,
并不能限制本申请。

附图说明

图1是本申请实施例提供的一种数据存储方法的流程图;

图2是本申请实施例提供的一种数据存储方法中判断写命令是否能下发的
流程图;

图3是本申请实施例提供的一种数据存储方法中判断写命令是否能下发的
另一流程图;

图4是本申请实施例提供的一种数据存储方法的另一流程图;

图5是本申请实施例提供的一种数据存储装置所在设备的一种硬件结构
图;

图6是本申请实施例提供一种数据存储装置的结构示意图;

图7是本申请实施例提供一种数据存储装置的另一结构示意图;

图8是本申请实施例提供一种数据存储装置的另一结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描
述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。
以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方
式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一
致的装置和方法的例子。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本
申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”
和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,
本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或
所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信
息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区
分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,
类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语
“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

请参阅图1,图1是本申请实施例提供的一种数据存储方法的流程图。所
述方法包括:

步骤101:缓存管理模块接收上层发送的将数据写入缓存的写命令,所
述缓存为与独立磁盘冗余阵列Raid对应的缓存;

本实施例中,缓存管理模块(也可以称为Cache缓存管理模块或缓存管
理设备等)接收到上层发送的写命令,其中,上层可以是主机,处理器,也
可以是小型计算机系统接口(SCSI,SmallComputerSystemInterface),或互联
网小型计算机系统接口(iSCSI,InternetSmallComputerSystemInterface),
目标(TARGET)驱动模块;当然,也可以是应用程序或用户等。

该实施例中,缓存管理模块会为每个独立磁盘冗余阵列(Raid)分配一
块缓存。

步骤102:缓存管理模块根据所述Raid的条带状态判断是否能下发所述
写命令;

缓存管理模块在接收到该写命令后,先根据所述Raid的条带状态来判断
该写命令是否可以下发,其目的是防止在写命令不可下发时,缓存管理模块
导致会将该Raid的写缓存设置为冻结(Frozen)状态,从而导致整个Raid
的条带不可用。当然,导致写缓存冻结状态并不限定于条带错误这种情况,
还可以是其他情况,比如磁盘不在位等。

其中,本申请实施例中,下发写命令的对象,可以是缓存,也可以是空
闲的缓存,当然,也可以是Raid,具体实施时需要根据具体的情况来确定下
发的对象,比如,根据写命令命中对应写缓存时,将写命令下发给写缓存,
以便于缓存根据写命令存储数据,也就是说,如果能命中写缓存,则缓存管
理模块将数据存储到与该写命令对应的缓存中;如果没有命中对应的写缓存,
则需要先获取空闲的写缓存(或写缓存块等),如果能获取到空闲的写缓存,
将该写命令发送给该空闲的写缓存,以便于空闲的写缓存存储该数据,也就
是说,如果能获取到空闲的写缓存,则缓存管理模块将数据存储到获取的空
闲缓存中;如果没有命令空闲的写缓存,则将该写命令下发给Raid,由Raid
对该写命令进行相应的处理。

其中,命中的写缓存和获取的空闲写缓存之间的区别为:命中的写缓存
中已经存储有数据,而空闲的写缓存中,没有存储有数据。

需要说明的是,缓存管理模块会为每个Raid分配一块写缓存,而一个写
命令写的位置可能在Raid的一个条带内、也可能跨Raid连续的若干个条带,
具体要根据写命令起始地址和长度、以及Raid的条带大小来计算。比如写命
令写的起始地址为64KB、长度为300KB、Raid的条带大小为128KB,那么
这个写命令写的位置就跨Raid连续的3个条带:条带1、条带2、条带3。

Raid上不同条带的状态可能不一样,比如上述写命令对应的条带1、条
带3都正常可写,条带2错误不可写。

另外,不同写命令的起始地址、长度都不一样,不同Raid的条带大小也
不一样,因此,缓存管理模块需要按照如下述步骤判断一个写命令是否可以
下发,其判断的具体过程如下图2所示。

步骤103:如果不能下发所述写命令,则缓存管理模块向所述上层设备
发送错误信息,所述错误信息中包括与所述写命令对应的缓存不可写的信息。

该步骤中,如果写命令不可以下发,缓存管理模块将写命令返回上层,
并返回相应的错误信息,并说明Raid中对应的条带不可用。而现有技术是冻
结缓存、所有写命令都会返回Raid不可用;而采用本申请的实施例中,除了
Raid中个别条带不可用之外,其他的条带还是可以用的,也就是说,在接收
到其他条带的写命令时,还是可以将数据写入RAID的。

需要说明的是,Raid的错误条带个数可以由用户根据具体业务模型来设
置可容忍的值。

本申请实施例中,缓存管理模块在接收到写命令时,先根据Raid的条
带状态判断是否下发写命令,并在不能下发所述写命令时,向上层反馈写失
败的错误信息,避免了Raid因少量条带错误而导致整个Raid不可用的问题。
进一步,由于缓存管理模块严格根据每个条带情况来判断写命令是否下发,
Raid对应的写缓存不会被冻结而产生大量不可用的写缓存块,提高了整个写
缓存的利用率。

还请参阅图2,图2为本申请实施例提供的一种数据存储方法中根据Raid
条带状态判断写命令是否能下发的流程图,包括:

步骤201:缓存管理模块将所述写命令按照Raid条带大小拆分成多个写
子命令,每个写子命令对应一个条带;

步骤202:所述缓存管理模块遍历每个写子命令;

步骤203:所述缓存管理模块判断所述每个写子命令对应的条带是否可
写;如果所有的条带均可以写,执行步骤204;如果有一个写子命令对应的
条带不可写,执行步骤205;

也就是说,所述缓存管理模块判断每个写子命令对应的条带是否正常可
写。

步骤204:所述缓存管理模块确定能下发所述写命令;

步骤205:所述缓存管理模块确定不能下发所述写命令。

也就是说,只要有一个写子命令对应的条带不正常,则该写命令就不能
下发。

还请参阅图3,图3为本申请实施例提供的数据存储方法中判断写命令
是否能下发的另一流程图,所述方法包括:

步骤301:缓存管理模块将所述写命令按照Raid条带大小拆分成多个写
子命令,每个写子命令对应一个条带;

步骤302:所述缓存管理模块遍历每个写子命令;

步骤303:所述缓存管理模块判断所述每个写子命令对应的条带是否可
写;如果有一个写子命令对应的条带不可写,执行步骤304;如果所有子命
令所对应的条带均可写时,执行步骤305:

步骤304:所述缓存管理模块确定不能下发所述写命令;

步骤305:所述缓存管理模块判断是否遍历完所有的写子命令;如果遍
历完所有的写子命令,则步骤306,否则,返回步骤302;

步骤306:所述缓存管理模块确定能下发所述写命令。

本申请实施例中,由于缓存管理模块会根据每个条带情况来判断写命令
是否下发,Raid对应的写缓存不会被冻结而产生大量不可用的写缓存块,提
高了整个写缓存的利用率。需要说明的是,Raid的错误条带个数可以由用户
根据具体业务模型设置可容忍的值。

还请参阅图4,图4为本申请实施例提供的一种数据存储方法的另一流
程图,该实施例与图1实施例的不同之处在于,缓存管理模块在接收到写命
令后,需要根据写命令所对应Raid条带的状态来判断该写命令是否可以下发。
若写命令可以下发,缓存管理模块还是按照下述过程对写命令进行处理;若
写命令不可以下发,缓存管理模块将写命令返回上层,并返回相应的错误信
息说明Raid的条带不可用,具体如上图1实施例所示。所述方法包括:

步骤401:缓存管理模块接收上层发送的将数据写入缓存的写命令,所
述缓存为与独立磁盘冗余阵列Raid对应的缓存;

步骤402:所述缓存管理模块根据所述Raid的条带状态来判断是否能下
发所述写命令;如果不能下发,执行步骤403;如果能下发,执行步骤404;

其中,根据所述写命令所对应Raid的条带的状态来判断是否能下发所述
写命令的过程详见上述实施例,在此不再赘述。

步骤403:所述缓存管理模块向所述上层发送错误信息,所述错误信息
中包括与所述写命令对应的缓存不可写的信息;

步骤404:所述缓存管理模块继续判断是否能命中写缓存;如果是,执
行步骤405和步骤406;否则,执行步骤407及后续步骤;

步骤405:所述缓存管理模块将所述数据写入命中的所述写缓存中;

步骤406:所述缓存管理模块在所述写缓存中的数据满足刷新条件时,
将所述写缓存中的数据刷新到Raid中;

其中,刷新条件可以是人为设定的,比如,可以设置为当写缓存中的数
据满足一整条带数据时,执行刷新操作;也可以剩余空闲的写缓存较少时,
执行刷新操作等。

步骤407:所述缓存管理模块获取空闲的写缓存块;

步骤408:所述缓存管理模块判断是否能获取到空闲的写缓存块,如果
能,执行步骤409;否则,执行步骤411;

步骤409:所述缓存管理模块将所述数据写入获取得的所述写缓存块中;

步骤410:在所述写缓存块中的数据满足刷新条件时,所述缓存管理模
块将所述写缓存块中的数据刷新到所述Raid中;

其中,刷新条件详见上述,在此不再赘述。

步骤411:所述缓存管理模块将所述写命令下发给所述Raid处理。

本申请实施例中,将写命令下发给所述Raid处理,其Raid的处理过程
对于本领域技术人员已是熟知技术,在此不再赘述。

与前述数据存储方法的实施例相对应,本申请还提供了数据存储装置的实
施例。

本申请数据存储装置的实施例可以应用在各种计算设备上。装置实施例可
以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为
例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储
器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5
所示,为本申请实施例提供的数据存储装置所在设备的一种硬件结构图,除了
图5所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装
置所在的设备通常根据该设备的实际功能,还可以包括其他硬件,对此不再赘
述。

如图5所示,所述处理器被配置为:

接收上层发送的将数据写入缓存的写命令,所述缓存为与独立磁盘冗余阵
列Raid对应的缓存;

判断是否能下发所述写命令;

如果不能下发所述写命令,则向所述上层发送错误信息,所述错误信息中
包括与所述写命令对应的缓存不可写的信息。

在另一实施例中,处理器按照下述方式判断是否能下发所述写命令:

根据所述写命令所对所述Raid的条带状态来判断是否能下发所述写命
令。

在另一实施例中,处理器根据所述写命令所对应独立磁盘冗余阵列Raid
的条带的状态来判断是否能下发所述写命令,包括:

将所述写命令按照Raid条带大小拆分成多个写子命令,每个写子命令对
应一个条带;

遍历每个写子命令;

判断所述每个写子命令对应的条带是否可写;

如果有一个写子命令对应的条带不可写,则确定不能下发所述写命令;

如果所有子命令所对应的条带均可写时,则确定能下发所述写命令。

在另一实施例中,处理器在确定能下发所述写命令前,还用于:

判断是否遍历完所有的写子命令,如果是,确定能下发所述写命令;否
则,遍历每个写子命令。

在另一实施例中,处理器还用于在能下发所述写命令时,判断是否能命
中写缓存;

如果能命中写缓存,将所述数据写入命中的所述写缓存中,并在所述写
缓存中的数据满足刷新条件时,将所述写缓存中的数据刷新到Raid中。

在另一实施例中,处理器还用于在不能命中写缓存时,获取空闲的写缓
存块;

判断是否能获取到空闲的写缓存块,如果能获取到,则将所述数据写入
获取空闲的所述写缓存块中,并在所述写缓存块中的数据满足刷新条件时,
将所述写缓存块中的数据刷新到所述Raid中;

如果不能获取到,则将所述写命令下发给所述Raid处理。

还请参阅图6,为本申请实施例提供的一种数据存储装置的结构示意图,所
述装置包括:接收单元61,第一判断单元62和第一发送单元63,其中,

接收单元61,用于接收上层发送的将数据写入缓存的写命令,所述缓存
为与独立磁盘冗余阵列Raid对应的缓存;

第一判断单元62,用于根据所述Raid的条带状态判断是否能下发所述
写命令;

第一发送单元63,用于在所述第一判断单元62判断不能下发所述写命
令时,向所述上层发送错误信息,所述错误信息中包括与所述写命令对应的
缓存不可写的信息。

可选的,在另一实施例中,所述第一判断单元62,具体用于根据所述写
命令所对应独立磁盘冗余阵列Raid的条带状态来判断是否能下发所述写命
令。

可选的,在另一实施例中,所述第一判断单元62包括:拆分单元,遍历
单元,第一判断子单元和第二确定单元(图中未示),

拆分单元,用于将所述写命令按照Raid条带大小拆分成多个写子命令,
每个写子命令对应一个条带;

遍历单元,用于遍历所述拆分单元拆分后的每个写子命令;

第一判断子单元,用于判断所述每个写子命令对应的条带是否可写;

第一确定单元,用于在所述第一判断子单元判断有一个写子命令对应的
条带不可写时,确定不能下发所述写命令;

第二确定单元,用于在所述第一判断子单元判断所有子命令所对应的条
带均可写时,确定能下发所述写命令。

其中,第一确定单元和第二确定单元可以集成在一起,也可以独立部署,
本实施例不做限制。

可选的,在另一实施例中,所述第一判断单元62还包括:第二判断子单
元(图中未示),

第二判断子单元,用于在所述第一判断子单元判断所有子命令所对应的
条带均可写时,判断是否遍历完所有的写子命令;

所述第二确定单元,还用于在所述第二判断子单元判断遍历完所有的写
子命令时,确定能下发所述写命令;

所述遍历单元,还用于在所述第二判断子单元判断没有遍历完所有的写
子命令时,继续遍历每个写子命令。

可选的,在另一实施例中,所述装置还可以包括:第二判断单元71和第
一写入单元72,期结构示意图如图7所示,其中,

第二判断单元71,用于在所述第一判断单元62判断能下发所述写命令
时,判断是否能命中写缓存;

第一写入单元72,用于在所述第二判断单元71判断能命中写缓存时,
将所述数据写入命中的所述写缓存中,并在所述写缓存中的数据满足刷新条
件时,将所述写缓存中的数据刷新到Raid中。

可选的,在另一实施例中,所述装置还可以包括:获取单元81,第三判
断单元82,第二写入单元83和第二发送单元84,其结构示意图如图8所示,
其中,

获取单元81,用于在所述第二判断单元71判断不能命中写缓存时,获
取空闲的写缓存块;

第三判断单元82,用于判断是否能获取到空闲的写缓存块;

第二写入单元83,用于在所述第三判断单元82判断能获取到空闲的写
缓存时,将所述数据写入获取得的所述写缓存块中,并在所述写缓存块中的
数据满足刷新条件时,将所述写缓存块中的数据刷新到所述Raid中。

第二发送单元84,用于在所述第三判断单元82判断不能获取到空闲的
写缓存块时,将所述写命令下发给所述Raid处理。

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

本申请实施例中,数据存储设备在接收到写命令时,先根据Raid的条
带状态判断是否下发写命令,并在不能下发所述写命令时,向上层反馈写失
败错误信息,避免了Raid因少量条带错误而导致整个Raid不可用的问题。
进一步,由于缓存管理模块严格根据每个条带情况来判断写命令是否下发,
Raid对应的写缓存不会被冻结而产生大量不可用的写缓存块,提高了整个写
缓存的利用率。

需要说明的是,本实施例装置中的部分单元,可以集成在一起,也可以独
立部署,本实施例不做限制。

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

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

一种数据存储方法、装置及设备.pdf_第1页
第1页 / 共16页
一种数据存储方法、装置及设备.pdf_第2页
第2页 / 共16页
一种数据存储方法、装置及设备.pdf_第3页
第3页 / 共16页
点击查看更多>>
资源描述

《一种数据存储方法、装置及设备.pdf》由会员分享,可在线阅读,更多相关《一种数据存储方法、装置及设备.pdf(16页珍藏版)》请在专利查询网上搜索。

本申请提供一种数据存储方法、装置及设备,所述方法包括:缓存管理模块接收上层发送的将数据写入缓存的写命令,所述缓存为与独立磁盘冗余阵列Raid对应的缓存;缓存管理模块根据Raid的条带状态判断是否能下发所述写命令;如果不能下发所述写命令,则向所述上层发送写失败错误信息。本申请中,缓存管理模块在接收到写命令时,根据Raid的条带状态判断能否下发写命令,并在不能下发时,向上层反馈错误缓存错误信息,避免了。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1