进行硬盘阵列数据迁移的方法与相关装置的制作方法

文档序号:6442913阅读:151来源:国知局
专利名称:进行硬盘阵列数据迁移的方法与相关装置的制作方法
技术领域
本发明涉及一种进行硬盘阵列数据迁移的方法及相关装置,特别涉及一种藉由较佳的迁移进度规划/记录以及优化的数据读写而能增进迁移效能、确保迁移安全的数据迁移方法及相关装置。
背景技术
计算机系统是现代信息社会最重要的硬件基础之一,各种资料、数据、信息与知识都能以计算机系统来管理、处理及储存;现代信息厂商也致力研究各种技术,以使计算机系统能储存更多数据,并且更快速地存取这些数据。
一般来说,现行计算机系统普遍设有单一硬盘以做为非易失性的储存装置;然而,随着硬盘成本降低,在计算机系统中安装多个硬盘以整合组织出一硬盘阵列的作法,其可行性也越来越高。在现行技术中,已经有多种不同的硬盘阵列架构被提出,像是RAID0、RAID1到RAID5乃至于RAID0+1的冗余廉价硬盘阵列架构(Redundant Array of Inexpensive Disks),或是矩阵式冗余廉价硬盘阵列(matrix RAID)架构。这些硬盘阵列架构可利用不同的方式将多个硬盘内个别的存储空间整合为一,并取得某些数据存取与管理上的优势。举例来说,在RAID0架构下的硬盘阵列,一笔要储存至硬盘阵列的数据会被划分为多个不同的数据片段(stripe),不同的数据片段会被交错写入至该硬盘阵列中不同的硬盘;要从硬盘阵列中读取该笔数据时,就可从不同的硬盘中平行地同时将对应的数据片段读出,并重新由各个数据片段组合出原来的数据。换句话说,在由硬盘阵列中存取一笔数据时,实际上只要同时从各个硬盘存取该笔数据的一部份(也就是数据片段),故可实现较佳的数据存取速度与效能。另外,如RAID5架构下的硬盘阵列,除了以硬盘阵列中的各个硬盘分散储存一笔数据的不同数据片段外,还可另外储存一同位检查数据;这也使得此类的硬盘阵列不仅能比单一硬盘更快速地存取数据,还能检查其所储存的数据是否毁损,甚至还能将毁损的数据恢复为正确的数据。
虽然硬盘阵列有上述优点,不过,由于硬盘阵列的硬件建置成本较高,现行的计算机系统在出厂时多半都还只建置一个硬盘;若使用者有个别的需要,才会在计算机系统中加装其它的硬盘以升级实现出效能较高的硬盘阵列。在将硬盘阵列升级时,除了加装硬盘之外,使用者还要进行数据迁移(datamigration),以将原来的硬盘中的数据读出,再依升级后的硬盘阵列架构,将数据重新回存至升级后的硬盘阵列。如何协助使用者进行数据迁移,也就成为现代信息厂商的研发重点之一。在现行的现有技术中,如英特尔(intel)等信息厂商即已针对RAID0的硬盘阵列发展出数据迁移程序;在计算机系统中执行数据迁移程序,就能完成数据迁移。
然而,现有的数据迁移程序效能较差,需耗费较多的时间才能完成数据迁移,不能快速有效率地完成数据迁移,且其应用范围也有限制,虽能对RAID0的硬盘阵列进行数据迁移,但对其他数据架构(如RAID5等等)的硬盘阵列可能就不能完全支持。

发明内容
因此,本发明的主要目的,即在于提供一种效能较佳、应用范围较广且能维持数据迁移安全的数据迁移方法与相关装置,能协助使用者将硬盘升级为硬盘阵列,并克服现有技术的缺点。
如前面讨论过的,在各种硬盘阵列架构下,数据会被划分为片段数据,在各个硬盘中以片段数据为单位而被存取。而在将一硬盘升级为硬盘阵列时,原来的硬盘就可视为一来源硬盘,而硬盘阵列中加装的其它硬盘可视为成员硬盘;进行数据迁移的目的,就是要将来源硬盘中原本储存的数据划分为许多数据片段,并依照硬盘阵列的架构分别将这些数据片段重新分配/写入至硬盘阵列中的各个硬盘(包括来源硬盘及各个成员硬盘)。在进行数据迁移时,除了数据的读写之外,还要能兼顾数据迁移安全,也就是当数据迁移过程中断后(像是因不可预期的停电而中断),还能正确无误地恢复数据迁移,不会因数据迁移的意外中断而导致数据的流失或损毁。在本发明中,就是利用较佳的迁移进度规划/记录来增进数据迁移的效能、维持数据迁移安全,并在数据迁移期间利用较佳的读写管理来提高数据迁移的速度,缩短数据迁移所需的时间。
当本发明在进行迁移进度规划时,是将来源硬盘中待迁移的各个数据片段数据依序归类于各个区域(zone),各个区域中有多个要分别写入(储存)至不同硬盘的片段数据;当本发明在进行数据迁移时,就是以区域为一整体来依序进行。当本发明将来源硬盘中第j个区域的数据片段都顺利写入至硬盘阵列的各个硬盘后,此一区域就可被视为一可覆写区;要继续迁移第(j+1)个区域中的数据片段时,第(j+1)个区域里要写入至来源硬盘中的数据片段就可覆写于第j个区域中。由于各个区域中的数据片段是要被写入至硬盘阵列的不同硬盘中的,故要写入至来源硬盘的数据片段个数会少于该区域中所有数据片段的个数,也因此,次一区域的大小(其所具有的数据片段的个数)就可大于前一区域的大小。
举例来说,在两个硬盘的RAID0硬盘阵列中进行数据迁移时,本发明就会使来源硬盘中的每个区域具有偶数个数据片段,其中一半是要写入至来源硬盘本身的,另一半是要写入至另一个硬盘的。在此情形下,若第j个区域中有2*M个数据片段,第(j+1)个区域就可具有4*M个数据片段。因为,当第j个区域中的数据片段皆完成数据迁移后(有M个数据片段被重新写入至来源硬盘中的第(j-1)个区域,另M个数据片段被写入至成员硬盘),第(j+1)个区域中要被重新写入至来源硬盘的2*M个数据片段,就刚好可以被写入至第j个区域,覆写第j个区域中原本的2*M个数据片段。以此类推,第(j+2)个区域中就可具有8*M个数据片段,第(j+3)个区域中则可具有16*M个数据片段,等等。换句话说,在本发明的迁移进度规划下,不同区域的大小(其所具有的数据片段的个数)可呈指数型态增加,直到区域的大小到达一适当的临限值为止。
在上述的迁移进度规划之下,本发明进行迁移进度管理的情形则可描述如下。本发明是在硬盘阵列的各个硬盘中都分别储存一个起始数据,用来记录正在进行数据迁移的区域的起始地址。举例来说,在对来源硬盘中第j个区域的数据片段进行数据迁移时,起始数据记录的就是第j个区域的起始地址;等到第j个区域中的所有数据片段都已完全被写入至硬盘阵列中的各个硬盘后,各硬盘中的起始数据才会被更新为第(j+1)个区域的起始地址,代表第j个区域中的数据片段已经能被覆写,并可开始对第(j+1)个区域内的数据片段进行数据迁移,也就开始将第(j+1)个区域内要重新写入至来源硬盘的数据片段覆写至第j个区域中,并将第(j+1)个区域内要写入至其它成员硬盘的数据片段分别写入至对应的成员硬盘。在将第(j+1)个区域内的数据片段全部写入至对应的硬盘之前,起始数据都不会被更新,而会持续记录着第(j+1)个区域的起始地址。一直要等到第(j+1)个区域内的所有数据片段都已经被顺利分别写入至对应的硬盘后,起始数据才会被更新为第(j+2)个区域的起始地址,代表数据迁移的进度要推进至第(j+2)个区域,也代表第(j+1)个区域中的数据片段已经可以被覆写。
换句话说,起始数据指向的区域是正在进行数据迁移的区域,该区域中的数据片段绝对不会被覆写,该区域的前一区域才是可覆写的区域。除非某一区域中的所有数据片段已经被正确地写入至各个硬盘,起始数据都会持续地指向该区域而不会被更新,也保护了该区域中的所有数据片段不会被覆写;直到该区域中的所有数据已被写入至各个对应的硬盘,起始数据才会指向次一个区域,而原来的区域也才会变成一个可覆写的区域。
利用上述的管理机制,本发明就可以维持数据迁移的安全。举例来说,在将第(j+1)个区域中的数据写入至各个对应硬盘时,若突然发生停电而使数据迁移的过程中断,等到电力恢复而要重新恢复数据迁移时,本发明就可根据起始数据中所记载的地址,重新由第(j+1)个区域的第一个数据片段开始数据迁移,也就是重新将第(j+1)个区域中所有的数据片段写入至各个对应的硬盘。由于数据迁移过程是在迁移第(j+1)个区域时中断的,起始数据会持续记录着第(j+1)个区域的起始地址;等到数据迁移要重新恢复时,就可以根据起始数据来判断数据迁移中断于哪一个区域。更重要的是,由于起始数据指向第(j+1)个区域,故在数据迁移重新恢复后,第(j+1)个区域中所有的数据片段(不管已迁移或未迁移)都还未曾被覆写,这也使得数据不会因数据迁移意外中断而流失或损毁。
值得注意的是,在本发明中,即使不同区域的大小会呈指数型态地增加,上述的迁移进度管理机制还是能确保数据迁移的安全,不会因为要迁移的区域较大而无法维持迁移安全。事实上,较大的区域划分可减少起始数据的更新次数,有助于提升本发明数据迁移的效能。由于起始数据要能在电力中断期间持续记录区域的起始地址,合理的选择之一就是将其记录在硬盘阵列的各个硬盘内,作非易失性的储存。然而,若每个区域都很小(具有较少的数据片段),又要在每迁移一个区域就要更新起始数据,那在整个数据迁移过程中,势必要频繁地更新各个硬盘中的起始数据,导致效能的消耗。但事实上,本发明中的区域规划是可以让不同区域呈指数型态增加的,较大的区域规划就可以减少数据迁移期间更新起始数据的次数,在兼顾数据迁移安全的情形下,还能增进数据迁移的效能。
另外,在数据迁移的过程中,本发明也会采用优化的读写管理来增加效能。在将数据由来源硬盘中迁移到硬盘阵列的各个硬盘时,要先将各个待迁移的数据片段由来源硬盘中读出,再分别写入至各个硬盘。如熟悉技术者所知,要控制硬盘读出或写入数据,就要向硬盘发出特定格式的读取或写入指令;而在业界现行普遍采用的指令格式中,读取或写入指令一次所能存取的数据均有其上限。举例来说,在现行ATA(Advanced Technology Attachment)标准下的指令,一个读取指令最多可控制一硬盘读取128K字节的数据,一个写入指令最多可将128K字节的数据写入至一硬盘。由于每次对硬盘发出读取或写入指令都要消耗相当的时间与系统资源,故在数据迁移过程中,最好能充分利用每一次发出读取/写入指令的机会,尽量在每一读取/写入指令中读取或写入较多(最多)的数据,以减少写入/读取指令所需的次数。在现有的数据迁移技术中,会因为迁就硬盘阵列架构而浪费了每次发出写入指令的机会;举例来说,当现有技术要在一个两硬盘的RAID0硬盘阵列中迁移256K字节时,会先向来源硬盘发出128K字节读取指令,随即依照RAID0的数据架构将读出的128K字节划分为两个64K字节的部分,同时以两个64K字节写入指令将两部分各64K字节的数据分别写入至两硬盘中,再发出另一128K字节的读取指令,同样以两个64K字节写入指令迁移另外128K字节的数据。迁移完256K字节的数据,现有技术总计要分四次发出六个读取/写入指令。
相较之下,本发明优化的读写管理技术就会先重复读取指令以累积读取足够多的数据,以便在每次写入指令中写入较多的数据,充分利用每个写入指令。同样在两硬盘的RAID0硬盘阵列中迁移256K字节的数据,本发明会先向来源硬盘发出两次128K字节读取指令以累积读出256K位的数据,再同时发出两个128K字节的写入指令将256K字节的两部分分别写入至两个硬盘,总计仅需分三次发出四个读取/写入指令即能完成256K字节的数据迁移。利用本发明的读写管理优化技术,本发明就能更进一步地提升数据迁移的效能与速度,减少数据迁移过程中所需耗用的系统资源与时间。
本发明上述的技术特征除了适用于RAID0的硬盘阵列数据迁移,还能推广运用于其它种类以平行方式存取分散数据的硬盘阵列架构,像是RAID0+1、RAID5或是矩阵式的冗余廉价硬盘阵列架构,以在这些架构下进行高效能、省时、安全的数据迁移。


图1为本发明计算机系统一实施例的示意图。
图2为图1中计算机系统进行数据迁移的流程示意图。
图3为一两硬盘的RAID0硬盘阵列在数据迁移前后数据分布的示意图。
图4及图5示意的是本发明在图3中硬盘阵列进行迁移进度规划的情形。
图6至图10示意的是本发明在图3中硬盘阵列进行数据迁移时的情形。
图11至图12示意的是本发明在图3中硬盘阵列恢复数据迁移的情形。
图13示意的是本发明在图3中硬盘阵列进行数据迁移时实施读写优化管理的情形。
图14为一N个硬盘的RAID0硬盘阵列在数据迁移前后数据分布的示意图。
图15及图16示意的是本发明在图14中硬盘阵列进行迁移进度规划的情形。
图17至19示意的是本发明在图14中硬盘阵列进行数据迁移的情形。
图20示意的是本发明在图14中硬盘阵列进行数据迁移时实施读写优化管理的情形。
图21表列的是本发明在不同架构的硬盘阵列下进行数据迁移进度规划的情形。
图22为一RAID0+1架构下的硬盘阵列在数据迁移前后数据分布的示意图。
图23为一RAID5架构的硬盘阵列在数据迁移前后数据分布的示意图。
第24至26图示意的是本发明在图23中硬盘阵列进行数据迁移的情形。
图27示意的是一矩阵式冗余廉价硬盘阵列在数据迁移前后数据分布的情形。
组件符号说明10计算机系统12中央处理器14芯片组16硬盘阵列控制器18内存 20据迁移程序22A规划程序 22B区域迁移程序22C读写管理程序 22D记录程序22E恢复程序 100流程
102-116步骤HD(0)-HD(N-1)硬盘G(.)群组 S(.)(.)数据片段Z(.)区域 P(.)检查数据D0、D、D1-D2数据 MSA起始数据具体实施方式
请参考图1;图1为本发明计算机系统10一实施例的示意图。计算机系统10中设有一中央处理器12、一芯片组14、一硬盘阵列控制器16、一内存18(像是动态随机存取内存)以及多个硬盘HD(0)、HD(1)至HD(N-1)。中央处理器12可执行程序、运算数据及处理数据,并主控计算机系统10的运作;内存18即用来暂存中央处理器12运作期间所需的程序代码及相关数据、数据。硬盘阵列控制器16设有多个总线信道(channel),各信道分别连接至一硬盘,使硬盘阵列控制器16得以整合控制这些硬盘的数据存取,将这些硬盘组织为一硬盘阵列。而芯片组14则用来管理中央处理器12、内存18及硬盘阵列控制器16(与其它周边电路)间的数据往来传输。其中,硬盘阵列控制器16可以和芯片组1 4整合为一,或者,硬盘阵列控制器16也可以是以附插卡(像是PCI附插卡,PCI为peripheral communication interconnect),以透过附插卡的接口(像是PCI接口)连接至芯片组14。
在计算机系统10中,本发明的数据迁移技术可以利用一软件的数据迁移程序20来实现;当使用者要将单一硬盘升级为硬盘阵列时,就可操控计算机系统10而使中央处理器12开始执行数据迁移程序20,以依据硬盘阵列的架构(RAID0、RAID0+1或RAID5等等)而将数据由原来的单一硬盘(即来源硬盘)迁移、分散至硬盘阵列的各个硬盘。数据迁移程序20中可设有一规划程序22A、一区域迁移程序22B、一读写管理程序22C、一记录程序22D及一恢复程序22E。执行规划程序22A可规划数据迁移的进度;在本发明中,是将来源硬盘中待迁移的数据区分为不同区域,并以区域为一整体来进行数据迁移,当一区域中的数据已经正确无误地完成迁移后,才会再迁移次一区域内的数据,且各个区域可以涵盖不同大小的存储空间,而规划程序22A即可决定各个区域的大小。执行区域迁移程序22B时,中央处理器12就可透过芯片组14/硬盘阵列控制器16而实际向各个硬盘发出读取/写入的指令,以实际迁移一个区域中的数据。在执行区域迁移程序22B时,读写管理程序22C可优化读取/写入的过程,尽量使每个写入指令都在硬盘中能写入较多(最多)的数据,以充分利用每一次对硬盘发出写入指令的机会,进一步地增进数据迁移的效能。
在迁移一区域中的数据后,记录程序22D可将该区域的起始地址记录于一起始数据,代表数据迁移的进度;在本发明的较佳实施例中,起始数据将被复制储存在各个硬盘中,使每一个硬盘内都储存有一份内容相同的起始数据。迁移完一区域中的数据时,起始数据就会被更新而记录次一区域的起始地址;根据更新的起始数据,区域迁移程序22B就可以开始迁移次一区域内的数据。由于起始数据已经储存在各个硬盘内,若数据迁移程序20中断执行而中途停止了数据迁移,等到数据迁移程序20再度被执行时,恢复程序22E就能再度读取各个硬盘中的起始数据,以根据起始数据来判断数据迁移已经进行至哪一个区域,并使区域迁移程序22B从该区域继续进行未完成的数据迁移。
请参考图2(及图1),计算机系统10执行数据迁移程序20而以本发明的技术进行数据迁移的过程,可进一步用图2中的流程100来描述;流程100中有下列步骤步骤102开始进行数据迁移。当使用者将单一硬盘扩充为多硬盘的硬盘阵列时,就可使计算机系统10进行流程100以进行数据迁移,将数据由原来的硬盘(即来源硬盘)依据硬盘阵列的架构而分布迁移至各个硬盘。另外,流程100也可以是在中断后再重新进行的。举例来说,当计算机系统10在进行流程100期间,使用者可能会因某种原因(如要执行其它高优先的程序)而暂时中断流程100,或是因不可预料的意外(如停电)而中断了流程100。在中断后,使用者还是可以使计算机系统10重新进行流程100,接续之前中断的数据迁移。
步骤104存取数据迁移的起始数据。若是在先前未进行任何数据迁移的情形下而开始流程100,就可在此步骤中初始化一个起始数据,使这个起始数据记录待迁移数据的起始地址;在本发明的较佳实施例中,此起始数据会被复制储存至硬盘阵列中的每一个硬盘,使每一个硬盘都储存有内容相同的起始数据。若先前已进行过流程100但却中途中断,各硬盘中应该已经储存有起始数据,等重新进行流程100而到达此步骤时,就可由硬盘中读出此一起始数据。
步骤106根据起始数据来规划待迁移的区域。如前面描述过的,在各种硬盘阵列架构中,数据会被划分为多个固定大小(可以是4K、8K或16K字节)的数据片段而分散储存在各个硬盘中。故在进行数据迁移时,来源硬盘中的数据也会被划分为数据片段;将来源硬盘中的各个数据片段依据硬盘阵列的架构而写入至其所对应的硬盘,也就完成了数据迁移。在将待迁移的数据划分为各个数据片段后,本发明还会将多个要分别迁移至不同硬盘的数据片段归类于同一个区域,进而将所有要迁移的数据划分为多个区域,并以区域为一整体来进行数据迁移。在本发明的较佳实施例中,不同区域中可以具有不同数目的数据片段;而在此步骤中,就可根据起始数据指向的起始地址而规划出待迁移区域,并可规划待迁移区域中可具有多少个数据片段。
步骤108将待迁移区域中的数据片段分散写入至硬盘阵列中的各个硬盘,也就是将待迁移区域中的数据片段由来源硬盘中读出,并重新分配/写入至不同的硬盘。在本发明的迁移进度规划下,每个迁移区域中都会有部分的数据片段是要迁移至来源硬盘本身的,其它部分的数据片段则是要写入至其它硬盘的。而那些要迁移至来源硬盘本身的数据片段就可被写入至待迁移区域的前一区域,也就是将待迁移区域的前一区域视为一可覆写区。
在进行本步骤时,为了增进数据读取/写入的效能,本发明会实施优化的读写管理,以充分发挥每一个读取/写入指令的效益。如前面讨论过的,在对硬盘发出读取/写入指令时,每一指令可读取/写入的数据有一极值(譬如说是128K字节);由于每一次向硬盘发出读取/写入指令都会消耗相当的时间与系统资源,故应充分利用每一次发出指令的机会,尽量在每一读取/写入指令中读取/写入接近极值的数据,避免频繁地发出读取/写入指令。而在本发明的较佳实施例中,优化的读写管理是先重复多个读取指令以从待迁移区域中累积读出较多的数据,等到要写入至某一硬盘的数据已经累积接近至写入指令的写入极值,才以一个写入指令将这些累积的数据写入至该硬盘。这样,就可以善用每一个读取/写入指令,进而增进数据迁移的效能。
步骤110若在步骤108中已将待迁移区域中的数据片段分别写入对应的硬盘,就能进行至步骤112;若步骤108中断而未能顺利地将待迁移区域中的所有数据片段分别写入至对应的硬盘,就直接进行至步骤116而结束流程100。值得注意的是,即使步骤110中断,待迁移区域的起始地址还是已经被记录在起始数据内(即步骤104)。等下一次再度进行流程100时,就可根据起始数据再度找出待迁移区域,并继续进行数据迁移。
步骤112判断是否还有数据未迁移。若还有未迁移的数据,就再度进行至步骤114;若来源硬盘中所有待迁移数据均已按照硬盘阵列架构而分配至各硬盘,就可进行至步骤116。
步骤114迁移完前一区域的数据片段后,若来源硬盘中还有未迁移的数据,就可以更新各硬盘中的起始数据,将后续未迁移数据的起始地址记录在各硬盘的起始数据内,并进行至步骤106,再度在未迁移的数据中规划出未迁移区域,进行次一区域的数据迁移。
步骤116结束流程100。
为了进一步说明本发明进行数据迁移的情形,以下将先以两硬盘的RAID0硬盘阵列为例,描述本发明在此种硬盘阵列下进行数据迁移的情形,再将本发明的技术精神推广至N个硬盘的RAID0硬盘阵列,乃至在其它硬盘阵列架构下的数据迁移。
请参考图3(并一并参考图1);假设图1中的计算机系统10设有两个硬盘(N=2),图3示意的就是两硬盘的RAID0硬盘阵列在数据迁移前后的情形。在数据迁移前,硬盘HD(0)为来源硬盘,硬盘HD(1)则是加装的成员硬盘。如前面讨论过的,在RAID0的硬盘阵列架构下,数据是以数据片段的形式交错分布在硬盘阵列的各个硬盘中;在硬盘阵列中存取数据,就相当于在各个硬盘中平行地存取各个数据片段。就如图3中所示,在数据迁移前,来源硬盘HD(0)中的数据可依序被划分为S0(0)、S0(1)、S1(0)、S1(1)、S2(0)、S2(1)至Sm(0)、Sm(1)等等的数据片段,而数据迁移的目的,就是将这些数据片段交错地分布至硬盘HD(0)及HD(1)中。举例来说,数据片段S1(0)、S2(0)、S3(0)这些原本就储存在硬盘HD(0)的数据片段要迁移至硬盘HD(0)的其它地址,而数据片段S0(1)、S1(1)、S2(1)、S3(1)等则要被迁移至成员硬盘HD(1)。为了后续讨论的方便,以下将把硬盘阵列中会被并行存取的数据片段归类为同一群组。如图3所示,数据片段S0(0)、S0(1)在数据迁移后的硬盘阵列中分别是硬盘HD(0)、HD(1)的第一个数据片段,分布在数据阵列中的「同一层」,会被平行地同时存取,故可归类在同一群组G(0)。同理,数据片段S3(0)、S3(1)可被归类在同一群组G(3),数据Sm(0)、Sm(1)可被归类在群组G(m)。
延续图3的例子,请参考图4及图5。图4即为本发明进行迁移进度规划而在待迁移数据中规划出不同区域的示意图;图5则表列了图4中各区域中所具有的群组数目以及数据片段数目。如图4所示,在本发明的较佳实施例中,待迁移数据的第一个区域Z(0)可具有一个群组G(0),第二个区域Z(1)亦具有一个群组,而接下来的各个区域的大小就可呈指数型态地增加,像区域Z(2)可具有两个群组,次一区域Z(3)就可具有四个群组,再次一个区域Z(4)将可具有八个群组,以此类推。图5则归纳了各个不同区域所分别具有的群组数目及数据片段个数;到了区域Z(j),就可具有2^(j-1)个群组,也就是2^j个数据片段(每群组中有两个数据片段)。
由数据迁移的实际过程,将可进一步了解本发明区域规划的原理以及本发明中各项技术实现的方式。延续图3中的例子,请参考图6至图10(并一并参考图2);当流程100开始进行,图6至第10即分别用来示意流程100进行至不同阶段的情形。如图6所示,当图2中的流程100从头开始时,各硬盘HD(0)、HD(1)会储存一个初始化的起始数据MSA(步骤104),而此起始数据MSA就指向待迁移数据的起始地址;由于还没有任何数据被迁移,故起始数据MSA中的起始地址就是来源硬盘HD(0)中第一个区域的起始地址,也就是所有待迁移数据的起始地址。进行至步骤108,区域Z(0)中要被迁移至成员硬盘HD(1)的数据片段S0(1)就会从来源硬盘HD(0)中被读出,再写入(储存)至成员硬盘HD(1),相当于将数据片段S0(1)由硬盘HD(0)复制至硬盘HD(1)。对照图3可知,在数据迁移后,数据片段S0(0)的地址就是其未被迁移前的地址,故在图6中不需对其做作任何迁移。
若顺利将数据片段S0(1)复制至硬盘HD(1),就完成了区域Z(0)的迁移,而流程100就可经由步骤110、112进行至步骤114。如图7所示,到了步骤114,两硬盘中的起始数据MSA都会被更新为区域Z(1)的起始地址,代表区域Z(1)为新的待迁移区,而前一区域Z(0)就可视为一个可覆写区。再度进行至步骤108时,因为区域Z(0)中的数据片段S0(1)已经复制至硬盘HD(1),硬盘HD(0)中原本用来储存数据片段S0(1)的地方就能用来储存区域Z(1)中的数据片段S1(0);故在对区域Z(1)进行迁移时,就是将数据片段S1(0)读出并覆写至区域Z(0)的数据片段S0(1),相当于将数据片段S1(0)复制/覆写至区域Z(1)。同时,区域Z(1)中的数据片段S1(1)也会被读出而写入至硬盘HD(1)中,相当于将数据片段S1(1)复制至硬盘HD(1)中。在对区域Z(1)中的数据片段进行上述的迁移时,起始数据MSA都不会被改变/更新。
顺利将区域Z(1)中的数据片段S1(0)、S1(1)复制至对应的硬盘后,流程100又再度进行至步骤114。如图8所示,再度进行至步骤114时,硬盘HD(0)、HD(1)中的起始数据MSA又再度更新,指向次一区域Z(2)的起始地址,也就是使区域Z(2)变成待迁移区域,而前一区域Z(1)就成为可覆写区。由于区域Z(1)原本的数据片段S1(0)、S1(1)都已经复制至对应的硬盘,区域Z(2)中要迁移至来源硬盘本身的数据片段S2(0)、S3(0)就可以覆写至区域Z(1)中,另外两个数据片段S2(1)、S3(1)则要复制至硬盘HD(1)。在这里可注意到,由于区域Z(1)中有两个可覆写的数据片段,区域Z(2)中就可以分配有两个群组;这是因为每一个群组中只有一个数据片段会被写入至区域Z(1)(另一个要被写入至成员硬盘),故区域Z(1)中的两个可覆写数据片段就可对应于区域Z(2)中的两个群组,使区域Z(2)可以是区域Z(1)的两倍大。
顺利将区域Z(2)中的四个数据片段分别复制至对应硬盘后(步骤108),流程100会再度进行至步骤114,以迁移次一区域Z(3)中的各个数据片段。如图9所示,各硬盘中的起始数据MSA会被更新为区域Z(3)的起始地址,而区域Z(2)中的四个数据片段也就成为可覆写的数据片段,刚好可容纳区域Z(3)中的数据片段S4(0)、S5(0)、S6(0)及S7(0);另外四个数据片段S4(1)、S5(1)、S6(1)及S7(1)则依硬盘阵列架构而要复制至硬盘HD(1)中。同样地,由于区域Z(2)中空出了四个可覆写的数据片段,故区域Z(3)中就可以分配有四个群组;这也使得区域Z(3)变成区域Z(2)的两倍大,也就是区域Z(1)的四倍大。观察本发明中各区域大小渐增的趋势可了解,除了第一个区域Z(0)之外,前一区域中有几个数据片段,后一区域中就可以有同样数量的群组;这也使得本发明中各区域的大小可以呈现指数型态的增长,如图5中所表列的。
将区域Z(3)的各个数据片段分别复制至对应的硬盘后,如图10所示,各硬盘中储存的起始数据MSA又会再度更新而指向区域Z(4)的起始地址,以迁移区域Z(4)中的16个数据片段,其中有8个数据片段会被复制/覆写至前一区域Z(3),另8个数据片段会被复制至成员硬盘HD(1)。依据类似的作法依序迁移后续的每个区域,最终就能完成所有数据的迁移。如图10所示,进行至图10的阶段时,数据片段S0(0)至S7(0)、S0(1)至S7(1)均已按照硬盘阵列架构的要求而交错分配至两个硬盘。
至于本发明在数据迁移期间维护迁移安全的情形可描述如下。延续图3的例子,请参考图9、图11及图12。假设当流程100进行至图9的阶段时中断,中断时各数据片段分布的情形则如图11所示;其中,数据片段S4(0)、S5(0)、S4(1)、S5(1)已顺利复制至对应的位置,但区域Z(3)中还有群组G(6)、G(7)的数据片段未迁移。由于流程100是在对区域Z(3)进行数据迁移时中断的,故各硬盘中的起始地址还是指向至区域Z(3)。由图11可知,虽然数据迁移在进行到区域Z(3)时中断,但区域Z(3)中的所有数据片段都未曾被覆写;区域Z(2)中的数据片段可能被覆写,或甚至因覆写过程不正常中断而损毁,但区域Z(2)中的数据片段早已被复制至各硬盘的对应位置,不管区域Z(2)中各数据片段的状态如何,只要区域Z(3)中的数据片段未被覆写而完整保存,数据迁移的过程就能恢复。等到流程100再度进行而要恢多据迁移时,其运作情形就如图12所示;根据硬盘中非易失性保存的起始数据MSA可知,数据迁移是进行至区域Z(3)(图2中的步骤104),而流程100就会由区域Z(3)的初始地址开始重新迁移区域Z(3)的所有数据片段,将数据片段S4(0)、S5(0)、S6(0)及S7(0)重新覆写至区域Z(2)中(不管这些数据片段在中断前是否已经被成功写入至区域Z(2)),同时也重新将数据片段S4(1)、S5(1)、S6(1)及S7(1)重新写入至硬盘HD(1)(不管这些数据在中断前是否已经被成功写入硬盘HD(1))。这样,数据迁移的过程就能由区域Z(3)开始重新恢复,不会有任何数据的毁损与流失。
由图11、图12的例子可知,当起始数据指向某区域Z(j)而在迁移区域Z(j)的数据片段时,本发明不会覆写区域Z(j)的数据片段,只会将区域Z(j)中的数据复制而覆写至前一区段Z(j-1);故迁移过程的中断仅会影响到区域Z(j-1)中的数据片段。而由流程100可知,当起始数据由区域Z(j-1)指向区域Z(j)时,就代表区域Z(j-1)的原本储存的数据片段已经顺利复制到对应的硬盘,故区域Z(j-1)不论受到如何的影响,其原先的数据都不会流失或损毁,也不会影响区域Z(j)内的数据片段,也因此,本发明得以维护数据迁移期间的数据安全。值得注意的是,即使本发明中的各个区域的大小可呈指数型态增长,但由上述讨论可知,数据迁移的安全仍可确保,不会因区域增大而影响数据迁移的安全。事实上,指数型态增长的区域还可增进数据迁移的效能,因为本发明在迁移每个区域后,就要于各个硬盘中更新起始数据MSA,增大的区域可减少起始数据被更新的必要,等效上也就增进了效能。另外,除了记录数据迁移的进度之外,起始数据MSA中记录的信息也可协助计算机系统了解硬盘阵列的配置;举例来说,计算机系统的基本输出入系统(BIOS,basicinput/output system)就可在开机时经由起始数据MSA判断硬盘阵列的状况,像是要如何从硬盘阵列中加载操作系统程序等等。
考虑到中断后恢复所需的时间,本发明可对各区域的大小设定一适当的临限值。由图11、图12的讨论可知,当数据迁移过程中断于某区域时,本发明会在数据迁移恢复时重新迁移该区域内的所有数据片段。若该区域过大,重新迁移该区域可能就需要相当的时间;为了避免此种情形,各区域的大小可以有一上限的临限值,譬如说是来源硬盘容量的1%。当然,此临限值是可以视情况调整的,举例来说,若数据迁移过程中断的机会很少,或使用者不在乎较长的恢复时间,此临限值就可增加,譬如说是来源硬盘容量的5%等等。
延续图3的例子,请参考图13;图13示意的是本发明在数据迁移其间时实施优化读写管理的情形。由图6至图10可知,在对各区域进行数据迁移时,会涉及许多的读取/写入运作,包括将待迁移的数据片段由来源硬盘读出,并写入至对应的硬盘。为了增进读写运作的效能,本发明会进行优化的读写管理。如前面讨论过的,在对一硬盘发出一读取/写入指令时,其读取/写入的数据大小有一极值,譬如说是128K字节。由于每次对硬盘发出读取/写入指令均会消耗相当的时间与系统效能,故应充分利用每一个读取/写入指令,尽量使每一读取/写入指令能读取/写入较多(或最多)的数据。在图13的图面左方,显示的就是现有技术中未优化的读写过程;假设要在两硬盘的RAID0硬盘阵列中迁移256K字节的数据,此时现有技术会先对来源硬盘发出一个128K字节读取指令,读出128K字节的数据,再依据RAID0硬盘阵列架构,将128K字节划分为各64K字节的两部分,同时以两个64K字节写入指令将这两部分的数据分别写入至两个硬盘。重复上述的「128K字节读取指令-两个64K字节读取指令」,就能完成256K字节的数据迁移。
观察现有的读写过程可知,现有技术并没有充分利用写入指令,因为一个写入指令最多可写入128K字节的数据,但现有技术仅写入了64K字节的数据。为了充分利用每个写入指令,本发明会采用图13图面右方的优化读写过程,先重复两个128K字节的读取指令,由来源硬盘累积读出256K字节的数据,再依据硬盘阵列架构将256K字节划分为各128K字节的两部分,并同时以两个128K字节的写入指令将128K字节的数据分别写入至对应的硬盘,完成256K字节的数据迁移。同样是在两个硬盘的硬盘阵列中迁移256K字节的数据,现有技术需分四次发出六个读取/写入指令,本发明的优化读写过程仅需分三次发出四个读取/写入指令,故本发明能进一步地增进数据迁移过程中的读写效能,缩短数据迁移所需的时间。
基本上,就如前面讨论过的,本发明是以「区域」为一整体来进行数据迁移的;也就是说,本发明在将某一区域的各个数据片段读出并写入至对应的硬盘时,不会在同一读取指令中读取不同区域的数据片段,不同区域的数据片段一定会以不同的读取指令而由来源硬盘中读出。因为,若同一读取指令中可读取不同区域的数据片段,当数据迁移过程在该读取指令进行期间中断时,就无法确定数据迁移过程是在对那个区域进行迁移时中断。当本发明的流程100刚开始进行时,最初的几个区域都很小,如区域Z(0)、Z(1)仅有两个数据片段(可参考图5),各数据片段通常为4、8或16K字节,故单一一个读取指令就能读出所有的数据片段。但是,随着各区域的大小呈指数型态成长,就越能凸显本发明优化读写管理的优点。譬如说,区域Z(5)会有16个数据片段,若各数据片段为16K字节,区域Z(5)就会有256K字节的数据,可利用图13中的优化读写过程来加速其数据迁移。区域Z(5)之后的各个区域会越变越大,就更能发挥优化读写管理的优点了。
在图3至图13中,是以两硬盘的RAID0硬盘阵列为例子来讨论本发明的各项技术细节。以下将推广本发明的应用,讨论本发明在N个硬盘的RAID0硬盘阵列下进行数据迁移的情形。请参考图14,图14所示的就是N个硬盘的RAID0硬盘阵列在数据迁移前后数据分配的情形。数据迁移前,数据储存于来源硬盘HD(0);加装成员硬盘HD(1)至HD(N-1)而组成一硬盘阵列后,来源硬盘中的数据就会被划分为多个数据片段而交错分配于各个硬盘。如图14所示,来源硬盘HD(0)中被划分出来的数据片段S0(0)至S0(N-1)会在数据迁移后被重新分配至硬盘HD(0)至HD(N-1),在硬盘阵列中形成同一层会被并行存取的数据片段,而这N个数据片段就可被归类在同一群组G(0)。同理,数据片段Sm(0)至Sm(N-1)会在数据迁移后成为同一层被并行存取的数据片段,这N个数据片段就可归类在同一群组G(m)。
延续图14的例子,请参考图15及图16;图15示意的是本发明进行区域规划的示意图,图16则表列了各个区域的大小,也就是各区域所能具有的群组数目及数据片段的数目。由图15、图16可知,推广到N个硬盘的例子,各个区域的大小还是会呈指数型态增长。基本上,区域Z(0)中有一个数据片段(也就是数据片段S0(0))是不用被迁移的,故区域Z(0)在数据迁移后会有(N-1)个数据片段是可覆写的,也因此,区域Z(1)就可具有(N-1)个群组;因为每个群组中只有一个数据片段会被写入至区域Z(0),其它的数据片段会被写入至其它的成员硬盘,故区域Z(0)中空出来的(N-1)个可覆写数据片段就可对应于区域Z(1)中的(N-1)个群组。依据相同的原理,若前一区域Z(j)中有M个可覆写的数据片段,次一区域Z(j+1)就可以有M*N个群组(也就是M*N*N个数据片段),形成各区域大小指数型态增长的趋势,如图16所示。如同前面讨论过的,考虑到数据迁移中断后恢复所需的时间,本发明可对区域的大小设定一临限值,譬如说是来源硬盘容量的1%;换句话说,区域Z(j)的大小就是min{(N-1)*(N^j)个数据片段的总容量,临限值),也就是在「临限值」与「(N-1)*(N^j)个数据片段的总容量」间取一较小值来决定区域Z(j)的大小。
请参考图17至图20;延续图14、图15中的例子,第17至图19就示意了本发明图2中的也就是流程100对N个硬盘的硬盘阵列进行数据迁移的过程。首先,如图17所示,数据迁移开始,各硬盘中的起始数据MSA指向区域Z(0)的起始地址,并开始将区域Z(0)中的各个数据片段S0(1)至S0(N-1)分别复制(写入)至硬盘HD(1)至HD(N-1);数据片段S0(0)则不需迁移。接下来,如图18所示,在顺利将区域Z(0)中的数据片段S0(1)至S0(N-1)复制至各个成员硬盘后,起始数据MSA就会被更新,指向次一区域Z(1),开始对区域Z(1)进行数据迁移,而前一区域Z(0)就成为可覆写区,其内的数据片段S0(1)至S0(N-1)就可被区域Z(1)中(N-1)个群组的第一个数据片段S1(0)、S2(0)至S(N-1)(0)所覆写。同时,区域Z(1)中各群组的数据片段S1(1)、S2(1)至S(N-1)(1)会被复制至硬盘HD(1),以此类推;数据片段S1(N-1)、S2(N-1)至S(N-1)(N-1)则会被复制到硬盘HD(N-1)。
等区域Z(1)中(N-1)个群组的所有数据片段都已经被复制至对应的硬盘之后,区域Z(1)中的N*(N-1)个数据片段就成为可覆写的数据片段。承接图18的情形,更一般化(general)的数据迁移过程可用图19来表示。假设区域Z(j)有M个群组、M*N个数据片段,区域Z(j+1)就可以有M*N个群组(即群组G(m+1)至G(m+M*N))、M*(N^2)个数据片段。当数据迁移过程进行至区域Z(j+1)时,起始数据MSA指向区域Z(j+1)而记录了区Z(j+1)的起始地址,而数据迁移的过程,就是将群组G(m+1)至G(m+M*N)中的第一个数据片段(共M*N个)复制/覆写至区域Z(j)中,同时也将群组G(m+1)至G(m+M*N)中的第二个数据片段(共M*N个)复制至硬盘HD(1),以此类推;群组G(m+1)至G(m+M*N)中的第N个数据片段(共M*N个)则复制至硬盘HD(N-1)。根据图19依序在不同区域中进行数据迁移,就能完成所有的数据迁移。
延续图14的例子,本发明在N硬盘的硬盘阵列中进行优化读写管理的情形则示意于图20。在现有未优化的读写过程中,每次向来源硬盘发出一读取指令后就随即将读出的数据划分写入至各硬盘,故每个写入指令都仅写入少数的数据;要完成N*128K字节的数据迁移,现有读写过程可能需要分2*N次发出N*(N+1)个读取/写入指令。相较之下,本发明可先向来源硬盘重复发出多笔读取指令,累计读出较多的数据后,才将累计读出的数据一次写入至对应的硬盘。同样要完成N*128字节的数据迁移,本发明仅需分(N+1)次发出2*N个读取/写入指令,藉由对写入指令的充分利用,本发明就可在数据迁移期间节省可观的时间与系统资源。当然,本发明不一定要累积N次读取指令才发出写入指令,可视系统资源来调整优化读取的方式。举例来说,由于重复多次读取指令所累积取得的数据可缓冲暂存在内存内,读取指令可重复的次数就和内存能提供多少存储资源有关。若使用者在数据迁移过程还要执行其它的程序,就可适当地减少读取指令重复的次数,减少数据迁移所需占用的内存资源。基本上,只要能重复读取指令累积读出的数据,就能优于现有未优化的读写过程。
除了RAID0的硬盘阵列之外,本发明的精神还可推广运用于其它种类的硬盘阵列架构,像是RAID0+1、RAID5以及矩阵式冗余廉价硬盘阵列(matrixRAID)架构。请先参考图21;图21表列的即为本发明在不同架构的硬盘阵列下进行数据迁移时迁移进度及区域的规划情形。在不同架构的硬盘阵列中,本发明还是可沿用图2中的流程100来进行数据迁移,只不过各区域、群组的规划会稍微不同。在进行数据迁移时,本发明还是将来源硬盘中的各个数据片段依序归类为不同群组,并将各群组依序归类在各个区域,各区域、各群组中所具有的数据片段个数,就表列在图21中。图21非常类似于图16;推广至各种不同硬盘阵列架构时,一个群组固定具有Q个数据片段,而各区域的大小则随K的乘方而成指数型态增长。在RAID0(与矩阵式冗余廉价硬盘阵列)的架构下,常数Q就等于硬盘阵列中硬盘的个数,也就是N。在RAID0+1的硬盘阵列架构下,常数Q就等于硬盘阵列中的硬盘个数之半(要组成RAID0+1的硬盘阵列,必定要有偶数个硬盘)。在RAID5的硬盘阵列架构下,常数Q则等于硬盘阵列中硬盘数目减1。以下将举例来说明本发明在不同硬盘架构下进行数据迁移的情形。
请参考图22。图22示意的是一个由四硬盘形成的RAID0+1硬盘阵列在数据迁移前后数据分布的情形;其中,硬盘HD(0)为来源硬盘,HD(1)至HD(3)为新增的成员硬盘。基本上,RAID0+1硬盘阵列是分别以一半数目的硬盘各自组成两个RAID0的硬盘阵列,而其中一个RAID0硬盘阵列为另一个RAID0硬盘阵列的镜像备份。如图22所示,硬盘HD(0)与HD(1)形成一RAID0硬盘阵列,另外的硬盘HD(2)用来备份硬盘HD(0)中的数据,硬盘HD(3)则用来备份硬盘HD(1)中的数据。所以,在将本发明的数据迁移技术推广运用于N个硬盘的RAID0+1硬盘阵列时(N为偶数),就相当于在(N/2)个硬盘中进行RAID0硬盘阵列的数据迁移。这也就是图21中以Q=(N/2)的原因。像在图22的例子,当本发明运用在四个硬盘的RAID0+1硬盘阵列时,其实是将来源硬盘中会在硬盘HD(0)、HD(1)内被并行存取的数据片段分类在一群组,像是将数据片段S0(0)、S0(1)分为群组G(0),后续的两个数据片段S1(0)、S1(1)则为群组G(1),等等;而区域的规划则可利用图21的列表,以Q=2来计算各区域的大小。在实际进行迁移时,可以直接沿用图2中的流程100来进行,只不过,在对某一区域Z(j)进行步骤108时,要覆写至前一区域Z(j-1)的数据片段要另行复制至硬盘HD(2),要由来源硬盘HD(0)写入至硬盘HD(1)的数据片段同时也要写入至硬盘HD(3)。
以下将以三个硬盘的RAID5硬盘阵列为例,来说明本发明的数据迁移技术推广运用于RAID5硬盘阵列的情形。请先参考图23;图23示意的是三个硬盘的RAID5硬盘阵列在数据迁移前后的数据分布情形。除了类似于RAID0硬盘阵列架构的数据片段划分之外,RAID5硬盘阵列的另一特征就是同位检查数据的运算与分布。在N个硬盘的RAID5硬盘阵列中,每(N-1)个会被并行存取的数据片段就可计算(像是根据异或的同位运算)出一个检查数据,这(N-1)个数据片段连同计算出的检查数据就可被视为N个片段而分别储存在硬盘阵列中的一个硬盘。若N个硬盘中有一个硬盘故障,利用其它(N-1)个硬盘的(N-1)个片段就可重新计算出毁损的那个片段。就像图2 3所绘示的,利用来源硬盘HD(0)的两个片段S0(0)、S0(1)可计算出检查数据P0,而片段S0(0)、S0(1)及P0在数据迁移后会被分别分配至各硬盘HD(0)至HD(2),形成同一层会被并行存取的三个片段。同理,由来源硬盘HD(0)的次两个数据片段S1(0)、S1(1)可计算出一对应的检查数据P1,而片段S1(0)、S1(1)及P(1)就会在数据迁移后分别分配至一硬盘(至于那个片段会被分配至那个硬盘可以有多种不同的实施方式,像在图23的例子中,检查数据P1会被分配至HD(1))。以此类推,根据数据片段S2(0)、S2(1)可计算出检查数据P2,而片段S2(0)、S2(1)及P2就会在数据迁移后在各硬盘中成为同一层的片段。
将本发明的技术精神推广至N个硬盘的RAID5硬盘阵列时,由于每(N-1)个数据片段就可计算出一个检查数据而凑成N个同一层的片段,故可将(N-1)个数据片段归类在同一个群组,这也就是图21中Q=(N-1)的缘故。像图23中有三个硬盘的RAID5硬盘阵列,就可以将未迁移数据中的每两个数据片段归类在同一群组,利用图21的公式来计算迁移进度中各区域的大小。在实际进行数据迁移时,本发明可沿用图2的流程100来对RAID5硬盘阵列进行数据迁移,只有步骤108要稍加修改要迁移区域Z(j)中各群组的数据时,要根据同一群组中的数据片段计算出对应的检查数据,再将同一群组中的数据片段连同检查数据分别写入至各硬盘;其中有一片段会被覆写至前一区域Z(j-1)中。延续图23的例子,请参考第24至图26;图24至图26即为本发明在三个硬盘的RAID5硬盘阵列中进行数据迁移的示意图。首先,如图24所示,在数据迁移之初,起始数据MSA指向区域Z(0),在根据区域Z(0)中的数据片段S0(0)、S0(1)计算出检查数据P0后,数据片段S0(1)及检查数据P0就可分别复制到硬盘HD(1)及HD(2),完成区域Z(0)的数据迁移。
接下来,在图25中,起始数据MSA被更新而指向区域Z(1);根据数据片段S1(0)、S1(1)计算出检查数据P1后,数据片段S1(0)、S1(1)及检查数据P1就可被写入至各个硬盘HD(0)至HD(2);其中,数据片段S1(0)可覆写在区域Z(0)中。
如图26所示,在完成区域Z(1)中的数据迁移后,起始数据MSA就可被更新而指向区域Z(2),而区域Z(1)就成为可覆写区,使区域Z(1)原本的两个数据片段可对应于区域Z(2)的两个群组。根据群组G(2)中的各个数据片段算出检查数据P2后,群组G(2)中的各个数据片段连同检查数据P2就能写入至各个硬盘,其中,依照RAID5硬盘阵列架构,检查数据P2可覆写区域Z(1)中的数据片段S1(0)。同理,根据群组G(3)中的各个数据片段算出检查数据P3后,群组G(3)中的数据片段S3(0)、S3(1)以及检查数据P3就能分别写入至各硬盘;其中,数据片段S3(0)可覆写区域Z(2)中的数据片段S1(1)。以类似的原理依序迁移各个区域,就能完成RAID5硬盘阵列的数据迁移。由图24至图26的讨论可知,本发明的数据进度规划/记录/恢复与优化的读写管理技术皆可延伸推广于RAID5架构的硬盘阵列。
请参考图27;以两个硬盘的硬盘阵列为例,图27即为矩阵式冗余廉价硬盘阵列在数据迁移前后数据分布的示意图;硬盘HD(0)为来源硬盘,硬盘HD(1)则是成员硬盘。在矩阵式冗余廉价硬盘阵列中,是将硬盘阵列的存储空间配置为不同型态的硬盘阵列架构;举例来说,原本在来源硬盘HD(0)中的数据D0会依据RAID0的硬盘阵列架构分配至各硬盘(也就是会被划分为各数据片段而交错地分配至硬盘HD(0)及HD(1)),而来源硬盘中的其它数据D则会依据其它种类的硬盘架构(譬如说是RAID0+1等等)分配为数据D1、D2而分别储存在硬盘HD(0)、HD(1)。在对矩阵式冗余廉价硬盘阵列进行数据迁移时,就可利用本发明的技术来迁移那些需要以RAID0架构分布的数据;在此情形下,可直接套用图16的公式来规划数据迁移进度,并沿用图2中的流程100来进行数据迁移。
总结来说,本发明揭露了较佳的迁移进度规划/记录与优化的读写管理,以增进硬盘阵列数据迁移的效能,并能兼顾数据迁移的安全;即使数据迁移过程中断,也不会造成数据的流失或损毁,还能在中断后继续恢复数据迁移。在迁移进度规划/记录方面,本发明是将来源硬盘中待迁移的数据片段归类于各个区域,每个区域中有多个要迁移至不同硬盘的数据片段,再以各区域为一整体依序进行数据迁移,并在硬盘阵列的各硬盘中储存一个起始数据以记录数据迁移的进度(也就是待迁移区域的起始地址),以作为迁移中断后回复的依据。当某一区域Z(j)在进行数据迁移而将其数据片段复制至硬盘阵列的各个硬盘时,起始数据就会记录该区域的起始地址;当区域Z(j)的数据均已被复制至对应的硬盘后,起始数据就可以更新至次一区域Z(j+1);而区域Z(j+1)中要分布至来源硬盘的数据就可被复制而覆写至前一区域Z(j+1),要分布至其它硬盘的数据片段也同时被复制到各个对应的硬盘。在迁移区域Z(j+1)中的数据片段时,由于这些数据片段是被复制到其它的硬盘或来源硬盘中的前一区域,故区域Z(j+1)中的数据片段不会被覆写或改变。也就是说,即使数据迁移过程在迁移区域Z(j+1)时中断,区域Z(j+1)中的数据也不会流失或损毁;当数据迁移恢复时,就可由区域Z(j+1)恢复中断的数据迁移。另外,基于本发明迁移进度规划的原则,区域Z(j+1)只会有一部份的数据片段要覆写至区域Z(j),其它的数据片段则是要写入至其它硬盘,故区域Z(j+1)的大小就可以大于前一区域Z(j),并使各个区域的大小可呈指数型态增长。大小渐增的区域规划可减少起始地址被更新的次数,还能与本发明优化的读写管理相辅相成,可累积较多的数据以充分利用每一个读取/写入指令,增进数据迁移的效能。而本发明的技术精神不仅能在RAID0架构下的硬盘阵列进行数据迁移,还能推广运用于其它种类架构的硬盘阵列,像是RAID0+1、RAID5以及矩阵式冗余廉价硬盘阵列。相较于现有技术,本发明能在确保数据迁移安全的情形下增进数据迁移的效能,减少数据迁移所需耗费的时间与计算机系统资源,并可广泛运用于不同种类的硬盘阵列。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
权利要求
1.一种于一硬盘阵列中进行数据迁移的方法,该硬盘阵列中包含有一来源硬盘及至少一成员硬盘;该方法是用来将该来源硬盘中的数据分散储存至该硬盘阵列的各个硬盘,而该方法包含有将该来源硬盘中待迁移的数据划分为多个数据片段;将该来源硬盘的存储空间划分为一可覆写区及一待迁移区,使该可覆写区记录有多笔数据片段,而该待迁移区中记录有另外多笔数据片段;以及对该待迁移区中的数据片段进行数据迁移,使该待迁移区中的各个数据片段分别写入至一成员硬盘或覆写至该来源硬盘的可覆写区中,并使被覆写至该可覆写区中的数据片段的数目少于该待迁移区中数据片段的数目。
2.如权利要求1所述的方法,其另包含有将该待迁移区的起始地址记录为一起始数据。
3.如权利要求2所述的方法,其另包含有将该起始数据记录在该来源硬盘及各个成员硬盘中。
4.如权利要求2所述的方法,其另包含有在对该待迁移区中的数据片段进行数据迁移后,若该待迁移区中的各个数据片段均已分别被写入至一对应的成员硬盘或该来源硬盘,则将该待迁移区当作一新的可覆写区,并从该来源硬盘的待迁移数据中划分出一个新的待迁移区,使该待迁移区具有多个待迁移的数据片段;以及更新该起始数据,使该起始数据记录该新的待迁移区的起始地址。
5.如权利要求2所述的方法,其另包含有在对该待迁移区中的数据片段进行数据迁移时,若该待迁移区中尚有数据片段未被写入至一对应的成员硬盘或该来源硬盘时数据迁移即中断,则在重新开始数据迁移时,根据该起始数据找到该待迁移区,并重新将该待迁移区的每一数据片段写入至一对应的成员硬盘或覆写至该来源硬盘的可覆写区。
6.如权利要求1所述的方法,其中,每一硬盘可接收一读取指令以从该硬盘中读出数据量大小不超过一读取极值的数据,并可接收一写入指令以将数据写入至该硬盘,而该方法另包含有对该待迁移区中的数据片段进行数据迁移时,若该待迁移区中所有数据片段的数据量大小已超过该读取极值,则先利用多个读取指令由该来源硬盘中读出待迁移的数据片段后,再以写入指令将多个读取指令累积读出的数据写入至该硬盘阵列的各个硬盘。
7.一种计算机系统,其包含有一硬盘阵列,其包含有一来源硬盘及至少一成员硬盘,各硬盘用来提供存储空间以记录数据;一中央处理器,用来主控该计算机系统的运作;以及一内存,其可储存一数据迁移程序;当该中央处理器执行该数据迁移程序时,可使该来源硬盘中的数据分散储存至该硬盘阵列的各个硬盘,而该迁移程序包含有一规划程序;当该中央处理器执行该规划程序时,可将该来源硬盘中待迁移的数据划分为多个数据片段,并将该来源硬盘的存储空间划分为一可覆写区及一待迁移区,使该可覆写区记录有多笔数据片段,而该待迁移区中记录有另外多笔数据片段;以及一区域迁移程序;当该中央处理器执行该区域迁移程序时,可对该待迁移区中的数据片段进行数据迁移,使该待迁移区中的各个数据片段分别写入至一成员硬盘或覆写至该来源硬盘的可覆写区中,并使被覆写至该可覆写区中的数据片段的数目少于该待迁移区中数据片段的数目。
8.如权利要求7所述的计算机系统,其中,该迁移程序另包含有一记录程序;当该中央处理器执行该记录程序时,可将该待迁移区的起始地址记录为一起始数据。
9.如权利要求8所述的计算机系统,其中,当该中央处理器执行该记录程序时,另可将该起始数据记录在该来源硬盘及各个成员硬盘中。
10.如权利要求8所述的计算机系统,其中,当该中央处理器执行该区域迁移程序时,若该待迁移区中的各个数据片段均已分别被写入至一对应的成员硬盘或该来源硬盘,则该中央处理器可将该待迁移区当作一新的可覆写区,再从该来源硬盘的待迁移数据中划分出一个新的待迁移区,使该待迁移区具有多个待迁移的数据片段,而该中央处理器也会执行该记录程序,以更新该起始数据,使该起始数据记录该新的待迁移区的起始地址。
11.如权利要求8所述的计算机系统,其中,该迁移程序中另包含有一恢复程序;当该中央处理器执行该区域迁移程序时,若该待迁移区中尚有数据片段未被写入至一对应的成员硬盘或该来源硬盘时数据迁移即中断,则当该中央处理器在重新执行该迁移程序时会执行该恢复程序,以根据该起始数据找到该待迁移区,并重新将该待迁移区的每一数据片段写入至一对应的成员硬盘或覆写至该来源硬盘的可覆写区。
12.如权利要求7所述的计算机系统,其中,每一硬盘可接收一读取指令以从该硬盘中读出数据量大小不超过一读取极值的数据,并可接收一写入指令以将数据写入至该硬盘,而该迁移程序中另包含有一读写管理程序,当该中央处理器执行该区域迁移程序时,该中央处理器会执行该读写管理程序,以判断该待迁移区中所有数据片段的数据量大小是否已超过该读取极值;若是,则该中央处理器可先利用多个读取指令由该来源硬盘中读出待迁移的数据片段后,再同时以各个写入指令将多个读取指令累积读出的数据写入至该硬盘阵列的各个硬盘。
全文摘要
本发明提供一种硬盘阵列数据迁移的方法与相关装置。在将一来源硬盘中的数据分割并迁移至硬盘阵列中的各个硬盘时,本发明是将来源硬盘中待迁移的各个数据片段归类于不同的区域;在将某一给定区域中的多个数据片段分别写入至不同硬盘后,就可将次一区域中的数据片段覆写至该给定区域中。由于次一区域中的所有数据片段会分散写入至各个硬盘,仅有少数会覆写至该给定区域中,故次一区域中数据片段个数可大于该给定区域中的数据片段个数,以在兼顾迁移安全的情形下使每一区域均大于前一区域,方便迁移进度的管理及数据读写过程的优化。
文档编号G06F12/00GK1614573SQ20041009800
公开日2005年5月11日 申请日期2004年12月1日 优先权日2004年12月1日
发明者胡国玉, 邹兴良 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1