一种磁盘控制方法及系统以及相关设备的制作方法

文档序号:6579588阅读:188来源:国知局
专利名称:一种磁盘控制方法及系统以及相关设备的制作方法
技术领域
本发明涉及数据存储领域,尤其涉及一种磁盘控制方法及系统以及相关 设备。
背景技术
随着信息产业的高速发展,其能源消耗也飞速增长。其中,数据中心的
能源消耗又占整个信息产业能源消耗的大约40%,其中,存储相关设备的能 源消耗又占数据中心能源消耗的大约37%,因此降低存储相关设备的能源消 耗成为降低信息产业能源消耗的重点。
在存储阵列的一般应用中,阵列由阵列控制器和磁盘组成。阵列中的多 个石兹盘会组成》兹盘阵歹'J (RAID, Redundant Array of Inexpensive Disk)组,以 提高性能和可靠性。
现有技术中的 一种磁盘节能的方法为
根据特定的应用需求(如归档等应用场景的特性,只需要在一天的某个 时段将RAID组打开,其余时段可以关闭)直接在RAID组中设置软件实现定 时开关,使得RAID组不会一直处于工作状态,从而节约能源。
现有技术中另 一种磁盘节能的方法为
在RAID组中设置一个静默时间门限,当在该静默时间门限内,若主机 对RAID组均无操作,则RAID组自动进行相应的低功耗待机状态,使得RAID 组不会一直处于工作状态,从而节约能源。
4旦是,上述两个现有技术中,当RAID组进行待机状态,或关闭后,如 果主机需要对该RAID组进行写操作,则RAID组中的磁盘需要恢复到正常状 态可能需要1到3分钟的时间,在恢复的过程中,由于主机的写操作无法得 到RAID组的响应,所以主机会频繁的重发写操作,当重发次数超过某个门 限时,则会导致写操作失败,从而影响正常的数据访问过程。

发明内容
本发明实施例提供了 一种磁盘控制方法及系统以及相关设备,能够在节 约能源的同时提高数据写入的可靠性。本发明实施例提供的磁盘控制方法,包括接收主机发送的写请求;当 所述写请求对应的磁盘阵列RAID组处于休眠状态时,将所述写请求存储于 保险箱盘,并唤醒所述RAID组;当所述RAID组被唤醒之后,将所述存储于 保险箱盘的写请求发送至所述RAID组,使得所述RAID组执行与所述写请求 相应的写操作。
本发明实施例提供的磁盘控制方法,包括接收用户发送的读请求;当 所述读请求对应的磁盘阵列RAID组处于休眠状态时,则通过磁盘控制装置 唤醒所述RAID组;当所述RAID组被唤醒之后,向所述RAID组发送所述读 请求,使得所述RAID组执行所述读请求相应的读操作。
本发明实施例提供的磁盘控制装置,包括第一接收单元,用于接收主 机发送的写请求;存储控制单元,用于当所述写请求对应的磁盘阵列RAID 组处于休眠状态时,将所述写请求存储于保险箱盘;第一唤醒单元,用于唤 醒所述RAID组;第一发送单元,用于当所述RAID组被唤醒之后,将所述存 储于保险箱盘的写请求发送至所述RAID组,使得所述RAID组执行所述写请 求相应的写操作。
本发明实施例提供的磁盘控制系统,包括磁盘控制装置;所述^f兹盘控制 系统还包括主机,用于向所述磁盘控制装置发送写请求;保险箱盘,用于 存储所述写请求;磁盘控制装置,用于接收主机发送的写请求,当所述写请 求对应的磁盘阵列RAID组处于休眠状态时,将所述写请求存储于保险箱盘, 并唤醒所述RAID组,当所述RAID组被唤醒之后,将所述存储于保险箱盘的 写请求发送至所述RAID组;RAID组,用于执行所述写请求相应的写才喿作。 .本发明实施例提供的主机,包括第二接收单元,用于接收用户发送的 读请求;第二唤醒单元,用于当所述读请求对应的磁盘阵列RAID组处于休 眠状态时,通过f兹盘控制装置唤醒所述RAID组;第二发送单元,用于当所 述RAID组被唤醒之后,向所述RAID组发送读请求,使得所述RAID组执行 所述读请求相应的读操作。
本发明实施例提供的磁盘控制系统,包括主机;所述磁盘控制系统还包 括磁盘控制装置,用于根据所述主机的指示唤醒所述RAID组;RAID组, 用于执行所述读请求相应的读"t乘作。从以上技术方案可以看出,本发明实施例具有以下优点
本发明实施例中,当磁盘控制装置接收到主机发送的写请求时,若该写
请求对应的RAID组处于休眠状态,则会先将写请求存储于保险箱盘,并唤 醒RAID组,所以当主机发送的写请求被存储于保险箱盘之后,主机即可获 知该写请求已被接受,所以主机不会重复发送写请求,因此不会由于重发次 数超过门限而导致写操作失败,从而能够在节约能源的同时提高数据写入的 可靠性。


为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中 所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的 前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中磁盘控制方法一个实施例示意图; 图2为本发明实施例中磁盘控制方法另 一实施例示意图; 图3为本发明实施例中磁盘控制方法再一实施例示意图; 图4为本发明实施例中磁盘控制装置一个实施例示意图; 图5为本发明实施例中磁盘控制装置另一实施例示意图; 图6为本发明实施例中主机实施例示意图; 图7为本发明实施例中磁盘控制系统一个实施例示意图; 图8为本发明实施例中磁盘控制系统另 一实施例示意图。
具体实施例方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行 清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而 不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作 出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种磁盘控制方法及系统以及相关设备,用于在节 约能源的同时提高数据写入的可靠性。
请参阅图1,本发明实施例中磁盘控制方法一个实施例包括
101、 4娄收主4几发送的写请求;本实施例中,当主机请求对某RAID组进4亍写入时,该主才几会向^兹盘控
制装置发送写请求。
102、 判断对应的RAID组是否处于休眠状态,若是,则执行步骤104, 若否,则执行步骤103;
当磁盘控制装置接收到主机发送的写请求之后,即可首先确定与该写请 求对应的RAID组,之后再判断该RAID组是否处于休眠状态,若是,则执行 步骤104,若否,则执行步骤103。
103、 将写请求发送至RAID组执行写操作;
若磁盘控制装置确定RAID组未处于休眠状态,即该RAID组当前处于正 常状态(即唤醒状态),则可以直接将主机发送的写请求通过刷盘的方式发送 至RAID组,并由该RAID组4丸行该写请求相应的写才喿作,具体的过禾呈为本领 域技术人员的公知常识,此处不作限定。
104、 将写请求存储于保险箱盘,并唤醒RAID组;
若磁盘控制装置确定RAID组处于休眠状态,则将从主机接收到的写请 求先缓存于保险箱盘中,同时向主机反馈相关信息以使主机获知当前的写请 求已经被接受,此外,磁盘控制装置唤醒步骤102中确定的RAID组。
本实施例中的保险箱盘是指在RAID组机拒中用于存储启动信息或其他 引导信息的磁盘, 一般来说, 一个机柜内若设置有12个磁盘,则其中的前4 个磁盘为保险箱盘。
本实施例中,磁盘控制装置唤醒RAID组的过程为本领域技术人员的公 知常识,此处不作限定。
105、 将保险箱盘中的写请求发送至RAID组执行写操作。
当RAID组被唤醒之后,磁盘控制装置会将存储于保险箱盘中的写请求 通过刷盘的方式发送至RAID组,使得RAID组可以根据该写请求#1行该写请 求相应的写操作。
本实施例中,当磁盘控制装置接收到主机发送的写请求时,若该写请求 对应的RAID组处于休眠状态,则会先将写请求存储于保险箱盘,并唤醒RAID 组,所以当主机发送的写请求被存储于保险箱盘之后,主机即可获知该写请 求已被接受,所以主机不会重复发送写请求,因此不会由于重发次数超过门限而导致写操作失败,从而能够在节约能源的同时提高数据写入的可靠性。
为便于理解,下面以 一具体实例对本发明实施例中的》兹盘控制方法进行
详细描述,请参阅图2,本发明实施例中的磁盘控制方法另一实施例包括 201、 4^收主才几发送的写请求;
本实施例中,为提高各磁盘间的冗余操作,可以将RAID组中每个成员 磁盘的不同区块组成一个条带(LUN, Logic Unit Number),则用户与主机都 只针对LUN进行写入操作,当主机请求对某LUN进行写入时,该主机会向 磁盘控制装置发送写请求,该写请求中包含有该LUN的标识。 202 、在预置的对应关系中确定LUN的标识对应的RAID组; 磁盘控制装置在将RAID组中每个成员磁盘的不同区块组成一个LUN时 会保存不同的LUN与RAID组之间的对应关系,即组成该LUN的成员磁盘 是属于哪一个RAID组的,从而当磁盘控制装置接收到主机发送的包含LUN 的标识的写请求时,可以在该对应关系中查询到对应的RAID组。
203、 判断对应的RAID组是否处于休眠状态,若是,则执行步骤205, 若否,则执行步骤204;
本实施例中, -磁盘控制装置可以通过调用底层的接口来确定该RAID组 是否处于休眠状态,具体的确定过程为本领域技术人员的公知常识,需要说 明的是,在实际应用中,同样还可以采用其他的方式判断RAID组是否处于 休眠状态,具体方式此处不作限定。
204、 将写请求发送至RAID组执行写操作;
若磁盘控制装置确定RAID组未处于休眠状态,即该RAID组当前处于正 常状态(即唤醒状态),则可以直接将主机发送的写请求通过刷盘的方式发送 至RAID组,并由该RAID组执行该写请求相应的写操作,具体的过程为本领 域技术人员的公知常识,此处不作限定。
205、 将写请求存储于保险箱盘,并唤醒RAID组;
若磁盘控制装置确定RAID组处于休眠状态,则将从主机接收到的写请 求先緩存于保险箱盘中,同时向主机反馈相关信息以使主机获知当前的写请 求已经被接受,此外,磁盘控制装置唤醒RAID组。
本实施例中保险箱盘的含义与图1所示的实施例中描述的保险箱盘的含义相同,此处不再赘述。
本实施例中,不兹盘控制装置可以向LUN下发带内的唤醒命令,LUN接收 到该唤醒命令之后,通过调度命令唤醒对应的RAID组中所有的成员》兹盘, 具体的唤醒的过程可以是LUN首先确定对应的RAID组,之后解析其成员 磁盘,再调用上电命令(具体可以为上电函数),使得RAID组中的所有成员 磁盘正常通电,最后将该RAID组的标志设置为唤醒状态,从而使得RAID组 从休眠状态恢复至正常状态(即唤醒状态),在实际应用中,同样还可以采用 其他的方式唤醒RAID组中的所有成员磁盘,具体方式此处不作限定。
206、 将保险箱盘中的写请求发送至RAID组执行写操作;
当RAID组被唤醒之后,磁盘控制装置会将存储于保险箱盘中的写请求 通过刷盘的方式发送至RAID组,使得RAID组可以根据该写请求执行该写请 求相应的写操作。
207、 满足预置的休眠条件时,对RAID组进行休眠。
本实施例中,当RAID组完成了该写请求相应的写操作之后,为节约能 源,磁盘控制装置可以检测当前的条件是否达到预置的休眠条件,若到达, 则对RAID组中所有的成员磁盘进行休眠。
本实施例中的预置的休眠条件可以为在用户预置的静默时间内未接收 到主机对该RAID组的写请求,且该RAID组未被设置为禁止休眠,或者该预 置的休眠条件还可以为其他的一些条件,例如到达能源消耗的高峰期(例如 每天的下午8点至10点)等。
需要说明的是,本实施例中,为提高磁盘的使用寿命,防止频繁的休眠 和唤醒,磁盘控制装置可以将某RAID组设置为禁止休眠,具体的磁盘控 制装置可以分析该RAID组近期的写操作频率,若确定写操作频率高于某一 门限数值,例如在一小时内的写操作次数超过了 10次,则磁盘控制装置可以 将该RAID组设置为禁止休眠或在某一段时间之内禁止休眠,本实施例中的 门限数值可以根据实际情况进行确定,此处不作限定。
除了上面描述的磁盘控制装置对RAID组进行设置的方式之外,在实际 应用中,还可以由用户直接通过主机对RAID组进行设置,例如设置RAID组 禁止休眠,或允许休眠等。上述描述的是用户或磁盘控制装置对RAID组进行设置的情况,在实际 应用中,用户或磁盘控制装置还可以对LUN进行设置,同样可以设置为禁止 休眠或允许休眠等,但需要说明的是,LUN还可以被设置为释放权限,则此 时LUN的状态H木眠状态或唤醒状态)以该LUN对应的RAID组的状态为准。
本实施例中,由于环境的复杂性,可能会导致RAID组在休眠或唤醒的 过程中出现一些异常情况,此时,磁盘控制装置则需对这些异常情况进行处 理,下面以几种异常情况为例进行说明 (1 )休眠某成员磁盘失败
由于RAID组的状态需要与该RAID组内所有的成员磁盘的状态保持一 致,只有当所有的成员磁盘均处于休眠状态之后,该RAID组才能被设置为 休眠状态,因此当磁盘控制装置对某RAID组进行休眠时,若其中的一个或 几个成员磁盘休眠失败,则磁盘控制装置可以唤醒该RAID组内的其他成员 》兹盘,之后重新进4刊水眠。
(2) 唤醒成员》兹盘失败
当某RAID组需要进行写操作时,磁盘控制装置会唤醒该RAID组内的所 有成员磁盘,若其中的一个或几个成员磁盘无法被唤醒,则为了保证写操作 的正常运行,会将这些无法被唤醒的成员磁盘强制设置为唤醒状态,从而使 得该RAID组的状态为唤醒状态,之后还可以对RAID组进行重构,以进行正 常的写操作。
(3) 休眠时成员磁盘掉电
当某RAID组正处于休眠状态时,若该RAID组中某一个或几个成员》兹盘 掉电,则磁盘控制装置会唤醒该RAID组中其他的成员磁盘,需要ii明的是, 如果掉电的磁盘由重新上电,则可重新恢复休眠状态。
本实施例中,上述各种异常情况都可以通过底层接口被4企测到,并且上 报给磁盘控制装置。
上述描述的是异常情况中的几个例子,可以理解的是,在实际应用中可 能还存在更多的异常情况,具体的处理方式此处不作限定。
下面以 一具体应用场景对本发明实施例中的》兹盘控制方法进4亍详细描述
假设存在2个RAID组,分别为RAID1组以及RAID2组,RAID1组中 每个成员磁盘的某块区域组成LUN1, RAID2组中每个成员磁盘的某块区域 组成LUN2,即磁盘控制装置中保存的对应关系为"RAID1组对应LUN1, RAID2组对应LUN2"。
主机在操作过程中请求对LUN2进行写入操作,则主机会向磁盘控制装 置发送写请求,该写请求中携带有标识"LUN2"以表示请求进行写入的LUN。
磁盘控制装置在接收到主机发送的写请求之后,解析该写请求,获取到 其中包含的标识"LUN2",即可获知主才几请求对LUN2进行写入,则磁盘控 制装置在上述的对应关系中确定LUN2对应的RAID组为RAID2组。
磁盘控制装置在确定RAID2组之后,通过调用底层接口确定RAID2组是 否处于休眠状态,若未处于休眠状态,则磁盘控制装置直接将写请求通过刷 盘的方式转发至RAID2组,并且由该RAID2组进行该写请求相应的写操作。
若磁盘控制装置确定RAID2组处于休眠状态,则磁盘控制装置将该写请 求存储于保险箱盘中,同时向主机反馈相关信息,用于告知主机写请求已被 接受,同时磁盘控制装置向LUN2发送带内的唤醒命令,LUN2在接收到该唤 醒命令之后,通过调度命令唤醒RAID2组中的所有的成员磁盘。
当RAID2组中的所有的成员磁盘均被唤醒之后,则底层的接口检测到 RAID2组的状态为正常状态(唤醒状态),从而向磁盘控制装置上报该状态, 磁盘控制状态根据底层接口的上报可知RAID2组已经被唤醒,则会将保险箱 盘中存储的写请求通过刷盘的方式发送至该RAID2组,使得该RAID2组可以 进行该写请求相应的写操作。
当RAID2组完成了该写请求相应的写操作之后,会向》兹盘控制装置反馈 信息,磁盘控制装置再判断是否满足预置的休眠条件,若满足,则对RAID2 組进行休眠,具体的休眠条件与前述图2所示的实施例中描述的休眠条件一 致,此处不再赘述。
本实施例中,当磁盘控制装置接收到主机发送的写请求时,若该写请求 对应的RAID组处于休眠状态,则会先将写请求存储于保险箱盘,并唤醒RAID 组,所以当主机发送的写请求被存储于保险箱盘之后,主机即可获知该写请求已被接受,所以主机不会重复发送写请求,因此不会由于重发次数超过门
限而导致写操作失败,从而能够提高数据写入的可靠性;
其次,本实施例中,RAID组完成了该写"^求相应的写"t喿作之后,当满足 预置的休眠条件时,磁盘控制装置会对RAID组进行休眠,从而可以有效的 节约能源;
再次,本实施例中提供了出现异常情况时的处理机制,因此能够更进一 步提高数据写入的可靠性。
需要说明的是,上面描述了磁盘控制装置通过保险箱盘来緩存写请求的 磁盘控制方法,上述的实施例中是以写请求为例进行说明的,而在实际应用 中,若主机发送的是读请求,也可以按照上述的方式进行处理,同时,针对 读请求,本实施例中还可以采用其他的方式进行处理,下面描述另外一种磁 盘控制方法,该方法主要针对的是用户发送的读请求,请参阅图3,本发明实 施例中的磁盘控制方法再一实施例包括
301 、主机接收用户发送的读请求;
本实施例中,当用户请求进行读取操作时,会生成读请求,并期望通过 主机将该读请求发送至对应的RAID组,则主才几会接收到用户发送的读请求。
302、 判断对应的RAID组是否处于休眠状态,若是,则执行步骤304, 若否,则执行步骤303;
本实施例中,主机接收到用户发送的读请求之后,会从该读请求中读取
出LUN的标识,并且通过带内消息向磁盘控制装置发送该LUN的标识,磁
盘控制装置可以根据该LUN的标识确定对应的RAID组,并且通过调用底层
的接口来确定该RAID组是否处于休眠状态,并将确定的结果通过带内消息
反馈至该主机,从而主机可以获知该读请求对应的RAID组是否处于休眠状 太
303、 将读请求发送至RAID组执行读操作;
当主机确定读请求对应的RAID组未处于休眠状态,而处于正常状态(即 唤醒状态),则会将该读请求通过磁盘控制装置发送至RAID组以使得该RAID 组4丸行该读请求相应的读l喿作。
304、 通过磁盘控制装置唤醒RAID组;当主机确定读请求对应的RAID组处于休眠状态时,则会向磁盘控制装 置发送唤醒命令,则i兹盘控制装置会唤醒相应的RAID组,具体的唤醒过程 与前述图2所示的实施例中描述的唤醒过程类似,此处不再赘述。
305、向RAID组发送读请求以使得RAID组执行相应的读操作。
当磁盘控制装置唤醒了 RAID组之后,会向主机反馈响应,此时主机确 定RAID组已经被唤醒,则可以通过石兹盘控制装置向该RAID组发送读请求, 以使得该RAID组执行该读请求相应的读操作。
本实施例中,主机在发送读请求之前,预先请求磁盘控制装置唤醒对应 的RAID组,主机在确定对应的RAID组已经被唤醒之后才会通过》兹盘控制装 置向RAID组发送读请求,因此可以保证读请求能够被唤醒状态的RAID组接 收并执行,所以主机不会重复发送读请求,因此不会由于重发次数超过门限 而导致读操作失败,从而能够提高数据读取的可靠性;
其次,本实施例中,由于磁盘控制装置不需要对读请求进行缓存,因此 能够节省保险箱盘的存储空间。
下面介绍本发明实施例中的磁盘控制装置实施例,请参阅图4,本发明实 施例中的磁盘控制装置一个实施例包括
第一接收单元401,用于接收主机发送的写请求;
存储控制单元402,用于当写请求对应的磁盘阵列RAID组处于休眠状态 时,将写请求存储于保险箱盘;
第一唤醒单元403,用于唤醒RAID组;
第一发送单元404,用于当RAID组被唤醒之后,将存储于保险箱盘的写 请求发送至RAID组,使得RAID组执行该写请求相应的写操作。
本实施例中,当第一接收单元401接收到主机发送的写请求时,若该写 请求对应的RAID组处于休眠状态,则存储控制单元402会先将写请求存储 于保险箱盘,并由第一唤醒单元403唤醒RAID组,所以当主才几发送的写请 求被存储于保险箱盘之后,主机即可获知该写请求已被接受,所以主机不会 重复发送写请求,因此不会由于重发次数超过门限而导致写操作失败,从而 能够提高数据写入的可靠性。
为便于理解,下面对上述的石兹盘控制装置进行详细描述,请参阅图5,本发明实施例中磁盘控制装置另 一实施例包括
第一接收单元501,用于接收主机发送的写请求,该写请求中携带有请求
进行写操作的条带的标识;
确定单元502,用于在预置的对应关系中确定该条带的标识对应的RAID
组;
本实施例中具体的对应关系与前述方法实施例中描述的对应关系相同, 此处不再赘述。
存储控制单元503,用于当确定单元502确定的RAID组处于休眠状态时, 将写请求存储于保险箱盘;
第一唤醒单元504,用于唤醒确定单元502确定的RAID组;
本实施例中,第一唤醒单元504唤醒RAID组的过程与前述方法实施例 中唤醒RAID组的过程相同,此处不再赘述。
第一发送单元505,用于当RAID组被唤醒之后,将存储于保险箱盘的写 请求发送至RAID组,使得RAID组执行该写请求相应的写操作。
本实施例中的磁盘控制装置还可以进一 步包括
休眠控制单元506,用于当满足预置的休眠条件时-,对RAID组中的所有 成员/f兹盘进行休眠。
本实施例中的预置的休眠条件与前述方法实施例中描述的休眠条件相 同,此处不再赘述。
本实施例中的磁盘控制装置还可以进一步包括
异常处理单元507,用于当对RAID组中的所有成员磁盘中的任一成员磁 盘休眠失败,则唤醒RAID组中的所有成员磁盘;当唤醒RAID组时对RAID 组中任一成员》兹盘唤醒失败时,强制设置唤醒失败的成员f兹盘为唤醒状态; 当处于休眠状态的RAID组中任一成员磁盘掉电时,则唤醒RAID组中的所有
成员磁盘。
本实施例中,当第一接收单元501接收到主机发送的写请求时,若该写 请求对应的RAID组处于休眠状态,则存储控制单元503会先将写请求存储 于保险箱盘,并由第一唤醒单元504唤醒RAID组,所以当主才几发送的写i青 求被存储于保险箱盘之后,主机即可获知该写请求已被接受,所以主机不会重复发送写请求,因此不会由于重发次数超过门限而导致写操作失败,从而
能够提高数据写入的可靠性;
其次,本实施例中,RAID组完成了该写请求相应的写操作之后,当满足 预置的休眠条件时,休眠控制单元506可以对RAID组进行休眠,从而可以 有效的节约能源;
再次,本实施例中异常处理单元507可以在出现异常情况的时候进行相 应的处理,因此能够更进一步提高数据写入的可靠性。
下面介绍本发明实施例中的主机实施例,请参阅图6,本发明实施例中的 主机实施例包括
第二接收单元601,用于接收用户发送的读请求;
本实施例中,当用户请求进行读取操作时,会生成读请求,并期望通过 主机将该读请求发送至对应的RAID组,则主机中的第二接收单元601会接 收到用户发送的读请求。
第二唤醒单元602,用于当读请求对应的不兹盘阵列RAID组处于休眠状态 时,通过》兹盘控制装置唤醒RAID组;
第二接收单元601接收到用户发送的读请求之后,会从该读请求中读取 出LUN的标识,并且通过带内消息向磁盘控制装置发送该LUN的标识,磁 盘控制装置可以才艮据该LUN的标识确定对应的RAID组,并且通过调用底层 的才妻口来确定该RAID组是否处于休眠状态,并将确定的结果通过带内消息 反々赍至该主才几,从而主才几可以获知该读-清求对应的RAID组是否处于休眠状 态,当该RAID组处于休眠状态时,第二唤醒单元602可以通过磁盘控制装 置唤醒RAID组,具体的唤醒过程与前述方法实施例中唤醒RAID组的过程相 同,此处不再赘述。
第二发送单元603,用于当RAID组被唤醒之后,向RAID组发送读请求, 使得RAID组4丸行该读请求相应的读#喿作。
本实施例中,主机在发送读请求之前,第二唤醒单元602预先请求磁盘 控制装置唤醒对应的RAID组,第二发送单元603在确定对应的RAID组已经 被唤醒之后才会通过磁盘控制装置向RAID组发送读请求,因此可以保证读 请求能够被唤醒状态的RAID组接收并执行,所以主机不会重复发送读请求,因此不会由于重发次数超过门限而导致读操作失败,从而能够提高数据读取
的可靠性;
其次,本实施例中,由于磁盘控制装置不需要对读请求进行緩存,因此 能够节省保险箱盘的存储空间。
下面介绍本发明实施例中的磁盘控制系统实施例,请参阅图7,本发明实 施例中的磁盘控制系统一个实施例包括
主机701,用于向磁盘控制装置发送写请求;
磁盘控制装置702,用于接收主机发送的写请求,当写请求对应的磁盘阵 列RAID组处于休眠状态时,将写请求存储于保险箱盘704,并唤醒RAID组, 当RAID组被唤醒之后,将存储于保险箱盘704的写请求发送至RAID组;
保险箱盘704,用于存储写请求;
RAID组703,用于执行该写请求相应的写操作。
本实施例中的磁盘控制装置702在实际应用中具体可以为前述图4或图5 所示的磁盘控制装置,具体磁盘控制装置702的细分单元以及详细功能也可 以与前述图4或图5所示的磁盘控制装置一致。
为便于理解,下面以一具体应用场景对上述磁盘控制系统中各装置之间 的交互进行说明
本实施例中,当主机701请求对某RAID组703进行写入时,该主机701
会向磁盘控制装置702发送写请求。
当磁盘控制装置702接收到主机701发送的写请求之后,即可首先确定
与该写请求对应的RAID组703,之后再判断该RAID组703是否处于4木眠状 太
心o
若磁盘控制装置702确定RAID组703未处于休眠状态,即该RAID组 703当前处于正常状态(即唤醒状态),则可以直接将主机701发送的写请求 通过刷盘的方式发送至RAID组703,并由该RAID组703净丸行该写请求相应 的写操作。
若磁盘控制装置702确定RAID组703处于休眠状态,则将从主机701 接收到的写请求先緩存于保险箱盘704中,同时向主机701反馈相关信息以 使主机701获知当前的写请求已经被接受,此外,磁盘控制装置702唤醒RAID
1组703。
本实施例中的保险箱盘704与前述方法实施例中描述的保险箱盘的含义 相同,此处不再赘述。
本实施例中,^磁盘控制装置702唤醒RAID组703的过程与前述方法实 施例中描述的唤醒过程相同,此处不再赘述。
当RAID组703被唤醒之后,磁盘控制装置702会将存储于保险箱盘704 中的写请求通过刷盘的方式发送至RAID组703,使得RAID组703可以才艮据 该写请求执行该写请求相应的写操作。
本实施例中,当磁盘控制装置702接收到主机701发送的写请求时,若 该写请求对应的RAID组703处于休眠状态,则会先将写请求存储于保险箱 盘704,并唤醒RAID组703,所以当主机701发送的写请求被存储于保险箱 盘704之后,主才几701即可获知该写请求已被4妄受,所以主才几701不会重复 发送写请求,因此不会由于重发次数超过门限而导致写操作失败,从而能够 提高数据写入的可靠性。
下面介绍本发明实施例中磁盘控制系统另一实施例,同样请参阅图8,本 发明实施例中》兹盘控制系统另 一实施例包括
主机801,用于接收用户发送的读请求,当读请求对应的RAID组803处 于休眠状态时,通过磁盘控制装置802唤醒RAID组,当RAID组803 ;故唤醒 之后,向RAID组803发送读请求;
磁盘控制装置802,用于根据主机的指示唤醒RAID组;
RAID组803,用于执行该读请求相应的读4喿作。
为便于理解,,下面以一具体应用场景对上述磁盘控制系统中各装置之间 的交互进行说明
本实施例中,当用户请求进行读取操作时,会生成读请求,并期望通过 主机801将该读请求发送至对应的RAID组803,则主机801会接收到用户发 送的读请求。
主机801接收到用户发送的读请求之后,会从该读请求中读取出LUN的 标识,并且通过带内消息向石兹盘控制装置802发送该LUN的标识,f兹盘控制 装置802可以#4居该LUN的标识确定对应的RAID组803,并且通过调用底层的接口来确定该RAID组803是否处于休眠状态,并将确定的结果通过带 内消息反々赍至该主才几801 ,从而主才几801可以获知该读i青求对应的RAID组是 否处于休眠状态。
当主机801确定读请求对应的RAID组803未处于休眠状态,而处于正 常状态(即唤醒状态),则会将该读请求通过磁盘控制装置802发送至RAID 组803以使得该RAID组803 4丸行该读请求相应的读才喿作。
当主机801确定读请求对应的RAID组803处于休眠状态时,则会向磁 盘控制装置802发送唤醒命令,则磁盘控制装置802会唤醒相应的RAID组 803,具体的唤醒过程与前述方法实施例中描述的唤醒过程类似,此处不再赘 述。
当f兹盘控制装置802唤醒了 RAID组803之后,会向主才几801反々贵响应, 此时主4几801确定RAID组已经;故唤醒,则可以通过石兹盘控制装置802向该 RAID组803发送读请求,以使得该RAID组803执行该读请求相应的读操作。
本实施例中,主机801在发送读请求之前,预先请求磁盘控制装置802 唤醒对应的RAID组803,主4几801在确定对应的RAID组803已经;故唤醒之 后才会通过磁盘控制装置802向RAID组发送读请求,因此可以保证读请求 能够被唤醒状态的RAID组803接收并执行,所以主机801不会重复发送读 请求,因此不会由于重发次数超过门限而导致读操作失败,从而能够提高数 据读取的可靠性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤 是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机 可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上对本发明所提供的 一种磁盘控制方法及系统以及相关设备进行了详 细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实 施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为 对本发明的限制。
权利要求
1、一种磁盘控制方法,其特征在于,包括接收主机发送的写请求;当所述写请求对应的磁盘阵列RAID组处于休眠状态时,将所述写请求存储于保险箱盘,并唤醒所述RAID组;当所述RAID组被唤醒之后,将所述存储于保险箱盘的写请求发送至所述RAID组,使得所述RAID组执行与所述写请求相应的写操作。
2、 根据权利要求1所述的方法,其特征在于, 所述主机发送的写请求中携带有请求进行写操作的条带的标识; 所述方法还包括在预置的对应关系中确定所述条带的标识对应的RAID组。
3、 根据权利要求1或2中任一项所述的方法,其特征在于,所述RAID 组执行完所述写请求相应的写操作之后还包括当在预置的静默时间内未接收到所述主机对所述RAID组的写请求,且 所述RAID组未被设置为禁止休眠时,对所述RAID组中的成员磁盘进行休眠。
4、 根据权利要求3所述的方法,其特征在于,当对所述RAID组中的成员磁盘中的任一成员磁盘休眠失败,则唤醒所 述RAID组中的其他成员磁盘; 或,当唤醒所述RAID组时对所述RAID组中任一成员磁盘唤醒失败时,设置 所述唤醒失败的成员》兹盘为唤醒状态; 或,当处于休眠状态的RAID组中任一成员磁盘掉电时,则唤醒所述RAID组 中的其他成员磁盘。
5、 一种磁盘控制方法,其特征在于,包括 接收用户发送的读请求;当所述读请求对应的》兹盘阵列RAID组处于休眠状态时,则通过f兹盘控 制装置唤醒所述RAID组;当所述RAID组被唤醒之后,向所述RAID组发送所述读请求,使得所述 RAID组执行所述读请求相应的读操作。
6、 一种磁盘控制装置,其特征在于,包括 第一接收单元,用于接收主机发送的写请求;存储控制单元,用于当所述写请求对应的磁盘阵列RAID组处于休眠状 态时,将所述写请求存储于保险箱盘;第一唤醒单元,用于唤醒所述RAID组;第一发送单元,用于当所述RAID组被唤醒之后,将所述存储于保险箱 盘的写请求发送至所述RAID组,使得所述RAID组执行所述写请求相应的写 操作。
7、 根据权利要求6所述的磁盘控制装置,其特征在于,所述主机发送的 写请求中携带有请求进行写操作的条带的标识;所述磁盘控制装置还包括确定单元,用于在预置的对应关系中确定所述条带的标识对应的RAID组。
8、 根据权利要求6所述的磁盘控制装置,其特征在于,所述磁盘控制装 置还包括休眠控制单元,用于当在预置的静默时间内未接收到所述主机对所述 RAID组的写请求,且所述RAID组未被设置为禁止休眠时,对所述RAID组 中的成员磁盘进行休眠。
9、 根据权利要求6至8中任一项所述的磁盘控制装置,其特征在于,所 述磁盘控制装置还包括异常处理单元,用于当对所述RAID组中的成员磁盘中的任一成员磁盘 休眠失败,则唤醒所述RAID组中的其他成员》兹盘;当唤醒所述RAID组时对 所述RAID组中任一成员》兹盘唤醒失败时,设置所述唤醒失败的成员f兹盘为 唤醒状态;当处于休眠状态的RAID组中任一成员磁盘掉电时,则唤醒所述 RAID组中的其他成员磁盘。
10、 一种磁盘控制系统,其特征在于,包括如权利要求7至10中任一项 所述的磁盘控制装置;所述磁盘控制系统还包括主机,用于向所述磁盘控制装置发送写请求;保险箱盘,用于存储所述写请求;磁盘控制装置,用于接收主机发送的写请求,当所述写请求对应的磁盘 阵列RAID组处于休眠状态时,将所述写请求存储于保险箱盘,并唤醒所述 RAID组,当所述RAID组被唤醒之后,将所述存储于保险箱盘的写请求发送 至所述RAID组;RAID组,用于执行所述写请求相应的写操作。
11、 一种主4几,其特征在于,包括 第二接收单元,用于接收用户发送的读请求;第二唤醒单元,用于当所述读请求对应的磁盘阵列RAID组处于休眠状 态时,通过》兹盘控制装置唤醒所述RAID组;第二发送单元,用于当所述RAID组被唤醒之后,向所述RAID组发送读 请求,使得所述RAID组执行所述读请求相应的读操作。
12、 一种磁盘控制系统,其特征在于,包括如权利要求11中所述的主机; 所述磁盘控制系统还包括磁盘控制装置,用于根据所述主机的指示唤醒所述RAID组; RAID组,用于执行所述读请求相应的读4喿作。
全文摘要
本发明实施例公开了一种磁盘控制方法及系统以及相关设备,能够在节约能源的同时提高数据写入的可靠性。本发明实施例方法包括接收主机发送的写请求;当所述写请求对应的磁盘阵列RAID组处于休眠状态时,将所述写请求存储于保险箱盘,并唤醒所述RAID组;当所述RAID组被唤醒之后,将所述存储于保险箱盘的写请求发送至所述RAID组,使得所述RAID组执行与所述写请求相应的写操作。本发明实施例还提供一种磁盘控制系统以及相关设备。本发明实施例可以有效的提高数据写入的可靠性。
文档编号G06F3/06GK101655774SQ20091016192
公开日2010年2月24日 申请日期2009年9月1日 优先权日2009年9月1日
发明者鲲 唐, 蒋文韬 申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1