CN103077099B - 一种块级快照***及基于该***的用户读写方法 - Google Patents
一种块级快照***及基于该***的用户读写方法 Download PDFInfo
- Publication number
- CN103077099B CN103077099B CN201310005883.0A CN201310005883A CN103077099B CN 103077099 B CN103077099 B CN 103077099B CN 201310005883 A CN201310005883 A CN 201310005883A CN 103077099 B CN103077099 B CN 103077099B
- Authority
- CN
- China
- Prior art keywords
- data
- buffer memory
- memory device
- snapshot devices
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种块级快照***,包括由源设备以及一个或多个快照设备形成的快照设备链,源设备和快照设备中包括缓存设备、一对块设备SDU和SDL,以及存储设备。其中块设备SDU用于接受并处理用户对所述***的读写请求、缓存设备用于处理从所述块设备SDU转发来的用户的读写请求且用于缓存数据、块设备SDL用于处理从所述缓存设备转发来的读请求。当***接收用户的读请求时,块设备SDU将对于不是本地数据的读请求转发到前一个时间点的块设备SDU;而对于本地数据的读请求则由块设备SDL从存储设备中读出并返回给缓存设备用以缓存。缓存设备只缓存本地存储的数据,从而解决了缓存资源冗余的问题。
Description
技术领域
本发明涉及快照技术领域,具体涉及一种块级快照***及基于该***的用户读写方法。
背景技术
根据存储网络工业协会(SNIA)的定义,快照(Snapshot)是关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点的映像。
随着快照技术日益成熟,目前国内外出现了众多的快照***和原型***,包括linux内核自带的LVM(逻辑卷管理,Logical Volume Manager)快照,EMC的TimeFinder、IBM的ESS FlashCopy、或者Netapp的WAFL快照等等。在这些快照产品或者原型***中,快照设备和源设备都是以虚拟设备的方式供用户使用的。快照设备本质上提供了源设备中数据的另外一条访问路径。在传统的块设备级快照(块级快照)中,一个快照设备通常只对应一个块级设备,源设备和快照设备共用同一个缓存,因而当用户同时从源设备和快照设备访问共享数据时,便会在缓存中冗余存放多份数据。缓存冗余意味着缓存资源的浪费,进而影响***的存储性能。
图1A给出了LVM快照***的示意图,LVM是linux***自带的管理磁盘分区的***,该***虽支持快照但它的快照会产生缓存冗余问题:在某一时刻创建只读快照后,源和只读快照共享物理空间中的数据块1、2和3(如图1A所示)。在图1B所示的实施例中,当用户从源和只读快照读取数据块2时,数据块2便会在缓存中存放2份,从而产生缓存冗余问题。
发明内容
针对传统块设备级快照中的缓存冗余问题,本发明提供一种与缓存配合的块级快照***(CGSS,General Snapshot System With Cache)以及基于该***的用户读写方法。
根据本发明一个实施例,提供一种块级快照***,包括由源设备以及一个或多个快照设备形成的快照设备链,所述源设备和所述快照设备中包括缓存设备、一对块设备SDU和SDL,以及存储设备。其中所述块设备SDU用于接受并处理用户对所述***的读写请求;所述缓存设备用于处理从所述块设备SDU转发来的用户的读写请求且用于缓存数据;所述块设备SDL用于处理从所述缓存设备转发来的用户的读请求;所述源设备或快照设备还具有用于指示数据状态的映射元数据;所述映射元数据用于反映数据的三种状态:数据全部不在本地、数据全部在本地、数据部分在本地;所述块设备SDU还用于查询和修改所述映射元数据。
在一个实施例中,所述源设备位于所述快照设备链的头部,且其数据依赖设备为最新的一个时间点的快照设备;所述快照设备的数据依赖设备为前一个时间点的快照设备。
在一个实施例中,所述缓存设备还用于向本地块设备SDL发送数据预取请求,所述块设备SDL还用于查询本地映射元数据,且处理缓存设备发送来的数据预取请求。
在进一步的实施例中,所述缓存设备向本地块设备SDL发送数据预取请求包括:缓存设备启动数据预取,并且将数据预取请求转发给本地块设备SDL。
根据本发明一个实施例,提供一种基于上述块级快照***处理用户读请求的方法,包括:
步骤11)、块设备SDU接收所述读请求;
步骤12)、块设备SDU查询本地映射元数据,判断用户所请求的数据是否在本地;
步骤13)、对在本地的数据的读请求,转向步骤14);对不在本地的数据的读请求,则判断在所述快照设备链中是否还存在前一个时间点的快照设备:
如果存在,则将对不在本地的数据的读请求转发给前一个时间点的快照设备的块设备SDU,该前一个时间点的块设备SDU通过查询其本地映射元数据判断所请求的数据是否在本地,重复步骤13);
如果不存在,则将不在本地的数据补0,转向步骤15);
步骤14)、快设备SDU将对在本地的数据的读请求转发给本地的缓存设备,如果所请求的数据已在该缓存设备中缓存,则该缓存设备将该数据返回给所述块设备SDU;否则,所述缓存设备将读请求转发给本地块设备SDL,本地块设备SDL从本地存储设备读取该数据并返回给缓存设备,由缓存设备进行缓存且将该数据返回给所述块设备SDU;
步骤15)、当块设备SDU接收的是后一个时间点的快照设备的块设备SDU转发来的读请求时,则将数据返回该后一个时间点的快照设备的块设备SDU;否则将数据返回给用户。
根据本发明一个实施例,提供一种基于上述块级快照***处理用户写请求的方法,包括:
步骤21)、块设备SDU接收用户的写请求;
步骤22)、块设备SDU将数据写入本地快照设备的缓存设备,且根据数据是否对齐标记该数据块的状态,修改映射元数据。
根据本发明一个实施例,提供一种基于上述块级快照***由块设备SDL查询本地映射元数据并处理缓存设备发送来的数据预取请求的方法,包括:
步骤31)、查询本地映射元数据,判断数据是否在本地;
步骤32)、处理数据预取请求:
对于在本地的数据,将对该数据的数据预取请求转发给本地缓存设备,转向步骤33);对于不在本地的数据,判断在所述快照设备链中是否还存在前一个时间点的快照设备:
如果存在,则将对不在本地的数据的数据预取请求转发给前一个时间点的快照设备的块设备SDU,该前一个时间点的块设备SDU查询其本地映射元数据,重复步骤32);
如果不存在,则不作处理,跳过步骤33);
步骤33)、本地缓存设备将对于在本地的数据的读请求转发到本地块设备SDL,再由本地块设备SDL从本地存储设备读取数据并返回到缓存设备进行缓存。
根据本发明一个实施例,提供一种基于上述块级快照***创建只读快照设备的方法,包括:
步骤a1)在所述***中依次注册新的块设备SDU、块设备SDL、缓存设备和存储设备,构成新快照设备;
步骤a2)、静默源设备的块设备SDU及块设备SDL;
步骤a3)、交换源设备和新快照设备的缓存设备、存储设备和映射元数据;
步骤a4)、将新快照设备***所述***的快照设备链;
步骤a5)、恢复源设备的块设备SDU和SDL。
在进一步的实施例中,步骤a4)包括:
步骤a41)、将新快照设备的数据依赖设备设置为源设备的数据依赖设备;
步骤a42)、将源设备的数据依赖设备设置为新快照设备。
根据本发明一个实施例,提供一种基于上述块级快照***根据指定的只读快照设备创建可写快照设备的方法,包括:
步骤b1)、在所述***中依次注册新的块设备SDU、块设备SDL、缓存设备和存储设备,构成新快照设备;
步骤b2)、将新快照设备的数据依赖设备设置为所述指定的只读快照设备。
根据本发明一个实施例,提供一种基于上述块级快照***删除只读快照设备的方法,包括:
步骤c1)、查询要删除的快照设备的映射元数据,选择数据状态为数据全部在本地的数据作为要迁移的数据;
步骤c2)、判断是否存在该前一个时间点的快照设备:
如果存在,并且该前一个时间点的快照设备为正常状态以及该前一个时间点的快照设备中对应要迁移的数据的数据状态为数据全部不在本地,则将要迁移的数据迁移到该前一个时间点的快照设备;否则,继续寻找前一个时间点的快照设备,重复步骤c2);
如果不存在,则将要迁移的数据迁移到源设备。
在进一步的实施例中,步骤c1)前还包括:步骤c0)、删除要删除的快照设备的块设备SDU;步骤c2)后还包括:步骤c3)、删除要删除的快照设备的缓存设备、块设备SDL和存储设备。
在进一步的实施例中,步骤c3)后还包括:步骤c4)、将原本数据依赖设备为要删除的快照设备的快照设备或源设备的数据依赖设备设置为要删除的快照设备原本的数据依赖设备。
根据本发明一个实施例,提供一种基于上述块级快照***删除可写快照设备的方法,包括:删除要删除的快照设备的块设备SDU、缓存设备、块设备SDL和存储设备。
相对于现有技术,本发明解决了缓存资源冗余的问题,提高了缓存的利用率,且进一步提高了***的存储性能。
附图说明
图1A-1B示出了一种LVM快照***以及从该LVM快照***读取数据时存在的缓存冗余问题的示意图;
图2示出了根据本发明一个实施例的块级快照***的结构图;
图3示出了根据本发明一个实施例的用户读取块级快照设备中数据的示意图;
图4示出了根据本发明一个实施例的块级快照设备中缓存设备进行数据预取的示意图;
图5A-5B示出了根据本发明一个实施例的在块级快照***中分别创建和删除只读快照设备的示意图;
图6A-6B示出了根据本发明一个实施例的在块级快照***中分别创建和删除可写快照设备的示意图。
具体实施方式
以下结合附图和具体实施方式对本发明加以说明。
根据本发明的一个实施例,提供一种块级快照***(CGSS)。图2示出了该块级快照***的结构图,该***包括:由源设备以及一个或多个快照设备形成的快照设备链。在一个实施例中,源设备位于快照设备链的头部,其数据依赖设备为最新的一个时间点的快照设备;而其他快照设备的数据依赖设备都为前一个时间点的快照设备(其中,对于采用差别复制快照技术的每一时间点的快照设备或者源设备来说,它的数据集由两部分构成:本地数据以及数据依赖设备上的数据)。
源设备和每个快照设备包括:缓存设备、块设备SDU、块设备SDL,以及底层的存储设备。其中,块设备SDU用于接收并处理用户的读写请求;缓存设备用于处理从块设备SDU转发来的读写请求且可以用于缓存数据;块设备SDL可以用于处理从缓存设备转发来的请求。
源设备和每个快照设备中还具有其自身的映射元数据(本地元数据),该映射元数据用于指示数据状态,即数据是否在本地(本地指本级快照设备)。当用户对源设备或快照设备的块设备SDU请求读数据时,块设备SDU通过查询本级快照的映射元数据来判断该数据是否在本地(数据是否存在于本地的缓存中或本地存储设备中),进而进一步处理该读请求;当用户对源设备或快照设备的块设备SDU请求写数据时,对于该写入还需相应地修改映射元数据,以指示写入后的数据状态。根据本发明一个实施例,在CGSS***中,每个数据块表示一段固定长度的逻辑地址范围,映射元数据用于反映该数据块的三种状态:数据全部不在本地(NONE_IN_LOCAL),数据全部在本地(ALL_IN_LOCAL)或者数据部分在本地(PART_IN_LOCAL)。其中,数据全部在本地指:数据就存储在本级快照设备中,可以直接从本级快照设备读取该数据;数据全部不在本地指:数据存储在快照设备链上的其它快照设备上或者不存在,这样如果从本级快照设备读该数据,只能一级一级地从快照链上去读取。
在一个实施例中,映射元数据可采用诸如基树(radix-tree)的数据结构,而在另一个实施例中,可以将状态为“数据全部不在本地”,和“数据全部在本地”的数据块的映射元数据压缩到位图(bitmap)以节省存储空间,即用bit位来标记某个元素对应的值,而Key即是该元素。即,用1表示“数据全部在本地”;用0表示“数据全部不在本地”;而“数据部分在本地”仍然可以由radix-tree结构来表示。
CGSS***中,由源设备或快照设备中的块设备SDU接收用户的读写请求。在一个实施例中,当CGSS***处理用户对源设备或快照设备的读数据请求时,过程如下:
步骤1)、由源设备或快照设备中的块设备SDU接收该用户的读请求。
步骤2)、块设备SDU查询其所属的快照设备(本地)的映射元数据,判断用户所请求的数据是否在本地。
步骤3)、如果所请求的数据全部或部分在本地,则将在本地的数据从本地读出;如果所请求的数据全部不在本地或部分不在本地,则判断在快照设备链中是否还存在本地快照设备的前一个时间点的快照设备:
如果存在,则将对不在本地的数据的读请求转发给前一个时间点的快照设备的块设备SDU,该前一个时间点的块设备SDU通过查询其本地映射元数据判断所请求的数据是否在本地,重复步骤3);
如果不存在,则将不在本地的数据补0并由本地块设备SDU返回。
根据本发明的一个实施例,在步骤3)中,将在本地的数据从本地读出包括:
块设备SDU将所述读请求转发给本地的缓存设备,如果所请求的数据已在该缓存设备中缓存,则该缓存设备将该数据返回给所述块设备SDU;否则,所述缓存设备将读请求转发给本地块设备SDL,本地块设备SDL从本地存储设备读取该数据并返回给缓存设备,缓存设备进行缓存且将该数据返回给所述块设备SDU;
当该块设备SDU接收的是后一个时间点的快照设备的块设备SDU转发来的读请求时,则将数据返回后一个时间点的快照设备的块设备SDU;否则将数据直接返回给用户。
由此可见,在从存储设备中读取数据再将数据返回的过程中,该数据只经过一个缓存设备(该存储设备的本地缓存设备)。因而只可能在这个缓存设备中进行缓存,以避免缓存冗余。
图3描述了根据本发明的一个实施例、由CGSS***处理用户读请求的流程图。在该实施例中,用户可以分别从源设备和快照设备1(即只读快照1)中读取数据块1,且该数据块1存储在快照设备1的存储设备中,该读取分为如下两个过程:
a)当用户从快照设备1读取数据块1,其步骤如下:
1)快照设备1的块设备SDU接收对数据块1的读请求,查询其所属的快照设备的映射元数据;
2)通过查询映射元数据,发现数据块1在本地,则将该读请求转发给本地缓存设备,缓存设备再将该读请求转发给本地块设备SDL;
3)块设备SDL从本地存储设备中读出数据块1,返回给本地缓存设备,本地缓存设备缓存该数据块1,接着缓存设备将数据块1返回给块设备SDU,最后由块设备SDU将数据块1返回给用户。
这一过程完成后(其中数据返回过程为:快照设备1的底层存储设备->快照设备1的块设备SDL–>快照设备1的缓存设备->快照设备1的块设备SDU->用户),数据块1只会在快照设备1的缓存设备中缓存一份。
b)当用户从源设备读取数据块1,其步骤如下:
1)源设备的块设备SDU接收对数据块1的读请求,查询其所属的快照设备(本地)的映射元数据;
2)通过查询映射元数据,发现数据块1不在本地,接着源设备的块设备SDU将该读请求转发到快照设备链上的前一个时间点的快照设备(即快照设备1),快照设备1中的块设备SDU接收对数据块1的读请求,查询其所属的快照设备(本地)的映射元数据;
3)快照设备1中的块设备SDU通过查询映射元数据,发现数据块1在本地,则将该读请求转发给本地缓存设备,缓存设备再将该读请求转发给本地块设备SDL;
4)快照设备1的块设备SDL从本地存储设备中读出数据块1,返回给本地缓存设备,本地缓存设备缓存该数据块1,接着缓存设备将数据块1返回给本地块设备SDU,该快照设备1的块设备SDU继而将数据块1返回给源设备的块设备SDU,最后由源设备的块设备SDU将数据块1返回给用户。
这一过程完成后(其中数据返回过程为:快照设备1的底层存储设备->快照设备1的块设备SDL–>快照设备1的缓存设备->快照设备1的块设备SDU->源设备的块设备SDU->用户),由于数据块1并不经过源设备的缓存设备,因而也只会在快照设备1的缓存设备中缓存一份。
由此可见,用户无论从源设备或者从快照设备1访问数据块1,都只会在快照设备1的缓存设备中缓存该数据,而不会产生缓存冗余。
根据本发明的一个实施例,用户向CGSS***中的写入数据请求包括如下步骤:
步骤1)、源设备或者快照设备的块设备SDU接收用户的写请求;
步骤2)、块设备SDU将数据写入本地快照设备的缓存设备,且块设备SDU根据数据是否对齐标记该数据块的状态(数据全部在本地或数据部分在本地)。
根据本发明的一个实施例,缓存设备还用于向本地块设备SDL发送数据预取请求以提高缓存的命中率,块设备SDL还用于查询本地映射元数据,以支持缓存设备的数据预取。该缓存设备的数据预取过程包括如下步骤:
步骤1)、数据预取发起阶段
缓存设备启动数据预取,确定数据预取的范围,并且将数据预取请求转发给本地块设备SDL。
例如,当块设备SDL提供prefetch函数时,缓存设备通过调用该prefetch函数将相关部分(确定了范围的)的数据预取请求发送给块设备SDL。在其他示例中,当块设备SDL没有提供prefetch函数时,缓存设备分配缓存资源、构造相应的数据预取bio请求,并将该bio请求发送给块设备SDL。
步骤2)、数据预取处理阶段
块设备SDL查询本地映射元数据,以确定缓存设备的数据预取请求所请求的数据是否对应本地快照设备(即数据是否在本地),根据数据是否在本地对请求进行调整和分解:
对于本地直接拥有的数据部分(数据状态为ALL_IN_LOCAL或PART_IN_LOCAL),将对该数据部分的数据预取请求转发给本地缓存设备,本地缓存设备通过本地块设备SDL将该数据部分从本地存储设备读取到本地缓存设备进行缓存;
否则(即数据状态为NONE_IN_LOCAL或者PART_IN_LOCAL的不在本地的数据部分),将数据预取请求转发给快照设备链中前一个时间点的快照设备的块设备SDU(如果存在前一个时间点快照设备),如果前一个时间点快照设备的存储设备存在该预取请求的数据,则将该数据读取到该前一个时间点的快照设备的缓存设备;如果不存在该数据则继续将请求转发到前一个时间点的快照设备的块设备SDU(如果存在)并判断是否需要读取或转发,依此类推。
图4描述了根据本发明一个实施例的、由缓存设备进行数据预取过程的示意图,其中由源设备的缓存设备发起对数据{block1,block2}的预取过程,数据块block1存储在源设备的存储设备中,而数据块block2存储在快照设备1(只读快照1)的存储设备中。该数据预取过程如下:
1)、源设备的块设备SDL接收到其缓存设备对数据{block1,block2}的数据预取请求。
2)、块设备SDL查询其所属的快照设备的映射元数据,可以知道数据块block1在本地,而数据块block2不在本地。
3)块设备SDL将对block1的预取请求转发给源设备中的缓存设备,而将对block2的预取请求转发给快照设备1的块设备SDU。
4)源设备的缓存设备收到对block1的预取请求后,生成数据请求,通过块设备SDL将block1从本地存储设备读到源设备的缓存设备中;
快照设备1的处理类似于源设备的处理,最终block2会被读到快照设备1的缓存设备中。
这样,源设备和快照设备1都只缓存了本地快照设备的数据,从而实现了精确缓存预取。
根据本发明的一个实施例,提供一种CGSS***的实现方法,包括:快照设备的创建以及快照设备的删除,以下将分别描述这些步骤。
一.只读快照设备的创建
根据本发明一个实施例,只读快照设备维护某一时间点的源设备数据集的完全拷贝,因此在创建只读快照设备时,用户需要静默源设备,即:对源设备中块设备SDU的所有写操作都要被挂起。同时,为了保证数据正确性以及简化内部的数据处理逻辑,缓存设备对块设备SDL的所有写操作(***内部操作)也需要被挂起。
在一个实施例中,采用交换源设备与快照设备的数据设备的方法来创建只读快照设备。同时由于***中还需要维护映射元数据,因此还需要交换源设备和快照设备的映射元数据。对于CGSS快照***来说,其数据设备包括缓存设备和存储设备。因此在创建只读快照时,需要将缓存设备和存储设备以及映射元数据作为一个整体来对源设备和只读快照设备进行交换。
在一个实施例中,只读快照设备的具体创建流程如下:
1)在***中依次注册一个新的块设备SDU,块设备SDL,缓存设备以及存储设备,构成一个新的快照设备。
2)静默源设备的块设备SDU以及块设备SDL,此时它们不接受新的用户请求。
3)交换源设备和新的快照设备的缓存设备、存储设备以及映射元数据(源设备和快照设备在内存中都有结构描述其缓存设备、存储设备,以及映射元数据,交换就是把源设备和快照设备的这些对应结构交换)。
在一个实施例中,交换源设备和新的快照设备的缓存设备可以包括交换新的只读快照设备SDU和源设备SDU的指针等。
4)将新的快照设备******的快照设备链,将源设备设为该快照设备。
图5A示出了将新的只读快照设备2***快照设备链的一个实施例。在***新的只读快照设备2之前,源设备的“数据依赖设备”(即前一个时间点的快照设备)为只读快照设备1;在创建新的只读快照设备2之后,将源设备的数据依赖设备设置为只读快照设备2,而将只读快照设备2的数据依赖设备设置为只读快照设备1。
5)恢复源设备的块设备SDU以及块设备SDL,此时它们可以重新接受用户请求。
应理解,上述步骤仅是示例性地说明创建只读快照设备的过程,并非用于限制该创建过程。
二.只读快照设备的删除
根据本发明一个实施例,在删除只读快照设备时,可以将其上的数据迁移到前一个时间点的快照设备上,具体步骤如下:
1)依次查询要删除的快照设备中每一个数据块对应的映射元数据,将数据状态为“数据全部在本地”的数据块进行迁移;
2)是否往前一个时间点的快照设备迁移数据需要判断下面两个条件:
a)前一个时间点的快照设备的状态不能为删除状态(每一个快照设备的内存结构中都有一个成员用来表示该快照设备的状态),应为正常(normal)状态;
b)前一个时间点的快照设备所对应的数据块(对应于要删除的快照设备中,数据块状态为“数据全部在本地”的数据块)的数据状态为“数据全部不在本地”;
如果上面两个条件有一个不满足,则继续寻找前一个时间点的快照设备,寻找到之后(即存在前一个时间的快照设备),重复判断过程2)。
如果寻不到前一个时间点的快照设备,就把数据迁移到源设备;
如果找到满足上述两个条件a)、b)的前一个时间点的快照设备,则将数据迁移到该快照设备。
3)迁移结束后,将需要删除的快照设备上所迁移的数据块的数据状态设置为“数据全部不在本地”,表示数据已经迁移完毕。
在进一步的实施例中,在将数据进行迁移前,首先删除该快照设备的块设备SDU,在数据迁移完毕后,删除该快照设备的其余部分(即缓存设备、块设备SDL和存储设备)。
图5B描述了根据本发明一个实施例的删除只读快照设备的示意图。其中,在删除只读快照设备2之前,源设备的数据依赖设备(前一个时间点的快照设备)为只读快照设备2,而只读快照2的数据依赖设备为只读快照设备1;只读快照1为满足上述迁移条件a)和b)的前一个时间点的快照设备,则在进行数据迁移以及删除只读快照设备2中的块设备SDU、缓存设备、块设备SDL和存储设备之后,源设备1的数据依赖设备为只读快照设备1。
三.可写快照设备的创建
创建可写快照时需依赖只读快照,图6A示出了根据只读快照设备创建可写快照设备的实施例。其中,在创建可写快照设备1之前,源设备的数据依赖设备为只读快照设备1;创建新的可写快照设备1后(该创建过程可与上述只读快照的创建步骤1)类似,即在***中依次注册一个新的块设备SDU,块设备SDL,缓存设备以及存储设备,构成一个新的快照设备),将可写快照1的数据依赖设备设置为只读快照设备1(指定的只读快照设备)。
四.可写快照设备的删除
图6B示出了删除可写快找设备的实施例。其中,源设备与可写快照设备1的数据依赖设备为只读快照设备1,在删除可写快照设备1之后(删除该可写快照设备的块设备SDU、缓存设备、块设备SDL以及存储设备),只有源设备的数据依赖设备为只读快照设备1。
应该注意到并理解,在不脱离后附的权利要求所要求的本发明的精神和范围的情况下,能够对上述详细描述的本发明做出各种修改和改进。因此,要求保护的技术方案的范围不受所给出的任何特定示范教导的限制。
Claims (14)
1.一种块级快照***,包括由源设备以及一个或多个快照设备形成的快照设备链,所述源设备和所述快照设备中包括缓存设备、一对块设备SDU和SDL,以及存储设备,其中
所述块设备SDU用于接受并处理用户对所述***的读写请求;其中,将对在本地的数据的读请求转发给所述缓存设备;如果存在前一个时间点的快照设备,则将对不在本地的数据的读请求转发给前一个时间点的快照设备的块设备SDU;
所述缓存设备用于处理从所述块设备SDU转发来的用户的读写请求且用于缓存数据;其中,针对所述块设备SDU转发来的对在本地的数据的读请求,如果所请求的数据已在所述缓存设备中缓存,则所述缓存设备将该数据返回给所述块设备SDU;否则,所述缓存设备将读请求转发给所述块设备SDL,所述块设备SDL从所述存储设备读取该数据并返回给所述缓存设备,由所述缓存设备进行缓存且将该数据返回给所述块设备SDU;
所述块设备SDL用于处理从所述缓存设备转发来的用户的读请求;
所述源设备或快照设备还具有用于指示数据状态的映射元数据;所述映射元数据用于反映数据的三种状态:数据全部不在本地、数据全部在本地、数据部分在本地;所述块设备SDU还用于查询和修改所述映射元数据。
2.根据权利要求1所述的***,其中所述源设备位于所述快照设备链的头部,且其数据依赖设备为最新的一个时间点的快照设备;所述快照设备的数据依赖设备为前一个时间点的快照设备。
3.根据权利要求1或2所述的***,其中所述***中的缓存设备还用于向本地块设备SDL发送数据预取请求,所述块设备SDL还用于查询本地映射元数据,且处理缓存设备发送来的数据预取请求。
4.根据权利要求3所述的***,其中缓存设备向本地块设备SDL发送数据预取请求包括:
缓存设备启动数据预取,并且将数据预取请求转发给本地块设备SDL。
5.一种基于权利要求1或2所述的***处理用户读请求的方法,包括:
步骤11)、块设备SDU接收所述读请求;
步骤12)、块设备SDU查询本地映射元数据,判断用户所请求的数据是否在本地;
步骤13)、对在本地的数据的读请求,转向步骤14);对不在本地的数据的读请求,则判断在所述快照设备链中是否还存在前一个时间点的快照设备:
如果存在,则将对不在本地的数据的读请求转发给前一个时间点的快照设备的块设备SDU,该前一个时间点的块设备SDU通过查询其本地映射元数据判断所请求的数据是否在本地,重复步骤13);
如果不存在,则将不在本地的数据补0,转向步骤15);
步骤14)、快设备SDU将对在本地的数据的读请求转发给本地的缓存设备,如果所请求的数据已在该缓存设备中缓存,则该缓存设备将该数据返回给所述块设备SDU;否则,所述缓存设备将读请求转发给本地块设备SDL,本地块设备SDL从本地存储设备读取该数据并返回给缓存设备,由缓存设备进行缓存且将该数据返回给所述块设备SDU;
步骤15)、当块设备SDU接收的是后一个时间点的快照设备的块设备SDU转发来的读请求时,则将数据返回该后一个时间点的快照设备的块设备SDU;否则将数据返回给用户。
6.一种基于权利要求1或2所述的***处理用户写请求的方法,包括:
步骤21)、块设备SDU接收用户的写请求;
步骤22)、块设备SDU将数据写入本地快照设备的缓存设备,且根据数据是否对齐标记该数据块的状态,修改映射元数据。
7.一种基于权利要求3或4所述的***由块设备SDL查询本地映射元数据并处理缓存设备发送来的数据预取请求的方法,包括:
步骤31)、查询本地映射元数据,判断数据是否在本地;
步骤32)、处理数据预取请求:
对于在本地的数据,将对该数据的数据预取请求转发给本地缓存设备,转向步骤33);对于不在本地的数据,判断在所述快照设备链中是否还存在前一个时间点的快照设备:
如果存在,则将对不在本地的数据的数据预取请求转发给前一个时间点的快照设备的块设备SDU,该前一个时间点的块设备SDU查询其本地映射元数据,重复步骤32);
如果不存在,则不作处理,跳过步骤33);
步骤33)、本地缓存设备将对于在本地的数据的读请求转发到本地块设备SDL,再由本地块设备SDL从本地存储设备读取数据并返回到缓存设备进行缓存。
8.一种基于权利要求1-4中任何一个所述的***创建只读快照设备的方法,包括:
步骤a1)在所述***中依次注册新的块设备SDU、块设备SDL、缓存设备和存储设备,构成新快照设备;
步骤a2)、静默源设备的块设备SDU及块设备SDL;
步骤a3)、交换源设备和新快照设备的缓存设备、存储设备和映射元数据;
步骤a4)、将新快照设备***所述***的快照设备链;
步骤a5)、恢复源设备的块设备SDU和SDL。
9.根据权利要求8所述的方法,其中步骤a4)包括:
步骤a41)、将新快照设备的数据依赖设备设置为源设备的数据依赖设备;
步骤a42)、将源设备的数据依赖设备设置为新快照设备。
10.一种基于权利要求1-4中任何一个所述的***根据指定的只读快照设备创建可写快照设备的方法,包括:
步骤b1)、在所述***中依次注册新的块设备SDU、块设备SDL、缓存设备和存储设备,构成新快照设备;
步骤b2)、将新快照设备的数据依赖设备设置为所述指定的只读快照设备。
11.一种基于权利要求1-4中任何一个所述的***删除只读快照设备的方法,包括:
步骤c1)、查询要删除的快照设备的映射元数据,选择数据状态为数据全部在本地的数据作为要迁移的数据;
步骤c2)、判断是否存在该前一个时间点的快照设备:
如果存在,并且该前一个时间点的快照设备为正常状态以及该前一个时间点的快照设备中对应要迁移的数据的数据状态为数据全部不在本地,则将要迁移的数据迁移到该前一个时间点的快照设备;否则,继续寻找前一个时间点的快照设备,重复步骤c2);
如果不存在,则将要迁移的数据迁移到源设备。
12.根据权利要求11所述的方法,其中在步骤c1)前还包括:
步骤c0)、删除要删除的快照设备的块设备SDU;
在步骤c2)后还包括:
步骤c3)、删除要删除的快照设备的缓存设备、块设备SDL和存储设备。
13.根据权利要求12所述的方法,其中在步骤c3)后还包括:
步骤c4)、将原本数据依赖设备为要删除的快照设备的快照设备或源设备的数据依赖设备设置为要删除的快照设备原本的数据依赖设备。
14.一种基于权利要求1-4中任何一个所述的***删除可写快照设备的方法,包括:
删除要删除的快照设备的块设备SDU、缓存设备、块设备SDL和存储设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310005883.0A CN103077099B (zh) | 2013-01-08 | 2013-01-08 | 一种块级快照***及基于该***的用户读写方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310005883.0A CN103077099B (zh) | 2013-01-08 | 2013-01-08 | 一种块级快照***及基于该***的用户读写方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103077099A CN103077099A (zh) | 2013-05-01 |
CN103077099B true CN103077099B (zh) | 2015-09-30 |
Family
ID=48153632
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310005883.0A Active CN103077099B (zh) | 2013-01-08 | 2013-01-08 | 一种块级快照***及基于该***的用户读写方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103077099B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445798B (zh) * | 2015-08-04 | 2019-11-08 | 阿里巴巴集团控股有限公司 | 一种数据处理方法和设备 |
CN106919471B (zh) * | 2015-12-25 | 2020-03-20 | 中国电信股份有限公司 | 用于快照建立的方法和*** |
CN106569738B (zh) | 2016-09-30 | 2019-11-29 | 华为技术有限公司 | 一种删除级联快照的方法及装置 |
CN107329908A (zh) * | 2017-07-07 | 2017-11-07 | 联想(北京)有限公司 | 一种数据处理方法和电子设备 |
CN111913664B (zh) * | 2020-07-30 | 2022-04-19 | 杭州宏杉科技股份有限公司 | 一种数据写入方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6636906B1 (en) * | 2000-04-28 | 2003-10-21 | Hewlett-Packard Development Company, L.P. | Apparatus and method for ensuring forward progress in coherent I/O systems |
CN101140536A (zh) * | 2007-05-21 | 2008-03-12 | 中兴通讯股份有限公司 | 一种支持级联快照的快照***及其快照处理方法 |
-
2013
- 2013-01-08 CN CN201310005883.0A patent/CN103077099B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6636906B1 (en) * | 2000-04-28 | 2003-10-21 | Hewlett-Packard Development Company, L.P. | Apparatus and method for ensuring forward progress in coherent I/O systems |
CN101140536A (zh) * | 2007-05-21 | 2008-03-12 | 中兴通讯股份有限公司 | 一种支持级联快照的快照***及其快照处理方法 |
Non-Patent Citations (3)
Title |
---|
《BW_VSDS_大容量_可扩展__省略_性能和高可靠性的网络虚拟存储***》;许鲁等;《计算机研究与发展》;20091231;第93页,图3 * |
《SonD***中虚拟存储设备共享Cache方法的设计_尹洋》;许鲁等;《计算机工程》;20070731;第33卷(第13期);第52-55页,图3 * |
《蓝鲸SonD动态服务部署***》;许鲁等;《计算机学报》;20050731;第28卷(第7期);第1113-1114页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103077099A (zh) | 2013-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9582421B1 (en) | Distributed multi-level caching for storage appliances | |
JP6356675B2 (ja) | 集約/グループ化動作:ハッシュテーブル法のハードウェア実装 | |
KR102177190B1 (ko) | 유연한 스키마를 사용한 데이터 관리 | |
US10055349B2 (en) | Cache coherence protocol | |
US11593272B2 (en) | Method, apparatus and computer program product for managing data access | |
CN103077099B (zh) | 一种块级快照***及基于该***的用户读写方法 | |
CN110119425A (zh) | 固态驱动器、分布式数据存储***和利用键值存储的方法 | |
CN110321325A (zh) | 文件索引节点查找方法、终端、服务器、***及存储介质 | |
US20160294693A1 (en) | Routing Lookup Method and Device, and Construction Method for B-tree Structure | |
US20130254240A1 (en) | Method of processing database, database processing apparatus, computer program product | |
CN110008738B (zh) | 用于区块链合约数据的缓存方法、装置、介质和计算设备 | |
US10552371B1 (en) | Data storage system with transparent presentation of file attributes during file system migration | |
CN107329704A (zh) | 一种缓存镜像方法及控制器 | |
CN103559319A (zh) | 分布式集群文件***的缓存同步方法和设备 | |
CN103942301B (zh) | 一种面向多数据类型访问应用的分布式文件*** | |
US10860480B2 (en) | Method and device for cache management | |
CN104423982A (zh) | 请求的处理方法和处理设备 | |
KR20170099351A (ko) | 파일 시스템 인터페이스를 통해 키-밸류 장치로의 고속 캐시 가능한 접근을 제공하는 방법들 및 시스템 | |
US11099998B2 (en) | Method and device for optimization of data caching | |
CN117120998A (zh) | 用于读取树数据结构中保存的数据的方法和装置 | |
KR101806394B1 (ko) | 모바일 dbms환경에서 트랜잭션에 특화된 색인 캐시의 구조를 갖는 데이터 처리 방법 | |
US10055139B1 (en) | Optimized layout in a two tier storage | |
JP2014137814A (ja) | データ削減方法および装置 | |
JP2006164218A (ja) | ストレージシステム及びそのキャッシュ制御方法 | |
US11586353B2 (en) | Optimized access to high-speed storage device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |