CN114546711A - 一种Linux系统下的卷级快照实现方法 - Google Patents
一种Linux系统下的卷级快照实现方法 Download PDFInfo
- Publication number
- CN114546711A CN114546711A CN202011289911.2A CN202011289911A CN114546711A CN 114546711 A CN114546711 A CN 114546711A CN 202011289911 A CN202011289911 A CN 202011289911A CN 114546711 A CN114546711 A CN 114546711A
- Authority
- CN
- China
- Prior art keywords
- volume
- snapshot
- sda
- dev
- read
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种Linux系统卷级快照的实现方法,所述方法包括如下步骤:步骤1),首先获知要创建快照的卷的信息。步骤2),通知原始卷/dev/sda1文件系统进行缓存刷新。步骤3),接管卷/dev/sda1的读写请求。步骤4),为原始卷创建快照卷/dev/sda1_snapshot。步骤5),获取快照卷/dev/sda1_snapshot的位图信息。步骤6),处理原始卷/dev/sda1的读写请求。
Description
技术领域
本发明属于计算机数据容灾和备份,虚拟化和云计算领域,具体涉及一种Linux系统下的卷级快照实现方法。
背景技术
在Windows系统上,微软实现了一种卷级的快照(Volume Shadow Copy),可以支持Windows系统下的大多数文件系统,比如NTFS,ReFS等。
而在Linux下面,还没有一种类似于微软的卷级快照的通用的卷级快照机制,目前LVM可以实现近似的卷级快照功能,虽然也很方便和强大,但是LVM也有很多缺点和不足。第一,LVM的快照只能支持LVM卷,普通的非LVM卷没有办法支持。第二,要对LVM卷做快照的话,必须提前预留一块空间给LVM快照,并且要提前分配固定大小的值。第三,LVM快照要求为LVM快照预留的空间必须是未分配空间,如果LVM上没有未分配空间,即使LVM卷上有空闲空间,也不能为LVM卷做快照。第四,LVM的快照性能一直被用户诟病,一旦为卷创建了快照,其卷上的读写性能受到很大影响。
发明内容
因此,针对Linux系统中LVM现有快照技术的中存在的问题,本发明提出了一种Linux系统卷级快照的实现方法,可以很好地解决现有技术中的问题。本发明实现了一个Linux下的卷级驱动,通过该卷级驱动实现为Linux上的卷创建快照。本发明支持Linux系统上所有的卷设备,LVM卷和非LVM卷都支持,也支持所有的文件系统。不需要提前额外预留存储空间,可以使用卷本身的空闲空间,也可以使用别的卷的空间来存储快照数据。本发明也很好地解决了性能和效率问题。
为实现上述目的,本发明所使用的技术方案如下:
一种Linux系统卷级快照的实现方法,步骤包括:
步骤1),首先获知要创建快照的卷的信息,假设要做快照的卷是/dev/sda1,后面都以卷/dev/sda1为例来进行说明。
步骤2),通知原始卷/dev/sda1文件系统进行缓存刷新,将缓存中的数据写入磁盘,以形成该时刻的一个稳定点,并冻结针对该卷的写操作。
步骤3),接管卷/dev/sda1的读写请求,将/dev/sda1上的读写请求重定向到本发明的卷级驱动上,所有/dev/sda1上的读写请求首先经过本发明的卷级驱动,然后再由本发明的卷驱动继续传递到原始卷/dev/sda1,同时解冻该卷的写操作。
步骤4),为原始卷创建快照卷/dev/sda1_snapshot,同时为原始卷/dev/sda1的写操作创建COW(COPY ON WRITE)缓存文件snapshot_cache.dat,该缓存文件snapshot_cache.dat可以位于任何位置,可以在原始卷上,也可以在别的卷上。
步骤5),获取快照卷/dev/sda1_snapshot的位图信息,即哪些位置有数据,此时的快照卷保持了和原始卷一模一样的数据,并将快照卷的位图信息通知本发明中的卷级驱动,以进行优化。
步骤5),处理原始卷/dev/sda1的读写请求,如果是读请求,直接传递到原始卷,如果是写请求,如果该位置的写请求是创建快照之后的第一次写,并且通过比对快照卷的位图信息,确定这个写请求是包含在位图信息中,则将要写的位置的数据读取出来,保存到snapshot_cache.dat文件中,然后将写请求传递到原始卷。
步骤6),处理快照卷/dev/sda1_snapshot的读写请求,由于快照的本质是读操作,因此,对于所有的写操作,都将返回失败,对于读请求,如果是该位置的数据是没有变化过的,则将直接从原始卷对应的位置读取信息,如果是已经变化过的数据,则从snapshot_cache.dat文件中获取对应的信息。
附图说明
图1是本发明的卷级驱动接管原始卷的读写请求示意图。
图2是本发明原始卷的位图信息示意图。
图3是本发明的某一时刻缓存文件snapshot_cache.dat状态示意图。
具体实施方式
以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
本发明一种Linux系统卷级快照的实现方法,包括以下步骤:
步骤1),首先获知要创建快照的卷的信息,假设要做快照的卷是/dev/sda1,后面都以卷/dev/sda1为例来进行说明。
步骤2),在应用层通知本发明卷级驱动要对/dev/sda1做快照,本发明中的卷级驱动得到通知以后,首先通知原始卷/dev/sda1文件系统进行缓存刷新,将缓存中的数据写入磁盘,以形成该时刻的一个稳定点,并冻结针对该卷的写操作。
步骤3),本发明的卷级驱动接管卷/dev/sda1的读写请求,将/dev/sda1上的读写请求重定向到本发明的卷级驱动上,所有/dev/sda1上的读写请求首先经过本发明的卷级驱动,然后再由本发明的卷驱动继续传递到原始卷/dev/sda1,同时解冻该卷的写操作,步骤1),2),3)的过程如图1所示。
步骤4),本发明卷级驱动为原始卷创建快照卷/dev/sda1_snapshot,同时为原始卷/dev/sda1的写操作创建COW(COPY ON WRITE)缓存文件snapshot_cache.dat,该缓存文件snapshot_cache.dat可以位于任何位置,可以在原始卷上,也可以在别的卷上。
Snapshot_cache.dat文件为空洞文件,大小与原始卷大小一样,但是由于是空洞文件,因此所占的空间非常小,实际大小取决于在制作快照以后,原始卷在有效区域变化的数据量的大小。
步骤5),获取快照卷/dev/sda1_snapshot的位图信息,即哪些位置有数据,此时的快照卷保持了和原始卷一模一样的数据,并将快照卷的位图信息通知本发明中的卷级驱动,以进行优化。
步骤5),处理原始卷/dev/sda1的读写请求,如果是读请求,直接传递到原始卷,如果是写请求,如果该位置的写请求是创建快照之后的第一次写,并且通过比对快照卷的位图信息,确定这个写请求是包含在位图信息中,则将要写的位置的数据读取出来,保存到snapshot_cache.dat文件中,然后将写请求传递到原始卷。
对步骤5)再做更详细地描述,如图2所示,原始卷的数据区域包括两个部分,一个部分是位图信息所指示的部分,位图信息标示了在制作快照那一刻原始卷的数据。另外一个部分是在制作快照时刻的原始卷的空闲部分。
如果写请求是发生在无数据部分,即图2中的白色区域,比如在建立快照之后,新增加的文件,新写的数据等,则本发明的卷级驱动对于这样的写请求,不做处理,直接传递给原始卷。如果写请求是发生在有数据部分,即黑色区域,首先判断是不是第一次写,如果不是第一次写,则表示本发明驱动已经处理过这块区域了,如果是第一次写,则将该区域原始的数据读取出来,保存到snapshot_cache.dat文件中。
由于设计snapshot_cache.dat是一个空洞文件,并且大小和原始卷一样大,因此将读取出来的数据直接写入到snapshot_cache.dat对应的位置即可,不需要额外地做任何计算。
如图3所示,就是某一个时刻的snapshot_cache.dat的状态。只有真正有数据部分才会占用磁盘空间。
步骤6),处理快照卷/dev/sda1_snapshot的读写请求,由于快照的本质是读操作,因此,对于所有的写操作,都将返回失败,对于读请求,如果是该位置的数据是没有变化过的,则将直接从原始卷对应的位置读取信息,如果是已经变化过的数据,则从snapshot_cache.dat文件中获取对应的信息。
综上所述,本发明一种Linux系统卷级快照的实现方法,有效地解决了Linux系统为卷创建快照的问题。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。
Claims (7)
1.一种基于整机连续数据保护的数据恢复方法,包括如下步骤:
步骤1),首先获知要创建快照的卷的信息,假设要做快照的卷是/dev/sda1,后面都以卷/dev/sda1为例来进行说明。
2.步骤2),通知原始卷/dev/sda1文件系统进行缓存刷新,将缓存中的数据写入磁盘,以形成该时刻的一个稳定点,并冻结针对该卷的写操作。
3.步骤3),接管卷/dev/sda1的读写请求,将/dev/sda1上的读写请求重定向到本发明的卷级驱动上,所有/dev/sda1上的读写请求首先经过本发明的卷级驱动,然后再由本发明的卷驱动继续传递到原始卷/dev/sda1,同时解冻该卷的写操作。
4.步骤4),为原始卷创建快照卷/dev/sda1_snapshot,同时为原始卷/dev/sda1的写操作创建COW(COPY ON WRITE)缓存文件snapshot_cache.dat,该缓存文件snapshot_cache.dat可以位于任何位置,可以在原始卷上,也可以在别的卷上。
5.步骤5),获取快照卷/dev/sda1_snapshot的位图信息,即哪些位置有数据,此时的快照卷保持了和原始卷一模一样的数据,并将快照卷的位图信息通知本发明中的卷级驱动,以进行优化。
6.步骤5),处理原始卷/dev/sda1的读写请求,如果是读请求,直接传递到原始卷,如果是写请求,如果该位置的写请求是创建快照之后的第一次写,并且通过比对快照卷的位图信息,确定这个写请求是包含在位图信息中,则将要写的位置的数据读取出来,保存到snapshot_cache.dat文件中,然后将写请求传递到原始卷。
7.步骤6),处理快照卷/dev/sda1_snapshot的读写请求,由于快照的本质是读操作,因此,对于所有的写操作,都将返回失败,对于读请求,如果是该位置的数据是没有变化过的,则将直接从原始卷对应的位置读取信息,如果是已经变化过的数据,则从snapshot_cache.dat文件中获取对应的信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011289911.2A CN114546711A (zh) | 2020-11-18 | 2020-11-18 | 一种Linux系统下的卷级快照实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011289911.2A CN114546711A (zh) | 2020-11-18 | 2020-11-18 | 一种Linux系统下的卷级快照实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114546711A true CN114546711A (zh) | 2022-05-27 |
Family
ID=81659649
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011289911.2A Pending CN114546711A (zh) | 2020-11-18 | 2020-11-18 | 一种Linux系统下的卷级快照实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114546711A (zh) |
-
2020
- 2020-11-18 CN CN202011289911.2A patent/CN114546711A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9529814B1 (en) | Selective file system caching based upon a configurable cache map | |
US9405680B2 (en) | Communication-link-attached persistent memory system | |
US5263154A (en) | Method and system for incremental time zero backup copying of data | |
JP2557172B2 (ja) | タイムゼロ・バックアップ・コピー・プロセスにおける副ファイル状態のポーリングのための方法およびシステム | |
US10838929B2 (en) | Application-controlled sub-LUN level data migration | |
US7783850B2 (en) | Method and apparatus for master volume access during volume copy | |
US10831390B2 (en) | Application-controlled sub-lun level data migration | |
US9098452B2 (en) | Selecting files to backup in a block level backup | |
US6564307B1 (en) | Method, system, and program for logically erasing data | |
EP2333653A1 (en) | Information backup/restoring apparatus and information backup/restoring system | |
US9311002B1 (en) | Systems, methods, and computer readable media for compressing data at a virtually provisioned storage entity | |
US20060174075A1 (en) | Method for creating and preserving snapshots in a storage system | |
JP2004127294A (ja) | 仮想記憶システムおよびその動作方法 | |
US6338114B1 (en) | Method, system, and program for using a table to determine an erase operation to perform | |
US10831729B2 (en) | Application-controlled sub-LUN level data migration | |
US20210286515A1 (en) | Hiccup-less failback and journal recovery in an active-active storage system | |
US11789611B2 (en) | Methods for handling input-output operations in zoned storage systems and devices thereof | |
JP4222917B2 (ja) | 仮想記憶システムおよびその動作方法 | |
US7082445B2 (en) | Fast data copy using a data copy track table | |
CN114546711A (zh) | 一种Linux系统下的卷级快照实现方法 | |
CN109508255B (zh) | 一种数据处理的方法及装置 | |
US10366014B1 (en) | Fast snap copy | |
US11194760B1 (en) | Fast object snapshot via background processing |
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 |