在openSUSE下使用Snapper实现快照和回滚(3)

如果你在安装的时候已经把root分区格式化为Btrfs文件系统了,Snapper会自动创建每小时的系统快照,和为YaST/zypper交互创建pre-和post-快照。这些工作可以通过下面的方法禁用:

禁用每小时的快照

编辑/etc/snapper/configs/root 设置TIMELINE_CREATE为no:

TIMELINE_CREATE=“NO”

禁用zypper快照

卸载包 snapper-zypp-plugin

禁用YaST快照

编辑/etc/sysconfig/yast2设置USE_SNAPPER为no:

USE_SNAPPER=“no”

4.6 创建snapper配置文件

Snapper的执行方式被定义在了一个配置文件中,配置文件指定了每一个分区或Btrfs子卷。这些配置文件存在于/etc/snapper/configs/。默认的随snapper一起安装的对“/”目录起作用的配置文件被称为root。它为“/”创建和管理YaST和zypper快照和每小时的备份快照。

你可以创建自己的配置文件,用来管理其他的被格式化为btrfs的分区或者存在于一个btrfs分区上的子卷。在下面的例子当中我们将设置一个Snapper配置文件来备份一个分区上的web服务器的数据,格式化为btrfs分区被挂载于/srv/www。

为了从这些快照中恢复文件 ,你可以使用snapper本身或YaST snapper 模块。在YaST当中你需要选择你当前的配置文件,你需要使用全局选项- c 为snapper指定你的配置文件(例如 snapper –c myconfig list)。

使用snapper create-config创建一个新的Snapper配置文件:

Snapper –c www-data① create-config /srv/www②

① 配置文件的名称

②创建快照的分区或者btrfs子卷的挂载点

这条命令将创建一个新的配置文件/etc/snapper/config-templates/www-data和合理的默认值(继承自/etc/snapper/config-templates/default)。

窍门:配置默认值

新配置文件的默认值来自于/etc/snapper/config-templates/default。使用你自己设置的默认值,只需要在同一个目录下拷贝这个文件并修改成你所需要的。为了使用它,在创建配置文件命令是使用-t选项指定:

Snapper –c www-data create-config –t my_defaults /srv/www

4.6.1  修改配置文件

要调节配置文件,你需要使用一个编辑器修改它。它以key=value的形式包含了键值对。你只能修改值。

SUBVOLUME

使用快照的分区或子卷的挂载点。不要 修改。

FSTYPE

分区文件系统的类型,不要修改。

NUMBER_CLEANUP

定义当NUMBER_LIMIT指定的数量和NUMBER_MIN_AGE指定的年龄被超过时是否自动的删除老的快照。有效值:yes,no。

注意:限制和年龄

NUMBER_LIMIT 和 NUMBER_MIN_AGE总是会两者同时评估。只有两个条件同时满足时快照才被删除。如果你总是想保留确定数量的快照而不管他们的年龄,设置NUMBER_MIN_AGE为0.另一方面如果你不想保留超出年龄的快照,设置NUMBER_LIMIT为0.

NUMBER_LIMIT

定义如果NUMBER_CLEANUP被设置为yes多少快照将被保留。

NUMBER_MIN_AGE

用秒定义在它能被自动删除之前快照最小的存在时间。

TIMELINE_CREATE

如果设置为yes,每小时的快照就会被创建。这是当前仅有的方法创建自动快照,因此设置它为yes是强烈推荐的。有效值:yes,no

TIMELINE_MIN_AGE

用秒定义在它能被自动删除之前快照最小的存在时间。

TIMELINE_LIMIT_HOURLY, TIMELINE_LIMIT_DAILY,

TIMELINE_LIMIT_MONTHLY, TIMELINE_LIMIT_YEARLY

一定数量的快照被保留几小时,几天,几月,几年。

例子 4.1:时间表配置例子

TIMELINE_CREATE="yes"

TIMELINE_CLEANUP="yes"

TIMELINE_MIN_AGE="1800"

TIMELINE_LIMIT_HOURLY="10"

TIMELINE_LIMIT_DAILY="10"

TIMELINE_LIMIT_MONTHLY="10"

这个样例配置允许每小时的快照自动被清除。TIMELINE_MIN_AGE 和TIMELINE_LIMIT_*总是同时被评估。在这个例子当中,在快照可以被删除之前快照的最小年龄被设置为30分钟(1800秒)。因为我们会创建每小时的快照,这可以保证只有最新的快照会被保留。如果TIMELINE_LIMIT_DAILY被设置为0,这就意味着每天的第一个快照也被保留。

被保留的快照

小时的:最新的10个快照

天的:每天的第一个快照将被保留十天

月的:一个月的最后一天的第一个快照将被保留十个月

年的:12月31日的第一个快照将被保存十年

4.7 限制

虽然已经准备好作为产品了,Btrfs和Snapper还在恒定的向前开发中。下列的限制存在于当前。计划将会在将来的发行版中解决这些问题。

4.7.1数据一致

当创建快照时没有机制会确保数据连贯。每当一个文件被写入(例如数据库)在同时快照被创建,结果将会是一个破损或写入了一半的文件。恢复这样的文件将会导致问题。因此强烈推荐总是进入详细查看改变列表和他们的不同。只有真实的恢复文件需要被归于你想回滚的操作。

4.7.2恢复用户附加数据

通常/home存在于一个独立的分区上。这样一个独立的分区将不会是用于做YaST回滚的默认配置文件的一部分。因此当使用Snapper恢复用户附加数据时用户的home分区将不会被删除数据。强烈使用YaST User和Group Management工具来删除用户

4.7.3不要回滚/boot和Boot Loader的改变

当前的openSUSE不能从btrfs分区启动。因此当安装使用btrfs为系统分区时一个独立的分区将被创建并挂载到/boot。因为/boot不支持快照,下面的YaST/zypper回滚限制使用:

在bootloader上任何配置更改不可以被回滚

唯一可以被回滚的bootloader配置文件在/etc。

主要的存在于/boot中的配置文件不可以被回滚。

不要回滚核心安装

核心自己和他的initrd被安装在/boot分区,然而核心模块和资源却被分别安装在/var/lib和/usr/src。此外每个核心安装也改变bootloader在/boot的配置文件所以无论何时你回滚联系到反安装核心安装时,你需要从/boot手动移除核心和他的inintd并调节bootloader配置文件移除核心启动项。

4.8常见问题

为什么Snapper永远不会在日志文件/var/log,/tmp和其他文件夹上显示改变?

对于一些目录我们禁用快照,例如/var/log因为恢复日志使寻找问题更困难了。为了排除对一个路径建立快照,我们给那个路径创建了子卷。在openSUSE下列的挂在点排除快照功能:

/opt

/srv

/tmp

/var/crash

/var/log

/var/run

/vat/spool

/var/tmp

我可以从Bootloader启动快照吗?

现在这是不行的。OpenSUSE的Bootloader当前不支持从btrfs分区启动。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/17410.html