在线磁盘阵列一致性初始化方法

文档序号:6431724阅读:236来源:国知局
专利名称:在线磁盘阵列一致性初始化方法
技术领域
本发明涉及一种磁盘阵列一致性初始化方法,特别涉及一种在线磁盘阵列一致性初始化方法。
背景技术
在一计算机系统中,一个冗余独立磁盘阵列子系统(RAID subsystem)存在的目的,即是在提供高可用性(high availability)、高效能(highperformance)或大容量(high volume)的数据储存空间给主机端。
一个已知磁盘阵列子系统的构成,譬如包括一个磁盘阵列控制器,以及由多个个硬盘机所形成的冗余独立磁盘阵列(RAID,Redundant Array ofIndependent Disks)连接至该磁盘阵列控制器上,并由该磁盘阵列控制器将该磁盘阵列定义成磁盘阵列等级1,3,或5的一个或多个逻辑磁盘驱动器(logical disk drive)而达成。
一个磁盘阵列子系统必须先进行磁盘阵列建立(RAID CREATION)的过程以定义该磁盘阵列本身,完成后再呈现给主机端,此时可称为该磁盘阵列对于主机端存在(可获用,available)或是上线(on line),也可以开始存取该磁盘阵列。在该磁盘阵列对于该主机端尚不存在(不可获用)或尚未上线之前,该主机端当然不知道该磁盘阵列的存在,也无法对该磁盘阵列进行存取。
上述已知的磁盘阵列建立方法如图1A所示,在开始磁盘阵列建立时(100),先进行磁盘阵列组态设定(110),再进行一致性初始化(150),而在一致性初始化完成后才将磁盘阵列组态设定值写入至成员磁盘驱动器中(130),此时磁盘阵列建立的作业程序才算是完成(140),并在随后呈现给主机端(180),于是该磁盘阵列对于主机端存在(可获用)。进行一致性初始化的主要原因,是因为只有经过一致性初始化的成员磁盘驱动器中的数据,在成员磁盘驱动器发生失效后,才可能再重新产生(regenerate)回来,其手段基本上是让使用者数据(user data)与查核数据(check data)一致。其中,一种已知的一致性初始化的过程如图1B所示,是从区块0(第一个区块)开始进行一致性初始化,当区块0完成后,即接着进行区块1(第二个区块)。如此,一个区块完成后接着进行下一个区块,直到最后一个区块完成为止。
在已知的磁盘阵列建立方法与一致性初始化进行中有如下的问题。首先一致性初始化需要耗费相当多的时间,例如,短则数小时,长则以日计;惟,如前所述,在一致性初始化完成并呈现给主机端之前,对于主机端而言并不存在(不可获用)或未上线,自然无法开始存取/使用;换句话说,从磁盘阵列子系统开始进行磁盘阵列建立作业起,至少要数个小时后才能使用,这对于使用者/购买者来说十分不便。
其次,由于磁盘阵列系统经常是由销售者的客服人员进行磁盘阵列建立及呈现给主机端的操作,在前述说明中可知,销售者的客服人员在下完磁盘阵列建立的指令后,必须要等待数小时或数日而致磁盘阵列建立完成后,才可以进行磁盘阵列呈现给主机端的指令,这对销售者的服务进行及/或使用者/购买者两方面都非常不便,因为若不是销售者的客服人员要在使用者公司等上一段相当长的不确定的时间及/或隔日再来,则就是使用者/购买者必须空等磁盘阵列建立的完成后至销售者的客服人员再度前来进行呈现给主机端或上线的作业。
再者,由于有些已知系统是在初始化完成后才将磁盘阵列组态储存至成员磁盘驱动器中,若在此一致性初始化进行的漫长过程中(例如数小时至数日),万一系统发生断电或是其它意想不到的问题而致一致性初始化在完成前中断的话,则先前所进行的所有磁盘阵列初始化都将白费了,如此整个磁盘阵列建立过程都将重来。
而有些已知系统虽然是在初始化的过程中将磁盘阵列组态储存至成员磁盘驱动器中,因而当系统发生断电后,可以就尚未完成初始化的区域继续进行初始化作业,不必从头开始。惟,此一系统仍有前述的必须等到一致性初始化作业完成后才将磁盘阵列子系统呈现给主机端并上线使用的缺点。又,在此种系统中并没有设计让数据重新建构(rebuilding)的功能,故不允许磁盘失效的情况发生;一但发生磁盘失效的话,也只好从头开始进行一致性初始化作业。在此一系统中没有数据重新建构功能,是因为重新建构功能本来即是一相当费时的作业;当发生磁盘失效时,与其利用重新建构功能而使一致性初始化作业持续不中断但却耗费时日,还不如让一致性初始化作业从头开始来得快速。
此外,有些已知的一致性初始化方法中,为了要使此一旷日费时的一致性初始化程序时间缩短,是将各区域的一致性初始化作业简化,例如仅确认储存媒体上原有的使用者数据与同位数据(parity data)间的一致性而未进行完整的一致性初始化作业。又或,在已知技术中,对于一些没有查核数据保护的磁盘阵列,例如磁盘阵列等级0(Simple Striping)或”非-磁盘阵列”(NRAID,Non-RAID,Disk Spanning),并未对这些磁盘阵列进行初始化。然而在这些磁盘阵列中,却可能因为其成员磁盘驱动器中残存有一些曾被主机端记录的数据,在当磁盘阵列重新建立后并未被删除,导致主机端在读取数据后造成意想不到的或是不正常的行为。
所以,如何将一个磁盘阵列子系统尽快地完成磁盘阵列建立而使其存在(可获用)于主机端,确实是一个亟待解决的问题。

发明内容
本发明的目的之一,是在提供一种使磁盘阵列可以很快地完成磁盘阵列建立程序且可上线使用,而不需要等到使用者/查核数据的一致性初始化完成后才能上线使用的方法。
依据本发明的方法,可以免除掉等待磁盘阵列子系统一致性初始化完成所需的时间,同时,亦可对于数据区域进行初始化以在必要时写覆任何先前存在的数据,进而免除残余数据可能造成主机端发生不可预期的行为的顾虑。
本发明所述的一实施例的一种磁盘阵列一致性初始化方法,包含下述步骤建立磁盘阵列,是包括设定该磁盘阵列的组态与建立一初始化进行表;以及,依据该初始化进行表进行一致性初始化作业。
依据本发明的一实施例,该磁盘阵列组态与该初始化进行表是储存在一非易失性存储装置中。依据本发明的另一实施例,该一致性初始化作业是包含诱发性一致性初始化作业机制。依据本发明的又一实施例,该诱发性一致性初始化作业机制更包含下述步骤(a)在一磁盘阵列子系统收到一主机端输出入(I/O)作业时,检测该磁盘阵列子系统是否已经完成一致性初始化;(b)若(a)为否,则检测与该主机端输出入作业相关的初始化区域是否已经完成区域性初始化;(c)若(b)为否,则检测与该主机端输出入作业相关的初始化区域是否正在进行区域性初始化;(d)若(c)为是,则等待该正在进行区域性初始化完成,若(c)为否,则对该区域进行区域性初始化,并将该初始化区域的初始化状态改变更新至该初始化进行表中;及(e)在符合一预设条件下,将该更新的初始化进行表写入一非易失性存储装置。依据本发明的再一实施例,该主机端输出入作业是在步骤(e)之后存取该磁盘阵列子系统。依据本发明的更进一步的一实施例,在该步骤(e)之前,执行以下步骤(e0)该主机端输出入作业存取该磁盘阵列子系统。再者,依据本发明的另一实施例,该一致性初始化作业是包含诱发性一致性初始化作业机制及连续性一致性初始化作业机制两者。依据本发明的又一实施例,该连续性一致性初始化作业机制更包含下述步骤(a)选取一尚未完成初始化的初始化区域;(b)若该被选取的初始化区域并非正在进行区域性初始化,则对该区域进行区域性初始化;(c)在符合(b)的情况下,将该初始化区域的初始化状态改变更新至初始化进行表中;(d)在符合预设的条件下,将该更新的初始化进行表写入该存储装置中;及(e)重复步骤(a)至(d),直到所有初始化区域均已完成初始化。依据本发明的再一实施例,该连续性一致性初始化作业机制更包含下述步骤(f)将所有初始化区域均已完成初始化的此一状态写入一非易失性存储装置。依据本发明的更进一步的一实施例,该连续性一致性初始化作业机制更包含下述步骤在该步骤(a)选取一尚未完成初始化的初始化区域之前,更包含以下的步骤(a0)执行区域性初始化优先级调整机制,以决定是否进行该选取一尚未完成初始化的初始化区域,且该步骤(e)是包含重复步骤(a0)至(d),直到所有初始化区域均已完成初始化。
又且,依据本发明的又一实施例,该一致性初始化作业是对该磁盘阵列所属的多个成员磁盘驱动器的一数据空间划分成多个个初始化区域,并对这些初始化区域进行区域性初始化作业;这些初始化区域的大小可以相同;该区域性初始化作业是可因连续性一致性初始化作业而产生,或者该区域性初始化作业是因诱发性一致性初始化作业而产生;该初始化进行表具有初始化区域的初始化进行状态数据;该存储装置中是可储存有多个版次的初始化进行表;该非易失性存储装置是为一成员磁盘驱动器、不是成员磁盘驱动器的其它磁盘驱动器、具有电池备援的静态随机存取内存(SRAM)或闪存。依据本发明的再一实施例,在完成磁盘阵列建立后,磁盘阵列即可被呈现给一主机端;或是,在开始一致性初始化作业之前,是将磁盘阵列呈现给一主机端而上线;又或是,在开始诱发性一致性初始化作业之前,是将磁盘阵列呈现给一主机端而上线。
此外,本发明的实施例之一,亦包括一种计算机可读取储存媒体,该储存媒体是具有一计算机程序储存在其中而可致使一包含有一磁盘阵列子系统的计算机系统执行使该磁盘阵列进行一致性初始化的方法,该方法包含以下的步骤设定该磁盘阵列的组态;建立一初始化进行表(IPT,Initialization Progress Table);将此初始化进行表及磁盘阵列组态写入在一非易失性存储装置(non-volatile memory device)中;完成磁盘阵列建立;以及,在完成磁盘阵列建立后,开始进行一致性初始化作业。依据本发明的另一实施例,在上述与计算机可读取储存媒体相关的方法中,该一致性初始化作业是包含诱发性一致性初始化作业机制;或者,该一致性初始化作业另包括连续性一致性初始化作业机制。依据本发明的再一实施例,依据本发明的另一实施例,在上述与计算机可读取储存媒体相关的方法中,在完成磁盘阵列建立后,磁盘阵列即可被呈现给一主机端;或是,在开始一致性初始化作业之前,是将磁盘阵列呈现给一主机端而上线;又或是,在开始诱发性一致性初始化作业之前,是将磁盘阵列呈现给一主机端而上线。


