具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
第一实施例
图1示出了本发明第一实施例的存储系统的示意结构框图。
图1所示的第一实施例的存储系统是磁盘阵列,该磁盘阵列包括n个磁盘,其中n是大于或等于2的整数。另外,还包括用于对这n个磁盘供电的电源单元110和对磁盘阵列的工作进行控制的控制部120。电源单元110可以是任何已知的用于对磁盘供电的装置,对此没有限制。电源单元110通过电缆与各磁盘连接。控制部20通过电缆和/或光缆与各磁盘连接。需要注意的是,在图1中省略了与本发明的说明无关的其它部件或结构。
第一实施例的磁盘阵列用于数据存储型业务的存储。换句话说,磁盘阵列中的磁盘逐个地投入使用,在一个磁盘被写满后,再写下一个磁盘。并且,写入数据之后很少进行读取,即,很少对写满后的磁盘进行访问。
如图1所示,控制部120进一步包括序列管理单元121和状态管理单元122。序列管理单元121用于对磁盘阵列中的各个磁盘赋予规定的顺序,从而构成一个磁盘序列。序列管理单元121可以根据用户或者操作员的指示设定磁盘的顺序,也可以根据预先确定的规则自动地设定磁盘的顺序。设定磁盘顺序的细节与本发明的实质没有关系,并且本发明不受磁盘顺序设定方式的限制。
在第一实施例中,按照图示的顺序对磁盘进行操作。即,在磁盘阵列中进行存储时,首先对磁盘#1进行写入,在磁盘#1写满后,对磁盘#2进行写入,按照这个顺序,直至磁盘#n。
虽然图中没有示出,但是可以理解,序列管理单元121具有相关联的存储器,用以存储所设定的磁盘顺序。
状态管理单元122用于在开始对一个磁盘的操作的同时,启动对该磁盘之后的一个磁盘的供电。换句话说,状态管理单元22在把磁盘阵列中的一个磁盘设置为工作状态进行操作(设置为活动磁盘)时,激活阵列中的下一个磁盘,把下一个磁盘也设置为工作状态。而其它的磁盘处于低耗能状态。
这里,作为低耗能状态,可以切断相关磁盘的供电,也可以使相关磁盘进入休眠状态。
另外,在当前操作的活动磁盘的操作结束之后,经过预定时间之后,状态管理单元122将该磁盘设置为低耗能状态。
作为控制部120和其中包含的序列管理单元121及状态管理单元122,可以由CPU(中央处理器)、相关联的存储硬件以及软件程序来实现。
下面对根据本发明第一实施例的存储系统的工作进行说明。图2示出了本发明第一实施例的存储系统的工作流程。
如图2所示,首先在步骤ST11中,把磁盘序列中的第m个磁盘设定为活动磁盘,即进行I/O操作的磁盘。这里,m是小于n的整数。例如,在磁盘阵列刚被投入使用的情况下,m=1。
在步骤ST12中,激活磁盘序列中位于磁盘#m之后的磁盘,即#m+1。这里,激活是指启动磁盘#m+1的供电,使磁盘#m+1进入工作状态,或者将磁盘#m+1从休眠状态“唤醒”,从而使得磁盘#m+1随时可以进行读写操作。
在步骤ST13中,对所设定的活动磁盘#m进行读写操作。
在步骤ST14中,判断活动磁盘#m是否已经被写满。若步骤ST14的判断结果是“否”,即活动磁盘#m还未被写满,则返回到步骤ST13,继续对磁盘#m进行I/O操作;相反,若步骤ST14的判断结果是“是”,即活动磁盘#m已经被写满,则进入步骤ST15,将m的值增加1。接着在步骤ST16中,判断m的值是否大于磁盘序列中的磁盘总数n。如果步骤ST16的判断结果是“否”,则流程返回到步骤ST11,重复以下的处理。如果步骤ST16的判断结果是“是”,即m大于n,则说明磁盘序列中的所有磁盘都已经被写满,控制部20可以将该情况报告给上位系统,并且结束本流程。
另外,在步骤ST14的判断结果是“是”的情况下,进一步执行步骤ST17,状态管理单元22判断从磁盘#m写满起是否经过了预定时间。如果判断结果为“否”,则反复地进行判断。如果判断结构为“是”,则执行步骤ST18,使已经写满的磁盘#m进入低耗能状态(非工作状态)。这里,作为非工作状态,可以切断对磁盘#m的供电,或者使磁盘#m进入耗电量很低的休眠状态。
这里,步骤ST17和ST18的处理可以与步骤ST15和ST16的处理并行进行。
步骤ST14中所述的预定时间可以是任意设定的时间,在经过该预定时间后,即可认为磁盘#m的操作已经结束,并且在相当长的时间内不会访问该磁盘。作为一种特殊情况,该预定时间可以设定为零。在这种情况下,相当于在磁盘#m写满后立即使磁盘#m进入非工作状态。
根据上述的本发明第一实施例,将磁盘阵列中的磁盘组织成具有预定顺序的磁盘序列,按照该顺序逐个地对磁盘进行I/O操作。在对活动磁盘进行读写操作时,激活磁盘序列中的下一个磁盘。另外,在活动磁盘被写满后经过了预定时间时,使该磁盘进入非工作状态。因此,根据本发明的第一实施例,在磁盘阵列中只有少数的磁盘处于工作状态,因此可以大幅地降低整个磁盘阵列的功耗。另外,由于预先激活了下一个磁盘,因此,在活动磁盘被写满后,可以立即切换到下一个磁盘,而不存在任何不必要的延迟。并且,在本发明第一实施例中,控制装置的结构比较简单,不需要在切换到下一个磁盘之前对数据进行缓冲存储,控制逻辑也比较简单。
第二实施例
在以上说明的第一实施例中,以磁盘阵列中包含的所有磁盘作为对象来进行节能控制。但是,作为改进,也可以针对磁盘阵列中的一部分磁盘执行本发明的节能控制。
例如,存在这样的情况:磁盘阵列中的一部分磁盘用于数据增量型业务,而其它的磁盘中存储需要经常访问的数据。在这种情况下,将磁盘阵列中的一部分磁盘组织成上述第一实施例中说明的磁盘序列,进行同样的节能控制。而其它的磁盘则一直处于活动状态,可随时进行访问。
根据本发明的第二实施例,对于磁盘阵列中执行数据增量型业务的磁盘,进行上述第一实施例中所述的节能控制,而对于存储需要经常访问的数据的磁盘,则总是处于活动状态。因此,既具有上述第一实施例的效果,又不会影响数据的存取操作。
第三实施例
在参照图1和图2说明的本发明第一实施例中,存储系统被描述为磁盘阵列。但是,可以想到,本发明的原理也同样可以应用于固态磁盘(solidstate disk:SSD)。
SSD硬盘是由固态电子存储芯片(Flash颗粒)阵列构成的。在SSD硬盘中,包括多个Flash颗粒。在目前的SSD硬盘中,功耗是一个需要解决的问题。
在第三实施例中,针对数据增量型业务的应用场合,对SSD硬盘执行与上述第一实施例相同的节能控制。即,根据该第三实施例,将SSD硬盘中的Flash颗粒组织成具有预定顺序的序列,按照该顺序逐个地对Flash颗粒进行I/O操作。在对一个Flash颗粒进行操作时,同时激活序列中的下一个Flash颗粒。另外,在活动的Flash颗粒被写满后经过了预定时间时,使该Flash颗粒进入非工作状态。
因此,根据该第三实施例,在SSD硬盘中只有少数的Flash颗粒处于工作状态,因此可以大幅地降低整个SSD硬盘的功耗。另外,由于在对一个Flash颗粒进行操作时,同时激活下一个Flash颗粒,因此,在活动的Flash颗粒被写满后,可以立即切换到下一个Flash颗粒,而不存在任何不必要的延迟。由此,可以通过简单的结构和简单的控制逻辑来实现SSD硬盘的节能。
另外,与上述的第二实施例类似,可以将SSD硬盘中的一部分Flash颗粒用于数据增量型业务,而其它的Flash颗粒存储需要经常访问的数据的情况下,可以将SSD硬盘中的一部分Flash颗粒作为对象来执行上述节能控制,而其它的Flash颗粒则一直处于活动状态,可随时进行访问。由此,既具有上述的节能效果,又不会影响数据的存取操作。
第四实施例
在以上说明的第一实施例中,在对活动磁盘进行读写操作时,激活磁盘序列中的下一个磁盘。但是,本发明不限于此,例如,也可以是在对活动磁盘进行读写操作时,激活磁盘序列中的接在活动磁盘之后的2个或2个以上的磁盘。
根据本发明的第四实施例,也能够具有上述第一实施例的效果。
第五实施例
在以上说明的第一实施例中,磁盘阵列中的磁盘逐个地投入使用,在一个磁盘被写满后,再写下一个磁盘。即,由1个磁盘构成本发明的存储单元。但是,本发明不限于此。
例如,可以由两个或两个以上的磁盘来构成本发明的存储单元。换句话说,在工作中同时对两个或两个以上的磁盘进行读写操作,并且激活后续的两个或两个以上的磁盘。另外,每个存储单元中包含的磁盘数量可以相同,也可以不同。
根据本发明的第五实施例,也能够具有上述第一实施例的效果。
上述的第一至第五实施例的原理也可以同样地应用于下述实施例。
第六实施例
在上述的第一实施例中,在对磁盘序列中的一个磁盘进行操作时,使序列中的下一个磁盘进入工作状态。由此,实现磁盘阵列的节能。图3示出了第六实施例的磁盘阵列的控制方法的流程图。下面参照图1和图3对第六实施例的磁盘阵列控制方法进行详细的说明。
首先在步骤ST21中,把磁盘序列中的第m个磁盘设定活动磁盘,即进行I/O操作的磁盘。这里,m是小于n的整数。例如,在磁盘阵列刚被投入使用的情况下,m=1。
在步骤ST22中,对所设定的活动磁盘进行读写操作。在步骤ST23中,判断活动磁盘的剩余容量是否小于预定的阈值。这里,该阈值可以是容量值,例如100MB,也可以是百分比,例如10%。该阈值可以事先根据存储系统的应用场合、存储系统的操作要求等设定,若活动磁盘的剩余容量小于该阈值,则可认为该活动磁盘即将被写满。该阈值被设定为使得存储系统有充分的时间来激活下一个磁盘。本发明的原理与该阈值的具体数值无关。
如果步骤ST23的判断结果为“否”,则流程返回到ST22,继续对磁盘#m进行读写。若步骤ST23的判断结果为“是”,则流程进行到步骤ST24,激活磁盘序列中位于磁盘#m之后的磁盘,即磁盘#m+1。这里,激活是指启动磁盘#m+1的供电,使磁盘#m+1进入工作状态,随时可以进行读写操作。
接下来,在步骤ST24中激活磁盘#m+1之后,流程进入步骤ST22’,与上述步骤ST22一样,对磁盘#m进行读写操作。接下来在步骤ST25中,判断活动磁盘#m是否已经被写满。若步骤ST25的判断结果是“否”,即活动磁盘#m还未被写满,则返回到步骤ST22’,继续对磁盘#m进行I/O操作;相反,若步骤ST25的判断结果是“是”,即活动磁盘#m已经被写满,则进入步骤ST26,将m的值增加1。接着在步骤ST27中,判断m的值是否大于磁盘序列中的磁盘总数n。如果步骤ST27的判断结果是“否”,则流程返回到步骤ST21,重复以下的处理。如果步骤ST27的判断结果是“是”,即m大于n,则说明磁盘序列中的所有磁盘都已经被写满,控制部20可以将该情况报告给上位系统,并且结束本流程。
另外,在步骤ST25的判断结果是“是”的情况下,进一步执行步骤ST28,状态管理单元22判断从磁盘#m写满起经过的时间是否超过了预定时间。同样,该预定时间可以是事先根据存储系统的应用场合、存储系统的操作要求等设定的任意值,例如30s,在经过该预定时间后,即可认为磁盘#m的操作已经结束,并且在相当长的时间内不会访问该磁盘。作为一个例子,该预定时间也可以设定为0。
如果ST28的判断结果为“否”,则反复地进行判断。如果判断结果为“是”,则执行步骤ST29,使已经写满的磁盘#m进入非工作状态(低耗能状态)。这里,作为非工作状态,可以切断对磁盘#m的供电,或者使磁盘#m进入耗电量很低的休眠状态。
根据上述的本发明第六实施例,将磁盘阵列中的磁盘组织成具有预定顺序的磁盘序列,按照该顺序逐个地对磁盘进行I/O操作。在活动磁盘的剩余容量小于预定阈值时,激活磁盘序列中的下一个磁盘。另外,在活动磁盘被写满后经过了预定时间时,使该磁盘进入非工作状态。
另外,类似于上述的第二实施例,可以针对磁盘阵列中的一部分磁盘执行第六实施例的节能控制。对于磁盘阵列中执行数据增量型业务的磁盘,进行上述的节能控制,而对于存储需要经常访问的数据的磁盘,则总是处于活动状态。因此,既具有上述的节能效果,又不会影响数据的存取操作。
另外,类似于上述第三实施例,针对数据增量型业务的应用场合,第六实施例的发明也可应用于SSD硬盘。由此,在SSD硬盘中只有少数的Flash颗粒处于工作状态,因此可以大幅地降低整个SSD硬盘的功耗。另外,由于在一个Flash颗粒的剩余容量小于预定阈值时,才激活下一个Flash颗粒,因此与第三实施例相比,可以更加高效地减少功耗。
第七实施例
图4示出了本发明第七实施例的存储系统的示意结构框图。
图4所示的第七实施例的存储系统是廉价冗余磁盘阵列(RAID:Redundant Array of Inexpensive Disks)群。与第一实施例一样,第七实施例的存储系统也应用于数据增量型业务。
如图4所示,第七实施例的RAID群包括n个RAID,其中n是大于1的整数。每一个RAID又由多个LUN(逻辑单元号:logical unit number)磁盘构成。在图4中,示出每个RAID具有相同数量(例如k个,K为大于2的自然数)的LUN磁盘,但是在实际中,各RAID所包含的LUN磁盘数量可以相互不同。
另外,第七实施例的存储系统还包括用于对这n个RAID供电的电源单元210和对该存储系统的工作进行控制的控制部220。电源单元210可以是任何公知的用于对RAID供电的装置,对此没有限制。电源单元210通过电缆与各RAID和RAID中的LUN磁盘连接。控制部220通过电缆和/或光缆与各RAID连接。需要注意的是,在图4中省略了与本发明的说明无关的其它部件或结构。
在第七实施例的RAID存储系统中,各个RAID逐个地投入使用,即在一个RAID被写满后,再写下一个RAID。并且,写入数据之后很少进行读取,即,很少对写满后的RAID进行访问。
如图4所示,控制部220进一步包括序列管理单元221和状态管理单元222。序列管理单元221对各个RAID赋予规定的顺序,从而构成一个RAID序列。序列管理单元221可以根据用户或者操作员的指示设定RAID的顺序,也可以根据预先确定的规则自动地设定RAID的顺序。设定RAID顺序的细节与本发明的实质没有关系,并且本发明不受RAID顺序设定方式的限制。
另外,序列管理单元221还管理每个RAID中的LUN磁盘的顺序。即,序列管理单元221对各个RAID中的各个LUN磁盘赋予规定的顺序,从而构成一个LUN磁盘序列。序列管理单元221可以根据用户或者操作员的指示设定LUN磁盘的顺序,也可以根据预先确定的规则自动地设定LUN磁盘的顺序。设定LUN磁盘顺序的细节与本发明的实质没有关系,并且本发明不受LUN磁盘顺序设定方式的限制。
在第七实施例中,按照图示的顺序对RAID进行操作。即,在存储系统中进行存储时,首先对RAID#1进行写入,在RAID#1写满后,对RAID#2进行写入,按照这个顺序,直至RAID#n。另外,在各个RAID中,又是从LUN磁盘LUN#1开始进行写入,在LUN#1写满后,对LUN#2进行写入,按照这个顺序,直至LUN#k。
虽然图中没有示出,但是可以理解,序列管理单元221具有相关联的存储器,用以存储所设定的RAID顺序和各个RAID的LUN顺序。
状态管理单元222根据序列管理单元221所管理的RAID顺序和LUN顺序,在对活动的RAID中的最后一个LUN磁盘进行写入时,激活RAID序列中的下一个RIAD,使该RAID进入工作状态。
另外,在当前操作的活动RAID的操作结束之后,经过预定时间之后,状态管理单元222将该RAID设置为低耗能状态。这里所述的预定时间可以任意设定,例如30s。在经过该预定时间后,即可认为该RAID的操作已经结束,并且在相当长的时间内不会访问该RAID。作为一个例子,该预定时间也可以设定为0。
作为控制部220和其中包含的序列管理单元221及状态管理单元222,可以由CPU(中央处理器)、相关联的存储器以及程序来实现。
下面对根据本发明第七实施例的存储系统的工作进行说明。图5示出了本发明第七实施例的存储系统的工作流程。
如图5所示,首先在步骤ST301中,把RAID序列中的第m个RAID设定活动RAID,即进行I/O操作的RAID。这里,m是小于n的整数。例如,在存储系统刚被投入使用的情况下,m=1。
在步骤ST302中,把RAID#m中的第j(j是大于或等于1并小于或等于m的整数)个LUN磁盘#j设定为活动LUN。需要说明的是,在RAID#m刚被设定为活动RAID时,j=1。
在步骤ST303中,对LUN磁盘LUN#j进行读写操作。在步骤ST304中,判断活动LUN磁盘是否已经被写满。若步骤ST304的判断结果是“否”,即活动LUN磁盘还未被写满,则返回到步骤ST303,继续对该LUN磁盘进行I/O操作;相反,若步骤ST304的判断结果是“是”,即活动LUN磁盘已经被写满,则进入步骤ST305,将j的值增加1,返回到步骤ST302。即把LUN序列中的位于活动LUN磁盘之后的下一个LUN磁盘设定为活动磁盘。接着在步骤ST306中,判断j的值是否等于RAID#m中的LUN磁盘总数k。如果步骤ST306的判断结果为“是”,则说明活动的LUN磁盘是RAID#m中的最后一个LUN磁盘,流程进入步骤ST307,激活RAID序列中位于RAID#m之后的下一个RAID,即RAID#m+1。这里,激活是使该RAID进入工作状态,包括启动RAID#m+1的供电,或者将RAID#m+1从休眠状态中“唤醒”,从而随时可以进行读写操作。
接着,在步骤ST308中,判断活动的LUN#k是否被写满。如果没有写满,则继续进行读写操作,直至写满。如果步骤ST308的判断结果是“是”,即活动的LUN#k已经被写满,则流程进入步骤ST309,将m的值加1。
在步骤ST310中,判断加1之后的m值是否大于RAID总数n。如果判断结果是“否”,则说明m所指示的RAID编号是有效的,流程返回ST310,把RAID#m设定为活动RAID。这个操作相当于将活动RAID#m之后的下一个RAID#m+1设定为活动RAID。因为在上述步骤ST307中已经激活了RAID#m+1,因此可以立即对RAID#m+1进行操作,而没有任何延迟。
如果步骤ST310的判断结果是“是”,则说明RAID序列中的所有RAID都已经被写满,控制部220可以将该情况报告给上位系统,并且结束本流程。
另外,在步骤ST308的判断结果是“是”的情况下,进一步执行步骤ST311,状态管理单元222判断从RAID#m写满起经过的时间是否超过了预定的阈值。如果判断结果为“否”,则反复地进行判断。如果判断结果为“是”,则执行步骤ST312,使已经写满的RAID#m进入非工作状态。这里,作为非工作状态,可以切断对RAID#m的供电,或者使RAID#m进入耗电量很低的休眠状态。
根据上述的本发明第七实施例,将RAID阵列中的RAID组织成具有预定顺序的RAID序列,按照该顺序逐个地对RAID进行I/O操作。在当前进行读写操作的RAID中,当前操作的LUN磁盘是最后一个LUN磁盘时,激活RAID序列中的下一个RAID。另外,在活动的RAID被写满后经过了预定时间时,使该RAID进入非工作状态。因此,根据本发明的第七实施例,在RAID阵列中只有少数的RAID处于工作状态,因此可以大幅地降低整个RAID阵列的功耗。另外,由于在活动的RAID中操作的LUN磁盘是最后一个LUN磁盘时,激活下一个RAID,因此,在活动RAID被写满后,可以立即切换到下一个RAID,而不存在任何不必要的延迟。并且,在本发明第七实施例中,控制装置的结构比较简单,不需要在切换到下一个RAID之前对数据进行缓冲存储,控制逻辑也比较简单。
另外,在上述的第七实施例中,在活动RAID中对最后一个LUN磁盘进行操作时,激活下一个RAID。但是,本发明不限于这种情况,而可以在活动RAID中对预先指定的一个LUN磁盘进行操作时,激活下一个RAID。例如,可以在活动RAID中对倒数第二个LUN磁盘或者倒数第三个LUN磁盘进行操作时,激活下一个RAID。这同样可以取得降低功耗的效果。
另外,在第七实施例中也同样可以应用上述第三实施例的原理。即,在活动RAID中对最后一个LUN磁盘进行操作时,当该最后一个LUN磁盘的剩余空间小于预定的阈值时,激活下一个RAID。这样,可以更加高效地降低整个RAID阵列的功耗。
以上对本发明的示例性的存储系统进行了说明。但是可以理解,本发明也可以实施为通信设备或其它设备,比如:彩铃服务器、IPTV服务器、电子图书馆服务器、归档管理服务器、数据仓库服务器、邮件处理服务器,在这些设备中包含了根据本发明实施例的存储系统。
本领域的技术人员将很容易理解,上述实施例中所述的全部或部分步骤可以通过程序指示相关的硬件来实现,该程序在被执行时,对存储系统中包含的多个存储单元中的至少一部分存储单元赋予规定的顺序,从而组织成存储单元序列;把所述存储单元序列中的一个存储单元设定为活动存储单元,进行读写操作;并使所述存储单元序列中的接在所述活动存储单元之后的下一个存储单元进入工作状态。该程序可以存储在计算机可读存储介质(例如,磁存储介质(如硬盘驱动器、软盘、磁带等)、光存储器(CD-ROM、光盘等)、易失性和非易失性存储设备(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM等)中,或者实现为硬件逻辑(例如,集成电路芯片、现场可编程门阵列(FPGA)、专用集成电路(ASIC)。
需要说明的是,上述实施例和优点仅是示例性的,不应被理解为对本发明的限制。提供这些实施例的目的是为了使本领域技术人员理解本发明,本发明的范围仅由权利要求限定。在权利要求所限定的范围内,本发明涵盖对上述实施例的各种替换、修改和变更。