一种基于快照的版本管理方法与流程

文档序号:15492483发布日期:2018-09-21 20:54阅读:257来源:国知局

本发明涉及快照版本管理领域,具体涉及一种基于快照的版本管理方法。



背景技术:

btrfs(通常念成butterfs),是由oracle于2007年宣布并进行中的cow(copy-on-write式)文件系统。目标是取代linux目前的ext3文件系统,改善ext3的限制,特别是单一文件大小的限制,总文件系统大小限制以及加入文件校验和特性。加入目前ext3/4未支持的一些功能,例如可写的磁盘快照(snapshots),以及支持递归的快照(snapshotsofsnapshots),内建磁盘阵列(raid)支持,支持子卷(subvolumes)的概念,允许在线调整文件系统大小。

把文件系统的一部分配置为一个完整的子文件系统,称之为subvolume。

采用subvolume,一个大的文件系统可以被划分为多个子文件系统,这些子文件系统共享底层的设备空间,在需要磁盘空间时便从底层设备中分配,类似应用程序调用malloc()分配内存一样。可以称之为存储池。这种模型有很多优点,比如可以充分利用disk的带宽,可以简化磁盘空间的管理等。

所谓充分利用disk的带宽,指文件系统可以并行读写底层的多个disk,这是因为每个文件系统都可以访问所有的disk。传统的文件系统不能共享底层的disk设备,无论是物理的还是逻辑的,因此无法做到并行读写。

所谓简化管理,是相对于lvm等卷管理软件而言。采用存储池模型,每个文件系统的大小都可以自动调节。而使用lvm,如果一个文件系统的空间不够了,该文件系统并不能自动使用其他磁盘设备上的空闲空间,而必须使用lvm的管理命令手动调节。

快照是对文件系统某一时刻的完全备份。建立快照之后,对文件系统的修改不会影响快照中的内容。这是非常有用的一种技术。

比如数据库备份。假如在时间点t1,管理员决定对数据库进行备份,那么他必须先停止数据库。备份文件是非常耗时的操作,假如在备份过程中某个应用程序修改了数据库的内容,那么将无法得到一个一致性的备份。因此在备份过程中数据库服务必须停止,对于某些关键应用这是不能允许的。

利用快照,管理员可以在时间点t1将数据库停止,对系统建立一个快照。这个过程一般只需要几秒钟,然后就可以立即重新恢复数据库服务。此后在任何时候,管理员都可以对快照的内容进行备份操作,而此时用户对数据库的修改不会影响快照中的内容。当备份完成,管理员便可以删除快照,释放磁盘空间。

现有版本管理系统多是基于应用层面实现,版本的创建多是采用数据备份的方式实现,创建过程时间较长且存在大量的数据冗余,版本之间切换也存在时间延迟的情况。而对于采用btrfs快照进行的版本管理,目前需要用户自行输入代码才能调用相应文件进行操作,使用十分不便。目前,还没有基于btrfs快照技术实现的版本管理系统,用户想要使用btrfs快照技术实现版本管理,只能自行输入btrfs快照技术相关命令来进行操作,使用十分不便。



技术实现要素:

为了解决现有技术的不足,本发明提供了一种基于快照的版本管理方法,该方法基于btrfs文件系统的快照管理技术,通过将文件系统子卷和快照操作技术进行封装之后再行调用,能够无时间延迟的进行版本切换以及快速访问,适用于数据存储,文件管理等,具有冗余小、适应性强、性能高效及使用方便的特点。

为了实现上述目的,本发明的技术方案如下:

一种基于快照的版本管理方法,包括以下步骤:

1)创建btrfs文件系统,用于存储数据文件;

2)采用版本管理服务,对文件系统子卷和快照操作技术进行封装;

3)配置版本管理服务,实现对子卷和快照调用命令的快速调用;

4)采用配置后的版本管理服务进行版本创建、版本切换、版本对比和版本删除操作。

进一步的,所述步骤1)中,通过在操作系统中选择btrfs文件系统或下载btrfs安装包进行btrfs文件系统安装。

进一步的,所述步骤1)包括基于btrfs文件系统,使用mkfs.btrfs命令建立一个btrfs格式的文件系统。

进一步的,所述步骤2)中,版本管理服务中,将对文件系统子卷和快照操作的命令采用程序代码进行封装,形成代码调用模块。

进一步的,所述步骤3)中,通过配置子卷和快照存放位置实现配置版本管理服务。

进一步的,所述步骤3)中,所述子卷和快照调用命令包括创建子卷命令、创建快照命令、查看快照和子卷命令、快照挂载命令及删除快照命令。

进一步的,所述步骤4)中,版本创建,通过调用版本创建程序模块,执行调用快照创建命令,进行版本创建。

进一步的,所述步骤4)中,版本切换,通过调用版本访问程序模块,版本访问程序模块提供查看所有快照的接口,每个快照都挂载在不同的目录下,可以随时访问不同的快照,选择想要查看的版本,访问相应目录,完成版本切换。

进一步的,所述步骤4)中,版本对比,通过调用版本访问及版本对比程序模块,同时访问两个版本所对应的快照,并将两个快照中的数据进行比较。

进一步的,所述步骤4)中,版本删除,通过调用版本删除程序模块,执行命令删除快照和子卷。

与现有技术相比,本发明的有益效果是:

(1)冗余小

该方法基于btrfs文件系统的快照管理技术实现,快照不等于完全复制,文件系统大小不会成倍增加,相对于数据备份的方式,减小了数据冗余;

(2)适应性强

该方法可以很好的实现对数据库和文件的版本管理,可以在不关闭服务的情况下,完成对数据库和文件的快照创建;

(3)性能高效

该方法基于btrfs文件系统的快照管理技术实现,一个新版本创建就是创建一个新的快照,这个过程一般只需要几秒钟,基本不影响数据库或者文件服务的使用;

(4)使用方便

该方法将btrfs文件系统的快照调用命令封装到程序代码当中,通过调用相关程序接口,就能采用快照方式对文件版本进行管理。

附图说明

构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。

图1为本发明版本管理方法应用于数据库版本管理的流程图。

具体实施方式

下面结合附图与具体实施例对本发明做进一步的说明。

应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。

需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。

在本发明中,术语如“上”、“下”、“左”、“右”、“前”、“后”、“竖直”、“水平”、“侧”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,只是为了便于叙述本发明各部件或元件结构关系而确定的关系词,并非特指本发明中任一部件或元件,不能理解为对本发明的限制。

本发明中,术语如“固接”、“相连”、“连接”等应做广义理解,表示可以是固定连接,也可以是一体地连接或可拆卸连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的相关科研或技术人员,可以根据具体情况确定上述术语在本发明中的具体含义,不能理解为对本发明的限制。

正如背景技术所介绍的,现有技术中存在现有的版本管理系统多是基于应用层面实现,版本的创建多是采用数据备份的方式实现,创建过程时间较长且存在大量的数据冗余,版本之间切换也存在时间延迟的情况,而对于采用btrfs快照进行的版本管理,目前需要用户自行输入代码才能调用相应文件进行操作,使用十分不便的问题,为了解决如上的技术问题,本申请提供了一种基于快照的版本管理方法,该方法基于btrfs文件系统的快照管理技术,通过将文件系统子卷和快照操作技术进行封装之后再行调用,能够无时间延迟的进行版本切换以及快速访问,适用于数据存储,文件管理等,具有冗余小、适应性强、性能高效及使用方便的特点。

一种基于快照的版本管理方法,包括以下步骤:

1)创建btrfs文件系统,用于存储数据文件;

2)采用版本管理服务,对文件系统子卷和快照操作技术进行封装;

3)配置版本管理服务,实现对子卷和快照调用命令的快速调用;

4)采用配置后的版本管理服务进行版本创建、版本切换和版本删除操作。

所述步骤1)中,通过在操作系统中选择btrfs文件系统或下载btrfs安装包进行btrfs文件系统安装。

目前主流的linux操作系统,如centos7,已经加入了btrfs支持。

所述步骤1)包括基于btrfs文件系统,使用mkfs.btrfs命令建立一个btrfs格式的文件系统。

所述步骤2)中,版本管理服务中,将对文件系统子卷和快照操作的命令采用程序代码进行封装,形成代码调用模块,通过调用相应的代码模块来调用相关命令执行相关操作。

所述步骤3)中,通过配置子卷和快照存放位置实现配置版本管理服务。

所述步骤3)中,所述子卷和快照调用命令包括创建子卷命令、创建快照命令、查看快照和子卷命令、快照挂载命令及删除快照命令。

在btrfs文件系统下,所述创建子卷的具体过程为:

在需要创建子卷的目录下,执行btrfssubvolumecreatesubvolume_name代码即可,其中subvolume_name为子卷名称;

所述创建快照的具体过程为:

快照(snapshots)其实就是一种特殊的子卷,它能记录下在创建它的那一刻,它所在的父子卷(parentsubvolume)的所有内容,如果想要创建一个文件或系统的备份,那么就可以通过创建快照来快速实现,创建快照的方式如下:

btrfssubvolumesnapshotpathnamepathname/snapshot_path

其中,pathname即想要备份的文件路径,而pathname/snapshot_path即创建的快照所放置的路径;

所述查看快照和子卷具体过程为:

如果想要查看某个目录下有哪些子卷和快照,那么可以执行以下语句:

btrfssubvolumelistpathname

其中pathname为所要查看的目录,上述命令可在任意目录下执行。

所述删除快照的执行语句为:

btrfssubvolumedalete/mydata/logs_snapshot

所述步骤4)中,版本创建,通过调用版本创建程序模块,执行调用快照创建命令,进行版本创建。

所述步骤4)中,版本切换,通过调用版本访问程序模块,版本访问程序模块提供查看所有快照的接口,每个快照都挂载在不同的目录下,可以随时访问不同的快照,选择想要查看的版本,访问相应目录,完成版本切换。

所述步骤4)中,版本对比,通过调用版本访问及版本对比程序模块,同时访问两个版本所对应的快照,并将两个快照中的数据进行比较。

所述步骤4)中,版本删除,通过调用版本删除程序模块,执行命令删除快照和子卷。

本发明的一个实施例如图1所示:用于数据库的版本管理,数据库使用sqlite,具体实施过程如下:

1、通过事务触发版本创建功能,如插入、更新、删除等操作时,执行版本创建代码,创建新的版本;

2、访问数据库时,调用版本访问代码,先选择想要访问的版本,即选择该版本对应的快照,然后访问数据;

3、进行数据库两个历史版本对比时,就是调用版本访问及版本对比代码,将这两个时间点创建的快照中的数据进行对比;

4、可以设置版本的存储参数,如最多创建100个快照,当超过这个数的时候,从最早的快照开始删除。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1