图1A是已知的磁盘阵列建立方法;图1B是一种已知的一致性初始化的过程;图2A是依照本发明的一实施例的磁盘阵列建立方法;图2B是依照本发明的另一实施例的磁盘阵列建立方法;图2C是依照本发明的又一实施例的磁盘阵列建立方法;图3是依照本发明的一实施例的磁盘阵列组态设定;图4是依照本发明的一实施例的磁盘阵列的一种态样;图5A是依照本发明的一实施例的建立初始化进行表的方式;图5B及图5C是依照本发明的方法将图2所示的磁盘阵列以图5A的方式划分初始化区域的一实施例;图6A是依照本发明的一实施例的连续性区域性初始化作业;图6B是依照本发明的另一实施例的连续性区域性初始化作业;图7A是依照本发明的一实施例的区域性初始化优先级调整机制;图7B是依照本发明的另一实施例的区域性初始化优先级调整机制;
图8是依照本发明的一实施例的诱发性区域性初始化作业;图9A及9B是依照本发明的另一实施例的诱发性区域性初始化作业;图10是当磁盘阵列建立已经完成,但一致性初始化尚未完成前,磁盘阵列子系统的重新启动作业;图11是在图10的重新启动磁盘阵列子系统时所启动的初始化进行表加载作业;及图12是在图11的初始化进行表加载作业中确认一正确的初始化进行表的一种实施方法。
具体实施例方式
本发明提出一个在线磁盘阵列一致性初始化方法。在本发明中所谓的冗余独立磁盘阵列,是广义地包含各种磁盘阵列等级,如”非-磁盘阵列”及磁盘阵列等级0,1,2,3,4,5,6等及其组合。
依据本发明的一个磁盘阵列子系统是包括一个或多个磁盘阵列控制器,以及一个或多个磁盘阵列数组连接至这些磁盘阵列控制器上,并由这些磁盘阵列控制器将这些磁盘阵列数组定义成各种磁盘阵列等级及/或其组合的一个或多个逻辑储存媒体单元(LMU,logical media unit)而达成,以产生数据可用性提高,数据存取效能提升,及数据容量扩增等功能的至少一者。该磁盘阵列数组是由多个个实体储存装置(PSD,Physical Storage Device),譬如像是硬盘机,或是其它用于数据储存的实体装置所构成。各种可能磁盘阵列等级则例如是”非-磁盘阵列”及磁盘阵列等级0,1,2,3,...,5,6等等。
换句话说,一个磁盘阵列子系统可以将这些多个个实体储存装置以不同的磁盘阵列等级划分成为一个或多个逻辑储存媒体单元而呈现给主机端,使得该磁盘阵列存在(可获用)于该主机端或是上线,而该主机端则因而可以对该磁盘阵列子系统进行存取。该磁盘阵列的主机端,可能是一主机计算机,也可能是另一磁盘阵列控制器,端视该磁盘阵列子系统是如何架构而定。这些多个个磁盘阵列控制器亦可能构成冗余磁盘阵列控制器对(redundant RAIDcontroller pair)以提高磁盘阵列子系统的可用性。
当一磁盘阵列在呈现给主机端之前,必须先进行磁盘阵列建立的作业并完成之。依据本发明在线磁盘阵列一致性初始化方法的一实施例,本发明的磁盘阵列子系统的建立,是可以利用针对磁盘阵列控制器下指令而开始,例如利用计算机键盘从一主机端透过RS232端口对该磁盘阵列控制器下指令,或是利用磁盘阵列子系统机壳上的控制键对该磁盘阵列控制器下指令而开始。
如图2A所示,当磁盘阵列控制器收到产生磁盘阵列(CREATE RAID)指令后开始建立磁盘阵列(200A),先进行磁盘阵列组态设定(210A),然后在内存中建立一初始化进行表(220A)用以记录初始化作业的进行状态,并将此初始化进行表及磁盘阵列组态写入在一个非易失性存储装置中(230A),如此磁盘阵列建立作业即告完成(240A),并开始进行一致性初始化作业(250A)。在本发明中所谓的非易失性存储装置可包括如成员磁盘驱动器、或是成员磁盘驱动器以外的另一磁盘驱动器、或是一个具有电池备援的静态随机存取内存(battery backed-up SRAM)、或是闪存(FLASH RAM)等,在主要电源中断后仍可有效维持其中所储存的数据的存储装置。
在本实施例中,一致性初始化作业机制(250A)包含两个部份连续性一致性初始化作业(260A)及诱发性一致性初始化作业(290A)。其中,在诱发性一致性初始化作业之前,会先测试是否需要先将磁盘阵列呈现给主机端而使磁盘阵列子系统上线(270A);若是需要,则先将磁盘阵列呈现给主机端而使磁盘阵列子系统上线后(280A),再进行诱发性一致性初始化作业;若不需要,则直接进行诱发性一致性初始化作业。由于磁盘阵列建立的作业非常的快速,例如从约10秒钟至不到1分钟,故从磁盘阵列建立指令下达至磁盘阵列建立作业完成并呈现给主机端几乎不需要等待,全然解决了已知技术所有的缺点。至于该一致性初始化作业的进行,虽然视所使用的方法而可能需要较久的时间,但是在背景中进行,并不影响主机端对磁盘阵列系统的存取/使用。每一个磁盘阵列可以分割为一个或多个逻辑储存媒体单元,而当磁盘阵列建立完成之后,这些逻辑储存媒体单元亦可以呈现给主机端,对本发明的方法并无影响。
请参阅本发明如图2B所示的另一实施例。在本实施例中,在开始磁盘阵列建立(200B)与进行磁盘阵列组态设定(210B)后,进行初始化进行表建立(220B)。一初始化进行表在建立完成后(220B),是与磁盘阵列组态写入在成员磁盘驱动器中(230B)而完成了磁盘阵列建立作业(240B),且一致性初始化作业机制(250B)包含连续性一致性初始化作业(260B)及诱发性一致性初始化作业(290B)两个部份。其中,将所定义的磁盘阵列呈现给主机端与连续性一致性初始化作业的进行,两者间的先后并无一定关系,但是诱发性一致性初始化作业则在磁盘阵列上线之后。如前所述,由于磁盘阵列建立的作业非常的快速,故从磁盘阵列建立指令下达至磁盘阵列建立作业完成并呈现给主机端几乎不需要等待,而该一致性初始化作业的进行是在背景中进行,并不影响主机端对磁盘阵列系统的存取/使用。在本实施例中,在步骤(230B)中,除将磁盘阵列组态写入在成员磁盘驱动器中,亦可如步骤(230A)般,将磁盘阵列组态写入在一个非易失性存储装置中。
请参阅本发明如图2C所示的又一实施例。在本实施例中,在开始磁盘阵列建立(200C)与进行磁盘阵列组态设定(210C)后,进行初始化进行表建立(220C),并将此初始化进行表及磁盘阵列组态写入在一个非易失性存储装置中(230C),完成了磁盘阵列建立(240C)。一致性初始化作业机制(250C)包含连续性一致性初始化作业(260C)及诱发性一致性初始化作业(290C)两个部份。在诱发性一致性初始化作业机制上,并未考虑磁盘阵列是否已呈现给主机端了,因为诱发性一致性初始化作业的诱发因素,可能是因为主机端输出入作业(I/O),但也可能是主机端输出入作业以外的其它因素。
由上述图2A至图2C可知,本发明在磁盘阵列建立作业完成后,即可开始进行一致性初始化作业。
如图3所示,上述的磁盘阵列组态设定是可以包括定义磁盘阵列唯一识别码(unique ID)(310)、定义磁盘阵列等级(320)、定义成员磁盘驱动器(330)、定义保留空间(340)、定义分储大小(striping size)(350)等的相关信息等。磁盘阵列的其它特性,亦可于此组态设定时加以定义。
每一成员磁盘驱动器具有一数据空间及一保留空间。该数据空间是为储存使用者数据及/或查核数据之用,该保留空间是为保留给该磁盘阵列使用来储存磁盘阵列组态设定的信息及其它相关信息之用,而非为储存使用者数据及查核数据之用。
磁盘阵列唯一识别码可使一磁盘阵列控制器辨识一个磁盘驱动器是否属于该磁盘阵列。若在电源中断后或因其它不可预期的因素而再重新启动磁盘阵列子系统时,磁盘阵列控制器会至成员磁盘驱动器中读取数据,若未先辨识确认一个磁盘驱动器属于该磁盘阵列即取用其中数据,则可能会造成严重的错误。这些组态亦可能包括写入政策-完全写入(write through)或是回写(write back),或磁盘阵列大小等其它信息。使用者所定义的磁盘阵列组态将储存在每一个成员磁盘中的一保留空间中。
兹将以图4中的实例说明依照本发明的磁盘阵列的一种实施态样。请参阅图4,其中该磁盘阵列包含三个成员磁盘驱动器DISK 0-DISK 2,并将此一磁盘阵列分割为两个逻辑储存媒体单元LMU0及LMU1。此一磁盘阵列是由多个个分储带(stripe)所构成,每一分储带具有三个分储块(chunk),是包含一个查核数据分储块,在此该查核数据分储块为同位数据分储块,以P表之,其余两个分储块则为使用者数据分储块,以D表之。
在上述图4中的磁盘阵列为磁盘阵列等级5,故该数据空间是为储存使用者数据及查核数据之用。在”非-磁盘阵列”及磁盘阵列等级0的磁盘阵列中,并无查核数据存在,故该数据空间是为储存使用者数据之用。在磁盘阵列等级1的磁盘阵列中,虽然同一数据分储带中所包含的两数据分储块中的数据同为使用者数据,但可视为一者储存使用者数据而另一者储存查核数据,因为磁盘阵列等级1的使用者数据具有查核效果,故该数据空间可视为是为储存使用者数据及查核数据之用。
建立该初始化进行表的一种实施方式如图5A所例示,是先决定出一数值N(510)以为将该磁盘阵列的成员磁盘驱动器的数据空间划分成N个相同大小的区域以为初始化作业的基本单位,然后建立一具有N个字段的初始化进行表以记录每一初始化区域的初始化进行状态(520),再将该初始化进行表写入至每一成员磁盘驱动器中(530)。如此,建立初始化进行表的作业即告完成。上述的为初始化作业所划分成的基本单位区域,在本文中称为初始化区域,而针对一个初始化区域所进行的初始化作业则称为区域性初始化。一致性初始化作业的进行,是针对各个初始化区域进行区域性初始化作业,而在所有的初始化区域均完成区域性初始化后,加以储存此完成状态至成员磁盘驱动器的保留空间中而宣告完成。
图5B至图5C所例示者,是为依照本发明的方法将图2所示的磁盘阵列以图5A的方式划分初始化区域的一实施例。在图5B中可见,该磁盘阵列的成员磁盘驱动器的数据空间分成N个相同大小初始化区域,每一初始化区域包含三个区段(section),分别属于不同的成员磁盘驱动器。在图5C中可见,每一初始化区域包含四个分储带,故而每一区段包含四个数据分储块。在同一初始化区域中的四个分储带每一者均包含有三个数据分储块,其每一者包括两使用者数据分储块及一查核数据分储块,该查核数据分储块是为一同位数据分储块而具有的值为所有使用者数据分储块的异或(exclusive-OR)值。这些查核数据分储块可以在同一区段中,亦可分散在不同的区段中。
虽然在上述提及的实施态样中,该初始化区域的大小较一分储带为大而包含有四个分储带,但本发明在另一实施态样中,该初始化区域的大小与该分储带的大小亦可为并无特定关系。
在使用上,该初始化进行表是储存在磁盘阵列控制器的内存中并随时更新每一初始化区域的初始化进行状态于其中,而在俟后储存至每一成员磁盘驱动器中。在磁盘阵列建立完成后且一致性初始化尚未完成前,若发生电源中断或因其它不可预期的因素而再重新启动磁盘阵列子系统时,可将储存在成员磁盘驱动器中的初始化进行表先读至内存中,并经过循环冗余查核(CRC,Cyclic Redundancy Check)以取得一个正确的初始化进行表以继续进行尚未完成的一致性初始化程序。举例而言,该初始化进行表是可为每一初始化区域的初始化状态以1位储存之,其中”1”表示该初始化区域已完成初始化,“0”表示该初始化区域尚未完成初始化;尚未完成初始化的情形,是包括尚未开始初始化及已经开始初始化但尚未完成两种情形。
该N值的决定,主要需考虑因素如下。首先,当N值较大时,则表示磁盘阵列的初始化区域很多,每个初始化区域很小,此时需要有较大的保留空间来储存初始化进行表,但是每个初始化区域进行区域性初始化的时间将变短,有利于主机端输出入作业的优先排程而不必等太久。反之,当N值很小时,则表示磁盘阵列的初始化区域很少,每个初始化区域很大,此时不需占用很大的保留空间来储存初始化进行表,但是每个初始化区域进行区域性初始化的时间将会很久,将会导致主机端输出入作业等待较久才能进行。举例而言,当一个成员磁盘驱动器的储存空间为256G字节(Byte)时,若每一初始化区域的大小为256K字节,则N为1M(1*1024*1024)。当每一初始化区域以1位(bit)来储存其初始化进行状态时,则该初始化进行表至少需要占用1M bit=128K字节的空间。又若每一初始化区域的大小为10M字节,且该磁盘阵列有十个成员磁盘驱动器接在同一通道(Channel)上且该信道速率(Channel Speed)为200M字节/秒(典型的光纤信道),则每一初始化区域的初始化至少需时10M字节*10/200M字节/秒=0.5秒,因此每次主机端输出入作业需要等0.5秒以上,将会造成主机端输出入作业过慢。
虽然在上述提及的实施态样中,该初始化区域的大小为同一,但在另一实施态样中,该初始化区域的大小亦可为大小不相同。
当磁盘阵列建立作业完成,并将所定义的磁盘阵列以逻辑储存媒体单元呈现给主机端而使磁盘阵列子系统存在(可获用)于主机端的同时,磁盘阵列子系统即开始依照预设排程进行一致性初始化作业,此即前述的连续性一致性初始化作业,会持续进行,直到一致性初始化作业完成为止。而,当主机端针对一磁盘阵列进行存取时,与其相关的磁盘阵列控制器即会将所收到的主机端输出入指令加以剖析且对相关的初始化区域进行存取;惟,若该初始化区域尚未曾经过初始化时,也会因为该主机端输出入指令而引发区域性初始化作业,此即前述的诱发性一致性初始化作业。
由于依照预设排程所进行的连续性区域性初始化作业(图6A)与因为主机端输出入作业所引发的诱发性区域性初始化作业(图8及图9A与图9B)没有直接关联性,而是各自进行。唯一需要考虑的是,当两者均要对同一区域进行区域性初始化作业时,另一者必须知道而不再重复进行而致数据毁损。
依据本发明的一致性初始化作业的一种实施态样可见于图6A。作业开始时先选定一初始化区域进行区域性初始化(605A),接下来要检测所选定的区域是否已经完成区域性初始化(610A),若(610A)为是,则检测是否还有任何尚未完成区域性初始化的区域(615A),若(615A)为是,表示尚有未完成区域性初始化的区域,则回到选定一初始化区域(605A),若(615A)为否,则表示全部区域都已完成区域性初始化,则将磁盘阵列初始化已全部完成的信息储存至成员磁盘驱动器中(620A),然后一致性初始化作业结束(690A)。若(610A)为否,则表示此区域尚未完成初始化,此时要检测,此区域是否正在进行初始化(625A),若是,则表示此一区域正在进行初始化作业,则可直接跳过此区域而至(615A)检测是否还有任何尚未完成区域性初始化的区域,若(625A)为否,表示此一区域尚未进行初始化作业,则针对此区域进行初始化(635A),并于完成后将初始化进行状态更新至初始化进行表中(640A),并于俟后适当时机再存入成员磁盘驱动器中(645A)。所谓适当时机,可以是当区域性初始化进行至某一程度时,例如是当区域性初始化至某一数目时,或是某一百分比时,或是距离上次存入成员磁盘驱动器后超过某一时间时。当(645A)完成后则检测是否还有任何尚未完成区域性初始化的区域(615A)并进行相关的处理,一直到所有区域均完成初始化为止。在(610A)中所谓的已经完成区域性初始化,是表示已将初始化进行状态更新至初始化进行表中。在(625A)中所谓的正在进行区域性初始化,是包含了将初始化进行状态更新至初始化进行表中的情形。
在(645A)选择适当时机写入初始化进行表至成员磁盘驱动器的目的是为了要提高效能,因为初始化区域是在数据空间中,而初始化进行表则是位在保留空间中,两者在磁盘驱动器中的位置不同,故当进行此两种作业时磁盘驱动器的读写头必须要在两者间移动,使得效能大幅降低。另,在(645A)将初始化进行表写入成员磁盘驱动器中,也可仅就发生变更的部份进行更新,而不需要将全部初始化进行表整个写入。
需要进行(610A)的测试的原因是,有些初始化区域可能因为某些原因已经完成初始化了,这些区域不需也不能再次进行区域性初始化作业,因为既然已经完成初始化,当然就不需再作一次,且已经完成初始化的区域中,可能储存有经由主机端输出入作业所产生的数据,若再次进行区域性初始化,则会使其中所储存的数据破坏,譬如像是全部归零等。而前述所谓的让有些初始化区域已经完成初始化了原因之一,则是当主机端针对一磁盘阵列进行输出入作业时,会引发与该输出入作业相关但又尚未进行区域性初始化作业的区域开始进行区域性初始化作业,故而有些区域即是因此而完成了初始化作业。
需要进行(625A)的测试的原因是,有些初始化区域可能因为某些原因而正在进行但又尚未完成初始化作业,这些区域只需要等该正在进行的区域性初始化作业完成即可,当然就不需也不能再作一次区域性初始化,理由同上。而前述所谓的让有些初始化区域正在进行但又尚未完成初始化作业的原因之一,则是当主机端针对一磁盘阵列进行输出入作业时,会引发与该输出入作业相关但又尚未进行区域性初始化作业的区域开始进行区域性初始化作业,故而有些区域即是因此而正在进行初始化作业。
在(605A)选定一初始化区域进行区域性初始化,可以是预先设定好的区域性初始化作业进行方式,例如从某一初始化区域开始,针对不同的实体储存装置一一进行区段初始化,接着再对另一初始化区域的各区段进行初始化,并于每一区域完成后在初始化进行表上更新初始化的进行状态;如此重复,直到每一初始化区域均已完成初始化时,则该一致性初始化作业即告完成。该初始化区域开始进行初始化的次序,可以依照寻址的方便而由小到大或由大到小为之,或是以预先指定的次序为之,甚或是以预设的方式而以不特定的次序,如随意选取等,为之。换言之,只要是能够将未完成区域性初始化的区域选出的方法均可为本发明所使用。
依据本发明的一实施例,该区域性初始化作业,可以将成员磁盘驱动器的所有使用者/查核数据区域定义成预设状态,且使使用者数据与查核数据一致,如此即不会发生某些特别的主机端因使用者数据未预先定义而发生的不可预测的行为反应。依据本发明的另一实施例,该区域性初始化作业,可以仅将使用者数据定义成预设状态,特别是在如单纯“非-磁盘阵列”或磁盘阵列等级0的磁盘阵列中,因为其中不包含查核数据。
虽然在进行一致性初始化的过程中,也可能会发生成员磁盘驱动器失效的情况,但是失效的成员磁盘驱动器中的数据,可以在所定义的磁盘阵列等级保护范围内经由其它的成员磁盘驱动器重新产生回来。例如在磁盘阵列等级1,2,3,4,或5等时,可由其它的成员磁盘驱动器的使用者数据/查核数据重新产生回来;若是其为单纯”非-磁盘阵列”或磁盘阵列等级0的话,则其系统的设计原本即无查核数据来保护使用者数据安全的考虑。如果在一致性初始化的过程中要进行数据重新建构,则只会针对已经完成区域性初始化的区域进行,而尚未完成区域性初始化的区域,则由一致性初始化来完成。
依据本发明的一致性初始化作业的另一种实施态样可见于图6B。图6B中的发明与图6A中的发明大体上相同,惟在(615B)检测是否还有任何尚未完成区域性初始化的区域后且尚有未完成区域性初始化的区域时,先进行区域性初始化优先级调整机制(660B)后,再回到(605B)选定一初始化区域。
图6B中该初始化作业进行的策略是当主机端没有输出入指令给磁盘阵列控制器时,该初始化作业是按照预先设定好的方式进行,而当主机端有输出入指令给磁盘阵列控制器时,该主机端输出入指令所映像的输出入指令相关的区域性初始化作业亦可开始进行,甚至插入至该初始化作业中,而提高主机端输出入作业所引发的区域性初始化作业的优先级。
该区域性初始化优先级调整机制(660B)的数种不同实施态样可见于图7A及图7B中。在图7A中,在初始化优先级调整机制(660B)中将要检测是否有存取在进行初始化作业的磁盘阵列的主机端输出入作业存在(710A),如果有的话,则需先等到所有相关的主机端输出入作业结束(720A),然后才继续进行区域性初始化。
在图7B中,在初始化优先级调整机制(660B)中将要检测是否有存取在进行初始化作业的磁盘阵列的主机端输出入作业存在(710B),如果有的话,则相关的主机端输出入作业与区域性初始化可以用预先设定的方式进行(730B),例如先进行两个主机端输出入作业,再进行一个区域性初始化作业等。在本发明的一种实施样态中,图7B中的该预先设定的方式进行可以是,相关的主机端输出入作业与区域性初始化可以交错进行。在本发明的另一种实施样态中,图7B中的该预先设定的方式进行可以是,同时进行的区域性初始化作业数量有一限制,譬如像是三个,而由一致性初始化作业所产生的同时进行的区域性初始化作业数量另有一限制,譬如像是一个,以维持系统效能。
图8中是显示当一主机端输出入作业发生时,磁盘阵列控制器中所进行的一致性初始化的进行方式。当磁盘阵列控制器收到主机端输出入作业且要针对磁盘阵列进行存取时,会先检测该磁盘阵列的一致性初始化是否完成(805),如(805)为是,则表示该磁盘阵列初始化作业已全部完成且此一信息已经储存至成员磁盘驱动器中并结束一致性初始化作业的状态,可依该输出入作业而存取该磁盘阵列(850),如(805)为否,则将藉由检查该初始化进行表以检测该输出入作业相关区域是否已完成区域性初始化(810)。如(810)为是,则将检测该初始化进行表是否已储存至成员磁盘驱动器中(860)。如(810)为否,则需检测相关区域是否为正在进行初始化的区域(815),如(815)为是,则等待该区域完成初始化(820),检测该初始化进行表储是否已存至成员磁盘驱动器中(860)。如(815)为否,则针对与输出入作业相关的区域进行初始化(825),并于完成后将初始化进行表更新至内存中(830),然后检测该初始化进行表储是否已存至成员磁盘驱动器中(860)。如果(860)为是,则表示该初始化进行表储已存至成员磁盘驱动器中,然后依该输出入作业而存取该磁盘阵列(850)。如果(860)为否,则需检测初始化进行表是否正在储存至成员磁盘驱动器(865),如(865)为是,则等待该初始化进行表储存至成员磁盘驱动器完成(875),如(865)为否,则需先将把初始化进行表储存至成员磁盘驱动器(870),然后再等待该初始化进行表储存至成员磁盘驱动器完成(875)。(875)完成后,则进行(850);当该输出入作业存取该磁盘阵列(850)完毕后,磁盘阵列控制器会将输出入作业的结果回报给主机端(885),之后此输出入作业即告结束(890)。在(870)将更新的初始化进行表写入成员磁盘驱动器中时,可仅就发生变更的部份进行更新而不需要将全部初始化进行表整个写入,亦可将整个初始化进行表全部写入成员磁盘驱动器中。
虽然在图8中,将更新的初始化进行表写入至成员磁盘驱动器中是在(870)进行,但是在本发明的另一种实施态样中,亦可在将初始化进行表更新至内存中(830)之后,立即将更新的初始化进行表写入至成员磁盘驱动器中。此时其它步骤若保持不变并不会影响本发明的功能;或是此时其它步骤若进行适当的相应调整,只要能确保在进行该输出入作业存取该磁盘阵列(850)之前已经将更新的初始化进行表写入至成员磁盘驱动器中即可。
在图8中,在每次进行区域性初始化(825)完成时,都将于步骤(875)把初始化进行表写入至保留空间中,但由于主机端输出入作业与保留空间两者地址不同,会使得效能降低。为了提高效能,本发明的另一实施态样系,将对于一区域进行初始化完成时,先将初始化进行表更新至内存中而不写入至成员磁盘驱动器中,等到相关的主机端输出入作业完成以后,再将该初始化进行表写入至成员磁盘驱动器中的保留空间。如果在此一主机端输出入作业完成之前,若有其它的区域性初始化已完成并已将初始化进行表写入至成员磁盘驱动器中的话,则因此一主机端输出入作业而导致的初始化进行表之更新也会随之而写入至成员磁盘驱动器中,不必再次写入。如此,整体而言,将可以减少初始化进行表的写入次数,因而提高效能。此一实施态样详见图9A及图9B。
图9A及图9B中所显示者是当一主机端输出入作业发生时,磁盘阵列控制器中所进行的一致性初始化的进行方式。如图9A所示,当磁盘阵列控制器收到主机端输出入作业且要针对磁盘阵列进行存取时,会先检测该磁盘阵列的一致性初始化是否完成(905),如(905)为是,则可依该输出入作业而存取该磁盘阵列(950),如(905)为否,则将藉由检查该初始化进行表以检测相关区域是否已完成区域性初始化(910),如(910)为是,则可依该输出入作业而存取该磁盘阵列(950),如(910)为否,则需检测正在进行初始化的区域是否为相关区域(915),如(915)为是,则等待该区域完成初始化(920),然后依该输出入作业而存取该磁盘阵列(950),如(915)为否,则针对与输出入作业相关的区域进行初始化(925),并于完成后将初始化进行表更新至内存中(930),然后依该输出入作业而存取该磁盘阵列(950)。
在图8及图9A中,在(810)及(910)中所谓的已经完成区域性初始化,是包含了已将初始化进行状态更新至初始化进行表中。在(815)及(915)中所谓的正在进行区域性初始化,是包含了将初始化进行状态更新至初始化进行表中。在(820)及(920)中所谓的等待该区域完成初始化,是包含了等初始化进行状态更新至初始化进行表中。
当该输出入作业存取该磁盘阵列(950)完毕后,会于俟后考虑将初始化进行表储存至成员磁盘驱动器中,如图9B所示,其步骤开始会先检测该磁盘阵列的一致性初始化是否完成(955),如(955)为是,则表示该一致性初始化已经完成而不必再将初始化进行表储存至成员磁盘驱动器,于是磁盘阵列控制器会将输出入作业的结果回报给主机端(985),如(955)为否,则检测更新过的初始化进行表是否已储存至成员磁盘驱动器(960),如(960)为是,则表示该更新过的初始化进行表已储存至成员磁盘驱动器而不必再将初始化进行表储存至成员磁盘驱动器,于是磁盘阵列控制器会将输出入作业的结果回报给主机端(985),如(960)为否,则需检测初始化进行表是否正在储存至成员磁盘驱动器(965),如(965)为是,则等待该初始化进行表储存至成员磁盘驱动器完成(975),于是磁盘阵列控制器会将输出入作业的结果回报给主机端(985),如(965)为否,则将把初始化进行表储存至成员磁盘驱动器(970),然后等待该初始化进行表储存至成员磁盘驱动器完成(975)后,磁盘阵列控制器会将输出入作业的结果回报给主机端(985)。当该磁盘阵列控制器会将输出入作业的结果回报给主机端(985)后,此输出入作业即告结束(990)。
当磁盘阵列建立已经完成,但一致性初始化尚未完成前,若在电源中断后或因其它不可预期的因素而再重新启动磁盘阵列子系统时,在磁盘阵列启动作业时(如图10所示),先会将磁盘阵列组态自成员磁盘驱动器中加载至磁盘阵列控制器中(1010),然后会启动初始化进行表加载作业(1020),接下来,将所定义的磁盘阵列呈现给主机端(1080),并开始继续之前的一致性初始化作业(1050)。
图11所示,是在电源中断后或因其它不可预期的因素而再重新启动磁盘阵列子系统时,所启动的初始化进行表加载作业。先由成员磁盘驱动器中所加载各个的初始化进行表(1110),并检测是否能确认出一个正确的初始化进行表(1120),如果可以,则将其用作为所设定的初始化进行表(1130);若在正常的情况下,如果初始化进行表曾经被储存至成员磁盘驱动器中的话,应可以确认出一个正确的初始化进行表(1150),且若该一致性初始化尚未完成的话,可藉此初始化进行表继续未完成的一致性初始化作业。若无法确认出一正确的初始化进行表的话,则将另行建立一新的初始化进行表作为所设定的初始化进行表(1140);此种情形通常不会发生,然而一旦发生则表示磁盘阵列子系统处于一不可预期的不正常状态下,而此时由于另行建立一新的初始化进行表并重新开始区域性初始化,可能因而造成原本储存在成员磁盘驱动器中的数据流失。
必须要说明的是,一组初始化进行表的数据结构中是可包含有该磁盘阵列的唯一识别码以及更新序号(update sequence number),且可另有循环冗余查核保护,以确保其中数据的正确性。另外,在每一储存有初始化进行表的成员磁盘驱动器中可储存有单一组的初始化进行表,亦可在每一成员磁盘驱动器中储存有不止一组的初始化进行表,譬如两组初始化进行表,且每次更新时仅更新其中一组,以防止因初始化进行表正在同时写入每个成员磁盘驱动器时的电源中断所造成的所有成员磁盘驱动器的数据错误。亦即,一个该存储装置中是储存有多个版次的初始化进行表。详见图12的相关细节。
图12中显示出如何可确认一正确的初始化进行表的一种实施方法,其中,一成员磁盘驱动器可储存有一组或多组(譬如两组)的初始化进行表。本方法在对于每一成员磁盘驱动器进行检测时,会针对每一组初始化进行表进行检测,并将可能存在的最新的正确初始化进行表作成记录或用来更新原有记录,并于每个成员磁盘驱动器均已完成检测后,决定可否确认出一正确的初始化进行表。
一开始先检测是否尚有未查核的成员磁盘驱动器(1205)。如(1205)为是,则检测是否尚有未查核的初始化进行表(1207),如(1207)为是,表示尚有未查核的初始化进行表,则查核该成员磁盘驱动器的磁盘阵列唯一识别码以确认该磁盘驱动器是否为此磁盘阵列的成员磁盘驱动器,并查核该初始化进行表与其循环冗余查核数据是否一致(1210)。该循环冗余查核数据是由该初始化进行表所计算得到并储存在该保留空间中。如果该磁盘驱动器不是此磁盘阵列的成员磁盘驱动器,或是该初始化进行表与其循环冗余查核数据不一致(1215)的话,则表示该初始化进行表不能用,回到(1207)检测是否尚有未查核的初始化进行表。如(1215)一致的话,则表示该初始化进行表正确能用,则检测是否已存在有正确的初始化进行表(1220)。如(1220)为否,则将该初始化进行表记录起来(1225)。如(1220)为是,则表示已存在有正确的初始化进行表记录,此时则需检测新的初始化进行表的版本更新序号是否较晚于该记录(1230),如果(1230)为是,则表示新的初始化进行表是较晚较新的,故将该初始化进行表记录更新(1235),如(1230)为否,则表示新的初始化进行表是较早较旧的,故弃而不用。该版本序号是为用于记载版本先后的数据,例如愈晚产生的版本其序号亦随之增加,譬如每一次写入初始化进行表时增加一;又例如,其可为一时间戳记。当新记录一正确的初始化进行表(1225)或更新该正确的初始化进行表记录(1235)后,将回到(1207)检测是否尚有未查核的初始化进行表并加以处理。
如(1207)为否,表示所有初始化进行表均已查核,则回到(1205)检测是否尚有未查核的成员磁盘驱动器。当(1205)为否时,表示所有成员磁盘驱动器,均已经过查核,此时要检测是否有正确的初始化进行表记录存在(1255),若(1255)为是,表示可确认出一正确的初始化进行表(1260),若(1255)为否,表示无法确认出一正确的初始化进行表(1270)。
虽然在本发明图2A至图2C的实施例中,该一致性初始化作业机制包含连续性一致性初始化作业机制及诱发性一致性初始化作业机制两部份,但是在本发明的另一实施例中,该一致性初始化作业机制可仅包含诱发性一致性初始化作业机制;换句话说,只有在因为主机端输出入作业所需利用到的数据空间会进行区域性初始化,其余的数据空间则并未进行。
权利要求
1.一种磁盘阵列一致性初始化方法,包含下述步骤;建立磁盘阵列,是包括设定该磁盘阵列的组态与建立一初始化进行表;以及依据该初始化进行表进行一致性初始化作业。
2.如权利要求1所述的方法,其中,该磁盘阵列组态与该初始化进行表是储存在一非易失性存储装置中。
3.如权利要求1所述的方法,其中,该一致性初始化作业是包含诱发性一致性初始化作业机制。
4.如权利要求3所述的方法,其中,该诱发性一致性初始化作业机制更包含下述步骤(a)当一磁盘阵列子系统收到一主机端输出入作业时,检测该磁盘阵列子系统是否已经完成一致性初始化;(b)若(a)为否,则检测与该主机端输出入作业相关的初始化区域是否已经完成区域性初始化;(c)若(b)为否,则检测与该主机端输出入作业相关的初始化区域是否正在进行区域性初始化;(d)若(c)为是,则等待该正在进行区域性初始化完成,若(c)为否,则对该区域进行区域性初始化,并将该初始化区域的初始化状态改变更新至该初始化进行表中;及(e)在符合一预设条件下,将该更新的初始化进行表写入一非易失性存储装置。
5.如权利要求4所述的方法,其中,该主机端输出入作业是在步骤(e)之后存取该磁盘阵列子系统。
6.如权利要求4所述的方法,其中,在该步骤(e)之前,执行以下步骤(e0)该主机端输出入作业存取该磁盘阵列子系统。
7.如权利要求3所述的方法,其,中该一致性初始化作业是包含连续性一致性初始化作业机制。
8.如权利要求7所述的方法,其中,该连续性一致性初始化作业机制包含下述步骤(a)选取一尚未完成初始化的初始化区域;(b)若该被选取的初始化区域并非正在进行区域性初始化,则对该区域进行区域性初始化;(c)在符合(b)的情况下,将该初始化区域的初始化状态改变更新至初始化进行表中;(d)在符合预设的条件下,将该更新的初始化进行表写入该存储装置中;及(e)重复步骤(a)至(d),直到所有初始化区域均已完成初始化。
9.如权利要求8所述的方法,其中,在该步骤(e)之后,更包含以下的步骤(f)将所有初始化区域均已完成初始化的此一状态写入一非易失性存储装置。
10.如权利要求8所述的方法,其中,在该步骤(a)选取一尚未完成初始化的初始化区域之前,更包含以下的步骤(a0)执行区域性初始化优先级调整机制,以决定是否进行该选取一尚未完成初始化的初始化区域,且该步骤(e)是包含重复步骤(a0)至(d),直到所有初始化区域均已完成初始化。
11.如权利要求1所述的方法,其中,该一致性初始化作业是对该磁盘阵列所属的多个成员磁盘驱动器的一数据空间划分成多个个初始化区域,并对这些初始化区域进行区域性初始化作业。
12.如权利要求11所述的方法,其中,该区域性初始化作业是因连续性一致性初始化作业而产生。
13.如权利要求11所述的方法,其中,该区域性初始化作业是因诱发性一致性初始化作业而产生。
14.如权利要求13所述的方法,其中,诱发该区域性初始化作业的主机端输出入作业是在对数据空间存取完成后,才将该初始化进行表写入一非易失性存储装置,继而回复该主机端输出入作业结果给一主机端。
15.如权利要求13所述的方法,其中,先将该初始化进行表写入一非易失性存储装置,继而进行输出入请求作业对数据空间存取。
16.如权利要求11所述的方法,其中,这些初始化区域的大小是相同。
17.如权利要求1所述的方法,其中一个该存储装置中是储存有多个版次的初始化进行表。
18.如权利要求1所述的方法,其中,该初始化进行表具有初始化区域的初始化进行状态数据。
19.如权利要求2所述的方法,其中,该非易失性存储装置是为一成员磁盘驱动器、不是成员磁盘驱动器的其它磁盘驱动器、具有电池备援的静态随机存取内存或闪存。
20.如权利要求1所述的方法,其中,在完成磁盘阵列建立后,磁盘阵列即可被呈现给一主机端。
21.如权利要求1所述的方法,其中,在开始一致性初始化作业之前,是将磁盘阵列呈现给一主机端而上线。
22.如权利要求3所述的方法,其中,在开始诱发性一致性初始化作业之前,是将磁盘阵列呈现给一主机端而上线。
23.一种磁盘阵列一致性初始化方法,包含下述步骤;一建立磁盘阵列步骤,是设定一磁盘阵列组态与建立一初始化进行表;以及一进行一致性初始化步骤,是依据该初始化进行表进行一致性初始化作业,其中,该磁盘阵列组态与该初始化进行表是储存在一非易失性内存,以供完成建立磁盘阵列后,能于在线进行该一致性初始化步骤。
24.一种磁盘阵列一致性初始化方法,包含下述步骤;一建立磁盘阵列步骤,是设定一磁盘阵列组态与建立一初始化进行表;以及一进行一致性初始化步骤,是在该建立磁盘阵列步骤完成后,依据该初始化进行表进行一致性初始化作业,其中,该磁盘阵列组态与该初始化进行表是储存在一非易失性内存。
全文摘要
一种磁盘阵列一致性初始化方法,包含以下的步骤设定该磁盘阵列的组态;建立一初始化进行表;将此初始化进行表及磁盘阵列组态写入在一非易失性存储装置中;完成磁盘阵列建立;以及,开始进行一致性初始化作业。在完成磁盘阵列建立后,如果有需要的话,磁盘阵列即可被呈现给主机端而上线。在一实施态样中,该一致性初始化作业机制包含连续性一致性初始化作业机制及诱发性一致性初始化作业机制两部分。在另一实施态样中,该一致性初始化作业机制仅包含诱发性一致性初始化作业机制。在一实施态样中,该非易失性存储装置可以是该磁盘阵列的成员磁盘驱动器、或是成员磁盘驱动器以外的另一磁盘驱动器、或是具有电池备援的静态随机存取内存、或是闪存。
文档编号G06F11/00GK1591308SQ20041008337
公开日2005年3月9日 申请日期2004年9月30日 优先权日2003年10月7日
发明者洪清海 申请人:普安科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1