数据存取方法

文档序号:6609263阅读:222来源:国知局
专利名称:数据存取方法
技术领域
本发明一般涉及磁盘阵列的数据存取方法,更具体地,涉及一种可加速磁盘阵列数据存取并实现磁盘阵列的容错功能的数据存取方法。
背景技术
随着电子技术的日新月异,计算机的中央处理单元、北桥芯片、南桥芯片或内存等主要组件的执行速度已远远超过系统中的其它组件。其中,硬盘机因为构造上的先天限制,在读写时,其读写头的机械移位动作以及数据盘片的旋转速率等问题,都需耗费许多时间,故而经常成为计算机系统运作效率的瓶颈所在。因此,如何在保证数据安全备份的基础上,提升硬盘机的数据存取处理速度,已成为现今业者所关注的焦点之一。
一般常用具有容错功能的磁盘阵列(Redundant Array ofIndependent Disks,简称RAID)由多个磁盘驱动器(Disk)组成,如图1所示,图1是利用三个磁盘驱动器来组成具有容错功能的一磁盘阵列10的方块示意图,即磁盘驱动器A,磁盘驱动器B和磁盘驱动器C,其中,各磁盘驱动器中的数据储存空间又可划分为多个储存区块(Block),例如,将磁盘驱动器A划分为储存区块A1~A7;磁盘驱动器B划分为储存区块B1~B7;磁盘驱动器C划分为储存区块C1~C7。为便于说明,图1中将属于同一对应位置的多个储存区块标识为族群(Stripe),即族群1~族群7。
当系统往该磁盘阵列10写入数据时,是以一个储存区块的容量大小为单位循序地等分此数据,而得到多个数据块。为达成容错功能,在各数据块被写入相应的储存区块时,系统会执行一逻辑运算以产生对应的冗余信息,并将此冗余信息一并写入对应的储存区块。例如,在储存区块A1和B1写入数据块时,系统会计算对应的冗余信息p1=a1b1,代表异或运算,a1和b1分别代表储存区块A1和B1中储存的数据块,并将该冗余信息p1写入储存区块C1。这样,当储存区块A1或B1发生故障时,便可利用储存区块C1中的冗余信息p1来进行数据重构。例如储存区块A1损坏,此时只需分别读出储存区块B1和C1中的数据块b1和冗余信息p1,然后进行b1p1的运算便可得回a1,以此类推,使用者只要将损坏的储存区块A1或磁盘驱动器A更新,便可利用储存区块B1和C1中的数据块b1和冗余信息p1重新得回原有的储存区块A1中的数据块a1。
通常,储存冗余信息的储存区块是由各个磁盘驱动器轮流规划,借以形成一轮转同位型数组的形式。如图1所示,储存区块A1及储存区块B1内所储存的数据块所对应的冗余信息储存于储存区块C1内;储存区块A2及储存区块C2内所储存的数据决所对应的冗余信息储存于储存区块B2内;而储存区块B3及储存区块C3内所储存的数据块所对应的冗余信息储存于储存区块A3内等等。
请一并参考图2,下面以向磁盘阵列10中的储存区块A1写入一目标数据块a1为例,来说明一个完整的写操作过程。如图2所示,首先,系统执行步骤S21,发送一写命令与一读取同一族群其他数据块的读命令,相对于数据块a1,这里与a1同一族群1的其他数据块是指储存区块B1中的数据块b1;而后,在步骤S22,根据该写命令,将该目标数据块a1写入储存区块A1,同时,根据该读命令,读出数据块b1;在步骤S23,系统会执行上述逻辑运算,以计算该族群1中数据块a1和b1的冗余信息p1;最后,系统执行步骤S24,将该冗余信息p1写入储存区块C1。
图3是根据图2中的方法写入一数据块及计算对应冗余信息的时序关系图。如图3所示,上述方法在写入数据块a1,读出数据块b1后,直接进行冗余信息p1的计算和写入。在整个写操作过程中,虽然写入有效数据块a1的耗时仅为t1,但计算及写入冗余信息p1的耗时t3较长,从而使整个写操作过程的耗时t变得冗长。
由上述过程可知,为达到容错功能,系统在往磁盘阵列10写入任何一个数据块时,都会花费较多的时间去读取同一族群的其他数据块,来计算冗余信息,并将该冗余信息写入对应的储存区块。而在实际应用中,上述方法中写入有效数据块的时间只占整个写入过程总耗时的三分之一,也就是说,有将近三分之二的时间都是花费在计算冗余信息及写入冗余信息的过程中。这对于要满足提升磁盘阵列的数据存取速度和缩短用户响应时间的要求而言是一个很大的障碍,尤其是对于网络接入存储(Network Attached Storage,NAS)这样的存储系统,当频繁发生大量的磁盘阵列读写操作时,应用上述数据存取方法就会使用户响应时间过长,从而无法达到高效率的性能要求。

发明内容
有鉴于此,本发明的目的在于提供一种磁盘阵列的数据存取方法,其能够在达成磁盘阵列容错功能的同时,加速数据存取速度,缩短用户响应时间。
本发明提供一种数据存取方法,包括下列步骤首先,写入一第一数据块;并于一记录表中更新该第一数据块所对应的一第一记录位;然后,当一冗余任务被触发且该记录表未被访问时,读出该第一数据块以及多个第一相关数据块;以及根据该第一数据块与所述第一相关数据块计算一第一冗余信息,其中,所述第一相关数据块与该第一数据块属于一第一族群(strip)。
本发明另提供一种数据存取方法,用于存取一磁盘阵列中的数据,包括以下步骤首先,进行多个写操作;并于一记录表中更新所述多个写操作所对应的多个记录位;然后,当一冗余任务被触发且该记录表未被访问时,读取每一该记录位所对应的多个属于同一族群的数据块;以及根据每一该族群的数据块,计算一冗余信息。
本发明所述的数据存取方法,能够大大提高磁盘阵列写操作的性能。


图1是一具有容错功能的磁盘阵列的方块示意图;图2是存取一磁盘阵列中数据块并计算冗余信息的方法流程图;图3是根据图2中的方法写入一数据块及计算对应冗余信息的时序关系图;图4是根据本发明一个实施例的利用一记录表存取一磁盘阵列中数据块的方法流程图;图5是上述图4中该记录表的内部架构示意图;图6是根据本发明一个实施例的利用一定时器触发冗余任务计算冗余信息的方法流程图;图7是根据本发明的数据存取方法写入一数据块及计算对应冗余信息的时序关系图。
具体实施例方式
通过下面结合示例性地示出一例的附图进行的描述,本发明的上述和其他目的和特点将会变得更加清楚。
以下,参照附图来详细说明本发明的实施例。
请一并参考图4和图5。其中,图4是根据本发明一个实施例的利用一记录表存取一磁盘阵列中数据块的方法流程图;图5是上述图4中该记录表的内部架构示意图。
如图4所示,首先,在步骤S31的系统初始化过程中,创建一记录表(Dirty Table),该记录表的内部架构如图5所示,由多个记录位(Dirty Bit)组成,每一个记录位包含一比特(Bit),且每一记录位与上述磁盘阵列10中的一族群相对应。根据图1中的磁盘阵列10的架构,共有7个族群组成,因此,该记录表中共包含了7个记录位T1~T7,分别对应到磁盘阵列10中的族群1~族群7。而后,在图4的步骤S32中,当用户有写入数据的要求时,系统会发送一写命令,并执行步骤S33,即根据该写命令,将一目标数据块写入该磁盘阵列10的存储区块中,例如该目标数据块被写入到存储区块A1中;接着,在步骤S34,系统根据该存储区块A1所在的族群1,在该记录表中找到对应的记录位T1,并对其进行更新。需要说明的是,该记录表在创建时,记录表中所有的记录位的初始值均被设定为0,而在更新时,被更新的记录位就会被设定为1,也就是说,上述记录位T1在更新之后,其值为1。
执行完步骤S34后,系统即会返回用户响应,于用户而言,该目标数据块的写入已经完成,这意味着,接下去,系统可以执行下一数据块的写入,或是应用户要求,进行其他任务的操作。
不过,由前述关于磁盘阵列的容错功能的分析可知,要达成磁盘阵列的容错功能,在写入数据块时,必须计算出对应数据块的冗余信息,并存入到存储区块中,才能在某一数据块的存储区块发生损坏时,利用对应的冗余信息重新得回丢失的该数据块。而由上述过程可知,本发明并没有在写入数据块的过程中计算和存储数据块对应的冗余信息,事实上,本发明是通过一定时器触发冗余任务来计算和存储冗余信息的,请参考图6。
图6是根据本发明一个实施例的利用一定时器触发冗余任务计算冗余信息的方法流程图。由图示可知,首先,在步骤S51,系统进行初始化,并注册一定时器(Timer),该定时器用于计时时间,并于每隔一定时间后,触发一冗余任务,如步骤S52;若此时上述记录表并未正在被访问,即该记录表中的所有记录位都没有正在更新中,则执行步骤S53,否则即回到步驟S52重新等待一冗余任务触发。在步骤S53中,系统根据该冗余任务,逐一扫描该记录表中的记录位,若在执行步骤S53后,发现有一已更新的记录位,即该记录位的值为1,则执行步骤S54,反之,没有发现已更新的记录位,就会直接进行步骤S57。在步骤S54中,系统读取该记录位对应的族群中的所有数据块,并在步骤S55中执行前述逻辑运算,根据所述数据块计算出一冗余信息;接着,执行步骤S56,将该冗余信息写入对应的储存区块,并将该记录位清零;之后判断该冗余任务是否结束,如步骤S57,若尚未结束,则继续扫描下一记录位。反之,则回到步骤S52重新等待一冗余任务触发。
需要说明的是,在上述定时器触发一个冗余任务扫描该记录表时,并非一定扫描该记录表中的所有记录位。事实上,为不影响用户进行其他操作,本发明可以设定在执行每一次冗余任务时,只扫描该记录表中的一部分记录位。例如,设定每次执行冗余任务时扫描3个记录位,这样,若在执行本次冗余任务时,扫描了该记录表中的T1~T3记录位,则当执行下一次冗余任务时,扫描该记录表中的T4~T6记录位,以此类推,顺序扫描该记录表中的所有记录位。显然,设定每次执行冗余任务时只扫描一部分记录位,可使单次执行冗余任务的时间相对较短,因而基本不影响用户的正常操作。
图7是根据本发明的数据存取方法写入一数据块及计算对应冗余信息的时序关系图。结合图4和图6的描述可知,于用户而言,根据本发明写入数据块a1的整个写操作过程的耗时t’只包含写入数据块a1的耗时t1和更新记录位T1的耗时t4这两部分,而不包含计算及写入冗余信息p1的耗时t3。根据图6的描述,冗余信息p1的计算和写入是在后期冗余任务被触发时进行的,这样,于用户而言,整个写操作过程的耗时t’就变得相对较短。
另外,根据本发明,当系统发生关机操作或是卸载该磁盘阵列的驱动程序时,在正常情况下,系统会对该记录表中的所有记录位进行一次全面的扫描,然后对该记录表中所有已更新的记录位逐一进行处理,亦即根据每一个已更新的记录位,读取其对应族群中的数据块,以计算对应的冗余信息,并将该冗余信息写入储存区块,以及将该记录位清零。
不过,考虑到在实际操作中,系统有可能发生非正常关机或非正常卸载该磁盘阵列的驱动程序的状况,而导致系统无法完成上述全面扫描及后续的处理过程,因此,本发明在该磁盘阵列的最后一个扇区(Sector)设立了一标识位,一般选取一比特作为该标识位,用以标识关机之前或卸载该磁盘阵列的驱动程序之前,该记录表中已更新的记录位的处理状况。当系统在关机之前或卸载该磁盘阵列的驱动程序之前,已经完成上述全面扫描及后续的处理过程,则将该标识位设为一完成状态(例如是0),反之则设为一未完成状态(例如是1)。这样,当下次系统开机或加载该磁盘阵列的驱动程序时,首先检测该标识位,若该标识位为完成状态(例如是0),则将该记录表中的所有记录位都进行清零,即设为未更新,即所有记录位的值都设为0;若该标识位为未完成状态(例如是1),则将该记录表中的所有记录位都设为已更新,即所有记录位的值都设为1,这样,在执行冗余任务时,这些记录位所对应的族群的冗余信息就可被重新计算和写入。
以上实施例中,该记录表一般保存在计算机系统的内存中,而内存容量的大小会有所限制,因此,当磁盘阵列的容量很大时,族群数目就会很大,此时可将记录表中的记录位设定为每一记录位对应多个族群,以减少记录表对内存空间的占用量,这样,当一记录位所对应的多个族群中任一族群有数据块写入时,该记录位就会被更新,而在执行冗余任务时,该记录位对应的多个族群都需要分别计算冗余信息并写入储存区块,计算量会有所增大。当然,在内存容量允许的情况下,尽可能使每一记录位对应到最少个数的族群,以减少冗余信息的计算量。
在实际应用中,本发明的磁盘阵列的数据存取方法可应用到磁盘阵列5(RAID 5)或磁盘阵列6(RAID 6)等不同类型的磁盘阵列中。
综上所述,相较于传统的磁盘阵列数据存取方法,本发明的数据存取方法是将耗时最多的冗余信息的计算和存入延后在系统的空闲时间内进行。一方面,系统将有效数据写入磁盘阵列后,即刻返回用户响应并报告内核写命令完成,这样于用户而言,从写入数据到返回响应的时间大大缩短;另一方面,在定时器定时触发执行冗余任务时,计算先前写入的数据块的冗余信息,并将其写入对应的储存区块,同样保证了磁盘阵列的容错功能的实现。因此,总体而言,本发明的数据存取方法大大提高了磁盘阵列的写操作性能。以由三个磁盘驱动器组成的一磁盘阵列5为例,在实际测验中,在同一平台下往该磁盘阵列5写入8G字节的数据,按照传统的数据存取方法耗时为466.491μs,而按照本发明的数据存取方法耗时仅为105.668μs,由此可见,本发明的数据存取方法使磁盘阵列的写操作性能提高了三倍多。
以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。
权利要求
1.一种数据存取方法,其特征在于,该数据存取方法包括写入一第一数据块;于一记录表中更新该第一数据块所对应的一第一记录位;当一冗余任务被触发且该记录表未被访问时,读出该第一数据块以及多个第一相关数据块;以及根据该第一数据块与所述第一相关数据块计算一第一冗余信息,其中所述第一相关数据块与该第一数据块属于一第一族群。
2.根据权利要求1所述的数据存取方法,其特征在于,该第一记录位包含一比特,且更新该第一记录位是指设定该比特为1。
3.根据权利要求2所述的数据存取方法,其特征在于,更包括写入该第一冗余信息;以及设定该第一记录位的该比特为0。
4.根据权利要求1所述的数据存取方法,其特征在于,更包括写入一第二数据块;于该记录表中更新该第二数据块所对应的一第二记录位;当该冗余任务被触发且该记录表未被访问时,读出该第二数据块以及多个第二相关数据块;以及根据该第二数据块与所述第二相关数据块计算一第二冗余信息,其中所述第二相关数据块与该第二数据块属于一第二族群。
5.一种数据存取方法,用于存取一磁盘阵列中的数据,其特征在于,包括进行多个写操作;于一记录表中更新所述写操作所对应的多个记录位;当一冗余任务被触发且该记录表未被访问时,读取每一该记录位所对应的多个属于同一族群的数据块;以及根据每一该族群的数据块,计算一冗余信息。
6.根据权利要求5所述的数据存取方法,其特征在于,所述写操作更包括接收多个写命令;以及根据所述写命令,写入多个数据块至该磁盘阵列中。
7.根据权利要求5所述的数据存取方法,其特征在于,每一该记录位包含一比特,且更新该记录位是指将该比特设定为1。
8.根据权利要求7所述的数据存取方法,其特征在于,更包括扫描该记录表的一部分;以及当所述记录位中的该比特为1时,读取每一该记录位所对应的每一该族群中的数据块。
9.根据权利要求7所述的数据存取方法,其特征在于,更包括写入所述冗余信息;以及设定对应的所述记录位的所述比特为0。
10.根据权利要求5所述的数据存取方法,其特征在于,当发生一关机操作或卸载该磁盘阵列的一驱动程序时,扫描该记录表的所有所述记录位,并逐一对所述记录位已更新者,读取该记录位对应的同一族群的数据块,以计算对应的所述冗余信息。
11.根据权利要求10所述的数据存取方法,其特征在于,于该磁盘阵列的最后一个扇区设定一标识位,当已更新的所述记录位的所述冗余信息计算完毕,并已写入到该磁盘阵列中,则将该标识位设为一完成状态;否则将该标识位设为一未完成状态。
12.根据权利要求11所述的数据存取方法,其特征在于,发生一开机操作或加载该磁盘阵列的该驱动程序时,检测该标识位;当该标识位为该完成状态时,将该记录表中所有所述记录位设为未更新;而当该标识位为该未完成状态时,更新记录表中所有所述记录位。
全文摘要
本发明提供一种数据存取方法,特别涉及一种磁盘阵列的数据存取方法,其能够在达成磁盘阵列容错功能的同时,加速数据存取速度,缩短用户响应时间。该方法包括以下步骤首先,进行多个写操作;并于一记录表中更新所述多个写操作所对应的多个记录位;然后,当一冗余任务被触发且该记录表未被访问时,读取每一该记录位所对应的多个属于同一族群的数据块;以及根据每一该族群的数据块,计算一冗余信息。借此,本发明能够大大提高磁盘阵列写操作的性能。
文档编号G06F3/06GK101055512SQ200710105879
公开日2007年10月17日 申请日期2007年6月1日 优先权日2007年6月1日
发明者徐涛 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1