一种数据快照方法及装置制造方法

文档序号:6634568阅读:184来源:国知局
一种数据快照方法及装置制造方法
【专利摘要】一种数据快照方法及装置。其中的方法包括:接收主机对源逻辑单元号LUN的第一数据写入请求,所述第一数据写入请求包括待写入源LUN存储空间的起始地址和数据长度;根据所述第一数据写入请求,获取第一待写入数据在预留存储空间的第一重定向写入起始地址,所述预留存储空间的大小大于或等于所述源LUN存储空间;从所述第一重定向写入起始地址开始,将所述第一待写入数据写入所述预留存储空间。还公开了相应的装置。本发明在进行数据快照时,通过获取待写入数据在预留存储空间的重定向写入起始地址,将待写入数据写入连续的预留存储空间,可以保证待写入数据可以连续写入预留存储空间,从而可以保证快照即时完成备份,并且不影响源LUN的读写性能。
【专利说明】一种数据快照方法及装置

【技术领域】
[0001]本发明涉及存储【技术领域】,尤其涉及一种数据快照方法及装置。

【背景技术】
[0002]伴随着计算机技术的巨大发展,数据备份的重要性也逐渐凸显出来。传统地,人们一直采用数据复制、备份、恢复等技术来保护重要的数据信息,定期对数据进行备份或复制。但是这种备份方式的代价和成本比较高,并且消耗大量时间和系统资源,数据备份的恢复时间目标(Recovery Time Object, RT0)和恢复点目标(Recovery Point Object, RP0)也很长。由于数据备份过程会影响应用性能,并且非常耗时,因此数据备份通常被安排在系统负载较轻时进行(如夜间)。另外,为了节省存储空间,通常结合全量备份和增量备份技术。
[0003]不过,这种数据备份方式存在一个显著的不足,即备份窗口问题。在数据备份期间,企业业务需要暂时停止对外提供服务。随着企业数据量和数据增长速度的加快,这个窗口可能会要求越来越长,这对于关键性业务系统来说是无法接受的。诸如银行、电信等机构,信息系统要求24x7不间断运行,短时的停机或者少量数据的丢失都会导致巨大的损失。因此,就需要将数据备份窗口尽可能地缩小,甚至缩小为零。数据快照(Snapshot)就是为了满足这样的需求而出现的数据保护技术。快照(Snapshot)是某个数据集在某一特定时刻的镜像,也称为即时拷贝,它是这个数据集的一个完整可用的副本。
[0004]常见的快照技术有写时拷贝(Copy On Write, COW)和写时重定向(Redirect OnWrite, ROW)。这些技术都是延迟数据保护操作到主机需要进行数据写时执行,从而达到瞬时完成数据保护目的。写时拷贝要求必须在保护数据完成拷贝后,主机写输入/输出(Input/Output, 1/0)才能执行,同时,保护数据是以固定大小进行备份的,较大的增加了主机写1/0延时。
[0005]写时重定向是指,主机对快照源逻辑单元号(Logical Unit Number, LUN)进行写时,主机1/0直接重定向写入新的数据区域,不再更改源LUN现有空间中的数据。当主机对源LUN进行读操作时,1/0直接从新数据区域读取。写时重定向虽然不会对主机写性能影响,但是由于重定向写入的空间是由存储池随机分配的,存储池无法理解和保证源LUN空间连续性的要求,导致源LUN多次重定向写后,数据空间就会从连续的变成离散的。缓存的预读操作是只能支持连续数据空间的,是不能对离散的数据空间进行预读。结果是主机对源LUN进行读时,缓存命中率很低,几乎都需要从硬盘上读取数据,降低了读性能。


【发明内容】

[0006]本发明提供一种数据快照方法及装置,以保证快照即时完成备份,并且不影响源LUN的读写性能。
[0007]第一方面,提供了一种数据快照方法,包括:
[0008]接收主机对源逻辑单元号LUN的第一数据写入请求,所述第一数据写入请求包括待写入源LUN存储空间的起始地址和数据长度;
[0009]根据所述第一数据写入请求,获取第一待写入数据在预留存储空间的第一重定向写入起始地址,所述预留存储空间的大小大于或等于所述源LUN存储空间;
[0010]从所述第一重定向写入起始地址开始,将所述第一待写入数据写入所述预留存储空间。
[0011]在第一种可能的实现方式中,所述接收主机对源LUN的第一数据写入请求之前,所述方法还包括:
[0012]当接收到快照创建请求时,向所述主机申请快照保护空间和预留所述预留存储空间;
[0013]其中,所述快照对所述预留存储空间具有优先使用权。
[0014]结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述方法还包括:
[0015]将所述源LUN存储空间的已有数据复制到所述快照保护空间。
[0016]结合第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述方法还包括:
[0017]将所述第一待写入数据从所述预留存储空间复制到所述源LUN存储空间;
[0018]清空所述预留存储空间。
[0019]结合第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第四种可能的实现方式中,所述方法还包括:
[0020]接收所述主机对所述源LUN的第二数据写入请求,其中,所述第二数据写入请求所请求写入所述源LUN存储空间的地址与所述第一数据写入请求所请求的地址连续,所述第二数据写入请求包括待写入源LUN存储空间的起始地址和数据长度;
[0021]根据所述第二数据写入请求,获取待写入数据在所述预留存储空间的第二重定向与入起始地址;
[0022]从所述第二重定向写入起始地址开始,将所述待写入数据写入所述预留存储空间,其中,在所述预留存储空间中,所述第二待写入数据的地址与所述第一待写入数据的地址连续;
[0023]将地址连续的所述第一待写入数据和第二待写入数据从所述预留存储空间复制到所述源LUN存储空间。
[0024]第二方面,提供了一种数据快照装置,包括:
[0025]接收单元,用于接收主机对源逻辑单元号LUN的第一数据写入请求,所述第一数据写入请求包括待写入源LUN存储空间的起始地址和数据长度;
[0026]获取单元,用于根据所述第一数据写入请求,获取第一待写入数据在预留存储空间的第一重定向写入起始地址,所述预留存储空间的大小大于或等于所述源LUN存储空间;
[0027]写入单元,用于从所述第一重定向写入起始地址开始,将所述第一待写入数据写入所述预留存储空间。
[0028]在第一种可能的实现方式中,所述装置还包括:
[0029]创建单元,用于当接收到快照创建请求时,向所述主机申请快照保护空间和预留所述预留存储空间;
[0030]其中,所述快照对所述预留存储空间具有优先使用权。
[0031]结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述装置还包括:
[0032]第一复制单元,用于将所述源LUN存储空间的已有数据复制到所述快照保护空间。
[0033]结合第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述装置还包括:
[0034]第二复制单元,用于将所述第一待写入数据从所述预留存储空间复制到所述源LUN存储空间;
[0035]清空单元,用于清空所述预留存储空间。
[0036]结合第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式,在第四种可能的实现方式中:
[0037]所述接收单元还用于:接收所述主机对所述源LUN的第二数据写入请求,其中,所述第二数据写入请求所请求写入所述源LUN存储空间的地址与所述第一数据写入请求所请求的地址连续,所述第二数据写入请求包括待写入源LUN存储空间的起始地址和数据长度;
[0038]所述获取单元还用于:根据所述第二数据写入请求,获取待写入数据在所述预留存储空间的第二重定向写入起始地址;
[0039]所述写入单元还用于:从所述第二重定向写入起始地址开始,将所述待写入数据写入所述预留存储空间,其中,在所述预留存储空间中,所述第二待写入数据的地址与所述第一待写入数据的地址连续;
[0040]所述装置还包括:
[0041]第三复制单元,用于将地址连续的所述第一待写入数据和第二待写入数据从所述预留存储空间复制到所述源LUN存储空间。
[0042]可见,根据本发明提供的一种数据快照方法及装置,在进行数据快照时,通过获取待写入数据在预留存储空间的重定向写入起始地址,将待写入数据写入连续的预留存储空间,可以保证待写入数据可以连续写入预留存储空间,从而可以保证快照即时完成备份,并且不影响源LUN的读写性能。

【专利附图】

【附图说明】
[0043]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0044]图1为本发明实施例提供的一种数据快照方法的流程示意图;
[0045]图2为本发明实施例提供的另一种数据快照方法的流程示意图;
[0046]图3为本发明实施例的存储空间划分示意图;
[0047]图4为重定向存储空间申请流程示意图;
[0048]图5为本发明实施例提供的一种数据快照装置的结构示意图;
[0049]图6为本发明实施例提供的另一种数据快照装置的结构示意图。

【具体实施方式】
[0050]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0051]本发明的应用场景例如可以是数据库服务器、邮件服务器等,通过快照方式对数据库服务器、邮件服务器的数据进行即时备份。磁盘抽象为LUN,企业的业务数据存放直接访问的是LUN,并不是磁盘物理介质。LUN的封装保证了业务数据不用关心物理磁盘类型。当企业期望每隔较短时间备份一次业务数据时,可以选择快照技术。对LUN创建快照、备份数据后,LUN上的数据就被快照完整的保护,此时我们称LUN为快照源LUN。快照实现了在线数据备份与恢复,并提供了另外一个数据访问通道。
[0052]请参阅图1,为本发明实施例提供的一种数据快照方法的流程示意图,该方法包括以下步骤:
[0053]步骤S101,接收主机对源逻辑单元号LUN的第一数据写入请求,所述第一数据写入请求包括待写入源LUN存储空间的起始地址和数据长度。
[0054]主机通过I/O向存储池写入数据,存储池为物理存储空间,在本发明中,主机无需关心存储池的物理磁盘类型,可以直接访问源LUN。一个源LUN在存储池中对应具有一定的源LUN存储空间(Source Space)。数据写入请求包括源LUN存储空间的起始地址和数据长度。
[0055]步骤S102,根据所述第一数据写入请求,获取第一待写入数据在预留存储空间的第一重定向写入起始地址,所述预留存储空间的大小大于或等于所述源LUN存储空间。
[0056]本发明在存储池中预留一块与源LUN存储空间同等大小或其大小大于源LUN存储空间的预留存储空间(Reserved Space),该空间并未实际分配,仅是快照拥有这块空间的优先使用权。快照向存储池申请预留一块空间,这块空间平时不对外,只能用于快照的空间使用要求。仅当存储池空间由于其他原因导致空间不足时,其他空间分配申请才能使用预留空间。本发明实施例在请求将数据写入源LUN时,直接重定向写入预留存储空间。
[0057]在快照程序使用该预留存储空间时,根据数据写入请求的待写入源LUN存储空间的起始地址和数据长度,获取待写入数据在预留存储空间的重定向写入起始地址。
[0058]步骤S103,从所述第一重定向写入起始地址开始,将所述第一待写入数据写入所述预留存储空间。
[0059]从获得的重定向写入起始地址开始,将待写入数据直接写入预留存储空间。由于预留存储空间的大小大于或等于源LUN存储空间,可以保证待写入数据在预留存储空间的连续性。而现有的重定向写入的空间是由存储池随机分配的,存储池无法理解和保证源LUN空间连续性的要求,导致源LUN重定向写后,数据空间就会从连续的变成离散的。缓存的预读操作是只能支持连续数据空间的,是不能对离散的数据空间进行预读。结果是主机对源LUN进行读时,缓存命中率很低,几乎都需要从硬盘上读取数据,降低了读性能。本实施例通过保证待写入数据在预留存储空间的连续性,对源LUN进行读时,直接读预留存储空间或源LUN,从而可以保证缓存是对连续的数据空间进行预读操作,而重定向操作不影响写数据性能,从而整体提闻了读与性能。
[0060]根据本发明实施例提供的一种数据快照方法,在进行数据快照时,通过获取待写入数据在预留存储空间的重定向写入起始地址,将待写入数据写入连续的预留存储空间,可以保证待写入数据可以连续写入预留存储空间,从而可以保证快照即时完成备份,并且不影响源LUN的读写性能。
[0061]请参阅图2,为本发明实施例提供的另一种数据快照方法的流程示意图,该方法包括以下步骤:
[0062]步骤S201,当接收快照创建请求时,向所述主机申请快照保护空间和预留所述预留存储空间;其中,所述快照对所述预留存储空间具有优先使用权。
[0063]当用户期望保护当前时间源LUN存储空间中的数据时,才创建快照。创建快照后,之后的任意时间段,主机都可以通过快照读取该时间点的数据,并能恢复源LUN到该时间点时的状态。创建快照的执行主体一般是自然人(如IT管理员,数据库管理员等)和备份软件。备份软件一般是定时(如每隔15分钟)创建一个快照。
[0064]如图3所示的本发明实施例的存储空间划分示意图,本发明在创建快照时,向存储池申请预留一块源LUN同等大小的空间或其大小大于源LUN存储空间的预留存储空间(Reserved Space),在本实施例中,优选申请与源LUN存储空间同等大小的预留存储空间。当存储池空间足够时,存储池会将该空间分配给快照。该空间并未实际分配,仅是快照拥有这块空间的优先使用权,其他非快照空间分配申请,仅当存储池空间不足时,存储池才能从Reserved Space 中分配。
[0065]假设用户8:00对存放数据库数据的源LUN创建了一个快照。由于快照创建不涉及具体数据拷贝,能够瞬时完成。快照创建完成后,存储池中共有三个空间:源LUN存储空间(Source Space),预留存储空间(Reserved Space),快照保护空间(Protect Space),后两个空间为逻辑示意,未实际分配。
[0066]例如,存储区域的具体区间是:
[0067]Source Area: [O,100), Reserved Area:[100, 200), Protect Space:[400,430)。
[0068]步骤S202,接收主机对源逻辑单元号LUN的第一数据写入请求,所述第一数据写入请求包括待写入源LUN存储空间的起始地址和数据长度。
[0069]8点10分,主机对源LUN进行创建快照后的第一次写操作,预期写入的区域(Source Area)起始地址(ffrite_Start)为2,长度为3。数据内容为data new。一个快照只保护一个时间点的数据,示例中快照从概念上是生成了一个源LUN在8点时的数据映像。
[0070]步骤S203,根据所述第一数据写入请求,获取第一待写入数据在预留存储空间的第一重定向写入起始地址,所述预留存储空间的大小大于或等于所述源LUN存储空间。
[0071]主机在写源LUN时,快照程序计算出保证源LUN连续性的重定向写入地址,以该地址向存储池指定申请从预留空间中分配数据存放区域(Redirect Area)。此时,计算主机写操作的重定向写入地址Redirect_Start。计算公式如下:
[0072]Redirect_Start = Reserved_Space_Start - Souce_Space_Start+ffrite_Start
[0073]其中,Redirect_Start为主机 1/0 重定向写入起始地址,Reserved_Space_Start为预留空间起始地址,Souce_Space_Start为源LUN空间起始地址,Write_Start为主机I/O写入空间的起始地址,故Redirect_Start = 100-0+2 = 102。由此可知,主机I/O重定向写入区域 Redirect Area 为[102,105)。
[0074]如图4所示重定向存储空间申请流程示意图,快照检查[102,105)是否已经分配,当前场景下未分配,所以快照直接向存储池申请分配该空间。分配成功后,主机I/o直接重定向写入Redirect Area中。
[0075]步骤S204,从所述第一重定向写入起始地址开始,将所述第一待写入数据写入所述预留存储空间。
[0076]将待写入数据从获得的重定向写入起始地址开始,将待写入数据直接写入预留存储空间。由于预留存储空间的大小大于或等于源LUN存储空间,可以保证待写入数据在预留存储空间的连续性。本实施例通过保证待写入数据在预留存储空间的连续性,而源LUN存储空间的数据可以不发生变化,对源LUN进行读时,直接读预留存储空间,从而可以保证缓存是对连续的数据空间进行预读操作,而重定向操作不影响写数据性能,从而整体提高了读写性能。
[0077]步骤S205,将所述源LUN存储空间的已有数据复制到所述快照保护空间。
[0078]判断源LUN Source Area中现有的数据内容data current是否已经在快照保护空间中。如果存在,说明Source Area在创建快照时的数据已经被保护了,主机I/O可直接写Source Area,对于当前不例来说,8:00时刻,Source Area是第一次写,data current数据不在快照保护空间中,需要对data current数据进行保护。data current数据在源LUN存储区域的地址为[0,3)。
[0079]由于重定向写入区域(Redirect Area)都是从预留存储区域中分配,并且由快照程序负责计算重定向写入区域,保证了主机I/O重定向写后,源LUN数据的连续性。从而不会影响源LUN的读性能。同时,将源LUN上Source Area中的data current数据镜像复制到快照保护空间中,在该示例中,data current数据镜像复制到快照保护空间中的地址为[400,403)。在主机没有对Redirect Area进行写后,再将Redirect Area中的data new数据镜像复制到源LUN的Source Area中,data new数据镜像复制到源LUN的Source Area中的地址为[2,5)。这些流程保证源LUN存储区域数据的连续性,不会由于主机写的重定向而导致源LUN数据的离散化。最后,将预留存储区域清空。
[0080]8点20分,主机对源LUN进行再次创建一个快照。之后源LUN上总共有两个快照。
[0081]此时快照保护空间中,有数据data current。源LUN空间中Source Area有数据data newo Reserve Area空间保留,但内容为空。
[0082]Source Area: [2, 5) data new
[0083]Reserve Area:[102, 105)
[0084]Protect Area:[400, 403)data current?
[0085]步骤S206,接收所述主机对所述源LUN的第二数据写入请求,其中,所述第二数据写入请求所请求写入所述源LUN存储空间的地址与所述第一数据写入请求所请求的地址连续,所述第二数据写入请求包括待写入源LUN存储空间的起始地址和数据长度。
[0086]步骤S207,根据所述第二数据写入请求,获取待写入数据在所述预留存储空间的第二重定向写入起始地址。
[0087]步骤S208,从所述第二重定向写入起始地址开始,将所述待写入数据写入所述预留存储空间,其中,在所述预留存储空间中,所述第二待写入数据的地址与所述第一待写入数据的地址连续。
[0088]步骤S209,将地址连续的所述第一待写入数据和第二待写入数据从所述预留存储空间复制到所述源LUN存储空间。
[0089]8点22分,主机继续写Source Area [2, 5),写入的数据内容为data sec.对于第二个快照来说,Source Area中的data new是需要保护的,但是未在快照保护空间中。主机写I/O直接重定向到Reserved Area[102,105)。重定向后,空间数据内容如下:
[0090]Source Area: [2, 5) data new
[0091]Reserved Area:[102, 105)data sec
[0092]Protect Area:[400, 403)data current
[0093]8点23分,主机对源LUN进行写操作,写入区域为[5,9),写入内容为data third。假设[5,9)中现有数据data current59。快照计算重定向地址,申请分配第二个预留分配区域 Reserve Area2 [105,109)。由于 Reserve Area2 和 Reserve Area 是连续的,可以合并。合并后的Reserve Area为[102,109)。重定向后,空间数据内容如下:
[0094]Source Area: [2,9)data new, data current59
[0095]Reserved Area:[102, 109)data sec, data third
[0096]Protect Area:[400, 403)data current
[0097]从上可以看出,主机重定向写入预期区域后,数据仍然是连续的。此时重定向到预期区域读数据时,可以使用缓存的预取功能从而提高了性能。预留存储区域中[102,109)的两部分重定向写入的数据data sec和data third,由于是地址连续的,可以两次重定向写入后,一并镜像复制到源LUN存储空间,提高存储效率。
[0098]本实施例通过保证待写入数据在预留存储空间的连续性,对源LUN进行读时,直接读预留存储空间或源LUN,从而可以保证缓存是对连续的数据空间进行预读操作,而重定向操作不影响写数据性能,从而整体提高了读写性能。
[0099]根据本发明实施例提供的一种数据快照方法,在进行数据快照时,通过获取待写入数据在预留存储空间的重定向写入起始地址,将待写入数据写入连续的预留存储空间,可以保证待写入数据可以连续写入预留存储空间,从而可以保证快照即时完成备份,并且不影响源LUN的读写性能。
[0100]请参阅图5,为本发明实施例提供的一种数据快照装置的结构示意图,该装置1000包括:
[0101]接收单元11,用于接收主机对源逻辑单元号LUN的第一数据写入请求,所述第一数据写入请求包括待写入源LUN存储空间的起始地址和数据长度。
[0102]主机通过1/0向存储池写入数据,存储池为物理存储空间,在本发明中,主机无需关心存储池的物理磁盘类型,可以直接访问源LUN。一个源LUN在存储池中对应具有一定的源LUN存储空间(Source Space)。数据写入请求包括源LUN存储空间的起始地址和数据长度。
[0103]获取单元12,用于根据所述第一数据写入请求,获取第一待写入数据在预留存储空间的第一重定向写入起始地址,所述预留存储空间的大小大于或等于所述源LUN存储空间。
[0104]本发明在存储池中预留一块与源LUN存储空间同等大小或其大小大于源LUN存储空间的预留存储空间(Reserved Space),该空间并未实际分配,仅是快照拥有这块空间的优先使用权。快照向存储池申请预留一块空间,这块空间平时不对外,只能用于快照的空间使用要求。仅当存储池空间由于其他原因导致空间不足时,其他空间分配申请才能使用预留空间。本发明实施例在请求将数据写入源LUN时,直接重定向写入预留存储空间。
[0105]在快照程序使用该预留存储空间时,根据数据写入请求的待写入源LUN存储空间的起始地址和数据长度,获取单元12获取待写入数据在预留存储空间的重定向写入起始地址。
[0106]写入单元13,用于从所述第一重定向写入起始地址开始,将所述第一待写入数据写入所述预留存储空间。
[0107]写入单元13从获得的重定向写入起始地址开始,将待写入数据直接写入预留存储空间。由于预留存储空间的大小大于或等于源LUN存储空间,可以保证待写入数据在预留存储空间的连续性。而现有的重定向写入的空间是由存储池随机分配的,存储池无法理解和保证源LUN空间连续性的要求,导致源LUN重定向写后,数据空间就会从连续的变成离散的。缓存的预读操作是只能支持连续数据空间的,是不能对离散的数据空间进行预读。结果是主机对源LUN进行读时,缓存命中率很低,几乎都需要从硬盘上读取数据,降低了读性能。本实施例通过保证待写入数据在预留存储空间的连续性,对源LUN进行读时,直接读预留存储空间或源LUN,从而可以保证缓存是对连续的数据空间进行预读操作,而重定向操作不影响写数据性能,从而整体提高了读写性能。
[0108]根据本发明实施例提供的一种数据快照装置,在进行数据快照时,通过获取待写入数据在预留存储空间的重定向写入起始地址,将待写入数据写入连续的预留存储空间,可以保证待写入数据可以连续写入预留存储空间,从而可以保证快照即时完成备份,并且不影响源LUN的读写性能。
[0109]请参阅图6,为本发明实施例提供的另一种数据快照装置的结构示意图,该装置2000包括:
[0110]创建单元21,用于当接收快照创建请求时,向所述主机申请快照保护空间和预留所述预留存储空间;其中,所述快照对所述预留存储空间具有优先使用权。
[0111]当用户期望保护当前时间源LUN存储空间中的数据时,才创建快照。创建快照后,之后的任意时间段,主机都可以通过快照读取该时间点的数据,并能恢复源LUN到该时间点时的状态。创建快照的执行主体一般是自然人(如IT管理员,数据库管理员等)和备份软件。备份软件一般是定时(如每隔15分钟)创建一个快照。
[0112]如图3所示的本发明实施例的存储空间划分示意图,本发明在创建快照时,向存储池申请预留一块源LUN同等大小的空间或其大小大于源LUN存储空间的预留存储空间(Reserved Space),在本实施例中,优选申请与源LUN存储空间同等大小的预留存储空间。当存储池空间足够时,存储池会将该空间分配给快照。该空间并未实际分配,仅是快照拥有这块空间的优先使用权,其他非快照空间分配申请,仅当存储池空间不足时,存储池才能从Reserved Space 中分配。
[0113]假设用户8:00对存放数据库数据的源LUN创建了一个快照。由于快照创建不涉及具体数据拷贝,能够瞬时完成。快照创建完成后,存储池中共有三个空间:源LUN存储空间(Source Space),预留存储空间(Reserved Space),快照保护空间(Protect Space),后两个空间为逻辑示意,未实际分配。
[0114]例如,存储区域的具体区间是:
[0115]Source Area: [O,100), Reserved Area:[100, 200), Protect Space:[400,430)。
[0116]接收单元22,用于接收主机对源逻辑单元号LUN的第一数据写入请求,所述第一数据写入请求包括待写入源LUN存储空间的起始地址和数据长度。
[0117]8点10分,主机对源LUN进行创建快照后的第一次写操作,预期写入的区域(Source Area)起始地址(ffrite_Start)为2,长度为3。数据内容为data new。一个快照只保护一个时间点的数据,示例中快照从概念上是生成了一个源LUN在8点时的数据映像。
[0118]获取单元23,用于根据所述第一数据写入请求,获取第一待写入数据在预留存储空间的第一重定向写入起始地址,所述预留存储空间的大小大于或等于所述源LUN存储空间。
[0119]主机在写源LUN时,计算出保证源LUN连续性的重定向写入地址,以该地址向存储池指定申请从预留空间中分配数据存放区域(Redirect Space)。此时,计算主机写操作的重定向写入地址Redirect_Start。计算公式如下:
[0120]Redirect_Start = Reserved_Space_Start - Souce_Space_Start+ffrite_Start
[0121]其中,Redirect_Start为主机 1/0 重定向写入起始地址,Reserved_Space_Start为预留空间起始地址,Souce_Space_Start为源LUN空间起始地址,Write_Start为主机I/O写入空间的起始地址,故Redirect_Start = 100-0+2 = 102。由此可知,主机1/0重定向写入区域 Redirect Area 为[102,105)。
[0122]如图4所示重定向存储空间申请流程示意图,快照检查[102,105)是否已经分配,当前场景下未分配,所以快照直接向存储池申请分配该空间。分配成功后,主机I/o直接重定向写入Redirect Area中。
[0123]写入单元24,用于从所述第一重定向写入起始地址开始,将所述第一待写入数据写入所述预留存储空间。
[0124]将待写入数据从获得的重定向写入起始地址开始,将待写入数据直接写入预留存储空间。由于预留存储空间的大小大于或等于源LUN存储空间,可以保证待写入数据在预留存储空间的连续性。本实施例通过保证待写入数据在预留存储空间的连续性,而源LUN存储空间的数据可以不发生变化,对源LUN进行读时,直接读预留存储空间,从而可以保证缓存是对连续的数据空间进行预读操作,而重定向操作不影响写数据性能,从而整体提高了读写性能。
[0125]第一复制单元25,用于将所述源LUN存储空间的已有数据复制到所述快照保护空间。
[0126]判断源LUN Source Area中现有的数据内容data current是否已经在快照保护空间中。如果存在,说明Source Area在创建快照时的数据已经被保护了,主机1/0可直接写Source Area,对于当前不例来说,8:00时刻,Source Area是第一次写,data current数据不在快照保护空间中,需要对data current数据进行保护。data current数据在源LUN存储区域的地址为[0,3)。
[0127]由于重定向写入区域(Redirect Area)都是从预留存储区域中分配,并且计算重定向写入区域,保证了主机I/O重定向写后,源LUN数据的连续性。从而不会影响源LUN的读性能。同时,第一复制单元25将源LUN上Source Area中的data current数据镜像复制到快照保护空间中,在该示例中,data current数据镜像复制到快照保护空间中的地址为[400,403)。在主机没有Redirect Area进行写后,第二复制单元再将Redirect Area中的data new数据镜像复制到源LUN的Source Area中,data new数据镜像复制到源LUN的Source Area中的地址为[2,5)。这些流程保证源LUN存储区域数据的连续性,不会由于主机写的重定向而导致源LUN数据的离散化。最后,清空单元27将预留存储区域清空。
[0128]8点20分,主机对源LUN进行再次创建一个快照。之后源LUN上总共有两个快照。
[0129]此时快照保护空间中,有数据data current。源LUN空间中Source Area有数据data newo Reserve Area空间保留,但内容为空。
[0130]Source Area: [2, 5) data new
[0131]Reserve Area:[102, 105)
[0132]Protect Area:[400, 403)data current?
[0133]接收单元22还用于接收所述主机对所述源LUN的第二数据写入请求,其中,所述第二数据写入请求所请求写入所述源LUN存储区域的地址与所述第一数据写入请求所请求的地址连续,所述第二数据写入请求包括待写入源LUN存储区域的起始地址和数据长度。
[0134]获取单元23还用于根据所述第二数据写入请求,获取待写入数据在所述预留存储空间的第二重定向写入起始地址。
[0135]写入单元24还用于从所述第二重定向写入起始地址开始,将所述待写入数据写入所述预留存储空间,其中,在所述预留存储空间中,所述第二待写入数据的地址与所述第一待写入数据的地址连续。
[0136]第三复制单元26,用于将地址连续的所述第一待写入数据和第二待写入数据从所述预留存储空间复制到所述源LUN存储空间。
[0137]8点22分,主机继续写Source Area [2, 5),写入的数据内容为data sec.对于第二个快照来说,Source Area中的data new是需要保护的,但是未在快照保护空间中。主机写1/0直接重定向到Reserved Area[102,105)。重定向后,空间数据内容如下:
[0138]Source Area: [2, 5) data new
[0139]Reserved Area:[102, 105)data sec
[0140]Protect Area:[400, 403)data current
[0141]8点23分,主机对源LUN进行写操作,写入区域为[5,9),写入内容为datathird。假设[5,9)中现有数据data current59。快照计算重定向地址,申请分配第二个预留分配区域 Reserve Area2[105,109)。由于 Reserve Area2 和 Reserve Area 是连续的,可以合并。合并后的Reserve Area为[102,109)。重定向后,空间数据内容如下:
[0142]Source Area: [2,9)data new, data current59
[0143]Reserved Area:[102, 109)data sec, data third
[0144]Protect Area:[400, 403)data current
[0145]从上可以看出,主机重定向写入预期区域后,数据仍然是连续的。此时重定向到预期区域读数据时,可以使用缓存的预取功能从而提高了性能。预留存储区域中[102,109)的两部分重定向写入的数据data sec和data third,由于是地址连续的,可以两次重定向写入后,一并镜像复制到源LUN存储区域,提高存储效率。
[0146]本实施例通过保证待写入数据在预留存储空间的连续性,对源LUN进行读时,直接读预留存储空间或源LUN,从而可以保证缓存是对连续的数据空间进行预读操作,而重定向操作不影响写数据性能,从而整体提高了读写性能。
[0147]根据本发明实施例提供的一种数据快照装置,在进行数据快照时,通过获取待写入数据在预留存储空间的重定向写入起始地址,将待写入数据写入连续的预留存储空间,可以保证待写入数据可以连续写入预留存储空间,从而可以保证快照即时完成备份,并且不影响源LUN的读写性能。
[0148]需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为根据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
[0149]在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0150]通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可以用硬件实现,或固件实现,或它们的组合方式来实现。当使用软件实现时,可以将上述功能存储在计算机可读介质中或作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是计算机能够存取的任何可用介质。以此为例但不限于:计算机可读介质可以包括随机存取存储器(Random Access Memory,RAM)、只读存储器(Read-Only Memory, ROM)、电可擦可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory, EEPR0M)、只读光盘(Compact Disc Read-OnlyMemory, CD-ROM)或其他光盘存储、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质。此外。任何连接可以适当的成为计算机可读介质。例如,如果软件是使用同轴电缆、光纤光缆、双绞线、数字用户线(Digital Subscriber Line, DSL)或者诸如红外线、无线电和微波之类的无线技术从网站、服务器或者其他远程源传输的,那么同轴电缆、光纤光缆、双绞线、DSL或者诸如红外线、无线和微波之类的无线技术包括在所属介质的定影中。如本发明所使用的,盘(Disk)和碟(disc)包括压缩光碟(⑶)、激光碟、光碟、数字通用光碟(DVD)、软盘和蓝光光碟,其中盘通常磁性的复制数据,而碟则用激光来光学的复制数据。上面的组合也应当包括在计算机可读介质的保护范围之内。
[0151]总之,以上所述仅为本发明技术方案的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种数据快照方法,其特征在于,包括: 接收主机对源逻辑单元号LUN的第一数据写入请求,所述第一数据写入请求包括待写入源LUN存储空间的起始地址和数据长度; 根据所述第一数据写入请求,获取第一待写入数据在预留存储空间的第一重定向写入起始地址,所述预留存储空间的大小大于或等于所述源LUN存储空间; 从所述第一重定向写入起始地址开始,将所述第一待写入数据写入所述预留存储空间。
2.如权利要求1所述的方法,其特征在于,所述接收主机对源LUN的第一数据写入请求之前,还包括: 当接收到快照创建请求时,向所述主机申请快照保护空间和预留所述预留存储空间; 其中,所述快照对所述预留存储空间具有优先使用权。
3.如权利要求2所述的方法,其特征在于,还包括: 将所述源LUN存储空间的已有数据复制到所述快照保护空间。
4.如权利要求2或3所述的方法,其特征在于,还包括: 将所述第一待写入数据从所述预留存储空间复制到所述源LUN存储空间; 清空所述预留存储空间。
5.如权利要求2或3所述的方法,其特征在于,还包括: 接收所述主机对所述源LUN的第二数据写入请求,其中,所述第二数据写入请求所请求写入所述源LUN存储空间的地址与所述第一数据写入请求所请求的地址连续,所述第二数据写入请求包括待写入源LUN存储空间的起始地址和数据长度; 根据所述第二数据写入请求,获取待写入数据在所述预留存储空间的第二重定向写入起始地址; 从所述第二重定向写入起始地址开始,将所述待写入数据写入所述预留存储空间,其中,在所述预留存储空间中,所述第二待写入数据的地址与所述第一待写入数据的地址连续; 将地址连续的所述第一待写入数据和第二待写入数据从所述预留存储空间复制到所述源LUN存储空间。
6.一种数据快照装置,其特征在于,包括: 接收单元,用于接收主机对源逻辑单元号LUN的第一数据写入请求,所述第一数据写入请求包括待写入源LUN存储空间的起始地址和数据长度; 获取单元,用于根据所述第一数据写入请求,获取第一待写入数据在预留存储空间的第一重定向写入起始地址,所述预留存储空间的大小大于或等于所述源LUN存储空间;写入单元,用于从所述第一重定向写入起始地址开始,将所述第一待写入数据写入所述预留存储空间。
7.如权利要求6所述的装置,其特征在于,还包括: 创建单元,用于当接收到快照创建请求时,向所述主机申请快照保护空间和预留所述预留存储空间; 其中,所述快照对所述预留存储空间具有优先使用权。
8.如权利要求7所述的装置,其特征在于,还包括: 第一复制单元,用于将所述源LUN存储空间的已有数据复制到所述快照保护空间。
9.如权利要求7或8所述的装置,其特征在于,还包括: 第二复制单元,用于将所述第一待写入数据从所述预留存储空间复制到所述源LUN存储空间; 清空单元,用于清空所述预留存储空间。
10.如权利要求7或8所述的装置,其特征在于: 所述接收单元还用于:接收所述主机对所述源LUN的第二数据写入请求,其中,所述第二数据写入请求所请求写入所述源LUN存储空间的地址与所述第一数据写入请求所请求的地址连续,所述第二数据写入请求包括待写入源LUN存储空间的起始地址和数据长度; 所述获取单元还用于:根据所述第二数据写入请求,获取待写入数据在所述预留存储空间的第二重定向写入起始地址; 所述写入单元还用于:从所述第二重定向写入起始地址开始,将所述待写入数据写入所述预留存储空间,其中,在所述预留存储空间中,所述第二待写入数据的地址与所述第一待写入数据的地址连续; 所述装置还包括: 第三复制单元,用于将地址连续的所述第一待写入数据和第二待写入数据从所述预留存储空间复制到所述源LUN存储空间。
【文档编号】G06F11/14GK104407936SQ201410655473
【公开日】2015年3月11日 申请日期:2014年11月18日 优先权日:2014年11月18日
【发明者】曾强, 黄发, 胡伟 申请人:华为数字技术(成都)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1