CN111913664B - 一种数据写入方法及装置 - Google Patents
一种数据写入方法及装置 Download PDFInfo
- Publication number
- CN111913664B CN111913664B CN202010752789.1A CN202010752789A CN111913664B CN 111913664 B CN111913664 B CN 111913664B CN 202010752789 A CN202010752789 A CN 202010752789A CN 111913664 B CN111913664 B CN 111913664B
- Authority
- CN
- China
- Prior art keywords
- storage address
- data
- block
- logical storage
- lun
- 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
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
- G06F3/064—Management of blocks
-
- 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/065—Replication mechanisms
-
- 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/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
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
本申请提供了一种数据写入方法及装置,以提高时间点快照LUN的写入性能。一种数据写入方法,包括:按照预设粒度将写请求待写入的数据划分为至少一个子数据块并写入时间点快照LUN;对于每一子数据块,若该子数据块对应的逻辑存储地址块在写入该子数据块之前未存储数据,且该子数据块的大小小于预设粒度,则确定该逻辑存储地址块为目标逻辑存储地址块;依据所述时间点快照LUN对应的快照时间点查找到已记录的源LUN在所述快照时间点时的数据信息,从所述数据信息中读取目标逻辑存储地址块中的目标逻辑存储地址读取目标数据并写入时间点快照LUN的目标逻辑存储地址中,该目标逻辑存储地址在时间点快照LUN中未存储数据。
Description
技术领域
本申请涉及存储技术领域,特别涉及一种数据写入方法及装置。
背景技术
快照是存储设备的一项重要功能。通过快照技术可为逻辑单元号(Logical UnitNumber,LUN)创建快照时间点,以记录LUN在特定时刻的数据状态,通常将该LUN称为源LUN。利用源LUN的快照时间点,可将源LUN的数据快速恢复到该快照时间点对应时刻的状态。
时间点快照LUN是基于源LUN的一个快照时间点建立的可读写的LUN资源,通过时间点快照LUN可读取该快照时间点创建时刻的源LUN的数据,以及写入该时间点快照LUN的数据。
时间点快照LUN所存储的数据通常是按照预设粒度对齐的,当需要向时间点快照LUN中写入数据时,若待写入的数据的大小小于预设粒度,且待写入的数据对应的逻辑存储地址未存储数据,则需要从快照时间点对应的源LUN数据中读取数据,以补齐该待写入的数据相比预设粒度缺失的部分,再将补齐后的数据写入到时间点快照LUN中,以使时间点快照LUN最终存储的数据按照预设粒度对齐。
而上述向时间点快照LUN写入数据的过程中,从源LUN中读取数据这一操作影响了时间点快照LUN的写入性能。
发明内容
本申请提供了数据写入方法及装置,以提高时间点快照LUN的写入性能。本申请提供的技术方案包括:
第一方面,本申请提供一种数据写入方法,包括:
当接收到写请求时,按照预设粒度对所述写请求待写入的数据进行划分得到至少一个子数据块,并将各子数据块写入时间点快照LUN中对应的逻辑存储地址块;所述子数据块对应的逻辑存储地址块是按照所述预设粒度对待写入的数据对应的逻辑存储地址进行划分得到的其中一个逻辑存储地址块;所述逻辑存储地址块与子数据块的数量相同;
针对写入至所述时间点快照LUN中的每一子数据块,若该子数据块对应的逻辑存储地址块在写入该子数据块之前未存储数据,且该子数据块的大小小于所述预设粒度,则将该子数据块对应的逻辑存储地址块确定为目标逻辑存储地址块;
依据所述时间点快照LUN对应的快照时间点查找到已记录的源LUN在所述快照时间点时的数据信息,所述数据信息至少包括数据以及存储数据的逻辑存储地址;从已记录的所述数据信息中读取所述目标逻辑存储地址块存储的目标数据,所述目标逻辑存储地址块中用于存储所述目标数据的目标逻辑存储地址在所述时间点快照LUN中未存储数据;将所述目标数据写入所述时间点快照LUN中的所述目标逻辑存储地址。
第二方面,本申请提供一种数据写入装置,包括:
写入单元,用于当接收到写请求时,按照预设粒度对上述写请求待写入的数据进行划分得到至少一个子数据块,并将各子数据块写入时间点快照LUN中对应的逻辑存储地址块;上述子数据块对应的逻辑存储地址块是按照上述预设粒度对待写入的数据对应的逻辑存储地址进行划分得到的其中一个逻辑存储地址块;上述逻辑存储地址块与子数据块的数量相同;
确定单元,用于针对写入至上述时间点快照LUN中的每一子数据块,若该子数据块对应的逻辑存储地址块在写入该子数据块之前未存储数据,且该子数据块的大小小于上述预设粒度,则将该子数据块对应的逻辑存储地址块确定为目标逻辑存储地址块;
回读单元,用于依据上述时间点快照LUN对应的快照时间点查找到已记录的源LUN在上述快照时间点时的数据信息,上述数据信息至少包括数据以及存储数据的逻辑存储地址;从已记录的上述数据信息中读取上述目标逻辑存储地址块存储的目标数据,上述目标逻辑存储地址块中用于存储上述目标数据的目标逻辑存储地址在上述时间点快照LUN中未存储数据;将上述目标数据写入上述时间点快照LUN中的上述目标逻辑存储地址。
本申请通过将写请求待写入的各子数据块写入时间点快照LUN中,并对于写入的每一子数据块,若该子数据块对应的逻辑存储地址块在写入该子数据块之前未存储数据,且该子数据块的大小小于预设粒度,则将该子数据块对应的逻辑存储地址块确定为目标逻辑存储地址块,后续从依据时间点快照LUN对应的快照时间点,从已记录的源LUN的数据信息中读取目标逻辑存储地址块存储的目标数据并写入到时间点快照LUN中。
由此,可在将写请求待写入的数据全部写入时间点快照LUN后,后台读取已记录的源LUN的数据信息中的目标逻辑存储地址块存储的目标数据并写入时间点快照LUN中。由于后台操作不会影响前端业务,对前端业务来说,将写请求待写入的数据全部写入时间点快照LUN即完成写入操作,时间点快照LUN的写入性能得到了有效提升。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的时间点快照LUN的数据来源示意图;
图2为本申请实施例提供的数据写入方法流程图;
图3A-3B为本申请实施例提供的步骤S103的实现示意图;
图4为本申请实施例提供的步骤S101、S102的实现流程图;
图5为本申请实施例提供的数据读取方法流程图;
图6为本申请实施例提供的数据写入装置的结构示意图;
图7为本申请实施例提供的另一数据写入装置的结构示意图;
图8为本申请实施例提供的一种电子设备的硬件结构示意图。
具体实施方式
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为使本领域技术人员更好地理解本申请实施例中的技术方案,下面先对本申请实施例涉及的快照、数据读写的相关技术进行简要说明。
在一些实施例中,存储设备中可设置多个LUN,用于为应用服务器提供可访问的逻辑存储资源,通过快照技术可记录任一LUN在特定时刻的数据状态。
目前常用快照技术包括首写拷贝(Copy-on-write,COW)技术和写时重定向(Redirect-on-write,ROW)技术。虽然在具体实现上存在差异,但ROW和COW的原理基本一致。本申请实施例中的技术方案与采用这两种快照技术中的哪一种并无必然联系,为便于描述,本申请实施例中均以ROW技术为例进行描述。在实际应用时若需采用COW技术,对相关流程进行差异化处理即可。
下面对ROW技术进行举例说明:使用ROW技术在t0时刻为源LUN创建快照时间点t0后,在接收到对源LUN的写请求,且该写请求指示向源LUN的某一逻辑存储地址中首次写入新数据时,将该写请求重定向到快照资源,以将该新数据写入到快照资源中。具体的,对于该新数据,不覆盖源LUN中该逻辑存储地址映射的物理存储地址中已存储的数据,而是为该新数据在快照资源中分配物理存储空间写入,并更新源LUN所记录的映射表,该映射表中记录有逻辑存储地址与物理存储地址的映射关系,以记录该新数据在源LUN中对应的逻辑存储地址与在快照资源中对应的物理存储地址的映射关系。上述快照资源用于保存源LUN的快照相关数据,在一些实施例中,快照资源可为独立于源LUN之外的另一个LUN。
在一个例子中,为源LUN创建快照时间点后,可基于创建的快照时间点创建时间点快照LUN。作为一个实施例,源LUN与基于该源LUN的一个快照时间点创建的时间点快照LUN的逻辑存储空间大小相等。以基于快照时间点t0建立的时间点快照LUN为例,该时间点快照LUN的数据来源可包括:t0时刻源LUN的数据以及写入时间点快照LUN的数据。其中,t0时刻源LUN的数据可通过依据快照时间点t0查找到已记录的源LUN在t0时的数据信息,从该数据信息中读取t0时刻源LUN的数据。上述数据信息至少包括数据以及存储数据的逻辑存储地址,
为便于理解时间点快照LUN的数据来源,下面结合图1举例描述:
参见图1,图1为本申请实施例提供的时间点快照LUN的数据来源示意图。图1中,A1、B1、C1和D1分别为t0时刻源LUN的数据块A、B、C和D中存储的数据,A2、B2为在t0时刻后分别写入源LUN的数据块A、B中的数据,A3为在t0时刻后写入时间点快照LUN的数据块A中的数据。则如图1所示,时间点快照LUN可访问的数据包括:A1、B1、C1、D1和A3。
在一个例子中,时间点快照LUN及源LUN为自动精简配置LUN,简称精简LUN。这里的精简LUN采用存储虚拟化技术,该技术将物理存储空间汇集到精简池中进行统一管理,并按需分配给精简LUN使用。
作为一个实施例,当精简LUN接收到写请求时,对于该写请求中的逻辑存储地址,在已记录的映射表(记录有逻辑存储地址与物理存储地址的映射关系)中查找该逻辑存储地址是否映射有物理存储地址;若是,则直接向该逻辑存储地址映射的物理存储地址中写入数据;若否,则为该逻辑存储地址分配物理存储地址并更新映射表,向该映射的物理存储地址中写入数据。本申请实施例中,时间点快照LUN并非标准的精简LUN,而是依附于源LUN的一个快照时间点的精简LUN,在对时间点快照LUN进行读写时,可能需要依据该快照时间点读取已记录的源LUN的数据信息。
至此,完成对本申请实施例涉及的相关技术的说明。下面结合图2对本申请实施例提供的数据写入方法进行描述:
参见图2,图2为本申请实施例提供的数据写入方法流程图。在一个例子中,该方法可应用于存储设备。如图2所示,该方法可包括如下步骤:
步骤S101,当接收到写请求时,按照预设粒度对该写请求待写入的数据进行划分得到至少一个子数据块,并将各子数据块写入时间点快照LUN中对应的逻辑存储地址块。
在一个例子中,本步骤S101中的写请求为对时间点快照LUN的写请求。作为一个实施例,存储设备在接收到写请求时,若该写请求携带的LUN标识为时间点快照LUN的LUN标识,则确定该写请求为对时间点快照LUN的写请求。具体的,这里的LUN标识可为LUN ID,可由存储设备在创建LUN时分配。
在按照预设粒度对待写入的数据进行划分时,作为一个实施例,可依据待写入的数据对应的逻辑存储地址进行划分,以使将待写入的数据写入时间点快照LUN中对应的逻辑存储地址后,时间点快照LUN中存储的数据按照预设粒度对齐。
在一个实施例中,本步骤S101中,子数据块对应的逻辑存储地址块是按照预设粒度对待写入的数据对应的逻辑存储地址进行划分得到的其中一个逻辑存储地址块,上述划分得到的逻辑存储地址块的数量与子数据块的数量相同。在一个实施例中,划分得到的各逻辑存储地址块长度相等。
作为一个实施例,本申请步骤S101中的预设粒度可在创建时间点快照LUN后指定,其中,预设粒度可以为4K、8K等,本申请并不具体限定。以指定的预设粒度为8K为例,则时间点快照LUN中存储的数据均是按照8K对齐的。
在一个例子中,采用ROW技术为源LUN创建快照时间点后,在将对源LUN写请求重定向到快照资源时,可按照一定粒度对该写请求进行重定向,为便于描述,以下将这里的粒度记为重定向粒度。通过设置合适的重定向粒度可以有效减少重定向次数,以便更好地管理快照相关的映射关系。作为一个实施例,时间点快照LUN的预设粒度与所对应的源LUN的重定向粒度相等。
对于按照预设粒度划分写请求待写入的数据得到的各子数据块,作为一个实施例,将各子数据块写入时间点快照LUN中对应的逻辑存储地址块,可包括:对于各子数据块中的每一子数据块,检查时间点快照LUN当前记录的映射表(记录有逻辑存储地址与物理存储地址的映射关系)中是否存在与该子数据块对应的逻辑存储地址块具有映射关系的物理存储地址块,若是,则将该子数据块写入所述物理存储地址块;若否,则为该子数据块对应的逻辑存储地址块分配物理存储地址块,并将所述子数据块写入所述映射的物理存储地址块。其中,在为逻辑存储地址块分配物理存储地址块后,在映射表中记录该逻辑存储地址块与该物理存储地址块的映射关系。
步骤S102,针对写入至上述时间点快照LUN中的每一子数据块,若该子数据块对应的逻辑存储地址块在写入该子数据块之前未存储数据,且该子数据块的大小小于上述预设粒度,则将该子数据块对应的逻辑存储地址块确定为目标逻辑存储地址块。
作为一个实施例,对于写入至上述时间点快照LUN中的每一子数据块,若在将该子数据块写入对应的逻辑存储地址块之前,在时间点快照LUN记录的映射表中不存在与该逻辑存储地址块具有映射关系的物理存储地址块,则确定所述子数据块对应的逻辑存储地址块在写入该子数据块之前未存储数据。
为便于描述,在以下部分实施例中将步骤S102中“对应的逻辑存储地址块在写入该子数据块之前未存储数据,且该子数据块的大小小于预设粒度”的子数据块记为第一子数据块。
在确定第一子数据块对应的逻辑存储地址块为目标逻辑存储地址块时,作为一个实施例,可记录该第一子数据块的相关信息,具体的,这里的相关信息可包括第一子数据块的大小和逻辑存储地址。作为一个实施例,在确定第一子数据块对应的逻辑存储地址块为目标逻辑存储地址块时,可为该第一子数据对应的该目标逻辑存储地址块设置对应的回读标记。
步骤S103,依据上述时间点快照LUN对应的快照时间点查找到已记录的源LUN在该快照时间点时的数据信息,该数据信息至少包括数据以及存储数据的逻辑存储地址,从该数据信息中读取上述目标逻辑存储地址块存储的目标数据,上述目标逻辑存储地址块中用于存储上述目标数据的目标逻辑存储地址在上述时间点快照LUN内未存储数据,在上述源LUN中存储上述目标数据;将上述目标数据写入上述时间点快照LUN中的上述目标逻辑存储地址。
本步骤S103在将写请求待写入的数据全部写入时间点快照LUN后执行。作为一个实施例,可遍历所有目标逻辑存储地址块,对于每一目标逻辑存储地址块,执行本步骤S103。具体的,可遍历记录的所有第一子数据块的相关信息,对于其中的每一第一子数据块对应的目标逻辑存储地址块执行本步骤S103,以补齐该第一子数据块相比预设粒度缺少的数据,并可在执行完本步骤S103后,删除记录的该子数据块的相关信息。
在一个例子中,将目标数据写入时间点快照LUN中的目标逻辑存储地址后,该目标逻辑存储地址所在的目标逻辑存储地址块将不再作为目标逻辑存储地址块。作为一个实施例,若目标逻辑存储地址块设置有对应的回读标记,则在将上述目标数据写入时间点快照LUN中的目标逻辑存储地址块中的目标逻辑存储地址后,清除为该目标逻辑存储地址块设置的回读标记。
本步骤S103中时间点快照LUN对应的快照时间点,是为本步骤S103中的源LUN创建的一个快照时间点。作为一个实施例,从已记录的源LUN在快照时间点时的数据信息中读取数据可包括:依据时间点快照LUN对应的快照时间点从快照资源中读取数据和/或从该源LUN中读取数据。在一个实施例中,时间点快照LUN优先依据快照时间点从快照资源中读取数据,若读取不到,则从源LUN中读取目标数据。
为便于理解本步骤S103,图3A-3B为本申请实施例提供的步骤S103的实现示意图,下面以预设粒度为8K为例,结合图3A-3B举例描述:
如图3A所示,经过上述步骤S101、S102后时间点快照LUN上存储的各子数据分别在图中以A1、B1、C1标注,并以斜线填充的形式示出,其中,A1的大小为4K,为上文所描述的第一子数据。图3A中,A、B、C分别为A1、B1、C1对应的逻辑存储地址块,A1对应的逻辑存储地址块A为上文所描述的目标逻辑存储地址块。
根据本步骤S103,从已记录的源LUN在快照时间点时的数据信息中读取目标逻辑存储地址块A存储的目标数据,目标逻辑存储地址块A中存储该目标数据的目标逻辑存储地址在时间点快照LUN内未存储数据。时间点快照LUN中目标逻辑存储地址块A中未存储数据的目标逻辑存储地址部分,如图3A中未填充斜线的部分所示。
将从数据信息中读取的目标数据写入时间点快照LUN中的目标逻辑存储地址后,时间点快照LUN上存储的数据如图3B所示,其中,从数据信息中读取的目标数据以A1’标注。由此,通过本步骤S103,使时间点快照LUN上存储的数据最终按照8K对齐。
至此,完成图2所示流程。
通过图2所示流程,可在将写请求待写入的数据全部写入时间点快照LUN后,后台读取已记录的源LUN在快照时间点时的数据信息中的目标逻辑存储地址块存储的目标数据并写入时间点快照LUN中。由于后台操作不会影响前端业务,对前端业务来说,将写请求待写入的数据全部写入时间点快照LUN即完成写入操作,时间点快照LUN的写入性能得到了有效提升。
在一个实施例中,应用本申请实施例提供的数据写入方法的存储设备可以是支持ROW快照、COW快照的存储设备,上述存储设备的存储介质可以为SATA(Serial AdvancedTechnology Attachment)机械硬盘,SAS(Serial Attached SCSI)机械硬盘、SCSI(SmallComputer System Interface)机械硬盘等。
为便于理解图2所示流程,下面以预设粒度为8K,时间点快照LUN为精简LUN为例,结合图4所示流程对图2所示流程中的步骤S101、S102进行举例描述:
参见图4,图4为本申请实施例提供的步骤S101、S102的实现流程图。如图4所示,该流程可包括如下步骤:
步骤S201,当接收到写请求时,按照8K粒度对该写请求待写入的数据进行划分得到至少一个子数据块,并检查各子数据块在时间点快照LUN中对应的逻辑存储地址块是否均已存储数据;若是,则执行步骤S204,若否,则执行步骤S202。
由于时间点快照LUN存储的数据均是按照8K粒度对齐的,若待写入的子数据块在时间点快照LUN中对应的逻辑存储地址块已存储数据,则该已存储的数据的大小必然等于8K粒度。因此,无论待写入的子数据块是否等于8K,将该子数据块直接写入对应的逻辑存储地址块中,覆盖该逻辑存储地址块中已存储的数据后,该逻辑存储地址块中存储的数据大小仍为8K。
步骤S202,为上述各子数据块中对应的逻辑存储地址块未存储数据的子数据块分配物理存储空间,并检查上述各子数据块的大小是否均为8K;若是,则执行步骤S204,若否,则执行步骤S203。
作为一个实施例,这里的物理存储空间可为快照资源的物理存储地址块。
为子数据块分配物理存储地址块后,作为一个实施例,可在时间点快照LUN的映射表中,记录该物理存储地址块与该子数据块对应的逻辑存储地址块的映射关系。
作为一个实施例,本步骤S202也可仅检查对应的逻辑存储地址块未存储数据的各子数据块的大小是否均为8K。
步骤S203,对于大小不为8K的子数据块,若该子数据块对应的逻辑存储地址块未存储数据,则将该子数据块对应的逻辑存储地址块确定为目标逻辑存储地址块。
步骤S204,将上述各子数据块写入时间点快照LUN中对应的逻辑存储地址块。
至此,完成图4所示流程。需要说明的是,图4所示流程只是用于实现上述步骤S101、S102的一种示例,并不用于限制本申请。
通过图4所示流程,将写请求待写入的数据全部写入了时间点快照LUN中,对于前端业务,其下发的写请求已经完成了写入。作为一个实施例,在通过图4所示流程,或者通过其他流程完成上述步骤S101、S102后,可将写入完成这一结果上报至前端服务器。
基于图2、4所示流程,从将写请求的所有待写入的子数据写入时间点快照LUN,到对于第一子数据对应的目标逻辑存储地址块,从已记录的源LUN的数据信息中读取目标数据并写入时间点快照LUN的这段时间内,目标数据尚未写入时间点快照LUN中。
若在这段时间内接收到针对时间点快照LUN的读请求,则为尽量减少对数据读取的影响,在一个例子中,可检查该读请求待读取的数据是否包含目标数据,该目标数据为尚未从已记录的源LUN在快照时间点时的数据信息中读取并写入至时间点快照LUN的数据;若包含,则在将该目标数据写入至时间点快照LUN之后读取该目标数据;若不包含,则可直接读取该读请求携带的目标逻辑存储地址中存储的数据。
作为一个实施例,针对读请求携带的逻辑存储地址中的第一地址,第一地址是指与目标逻辑存储地址不存在重合的地址,若时间点快照LUN中的第一地址存储有数据,则从时间点快照LUN中读取该第一地址存储的数据;若时间点快照LUN中的第一地址尚未存储数据,则从已记录的源LUN在快照时间点的数据信息中读取该第一地址存储的数据。这里的目标逻辑存储地址,为上文步骤S103中描述的目标逻辑存储地址。
作为一个实施例,针对读请求携带的逻辑存储地址中的第二地址,第二地址是指与目标逻辑存储地址存在重合的地址,若时间点快照LUN中该目标逻辑存储地址尚未存储数据,则从已记录的源LUN在快照时间点的数据信息中读取该目标逻辑存储地址存储的目标数据并写入时间点快照LUN中的目标逻辑存储地址后,从时间点快照LUN中读取上述重合的地址中存储的数据。这里的目标数据,为上文步骤S103中描述的目标数据。
下面结合图5,对上述实施例中读请求的处理过程进行举例描述:
参见图5,图5为本申请实施例提供的数据读取方法流程图。如图5所示,该流程可包括:
步骤S301,当接收到针对时间点快照LUN的读请求时,按照预设粒度将该读请求携带的逻辑存储地址划分为至少一段子地址。
步骤S302,检查每一子地址在时间点快照LUN上是否均未存储数据;若是,则执行步骤S307,若否,则执行步骤S303。
步骤S303,检查在时间点快照LUN上存储有数据的各子地址中是否存在第一子地址,第一子地址为目标逻辑存储地址块中的地址;若是,则执行步骤S304,若否,则执行步骤S306。
这里的目标逻辑存储地址块,为通过上文步骤S102确定出的目标逻辑存储地址块。作为一个实施例,若上述图2所示流程中,对确定出的目标逻辑存储地址块设置了对应的回读标记,则对于上述各子地址中的每一子地址,若时间点快照LUN中该子地址所在的逻辑存储地址块设置有回读标记,则确定该子地址是目标逻辑存储地址块中的地址。
步骤S304,检查第一子地址与目标逻辑存储地址块中的目标逻辑存储地址是否存在重合的地址,若是,则执行步骤S305,若否,则执行步骤S306。
作为一个实施例,若上述图2所示流程中,记录了第一子数据的逻辑存储地址,则对于被确定是目标逻辑存储地址块中的地址的子地址,检查该子地址是否包含在记录的第一子数据的逻辑存储地址内,若是,则确定该子地址与目标逻辑存储地址不存在重合的地址;若否,则确定该子地址与目标逻辑存储地址存在重合的地址。
步骤S305,从已记录的源LUN在快照时间点的数据信息中读取上述目标逻辑存储地址存储的目标数据并写入时间点快照LUN中的目标逻辑存储地址。
步骤S306,对于每一子地址,若在时间点快照LUN中该子地址存储有数据,则从时间点快照LUN中读取该子地址存储的数据;若在时间点快照LUN中该子地址尚未存储数据,则从已记录的源LUN在快照时间点的数据信息中读取该子地址存储的数据。
步骤S307,从已记录的源LUN在快照时间点的数据信息中读取每一子地址存储的数据。
作为一个实施例,当读取到所有子地址中存储的数据后,将读取到的所有数据返回至前端服务器。
至此,完成对图5所示流程的描述。
通过图5所示流程,当接收到读请求时,仅在读请求待读取的数据包含需要从已记录的源LUN的数据信息中读取并写入时间点快照LUN的目标数据时,等待该目标数据写入至时间点快照LUN后再进行读取,其他情况下不会对数据读取造成影响。
而且,由于用户往往偏向于读取自身写入过的数据,读取自身未向时间点快照LUN写入的数据的概率较低,实际需要等待将目标数据写入至时间点快照LUN后再读取数据的情况较少出现,通过本申请实施例提供的数据读取流程,对时间点快照LUN的数据读取性能造成的影响较小。
以上对本申请提供的方法进行了描述,通过本申请提供的方法,能够实现较为高效地数据读写。下面对本申请提供的装置进行描述:
参见图6,图6为本申请实施例提供的数据写入装置的结构示意图。如图6所示,该装置包括写入单元401、确定单元402和回读单元403。
在一个例子中,上述写入单元401,用于当接收到写请求时,按照预设粒度对上述写请求待写入的数据进行划分得到至少一个子数据块,并将各子数据块写入时间点快照LUN中对应的逻辑存储地址块;上述子数据块对应的逻辑存储地址块是按照上述预设粒度对待写入的数据对应的逻辑存储地址进行划分得到的其中一块逻辑存储地址块;上述逻辑存储地址块与子数据块的数量相同;
上述确定单元402,用于针对写入至上述时间点快照LUN中的每一子数据块,若该子数据块对应的逻辑存储地址块在写入该子数据块之前未存储数据,且该子数据块的大小小于上述预设粒度,则将该子数据块对应的逻辑存储地址块确定为目标逻辑存储地址块;
上述回读单元403,用于依据上述时间点快照LUN对应的快照时间点查找到已记录的上述源LUN在上述快照时间点时的数据信息,上述数据信息至少包括数据以及存储数据的逻辑存储地址;从已记录的上述数据信息中读取上述目标逻辑存储地址块存储的目标数据,上述目标逻辑存储地址块中用于存储上述目标数据的目标逻辑存储地址在上述时间点快照LUN中未存储数据;将上述目标数据写入上述时间点快照LUN中的上述目标逻辑存储地址。
作为一个实施例,上述写请求携带上述时间点快照LUN的LUN标识。
作为一个实施例,时间点快照LUN当前记录有映射表,该映射表用于记录时间点快照LUN中的逻辑存储地址与物理存储地址的映射关系;上述写入单元401具体用于:
对于每一子数据块,检查上述映射表中是否存在与该子数据块对应的逻辑存储地址块具有映射关系的物理存储地址块,若是,则将上述子数据块写入上述物理存储地址块;若否,则为上述子数据块对应的逻辑存储地址块分配一个物理存储地址块,并将上述子数据块写入上述物理存储地址块。
作为一个实施例,上述确定单元402具体用于:
针对每一子数据块,在将该子数据块写入对应的逻辑存储地址块之前,若时间点快照LUN记录的映射表中不存在与该逻辑存储地址块具有映射关系的物理存储地址块,则确定上述子数据块对应的逻辑存储地址块在写入该子数据块之前未存储数据。
参见图7,图7为本申请实施例提供的另一数据写入装置的结构示意图。如图7所示,该装置在图6所示装置的基础上可进一步包括:
标记处理单元404,用于在上述确定单元402将上述子数据块对应的逻辑存储地址块确定为目标逻辑存储地址块后,为上述时间点快照LUN中的上述目标逻辑存储地址块设置对应的回读标记;在上述回读单元403将上述目标数据写入上述时间点快照LUN中的目标逻辑存储地址后,清除为上述目标逻辑存储地址块设置的回读标记。
作为一个实施例,数据写入装置进一步包括:
读取单元405,用于当接收到针对上述时间点快照LUN的读请求时,针对上述读请求携带的逻辑存储地址中的第一地址,第一地址是指与上述目标逻辑存储地址不存在重合的地址,若上述时间点快照LUN中的第一地址存储有数据,则从上述时间点快照LUN中读取上述第一地址存储的数据;若上述时间点快照LUN中的第一地址尚未存储数据,则从已记录的上述数据信息中读取上述第一地址存储的数据;
针对上述读请求携带的逻辑存储地址中的第二地址,第二地址是指与上述目标逻辑存储地址存在重合的地址,若上述时间点快照LUN中上述目标逻辑存储地址尚未存储数据,则从已记录的上述数据信息中读取上述目标逻辑存储地址存储的上述目标数据并写入上述时间点快照LUN中的上述目标逻辑存储地址,之后从上述时间点快照LUN中读取上述重合地址存储的数据。
至此,完成对图6所示装置的描述。
上述装置中各模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
请参见图8,图8为本申请实施例提供的一种电子设备的硬件结构示意图。该电子设备可以包括处理器501、存储器502和通信总线503。处理器501以及存储器502通过通信总线503完成相互间的通信。其中,存储器502上存放有计算机程序;处理器501可以通过执行存储器502上所存放的程序,执行上文描述的数据写入方法。
本文中提到的存储器502可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,存储器502可以是:RAM(Radom AccessMemory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
本申请实施例还提供了一种存储有计算机程序的机器可读存储介质,例如图8中的存储器502,所述计算机程序可由图8所示电子设备中的处理器501执行以实现上文中描述的数据写入方法。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (11)
1.一种数据写入方法,其特征在于,所述方法包括:
当接收到写请求时,按照预设粒度对所述写请求待写入的数据进行划分得到至少一个子数据块,并将各子数据块写入时间点快照LUN中对应的逻辑存储地址块;所述子数据块对应的逻辑存储地址块是按照所述预设粒度对待写入的数据对应的逻辑存储地址进行划分得到的其中一个逻辑存储地址块;所述逻辑存储地址块与子数据块的数量相同;
针对写入至所述时间点快照LUN中的每一子数据块,若该子数据块对应的逻辑存储地址块在写入该子数据块之前未存储数据,且该子数据块的大小小于所述预设粒度,则将该子数据块对应的逻辑存储地址块确定为目标逻辑存储地址块;
依据所述时间点快照LUN对应的快照时间点查找到已记录的源LUN在所述快照时间点时的数据信息,所述数据信息至少包括数据以及存储数据的逻辑存储地址;从已记录的所述数据信息中读取所述目标逻辑存储地址块存储的目标数据,所述目标逻辑存储地址块中用于存储所述目标数据的目标逻辑存储地址在所述时间点快照LUN中未存储数据;将所述目标数据写入所述时间点快照LUN中的所述目标逻辑存储地址。
2.根据权利要求1所述的方法,其特征在于,时间点快照LUN当前记录有映射表,该映射表用于记录时间点快照LUN中的逻辑存储地址与物理存储地址的映射关系;
所述将各子数据块写入时间点快照LUN中对应的逻辑存储地址块,包括:
对于每一子数据块,检查所述映射表中是否存在与该子数据块对应的逻辑存储地址块具有映射关系的物理存储地址块,若是,则将所述子数据块写入所述物理存储地址块;若否,则为所述子数据块对应的逻辑存储地址块分配一个物理存储地址块,并将所述子数据块写入所述物理存储地址块。
3.根据权利要求2所述的方法,其特征在于,所述子数据块对应的逻辑存储地址块在写入该子数据块之前未存储数据,通过以下步骤确定:
针对每一子数据块,在将该子数据块写入对应的逻辑存储地址块之前,若时间点快照LUN记录的映射表中不存在与该逻辑存储地址块具有映射关系的物理存储地址块,则确定所述子数据块对应的逻辑存储地址块在写入该子数据块之前未存储数据。
4.根据权利要求1所述的方法,其特征在于,该方法进一步包括:
当接收到针对所述时间点快照LUN的读请求时,针对所述读请求携带的逻辑存储地址中的第一地址,第一地址是指与所述目标逻辑存储地址不存在重合的地址,若所述时间点快照LUN中的第一地址存储有数据,则从所述时间点快照LUN中读取所述第一地址存储的数据;若所述时间点快照LUN中的第一地址尚未存储数据,则从已记录的所述数据信息中读取所述第一地址存储的数据;
针对所述读请求携带的逻辑存储地址中的第二地址,第二地址是指与所述目标逻辑存储地址存在重合的地址,若所述时间点快照LUN中所述目标逻辑存储地址尚未存储数据,则从已记录的所述数据信息中读取所述目标逻辑存储地址存储的所述目标数据并写入所述时间点快照LUN中的所述目标逻辑存储地址,之后从所述时间点快照LUN中读取所述重合的地址存储的数据。
5.根据权利要求1-4任一项所述的方法,其特征在于,将所述子数据块对应的逻辑存储地址块确定为目标逻辑存储地址块后,该方法进一步包括:为所述时间点快照LUN中的所述目标逻辑存储地址块设置对应的回读标记;
在将所述目标数据写入所述时间点快照LUN中的目标逻辑存储地址后,该方法进一步包括:清除为所述目标逻辑存储地址块设置的回读标记。
6.一种数据写入装置,其特征在于,所述装置包括:
写入单元,用于当接收到写请求时,按照预设粒度对所述写请求待写入的数据进行划分得到至少一个子数据块,并将各子数据块写入时间点快照LUN中对应的逻辑存储地址块;所述子数据块对应的逻辑存储地址块是按照所述预设粒度对待写入的数据对应的逻辑存储地址进行划分得到的其中一个逻辑存储地址块;所述逻辑存储地址块与子数据块的数量相同;
确定单元,用于针对写入至所述时间点快照LUN中的每一子数据块,若该子数据块对应的逻辑存储地址块在写入该子数据块之前未存储数据,且该子数据块的大小小于所述预设粒度,则将该子数据块对应的逻辑存储地址块确定为目标逻辑存储地址块;
回读单元,用于依据所述时间点快照LUN对应的快照时间点查找到已记录的源LUN在所述快照时间点时的数据信息,所述数据信息至少包括数据以及存储数据的逻辑存储地址;从已记录的所述数据信息中读取所述目标逻辑存储地址块存储的目标数据,所述目标逻辑存储地址块中用于存储所述目标数据的目标逻辑存储地址在所述时间点快照LUN中未存储数据;将所述目标数据写入所述时间点快照LUN中的所述目标逻辑存储地址。
7.根据权利要求6所述的装置,其特征在于,时间点快照LUN当前记录有映射表,该映射表用于记录时间点快照LUN中的逻辑存储地址与物理存储地址的映射关系;
所述写入单元具体用于:
对于每一子数据块,检查所述映射表中是否存在与该子数据块对应的逻辑存储地址块具有映射关系的物理存储地址块,若是,则将所述子数据块写入所述物理存储地址块;若否,则为所述子数据块对应的逻辑存储地址块分配一个物理存储地址块,并将所述子数据块写入所述物理存储地址块。
8.根据权利要求7所述的装置,其特征在于,所述确定单元通过以下步骤确定子数据块对应的逻辑存储地址块在写入该子数据块之前未存储数据:
针对每一子数据块,在将该子数据块写入对应的逻辑存储地址块之前,若时间点快照LUN记录的映射表中不存在与该逻辑存储地址块具有映射关系的物理存储地址块,则确定所述子数据块对应的逻辑存储地址块在写入该子数据块之前未存储数据。
9.根据权利要求7所述的装置,其特征在于,该装置进一步包括:
读取单元,用于当接收到针对所述时间点快照LUN的读请求时,针对所述读请求携带的逻辑存储地址中的第一地址,第一地址是指与所述目标逻辑存储地址不存在重合的地址,若所述时间点快照LUN中的第一地址存储有数据,则从所述时间点快照LUN中读取所述第一地址存储的数据;若所述时间点快照LUN中的第一地址尚未存储数据,则从已记录的所述数据信息中读取所述第一地址存储的数据;
针对所述读请求携带的逻辑存储地址中的第二地址,第二地址是指与所述目标逻辑存储地址存在重合的地址,若所述时间点快照LUN中所述目标逻辑存储地址尚未存储数据,则从已记录的所述数据信息中读取所述目标逻辑存储地址存储的所述目标数据并写入所述时间点快照LUN中的所述目标逻辑存储地址,之后从所述时间点快照LUN中读取所述重合的地址存储的数据。
10.根据权利要求6-9任一项所述的装置,其特征在于,该装置进一步包括:
标记处理单元,用于将所述子数据块对应的逻辑存储地址块确定为目标逻辑存储地址块后,为所述时间点快照LUN中的所述目标逻辑存储地址块设置对应的回读标记;
在将所述目标数据写入所述时间点快照LUN中的目标逻辑存储地址后,清除为所述目标逻辑存储地址块设置的回读标记。
11.一种电子设备,其特征在于,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如权利要求1至5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010752789.1A CN111913664B (zh) | 2020-07-30 | 2020-07-30 | 一种数据写入方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010752789.1A CN111913664B (zh) | 2020-07-30 | 2020-07-30 | 一种数据写入方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111913664A CN111913664A (zh) | 2020-11-10 |
CN111913664B true CN111913664B (zh) | 2022-04-19 |
Family
ID=73287931
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010752789.1A Active CN111913664B (zh) | 2020-07-30 | 2020-07-30 | 一种数据写入方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111913664B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113608699A (zh) * | 2021-08-09 | 2021-11-05 | 北京金山云网络技术有限公司 | 数据写入方法、装置及电子设备 |
CN113608701B (zh) * | 2021-08-18 | 2024-09-20 | 合肥大唐存储科技有限公司 | 一种存储系统中数据管理方法和固态硬盘 |
CN115952110B (zh) * | 2023-03-09 | 2023-06-06 | 浪潮电子信息产业股份有限公司 | 一种数据缓存方法、装置、设备和计算机可读存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7865677B1 (en) * | 2006-06-29 | 2011-01-04 | Emc Corporation | Enhancing access to data storage |
US9411517B2 (en) * | 2010-08-30 | 2016-08-09 | Vmware, Inc. | System software interfaces for space-optimized block devices |
CN103077099B (zh) * | 2013-01-08 | 2015-09-30 | 中国科学院计算技术研究所 | 一种块级快照系统及基于该系统的用户读写方法 |
US10007448B2 (en) * | 2015-08-28 | 2018-06-26 | Vmware, Inc. | Multiple hierarchies of snapshots |
US10250679B1 (en) * | 2016-03-30 | 2019-04-02 | EMC IP Holding Company LLC | Enabling snapshot replication for storage |
US10365978B1 (en) * | 2017-07-28 | 2019-07-30 | EMC IP Holding Company LLC | Synchronization of snapshots in a distributed consistency group |
CN109408295A (zh) * | 2018-11-13 | 2019-03-01 | 郑州云海信息技术有限公司 | 一种基于分布式存储系统的克隆卷填充方法、装置及设备 |
-
2020
- 2020-07-30 CN CN202010752789.1A patent/CN111913664B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111913664A (zh) | 2020-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200210082A1 (en) | Compound storage system and storage control method to configure change associated with an owner right to set the configuration change | |
US10977124B2 (en) | Distributed storage system, data storage method, and software program | |
US11243706B2 (en) | Fragment management method and fragment management apparatus | |
US10170151B2 (en) | Method and system for handling random access write requests for a shingled magnetic recording hard disk drive | |
CN111913664B (zh) | 一种数据写入方法及装置 | |
US8285965B2 (en) | Aligning data storage device partition to boundary of physical data sector | |
US8239648B2 (en) | Reclamation of thin provisioned disk storage | |
US8924664B2 (en) | Logical object deletion | |
US20060271754A1 (en) | Storage system | |
US10649891B2 (en) | Storage device that maintains mapping data therein | |
US8694563B1 (en) | Space recovery for thin-provisioned storage volumes | |
CN109902034B (zh) | 快照创建方法、装置、电子设备及机器可读存储介质 | |
CN103514249A (zh) | 一种数据自精简方法和系统及存储装置 | |
KR20100077156A (ko) | 씬 프로비저닝 이송 및 스크러빙 방법 | |
US8862819B2 (en) | Log structure array | |
CN103761190A (zh) | 数据处理方法及装置 | |
US20070106868A1 (en) | Method and system for latency-directed block allocation | |
US20210318826A1 (en) | Data Storage Method and Apparatus in Distributed Storage System, and Computer Program Product | |
US20180307427A1 (en) | Storage control apparatus and storage control method | |
WO2021088586A1 (zh) | 一种存储系统中的元数据的管理方法及装置 | |
CN109582235B (zh) | 管理元数据存储方法及装置 | |
CN109739688B (zh) | 快照资源空间管理方法、装置、电子设备 | |
CN116737060A (zh) | 非易失性存储器器件中的基于超级块的写入管理 | |
US10853257B1 (en) | Zero detection within sub-track compression domains | |
US11144445B1 (en) | Use of compression domains that are more granular than storage allocation units |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |