CN115033174A - 写时重定向快照实现方法、装置、设备及存储介质 - Google Patents
写时重定向快照实现方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115033174A CN115033174A CN202210586495.5A CN202210586495A CN115033174A CN 115033174 A CN115033174 A CN 115033174A CN 202210586495 A CN202210586495 A CN 202210586495A CN 115033174 A CN115033174 A CN 115033174A
- Authority
- CN
- China
- Prior art keywords
- data
- version number
- snapshot
- snapshot version
- data 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种写时重定向快照实现方法、装置、设备及存储介质,用于解决存储系统的快照性能问题。本发明通过数据分布位图记录不同快照版本写入数据的分布情况,通过地址映射表记录不同快照版本中用户空间地址与磁盘空间地址的映射关系,在读数据时只需根据数据分布位图即可获得快照版本的数据视图,再通过地址映射表即可快速获得用户数据存放的磁盘地址,无需回溯在先的快照版本的元数据。本发明提高了存储系统的快照性能。
Description
技术领域
本发明涉及存储技术领域,尤其涉及一种写时重定向快照实现方法、装置、设备及存储介质。
背景技术
当前主流的快照实现方式有两种,一种是拷贝写(Copy On Write,COW),即打完快照后,在数据第一次写到某个存储位置时,首先将原有的内容读取出来,写到快照空间,再将数据写入原存储位置。由此可以看出,1次写IO操作,将会放大为1次读,2次写,极大影响了存储写性能。
另一种是重定向写(Redirect On Write,ROW),即打完快照后,将写操作重新定向到另一个存储空间中。在一个快照生成期间,所有的写操作将被快照管理模块重定向到另一个介质,而读操作是否需要读重定向,则需要根据读取的位置是否有过自上次快照以来的写重定向来确定,必须对有过写重定向的位置进行读重定向,否则不需要进行读重定向。由此可以看出,打快照后的写操作不会有性能损耗,但读操作需要多次寻址,导致读性能变差。
通过对比可以得出,COW快照机制的优势在于读性能较好,但缺点也很明显,即写性能损耗很大;相反的,ROW快照机制解决了写放大问题,但牺牲了读性能。如何同时获得较好的读写性能,以及快照生命周期涉及的删除、回滚性能,成为了业界亟待解决的问题。
发明内容
有鉴于此,本发明提供一种写时重定向快照实现方法、装置、设备及存储介质,用于解决存储系统的快照性能问题。
基于本发明实施例的一方面,本发明提供了一种写时重定向快照实现方法,该方法包括:
在创建快照时,为每个快照版本号关联一个数据分布位图,数据分布位图用于记录关联的快照版本号的数据块写入数据的分布情况;
在写入数据时,通过地址映射表记录当前的快照版本号以及写入数据的数据块号与磁盘空间地址的映射关系,并同步更新当前的快照版本号关联的数据分布位图。
进一步地,所述方法还包括读取指定快照版本号的数据的步骤:
获取指定快照版本号的数据视图,所述数据视图用于呈现指定快照版本的有效数据块在历史快照版本中的分布情况;
根据数据视图中每个数据块的数据块号、数据块号所依赖的快照版本号查询地址映射表得到数据视图中每个数据块映射的磁盘空间地址;
从得到的磁盘空间地址中读取数据。
进一步地,所述方法还包括删除指定快照版本号的步骤:
获取所述指定快照版本号的数据视图;
确定待删除的指定快照版本号的数据视图中不被其它快照版本依赖的待删除数据块;
基于待删除数据块的快照版本号、数据块号查询地址映射表得到待删除数据块映射的磁盘空间地址;
删除待删除数据块的磁盘数据并同步更新待删除数据块的数据分布位图。
进一步地,所述获取指定快照版本号的数据视图的方法为:
获取指定快照版本号之前的历史快照版本号的数据分布位图;
以最近写入原则确定所述指定快照版本号关联的数据块所依赖的快照版本号;
根据依赖的快照版本号、数据块号得到指定快照版本号的数据视图。
进一步地,在分布式对象存储系统中,每个存储对象都建立地址映射表和数据分布位图,对象内部地址映射表用于记录存储对象所管理的所有数据块与磁盘空间地址的映射关系;对象内部数据分布位图用于记录存储对象所管理的所有数据块的写入数据分布情况;
在写入数据时,将存储对象中数据块号与磁盘空间地址的映射关系同步记录到存储引擎能直接访问的地址映射库中。
进一步地,在创建快照时,存储对象通过写操作携带的新快照版本号感知新快照版本的创建,在存储对象中创建新快照版本号关联的数据分布位图。
基于本发明实施例的另一方面,本发明还提供一种写时重定向快照实现装置,该装置可以软件和/或硬件模式实现于计算设备和/或存储介质当中,该装置包括:
地址映射表,用于记录快照版本号以及数据块号与磁盘空间地址的映射关系;
数据分布位图,用于记录关联的快照版本号的数据块写入数据的分布情况;
快照创建模块,用于在创建快照时,为每个快照版本号关联一个数据分布位图;
快照写入模块,用于写入快照数据以及通过地址映射表记录当前的快照版本号以及写入数据的数据块号与磁盘空间地址的映射关系,并同步更新当前的快照版本号关联的数据分布位图。
进一步地,所述装置还包括:
视图获取模块,用于获取指定快照版本号的数据视图;所述数据视图用于呈现指定快照版本的有效数据块在历史快照版本中的分布情况;
读取地址获取模块,用于根据数据视图中每个数据块的数据块号、数据块号所依赖的快照版本号查询地址映射表得到数据视图中每个数据块映射的磁盘空间地址;
数据读取模块,用于从得到的磁盘空间地址中读取数据。
进一步地,所述装置还包括:
删除块确定模块,用于确定待删除的指定快照版本号的数据视图中不被其它快照版本依赖的待删除数据块;
删除地址获取模块,用于基于待删除数据块的快照版本号、数据块号查询地址映射表得到待删除数据块映射的磁盘空间地址;
数据删除模块,用于删除待删除数据块的磁盘数据并同步更新待删除数据块的数据分布位图。
进一步地,所述视图获取模块包括:
历史分布获取模块,用于获取指定快照版本号之前的历史快照版本号的数据分布位图;
依赖号确定模块,用于以最近写入原则确定所述指定快照版本号关联的数据块所依赖的快照版本号;
视图生成模块,用于根据依赖的快照版本号、数据块号得到指定快照版本号的数据视图。
进一步地,所述装置应用于分布式对象存储系统中,每个存储对象都建立地址映射表和数据分布位图,对象内部地址映射表用于记录存储对象所管理的所有数据块与磁盘空间地址的映射关系;对象内部数据分布位图用于记录存储对象所管理的所有数据块的写入数据分布情况;
所述快照写入模块还用于将存储对象中数据块号与磁盘空间地址的映射关系同步记录到存储引擎能直接访问的地址映射库中。
基于本发明实施例的另一方面,本发明还提供一种电子设备,该电子设备包括处理器、通信接口、存储介质和通信总线,其中,处理器、通信接口、存储介质通过通信总线完成相互间的通信;
存储介质,用于存放计算机程序;
处理器,用于执行存储介质上所存放的计算机程序时,实施本发明提供的写时重定向快照实现的方法。
本发明通过数据分布位图记录不同快照版本写入数据的分布情况,通过地址映射表记录不同快照版本中用户空间地址与磁盘空间地址的映射关系,在读数据时只需根据数据分布位图即可获得快照版本的数据视图,再通过地址映射表即可快速获得用户数据存放的磁盘地址,无需回溯在先的快照版本的元数据。本发明提高了存储系统的快照性能。
附图说明
为了更加清楚地说明本发明实施例或者现有技术中的技术方案,下面将对本发明实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本发明实施例的这些附图获得其他的附图。
图1为本发明一应用本发明提供的写时重定向快照实现方法的实施例中对象存储系统的模块结构示意图;
图2A为本发明一实施例中ROW快照数据分布的示意图;
图2B为本发明一实施例中确定指定快照版本号的数据视图的示意图;
图2C为本发明一实施例中指定快照版本号的数据视图的示例;
图2D为本发明一实施例中确定的指定快照版本号的待删除数据块的示例;
图2E为本发明一实施例中删除指定快照版本的快照数据后的数据分布位图示例;
图3为本发明一实施例中写入数据的步骤流程示意图;
图4为本发明一实施例中读取指定快照版本号的数据的步骤流程示意图;
图5为本发明一实施例中删除指定快照版本号关联数据的步骤流程示意图;
图6为本发明一实施例提供的用于实现本发明实施例提供的写时重定向快照实现方法的电子设备结构示意图。
具体实施方式
在本发明实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本发明实施例。本发明实施例中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。本发明中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,以下结合附图对本发明的具体实施方式进行详细描述,显而易见地,下面描述中的附图是本公开的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
本发明目的是提供一种写时重定向快照实现方法,用于提高快照存储系统的性能。本发明的基本思想是:在写入用户数据时,由磁盘空间分配器分配磁盘空间,通过地址映射表记录不同快照版本中用户空间地址与磁盘空间地址的映射关系,通过数据分布位图记录不同快照版本写入(包括新写和覆盖写)数据的分布情况。在读取指定快照版本的用户数据时,通过数据分布位图快速得到指定快照的数据视图,数据视图用于呈现指定快照版本的有效数据块在历史快照版本中的分布情况。通过地址映射表读取数据视图中用户数据映射的磁盘空间地址并读取数据。通过本发明的技术方案能够提高快照存储系统的效率。
基于本发明的基本思想,以下结合附图和具体实施例来描述本发明的具体实现过程。需要说明的是,虽然本发明使用“磁盘”描述实际存储用户数据的物理存储介质,但本发明并不限定具体的物理存储介质的类型,也可以是固态硬盘、光存储介质等。
图1为应用本发明提供的写时重定向快照实现方法的对象存储系统的模块结构示意图。本发明可应用于各种分布式或非分布式存储系统,以下实施例虽主要以Ceph分布式文件系统为例进行描述,但本发明技术方案并不局限于Ceph分布式文件系统。本领域一般技术人员基于本发明提供的基本思想,不需要创造性劳动即可将本发明的技术方案应用于其他分布式或非分布式存储系统,因此,以下具体实施例的应用场景不应理解为是对本发明保护范围的限定。
在Ceph分布式文件系统中,分配给用户的逻辑卷的数据可存储于对象存储设备(Object Store Device,OSD)中,在常用配置下,每个存储对象(简称对象)大小为4M字节,以一个100M的逻辑卷为例,整个逻辑卷可分配给25个对象,逻辑卷的数据会可存储于对象标识ID为0~24的存储对象中。在Ceph中,逻辑卷的快照功能依赖每个存储对象的快照能力,基于本发明提供的基本思想可在在Ceph中实现高效的OSD对象级别的ROW快照创建及数据存取。
Ceph可部署多个OSD存储引擎,由OSD向上层提供对象存储功能;在块协议层,将逻辑卷空间划分为数个对象,基于对象存储功能,向客户端提供块存储服务。存储对象以固定粒度管理对象中的用户数据,例如若以定长8KB粒度管理对象中的用户数据,则针对存储对象的读写(输入/输出I/O)均以8KB为单位对齐的方式进行。
在图1的示例中,为存储对象提供地址映射表,地址映射表记录了该对象管理的数据块号(相当于用户空间地址)与物理磁盘空间地址的映射关系。由于随着数据的修改,同一数据块在不同的快照中可能映射到不同的物理磁盘空间地址,因此,为了记录每个对象的所有不同快照版本中数据块与物理磁盘空间地址的映射关系,在每次建立映射关系时都会将映射关系同步记录到地址映射库中以备后续在读/删快照数据时查询磁盘空间地址。地址映射表和地址映射库中的每条映射记录应包括对象ID、数据块号(相当于用户空间地址)、磁盘空间地址以及快照版本号等字段。
针对不同存储系统,映射关系和数据分布位图的管理可采用不同管理模式,例如采用集中模式、对象与存储引擎二级模式等。集中模式是将整个存储空间中的所有数据块号与磁盘空间地址的映射关系集中存储到映射数据库中,数据分布位图中的标识位对应到整个存储空间中的所有数据块。二级模式是在对象内部建立自己所管辖的存储空间地址映射表和数据分布位图,同时在存储引擎级别的地址映射库中记录整个存储空间(包括所有存储对象)的所有数据块号与磁盘空间地址的映射关系,存储引擎级别的数据分布位图中记录整个存储空间(包括所有存储对象)所有数据块与标识位的对应关系。不同模式有不同的优势,可依据具体应用场景决策,本发明不做具体限定。
在图1的示例中,为存储对象提供数据分布位图,通过数据分布位图记录不同快照版本中用户数据的写入分布情况。数据分布位图中每个比特位标识1个数据块在对应快照版本中是否写入数据,其中的写入包括向空数据块中写入新数据和覆盖写入数据的情况。由于数据分布位图占用空间很小,因此可将所有对象的不同快照版本的数据分布位图集中存储在对象外部的元数据空间内,也可在每个存储对象中分别存储本对象的所有快照版本的数据分布位图,两种方式各有优势,本发明不做具体限定。
地址映射表和地址映射库均可采用键值对的字段存储结构,例如可将对象ID、数据块号和快照版本号拼装为关键字KEY字段,将磁盘物理地址作为VLAUE值,这样即可通过KEY快速定位到一个对象中数据块在物理磁盘空间中的存储位置。键值对存储方式可实现通过计算KEY的哈希值快速读取磁盘空间地址的效果,当然也可采用其它数据存储结构,本发明不做具体限定。
键值对存储方式的字段结构示例如下:
KEY:对象ID+数据块号+快照版本号
VALUE:磁盘物理地址
数据分布位图的一种示例结构如下:
快照版本号N 0000000000010....0101
...
快照版本号1 0000000000000....1100
快照版本号0 0000010000100....0000
基于本发明提供的地址映射表及数据分布位图,提供存储服务的服务端执行本发明提供的写时重定向快照实现方法以实现快照数据块的高效读写,该方法包括步骤:
步骤110、创建快照,生成新快照的快照版本号,每个快照版本号关联一个数据分布位图;
存储服务的客户端(例如虚拟机)维护有当前最新快照版本号,当创建新的快照时,客户端生成新的快照版本号,例如以本地快照版本号递增的方式获得新快照版本号,新快照版本号会被更新至分配给客户端的逻辑卷的元数据中。
在本发明技术方案的快照创建步骤中,存储服务的服务端无需拷贝最新的只读快照版本的元数据作为新的可写快照版本的元数据,服务端可在写入数据时感知创建新的快照版本,因此具有较高的快照创建效率。
当有数据写入Ceph存储对象时,存储引擎执行写操作,写操作携带新快照版本号,存储对象通过新快照版本号感知到创建了新的快照版本,此时会将对象的元数据(包括对象信息、用户元数据(如omap、xattr等))存入至快照空间。
当Ceph的存储对象感知到创建新的快照版本时,会生成新的快照版本号关联的数据分布位图,对象的数据分布位图用于记录对象内部所有数据块关联的所有快照版本号的数据分布位图。数据分布位图中的每一个二进制位对应地标识一个数据块的写入数据状态。数据分布位图在初始化时全部标识位可全部初始化为0,0代表对应数据块未写入过数据,置1代表对应数据块写入过数据。
为清楚理解下面对技术方案的描述,需要特别解释说明的是,当创建新的快照版本时,新创建的快照版本号所固化的数据存储状态是创建时刻之前的数据存储状态,因此,构成快照版本号N的数据视图中的数据块内容可能属于快照版本号0至快照版本号N-1关联的任一快照。
步骤120、在基于ROW机制写入数据时,通过地址映射表记录当前的快照版本号以及写入数据的数据块号与磁盘空间地址的映射关系,并更新当前的快照版本号关联的数据分布位图。
图3为写时重定向快照实现方法中写入数据步骤流程示意图:
步骤S31、在接收到数据写入请求时,请求磁盘空间分配器分配用于存储写入数据的磁盘空间;
由于本发明基于ROW机制,因此每次写入数据(包括新写和覆盖写)时,均需由磁盘空间分配器分配新的磁盘空间进行存储,被覆盖的过期数据空间由垃圾回收模块负责回收。
步骤S32、将数据写入磁盘空间分配器分配磁盘空间;
步骤S33、判断是否需要更新数据分布位图,若需要执行步骤S34;若不需要执行步骤S35;
若待写入数据的数据块之前已写入过数据,则在覆盖写的情况下,数据块对应的数据分布位图中的标识位在写入前后不发生变化,因此,在此种情况下可以跳过数据分布位图的更新操作。
步骤S34、将更新数据分布位图的操作加入元数据事务;
步骤S35、将生成相应地址映射表记录的操作加入元数据事务;
步骤S36、执行元数据事务从而同步生成相应的地址映射表记录和更新数据分布位图。
在每次写入用户数据时,都需要同步地更新数据分布位图和地址映射表。
基于图1的分布式对象存储的示例,在写入数据时,需要同步更新存储对象内部的地址映射表和数据分布位图。存储对象内部的地址映射表一一对应地记录了当前存储对象中的每个数据块与快照版本号及磁盘空间地址之间的映射关系,构成了当前快照版本号当前最新的数据视图。
图2A为本发明一实施例中ROW快照数据分布的示意图。若在创建快照版本号3之前,对象ID为LUN1.00000000的存储对象中关联快照版本号0、1和2的发生过写入操作的数据块分别为[8KB~16KB],[0KB~8KB],[8KB~24KB],地址映射表中生成的键值对示例如下:
快照版本号2数据块号1地址8K LUN1.00000000_0001_0002,0x80000
快照版本号2数据块号2地址16K LUN1.00000000_0002_0002,0x82000
快照版本号2数据块号3地址24K LUN1.00000000_0003_0002,0x84000
快照版本号1数据块号0地址0K LUN1.00000000_0000_0001,0x78000
快照版本号1数据块号1地址8K LUN1.00000000_0001_0001,0x7a000
快照版本号0数据块号1地址8K LUN1.00000000_0001_0000,0x70000
快照版本号0数据块号2地址16K LUN1.00000000_0002_0000,0x72000
以快照版本号0数据块号2用户空间地址16K对应的键值对为例,其中LUN1.00000000为对象ID,“0002”代表数据块号2,“0000”代表快照版本号0,“0x72000”为物理磁盘空间地址。
各快照版本号关联的数据分布位图的示例如下:
快照版本号2的数据分布位图0111 0000 0000....0000(低地址->高地址)
快照版本号1的数据分布位图1100 0000 0000....0000
快照版本号0的数据分布位图0110 0000 0000....0000
假设客户端在创建快照版本号3后,在用户地址空间[24KB~40KB]对应的数据块号为[3~5]的数据块中写入数据,磁盘空间分配器为这几个数据块分配的磁盘空间地址分别为0x80000、0x820000、0x840000,则新增的地址映射表的键值对的示例如下:
快照版本号3数据块号3的键值对LUN1.00000000_0003_0003,0x80000
快照版本号3数据块号4的键值对LUN1.00000000_0004_0003,0x82000
快照版本号3数据块号5的键值对LUN1.00000000_0005_0003,0x84000
数据分布位图的示例如下:
快照版本号3的数据分布位图0001 1100 0000....0000
快照版本号2的数据分布位图0111 0000 0000....0000
快照版本号1的数据分布位图1100 0000 0000....0000
快照版本号0的数据分布位图0110 0000 0000....0000
步骤130、在读取指定快照版本号的数据时,先根据指定快照版本号之前的历史快照版本号的数据分布位图获取该指定快照版本号的数据视图,然后根据数据视图中每个数据块的数据块号、所依赖的快照版本号查询地址映射表得到数据视图中每个数据块映射的磁盘空间地址,最后从磁盘空间地址中读取指定快照版本号的数据;
图4为读取指定快照版本号的数据的步骤流程示意图。基于图1和图2A的示例,以读取指定快照版本号2的[0KB~16KB]的数据块的数据为例,读取的步骤如下:
步骤S41、在接收到读取指定快照版本号的数据请求时,获取指定快照版本号之前的历史快照版本号关联的数据分布位图;
基于图2A示例,所获得的快照分布位图为:
快照版本号1的数据分布位图1100 0000 0000....0000
快照版本号0的数据分布位图0110 0000 0000....0000
基于所获得的历史快照版本号关联的数据分布位图,只需要纵向对每一个数据块的标志位进行“或”逻辑运算,就可知道该待读取的数据块是否依赖于其它快照版本号。
步骤S42、以最近写入原则确定待读取的指定快照版本号关联的数据块所依赖的快照版本号;
该步骤的目的是找到待读取的指定快照版本关联的数据块最近一次写入操作所依赖(归属)的快照版本号。
例如,根据待读取的指定快照版本号2之前数据块0,1和2的数据分布位图,以最近写入原则确定所依赖的快照版本号,由于在创建快照版本号2之前用户数据地址[0KB]对应的数据块号0最近一次写入数据的快照版本号为1,因此确定该数据块的依赖快照版本号为1;[8KB]对应数据块号1最近一次写入数据的快照版本号也为1,因此确定该数据块的依赖快照版本号也为1;[16KB]对应数据块号2最近一次写入数据的快照版本号为0,因此确定该数据块的依赖快照版本号为0。
步骤S43、根据依赖的快照版本号、待读取的数据块号得到指定快照版本号的数据视图;
步骤S44、根据数据视图中每个数据块的数据块号、所依赖的快照版本号查询地址映射表得到待读取的数据块映射的磁盘空间地址并从中读取数据块的数据。
例如,根据待读取的数据块号2及待读取的数据块号2的依赖快照版本号0查询地址映射表获取得到的映射关系记录为:
LUN1.00000000_0002_0000,0x72000
从而确定快照版本号2关联的数据块2实际存储的物理磁盘空间地址为0x72000,进而从磁盘读取用户地址空间中数据块2实际存储于磁盘物理存储空间中的数据。
图2B为基于图2A确定指定快照版本号2的数据视图的示例图。基于前述依赖快照版本号的确定原则,所确定的指定快照版本号2数据块0、数据块1和数据块2对应的数据视图如图2B中斜线条纹矩形框所示。数据视图中的数据块分别为快照版本号1的数据块0和数据块1,快照版本号0的数据块2。
由图可知,假设快照版本号1和快照版本号0这两个快照版本在24KB之后的都未写入过数据,则快照版本号2的用户数据实际是由所依赖的快照版本号1中的数据块0和数据块1以及快照版本号0中的数据块2组成。因此,通过地址映射表查询出的快照版本号2的数据视图的键值对KEY列表为:
0KB起始的0号数据块的KEY LUN1.00000000_0000_0001
8KB起始的1号数据块的KEY LUN1.00000000_0001_0001
16K起始的2号数据块的KEY LUN1.00000000_0002_0000
根据KEY值,再从存储对象的地址映射表或位于元数据空间中的地址映射库中,读取对应KEY的VALUE,从而获得快照版本号2的数据视图中所有数据块对应的物理存储地址:
0KB起始的0号数据块的VALUE 0x78000
8KB起始的1号数据块的VALUE 0x7a000
16K起始的2号数据块的VALUE 0x72000
最后,从磁盘读取0x78000、0x7a000、0x72000位置的数据,即可读取到快照版本号2中的用户数据。
本发明提供的快照实现方法在读数据时,只需数据分布位图结合地址映射表即可获得用户数据存放的磁盘地址,无需回溯在先的快照版本的元数据,避免了遍历元数据产生的IO,因此可提高读取快照数据的效率。
步骤140、在删除指定快照版本号时,获取所述指定快照版本号的数据视图,确定数据视图中不被其它快照版本依赖的待删除数据块,基于待删除数据块的快照版本号、数据块号查询地址映射表得到待删除数据块映射的磁盘空间地址,删除待删除数据块的磁盘数据并同步更新待删除数据块的数据分布位图。
图5为删除指定快照版本号关联数据的步骤流程示意图。基于图2A的数据分布位图为例详细描述删除指定快照版本号2对应的快照版本的步骤流程。
步骤S51、获取数据分布位图,基于最近写入原则确定待删除的指定快照版本中每个数据块所依赖的快照版本号,从而获取到待删除的指定快照版本号的数据视图;
基于图2A的数据分布位图,根据最近写入原则确定的待删除的指定快照版本号2的数据块0依赖的快照版本号为1,数据块1依赖的快照版本号为1,数据块2依赖的快照版本号为0,获取到待删除的指定快照版本号2的数据视图,如图2B中斜线矩形块所示。
步骤S52、依次判断数据视图中的每一数据块是否不被其它快照版本依赖,将不被其它快照版本依赖的数据块确定为待删除数据块,执行步骤S53;针对被其它快照版本依赖的数据块不做处理。
基于本发明提供的快照写入规则分析可知,在创建快照版本号1之后写入的数据是实际属于快照版本号2的,即快照版本号1的数据分布位图实际记录的是在创建快照版本号1之后到创建快照版本号2之前的这段时间的数据写入分布情况,也就是快照版本号2相对于快照版本号1的数据块内容发生变化的分布情况。基于图2B可知,快照版本号2相对于快照版本号1实际发生变化的数据块只有数据块0和数据块1。
图2C示例了快照版本号3的数据视图构成情况,如图中斜线矩形框所示,快照版本号3的数据视图由快照版本号1的数据块0、快照版本号2的数据块1、数据块2和数据块3组成。
结合图2B和图2C可以发现,待删除的指定快照版本号2的数据视图中快照版本号1的数据块0被快照版本号3依赖;快照版本号1的数据块1由于在快照版本号3的快照版本中被覆盖写,因此快照版本号1的数据块1在快照版本号2之后的任何快照版本都不会被依赖,即在快照版本号1的数据块1中写入的数据只属于待删除的指定快照版本号2,不被其它快照版本依赖。
同理,图2B中待删除的指定快照版本号2的数据视图中的数据块2依赖于快照版本号0,虽然该数据块也在创建快照版本号2之后被覆盖写,但该数据块还被快照版本号1依赖,所以在删除指定快照版本号2时不能删除快照版本号0中该数据块在物理磁盘中存储的内容。
基于前述分析可知,确定待删除的指定快照版本号2的数据视图中不被其它快照版本依赖的待删除数据块的方法为:先获取待删除的指定快照版本号2的数据视图,再获取待删除的指定快照版本号2的后一快照版本即快照版本号3的数据视图,然后将待删除的指定快照版本号2中被快照版本号3覆盖写的数据块确定为待删除数据块。
基于上述确定待删除数据块的方法,最终确定的快照版本号2的待删除数据块如图2D所示。
步骤S53、基于待删除数据块的快照版本号、数据块号查询地址映射表得到待删除数据块映射的磁盘空间地址;
如图2D所示,根据前述步骤确定的待删除的指定快照版本号2的待删除数据块为快照版本号1的数据块1,基于待删除数据块的快照版本号1、数据块号1查询地址映射表即可获得待删除数据块映射的磁盘空间地址。
步骤S54、删除待删除数据块的磁盘数据并同步更新待删除数据块的数据分布位图。
在删除待删除数据块1的磁盘数据的同时需要同步更新快照版本号1的数据分布位图,在删除待删除数据块1的磁盘数据后同步将快照版本号1的数据分布位图中该数据块1对应的标识位置为0。
图2E示例了删除指定快照版本2即快照版本号2对应的快照数据后的数据分布位图。由图可知,虽然在创建快照版本号1之后到创建快照版本号2时刻的这段时间内写入了数据块0和数据块1的内容,但实际删除快照版本号2对应的快照时仅删除了数据块1的内容,这样做的原因是发明基于ROW机制,当需要回滚到快照版本号3对应的快照版本时,还需要用到快照版本号1的数据块0的数据内容,而快照版本号1的数据块1的内容在回滚到快照版本3时已不再需要。
上述实施例中,在描述方案的过程中,虽然有些步骤中没有明确提到数据块所属的对象ID,但是这不应不理解为方案不清楚,本领域技术人员可以理解的是,数据块号也可以扩展解释为在一个存储系统或存储空间中能够唯一定位一个数据块的标识,该标识可由设备标识、对象标识和构成物理或逻辑存储空间的基础存储单元(如8KB、1MB等)的标识组成,也可以仅表示为一个存储对象中的基本存储单元的标识,具体可由快照的作用空间决定。
本发明提供的快照实现方法在删快照时,只需要根据数据分布位图,精准的找到可以删除的磁盘数据,避免了数据合并过程导致的额外读写操作,降低了删除流程对系统资源产生的压力,同时也提高了删快照的效率。
图6为本发明一实施例提供的用于实现本发明实施例提供的写时重定向快照实现方法的电子设备结构示意图,该设备600包括:诸如中央处理单元(CPU)的处理器610、通信总线620、通信接口640以及存储介质630。其中,处理器610与存储介质630可以通过通信总线620相互通信。存储介质630内存储有计算机程序,当该计算机程序被处理器610执行时即可实现本发明提供的写时重定向快照实现方法中的一个或多个步骤的功能。
其中,存储介质可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。另外,存储介质还可以是至少一个位于远离前述处理器的存储装置。处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable GateArray,FPGA)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
应当认识到,本发明的实施例可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术,包括配置有计算机程序的非暂时性存储介质在计算机程序中实现,其中如此配置的存储介质使得计算机以特定和预定义的方式操作。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。此外,可按任何合适的顺序来执行本发明描述的过程的操作,除非本发明另外指示或以其他方式明显地与上下文矛盾。本发明描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
进一步,所述方法可以在可操作地连接至合适的任何类型的计算平台中实现,包括但不限于个人电脑、迷你计算机、主框架、工作站、网络或分布式计算环境、单独的或集成的计算机平台、或者与带电粒子工具或其它成像装置通信等等。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本发明所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还包括计算机本身。
以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (13)
1.一种写时重定向快照实现方法,其特征在于,方法包括:
在创建快照时,为每个快照版本号关联一个数据分布位图,数据分布位图用于记录关联的快照版本号的数据块写入数据的分布情况;
在写入数据时,通过地址映射表记录当前的快照版本号以及写入数据的数据块号与磁盘空间地址的映射关系,并同步更新当前的快照版本号关联的数据分布位图。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括读取指定快照版本号的数据的步骤:
获取指定快照版本号的数据视图,所述数据视图用于呈现指定快照版本的有效数据块在历史快照版本中的分布情况;
根据数据视图中每个数据块的数据块号、数据块号所依赖的快照版本号查询地址映射表得到数据视图中每个数据块映射的磁盘空间地址;
从得到的磁盘空间地址中读取数据。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括删除指定快照版本号的步骤:
获取所述指定快照版本号的数据视图;
确定待删除的指定快照版本号的数据视图中不被其它快照版本依赖的待删除数据块;
基于待删除数据块的快照版本号、数据块号查询地址映射表得到待删除数据块映射的磁盘空间地址;
删除待删除数据块的磁盘数据并同步更新待删除数据块的数据分布位图。
4.根据权利要求2或3所述的方法,其特征在于,所述获取指定快照版本号的数据视图的方法为:
获取指定快照版本号之前的历史快照版本号的数据分布位图;
以最近写入原则确定所述指定快照版本号关联的数据块所依赖的快照版本号;
根据依赖的快照版本号、数据块号得到指定快照版本号的数据视图。
5.根据权利要求1所述的方法,其特征在于,
在分布式对象存储系统中,每个存储对象都建立地址映射表和数据分布位图,对象内部地址映射表用于记录存储对象所管理的所有数据块与磁盘空间地址的映射关系;对象内部数据分布位图用于记录存储对象所管理的所有数据块的写入数据分布情况;
在写入数据时,将存储对象中数据块号与磁盘空间地址的映射关系同步记录到存储引擎能直接访问的地址映射库中。
6.根据权利要求5所述的方法,其特征在于,
在创建快照时,存储对象通过写操作携带的新快照版本号感知新快照版本的创建,在存储对象中创建新快照版本号关联的数据分布位图。
7.一种写时重定向快照实现装置,其特征在于,该装置包括:
地址映射表,用于记录快照版本号以及数据块号与磁盘空间地址的映射关系;
数据分布位图,用于记录关联的快照版本号的数据块写入数据的分布情况;
快照创建模块,用于在创建快照时,为每个快照版本号关联一个数据分布位图;
快照写入模块,用于写入快照数据以及通过地址映射表记录当前的快照版本号以及写入数据的数据块号与磁盘空间地址的映射关系,并同步更新当前的快照版本号关联的数据分布位图。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
视图获取模块,用于获取指定快照版本号的数据视图;所述数据视图用于呈现指定快照版本的有效数据块在历史快照版本中的分布情况;
读取地址获取模块,用于根据数据视图中每个数据块的数据块号、数据块号所依赖的快照版本号查询地址映射表得到数据视图中每个数据块映射的磁盘空间地址;
数据读取模块,用于从得到的磁盘空间地址中读取数据。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
删除块确定模块,用于确定待删除的指定快照版本号的数据视图中不被其它快照版本依赖的待删除数据块;
删除地址获取模块,用于基于待删除数据块的快照版本号、数据块号查询地址映射表得到待删除数据块映射的磁盘空间地址;
数据删除模块,用于删除待删除数据块的磁盘数据并同步更新待删除数据块的数据分布位图。
10.根据权利要求8或9所述的装置,其特征在于,所述视图获取模块包括:
历史分布获取模块,用于获取指定快照版本号之前的历史快照版本号的数据分布位图;
依赖号确定模块,用于以最近写入原则确定所述指定快照版本号关联的数据块所依赖的快照版本号;
视图生成模块,用于根据依赖的快照版本号、数据块号得到指定快照版本号的数据视图。
11.根据权利要求7所述的装置,其特征在于,所述装置应用于分布式对象存储系统中,每个存储对象都建立地址映射表和数据分布位图,对象内部地址映射表用于记录存储对象所管理的所有数据块与磁盘空间地址的映射关系;对象内部数据分布位图用于记录存储对象所管理的所有数据块的写入数据分布情况;
所述快照写入模块还用于将存储对象中数据块号与磁盘空间地址的映射关系同步记录到存储引擎能直接访问的地址映射库中。
12.一种电子设备,其特征在于,包括处理器、通信接口、存储介质和通信总线,其中,处理器、通信接口、存储介质通过通信总线完成相互间的通信;
存储介质,用于存放计算机程序;
处理器,用于执行存储介质上所存放的计算机程序时,实施权利要求1-6中任一项所述的方法步骤。
13.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序当被处理器执行时实施如权利要求1至6中任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210586495.5A CN115033174A (zh) | 2022-05-27 | 2022-05-27 | 写时重定向快照实现方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210586495.5A CN115033174A (zh) | 2022-05-27 | 2022-05-27 | 写时重定向快照实现方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115033174A true CN115033174A (zh) | 2022-09-09 |
Family
ID=83120803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210586495.5A Pending CN115033174A (zh) | 2022-05-27 | 2022-05-27 | 写时重定向快照实现方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115033174A (zh) |
-
2022
- 2022-05-27 CN CN202210586495.5A patent/CN115033174A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11474972B2 (en) | Metadata query method and apparatus | |
US8799601B1 (en) | Techniques for managing deduplication based on recently written extents | |
US10101937B2 (en) | Apparatus and method for referencing dense and sparse information in multi-dimensional to linear address space translation | |
CN107066498B (zh) | 键值kv存储方法和装置 | |
US20160364407A1 (en) | Method and Device for Responding to Request, and Distributed File System | |
CN112565325B (zh) | 镜像文件管理方法、装置及系统、计算机设备、存储介质 | |
CN106951375B (zh) | 在存储系统中删除快照卷的方法及装置 | |
EP2880538B1 (en) | System and method for object deletion in persistent memory using bitmap windows | |
CN111309720A (zh) | 时序数据的存储、读取方法、装置、电子设备及存储介质 | |
CN108614837B (zh) | 文件存储和检索的方法及装置 | |
CN110399333B (zh) | 删除快照的方法、设备和计算机程序产品 | |
CN113568582B (zh) | 数据管理方法、装置和存储设备 | |
CN110147203B (zh) | 一种文件管理方法、装置、电子设备及存储介质 | |
CN112860594B (zh) | 一种固态盘地址重映射方法、设备及固态盘 | |
CN115470156A (zh) | 基于rdma的内存使用方法、系统、电子设备和存储介质 | |
CN115712500A (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
CN112817962B (zh) | 基于对象存储的数据存储方法、装置和计算机设备 | |
CN113157600A (zh) | 一种叠瓦式硬盘的空间分配方法、文件存储系统及服务器 | |
CN114764426A (zh) | 数据访问方法和装置、数据存储方法和装置 | |
CN111782628A (zh) | 电力系统实时库动态扩充增量的方法、配置工具和系统 | |
US10877881B2 (en) | In-place garbage collection of a sharded, replicated distributed state machine based on mergeable operations | |
CN110795031A (zh) | 一种基于全闪存储的数据重删方法、装置和系统 | |
CN115033174A (zh) | 写时重定向快照实现方法、装置、设备及存储介质 | |
CN115756838A (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
CN115904211A (zh) | 一种存储系统、数据处理方法及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |