一种raid阵列重建的方法及装置的制作方法

文档序号:6444626阅读:255来源:国知局
专利名称:一种raid阵列重建的方法及装置的制作方法
技术领域
本发明涉及网络存储技术,尤其涉及一种RAID阵列重建技术。
背景技术
在涉及众多主机的数据存储的网络环境中,为了提高数据存储的可靠性和安全性,同时为了存储容量的扩展性和灵活性,网络存储技术应运而生。通常来说,网络存储系统的作用是为客户端PC机或者服务器(一般统称为主机或Host)提供可用的存储空间。一般网络存储系统的前端可以通过IP网络或者FC网络与主机相连,为主机提供数据存储服务。在数据传输方面,以基于IP承载的网络存储系统为例,主机可以基于标准的iSCSI(互联网小型计算机系统接口)协议网络存储系统进行数据的读写操作。网络存储系统的核心是存储控制器(StorageController),存储控制器进行数据处理并把数据写入到后端物理磁盘中。为提高写物理磁盘的性能以及提供数据冗余性,存储控制器通常支持独立磁盘冗余阵列(RAID,也可称为RAID阵列,或者简称为阵列)技术,RAID技术是一种把多块独立的物理磁盘按不同的方式组合起来形成一个磁盘组,从而提供比单个磁盘更高的存储性能及
可靠性。根据不同的数据组织方式,常用的RAID包括RAIDO、RAIDl、RAID5、RAID6、RAIDlO 等。根据RAID级别的不同可以提供各种级别的性能和可靠度,可以保证多数情况下,一个或者多个磁盘故障时可以通过剩余成员磁盘中的数据采用RAID级别对应的算法恢复出错磁盘的数据,即保证数据不丢失。通过这种算法可重构故障盘中的数据并写入到热备盘中, 重构完成后热备盘做成阵列的成员磁盘,恢复阵列的冗余性和可靠性,即通常所说的RAID 阵列重建。在传统的网络存储系统中,当某项应用需要一部分存储空间的时候,往往是预先从后端存储系统中划分出一部分足够大的空间预先分配给该项应用,分配空间时必须要考虑业务扩容的需求,以及业务数据量膨胀的需求,综合考虑各种因素的后果是,逻辑资源 (LUN)的大小远远大于当前实际需要的存储空间,将导致LUN中只有少量的空间存放用户数据,大量的空间是闲置的。在这种情况下,一方面,用户的投资回报率降低;另一方面,存储空间变大,重建的概率也将变大。在重建过程中,如果再有其他数据磁盘损坏,则将会导致数据丢失。另外,在重建过程中,重建IO将占用系统资源,将影响读写业务的性能。重建的效率以及重建的性能,成为影响存储系统可靠性的关键因素。自动精简配置是网络存储系统中常见的功能特性,其目的是解决前面提到的存储过量供给问题,根据实际的需求来分配存储空间。其核心原理是“欺骗”客户端操作系统, 让客户端操作系统认为已经分配了很大LUN,比如客户端操作系统看到一个2TB的LUN,而实际上存储设备上只为这个资源分配了几十或者几百GB的物理空间,其余空间都是虚拟出来的。随着应用程序写入越来越多的数据,物理存储利用率也会越来越高,当实际分配的物理空间不足时,再分配额外的物理空间,达到随需扩展的目的。
主机(通常是各种服务器)识别LUN时,其所看到的并不是真实空间,而是由自动精简配置虚拟出来的空间,真实分配的物理空间取决于资源分配策略,可能只有总空间的四分之一,甚至更少。创建一个启用自动精简配置的LUN时,需要指定LUN总容量、LUN预分配物理空间大小以及占用的RAID、LUN对应的物理空间扩容策略。LUN总容量是指客户端看到的LUN大小,LUN预分配物理空间大小是指创建LUN时实际占用的物理空间大小,LUN物理空间扩容策略是指LUN物理空间扩容的触发条件以及扩容策略,比如LUN预分配物理空间使用率达到80%时触发扩容,每次扩容的步长是LUN总容量的5%。系统在指定的RAID上根据LUN 预分配物理空间大小分配资源,并创建LUN的段表,标识LUN和RAID的对应关系,同时修改 RAID的段表,标识这些段已经使用。因为启用了自动精简配置的LUN实际分配的物理空间和客户端看到的总空间不对等,因此还需要维护一个专门的LUN线性表,用于记录LUN线性空间和RAID实际物理空间的对应关系。当LUN上收到一个IO写请求时,先从预分配的物理空间中分配应用要访问的空闲空间,修改LUN线性表,写入数据。当LUN上收到一个IO读请求时,如果LUN线性表中有对应的物理空间,直接访问,如果没有,则直接返回全0。自动精简配置最显著的特点是可以根据当前业务的实际需求分配存储空间,总存储空间变小,需要重建的空间也随之变小,即从最小化存储空间的角度降低重建的风险。然而自动精简配置实现复杂,引入的一个显而易见的问题是降低了性能,LUN维护段表和线性分布表,每一个IO都需要查找段表和线性分布表,以找到对应的物理空间,数据通道处理流程加长,性能变差。因此,自动精简配置不适用于性能要求较高、可靠性要求较高、但是对成本控制松散的用户。现有技术中,对重建优化的另外一个思路是仅重建RAID中已经分配的空间,根据 RAID记录的分配信息,重建已经分配的区域,以此来减少RAID重建的任务量,避免重建过程中做无用功,从而缩短重建过程需要的时间。然而如前所述,通常存储系统中逻辑资源的大小远远大于当前实际需要的存储空间,这将导致逻辑资源中只有少量的空间存放用户数据,大量的空间是闲置的。显而易见,仅重建RAID中已分配的区域并不是最优的解决方案。 即不能最大程度地规避对性能要求较高、可靠性要求较高但对成本控制松散的用户所面临的重建过程中数据丢失的风险。

发明内容
有鉴于此,本发明提供一种RAID阵列重建装置,用于执行网络存储系统内的RAID 阵列重建操作,其中所述RAID阵列被预先划分为大小相同物理块,该装置包括资源分配单元,用于在创建逻辑资源时为逻辑资源分配一个或多个物理块,并记录逻辑资源与物理块之间的对应关系;访问记录单元,用于维护一个资源访问记录表,该资源访问记录表用于记录每一个物理块是否被写入了数据;其中该访问记录单元在有数据写入物理块时将资源访问记录表中该物理块的状态标记为已写入,并在所述逻辑资源被删除时,将资源访问记录中该逻辑资源对应的物理块的状态标记为未写入;以及重建处理单元,用于在重建RAID阵列时根据所述资源访问记录表获取状态为已CN
写入的物理块,以物理块为单元对状态为已写入的物理块进行重建。本发明还提一种RAID阵列重建方法,用于执行网络存储系统内的RAID阵列重建操作,其中所述RAID阵列被预先划分为大小相同物理块,该方法包括A、在创建逻辑资源时为逻辑资源分配一个或多个物理块,并记录逻辑资源与物理块之间的对应关系;B、维护一个资源访问记录表,该资源访问记录表用于记录每一个物理块是否被写入了数据;并在有数据写入物理块时将资源访问记录表中该物理块的状态标记为已写入, 并在所述逻辑资源被删除时,将资源访问记录中该逻辑资源对应的物理块的状态标记为未写入;以及C、在重建RAID阵列时根据所述资源访问记录表获取状态为已写入的物理块,以物理块为单元对状态为已写入的物理块进行重建。由于本发明在重建过程中仅仅重建实际被使用的物理空间,因此相较于现有技术大幅度提高了重建的效率与速度,有效避免了重建所引发的数据丢失等风险,并且对于正常的数据读写业务影响很低。


图1是本发明网络存储设备逻辑原理图。图2是本发明一种实施方式中数据写入流程处理图。图3是本发明一种实施方式中逻辑资源删除流程处理图。图4是本发明一种实施方式中阵列重建流程处理图。
具体实施例方式总体上来说,本发明在现有的数据流处理和RAID重建管理的基础上,引入了资源访问记录表,跟踪数据写入情况,仅重建已写入数据的区域,从而实现最大程度地减少了需要重建的任务量,提高重建的效率,减少重建的时间,降低重建对读写业务性能的影响。在本发明中需要维护资源访问记录表,可以基于RAID条带记录,也可以基于固定长度的RAID资源块(请参考本申请人先前申请的相关专利)记录,取决于具体的实现,以下以统一称为物理块(Block),一个Block表示特定长度的存储空间。资源访问记录表可以是任何格式的结构,也可以位于系统任意可实现的位置,主要取决于对系统性能和空间的需求。比如说,放入更底层的位置实现,会提升性能,但实现复杂度可能略高,反之则性能一般,但实现容易。在一种实施方式中,可以在存储系统的RAID模块这层面来维护资源访问记录表。另外,为了提高检索效率并减少资源访问记录表占用的系统资源,可以采用bitmap 方式进行记录,一个bit对应一个Block,比如bit为1表示对应的Block已写入数据;bit 为0 表示对应的Block上未写入数据。请参考图1,图2以及图3。本发明RAID阵列重建装置20应用于网络存储系统10 之中,该网络存储系统10进一步包括读写业务处理装置30,所述RAID阵列重建装置20包括资源分配单元22、访问记录单元M以及重建处理单元26。以上所述的装置是从逻辑层面抽象而成的,典型的方式是通过处理器加上程序代码来实现,但同样可以通过硬件、固件或者软硬结合的方式来实现。以下描述上述RAID阵列重建装置20的一般处理流程。
6
步骤101,在创建逻辑资源时为逻辑资源分配一个或多个物理块,并记录逻辑资源与物理块之间的对应关系;本步骤由资源分配单元22执行。在本发明中,RAID阵列被预先划分为大小相同的物理块,典型的物理块可以是条带(Mripe),也可以是本申请人在先前专利申请中提出的固定长度的资源块;本发明并不关心条带或者资源块的划分方法以及实际大小;其本质是将RAID阵列的物理资源进行分块,本发明在此将其统称为物理块。网络存储系统在创建逻辑资源的时候,从RAID阵列中挑选出一个或者多个物理块分配给该逻辑资源,这样一来逻辑资源会有一个或者多个对应的物理块,资源分配单元 22将这种对应关系记录下来以备后续处理使用。需要说明的是,网络存储系统10可能支持自动精简配置技术,用户一旦使能自动精简配置技术,逻辑资源的大小很可能与物理块的总和不一致,因此这里所说的对应关系是指物理块被分配给哪个逻辑资源,并不关心逻辑资源与物理资源之间大小是否对应的问题。步骤102,维护一个资源访问记录表,该资源访问记录表用于记录每一个物理块是否被写入了数据;在有数据写入物理块时将资源访问记录表中该物理块的状态标记为已写入,并在所述逻辑资源被删除时,将资源访问记录中该逻辑资源对应的物理块的状态标记为未写入;本步骤由访问记录单元M执行。如前所述资源访问记录表比较典型有效的实现方式是Bitmap,其是一种在网络存储领域非常流行的技术,在此不在对其进行详细描述。资源访问记录表中各个物理块的更新处理可以与读写业务装置的处理串行设置也可以与读写业务并行设置。对于串行处理来说,在读写业务处理装置(通常为RAID业务处理模块)收到来自逻辑资源或者网络存储系统内应用程序写入数据的写命令时,其可以按照一般的写处理流程去处理,如果数据写入是成功的,则可以转入步骤102进行处理,否则返回,比如提示写入端写入操作失败。对于并行处理来说,步骤102与读写业务装置对写命令的处理是并行的,即便写命令最后的处理结果是失败,步骤102仍然有可能会将物理块的状态标记为已写入。这样做的结果是资源访问记录表中对该物理块的状态记录可能与物理块的实际状态不符合。然而这样做的效率较高,可以提高业务流程的处理速度。而且即使出现不符合的状况,所引发的问题仅仅是后续重建工作有少许的增加,也就是说重建了一部分不应该重建的物理块。用户可能会删除已经创建的逻辑资源,在删除逻辑资源之前,访问记录单元M可以先获得将逻辑资源所占用的对应的物理块,然后在资源访问记录表中把这些物理块的状态变更为未写入,执行逻辑资源的删除然后再释放掉物理空间进而完成整个逻辑资源删除的操作。逻辑资源被删除后,资源访问记录表需要做出相应的更新,因为后续的重建是依照逻辑资源记录表中对各个物理块状态的记录展开的,及时更新可以确保重建的范围限于被业务或者应用层面真实占用的各个物理块。进一步来说,在初始的时候,很显然所有物理块的状态皆为未写入数据。然而物理块可能会反复地被写入数据,所以在数据写入物理块时,可以先看看物理块的状态是否已经是已写入,如果是返回,否则继续。相当于在首次写入时进行状态更改,后续则跳过。对上述操作的优化方案是,在每次写入数据到物理块时直接更新该物理块为已写入,可以减去读出和判断的过程,从而提高效率。进一步来说,在资源访问记录表可能会呈现出无效的状态,比如Bitmap中无法置位,或者说更新不能不成功。此时为了更为严谨的考虑,可以在标记物理块状态之前,检查所述资源访问记录表是否有效,如果是则更新资源访问记录表,否则不更新并转入其他不同的重建处理单元,比如说转入一个现有的软件/硬件实现的重建处理单元去执行常见的重建处理流程中去。如此一来可以确保充分利用已有的重建处理单元作为备份,提高重建处理的可靠性。相应地,可以在更新所述物理块状态时检查是否更新成功,如果更新成功则继续,否则将所述资源访问记录表标记为无效。步骤103,在重建RAID阵列时根据所述资源访问记录表获取状态为已写入的物理块,以物理块为单元对状态为已写入的物理块进行重建。本步骤有重建处理单元沈执行。请参考图4,RAID阵列处于降级状态时,系统可以提示管理员进行重建,也可能是立刻触发重建,一旦系统发现有可用的热备盘,系统即可开始重建操作。通常重建是根据 RAID阵列的级别使用相应的校验算法计算出损坏磁盘上的数据后写入到相应的热备盘中去。本发明获取到的物理块均是有数据的物理块,因此重建工作显得非常有意义,省去了大量的没有必要的重建工作。相对于现有技术中重建已经分配的物理资源的实现方式,本发明重建已经被写入数据的物理块,效率大大提升。因为往往已经分配的物理资源很多都没有实际写入数据。重建处理单元沈还可以做进一步各种优化处理。在重建过程中如果新数据写入到物理块时,重建处理单元沈可以将新数据同时写入数据盘和热备盘中。这样做的好处是重建过程中业务数据的写入与重建进程互不影响,相当于业务写入的时完成了重建,因此重建处理单元不需要再单独重建这部分新写入的数据。从实现上来说,有两种方式。比如说,在重建开始的时候,重建处理单元沈可以根据当前的资源访问记录表先生成一个重建列表(当前状态为已写入的物理块所构成的列表),按照重建列表顺序对各个物理块进行重建。当然也可以直接根据资源访问记录表进行重建,重建处理单元沈每次取N个(N 为自然数)状态为已写入的物理块进行重建,直到所有物理块重建完成为止。更进一步,当重建过程中有新数据写入时,根据步骤102的方式,访问记录单元 24会将该物理块的状态更新为已写入,这样可以确保资源访问记录表的完整性和实时性。 假设重建过程中热备盘出现了故障,用另外的热备盘替换,由于资源访问记录表是完整的 (或者说是及时更新了的),因此再次重建的过程不会受到任何影响。以上所述仅仅为本发明较佳的实现方式,任何基于本发明精神所做出的等同的修改皆应涵盖于本发明的权利要求范围中。
权利要求
1.一种RAID阵列重建装置,用于执行网络存储系统内的RAID阵列重建操作,其中所述 RAID阵列被预先划分为大小相同物理块,该装置包括资源分配单元,用于在创建逻辑资源时为逻辑资源分配一个或多个物理块,并记录逻辑资源与物理块之间的对应关系;访问记录单元,用于维护一个资源访问记录表,该资源访问记录表用于记录每一个物理块是否被写入了数据;其中该访问记录单元在有数据写入物理块时将资源访问记录表中该物理块的状态标记为已写入,并在所述逻辑资源被删除时,将资源访问记录中该逻辑资源对应的物理块的状态标记为未写入;以及重建处理单元,用于在重建RAID阵列时根据所述资源访问记录表获取状态为已写入的物理块,以物理块为单元对状态为已写入的物理块进行重建。
2.根据权利要求1所述的重建装置,其特征在于,所述重建处理单元进一步用于在发现重建过程中有新数据写入状态为未写入的物理块时,将需要写入故障磁盘的数据写入该故障磁盘以及对应的热备磁盘。
3.根据权利要求1所述的重建装置,其特征在于,所述网络存储系统还包括读写业务处理装置,其用于处理数据读写命令,如果处理失败则返回,如果是写命令且处理成功则转入访问记录单元处理。
4.根据权利要求3所述的重建装置,其中所述访问记录单元进一步用于在标记物理块状态之前,检查所述资源访问记录表是否有效,如果是则更新所述资源访问记录表,否则不更新并转入其他不同的重建处理单元;并在更新所述物理块状态时检查是否更新成功,如果更新成功则继续,否则将所述资源访问记录表标记为无效。
5.根据权利要求1所述的重建装置,其中所述访问记录单元进一步用于在标记物理块状态之前获取该物理块当前状态,如果当前状态为已写入,则返回,否则继续。
6.一种RAID阵列重建方法,用于执行网络存储系统内的RAID阵列重建操作,其中所述 RAID阵列被预先划分为大小相同物理块,该方法包括A、在创建逻辑资源时为逻辑资源分配一个或多个物理块,并记录逻辑资源与物理块之间的对应关系;B、维护一个资源访问记录表,该资源访问记录表用于记录每一个物理块是否被写入了数据;并在有数据写入物理块时将资源访问记录表中该物理块的状态标记为已写入,并在所述逻辑资源被删除时,将资源访问记录中该逻辑资源对应的物理块的状态标记为未写入;以及C、在重建RAID阵列时根据所述资源访问记录表获取状态为已写入的物理块,以物理块为单元对状态为已写入的物理块进行重建。
7.根据权利要求6所述的方法,其特征在于,步骤C进一步包括在发现重建过程中有新数据写入状态为未写入的物理块时,将需要写入故障磁盘的数据写入该故障磁盘以及对应的热备磁盘。
8.根据权利要求6所述的方法,其特征在于,还包括D、处理数据读写命令,如果处理失败则返回,如果是写命令且处理成功则转入步骤B。
9.根据权利要求6所述的方法,其中步骤B进一步包括在标记物理块状态之前,检查所述资源访问记录表是否有效,如果是则更新所述资源访问记录表,否则不更新并转入其他不同的重建处理流程;并在更新所述物理块状态时检查是否更新成功,如果更新成功则继续,否则将所述资源访问记录表标记为无效。
10.根据权利要求6所述的方法,其中所述步骤B进一步包括在更新物理块状态之前获取该物理块当前状态,如果当前状态为已写入,则返回,否则继续。
全文摘要
本发明涉及一种RAID阵列重建的方法及装置,其用于执行RAID阵列重建操作,其中所述RAID阵列被预先划分为大小相同物理块,该装置包括资源分配单元,用于在创建逻辑资源时为逻辑资源分配一个或多个物理块,并记录逻辑资源与物理块之间的对应关系;访问记录单元,用于维护一个资源访问记录表,该资源访问记录表用于记录每一个物理块是否被写入了数据;以及重建处理单元,用于在重建RAID阵列时根据所述资源访问记录表获取状态为已写入的物理块,以物理块为单元对状态为已写入的物理块进行重建。本发明可大幅度提高重建效率并将重建过程中对于业务的影响降到较低的水平。
文档编号G06F3/06GK102541472SQ201110456738
公开日2012年7月4日 申请日期2011年12月31日 优先权日2011年12月31日
发明者上官应兰 申请人:杭州宏杉科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1