btrfs-snapper 实现Linux 文件系统快照回滚
###btrfs-snapper 应用
----------
####环境介绍
> btrfs文件系统是从ext4过渡而来的被誉为“下一代的文件系统”。该文件系统具有高扩展性(B-tree)、数据一致性(COW)、多设备管理(Snapshot、clone)及其他特性(延迟分配、小文件优化、索引)。
> 因此该文件系统对Linux系统版本要求较高,目前CentOS 7、Ubuntu14.10、SUSE13.2以及Fedora17 以上版本(内核3.*)支持该文件系统。
> 可以通过mkfs.btrfs 命令判断是否支持。
######
> Snapper 是基于btrfs与ext4文件系统(主要是btrfs)的快照管理工具,使用snapper 可以方便地进行快照创建、查看、修改删除、对比、回滚恢复、甚至针对某条指令创建前后快照。
######
> 本测试系统为CentOS 7 内核版本3.10.0。btrfs 版本为3.16.2
####安装
**btrfs**
- 创建新系统
> 创建新的CentOS 7系统,在创建磁盘时修改格式,由于/boot目录只能是xfs格式的不能修改,所以只需将根目录/ 创建为btrfs格式即可,安装完系统后进入,直接是btrfs文件系统
- 原有系统转换格式
> btrfs可以由ext2、3、4直接转换,使用btrfs-convert命令,将对应磁盘转换,需要注意的是,这种情况无法对根目录进行转换(因为一直在被使用)。
- 局部添加btrfs分区
> 使用dd工具
> 如:创建大小为100M的空文件
> \# dd if=/dev/vda2 of=/tmp/file bs=1024 count=100000
> 使用btrfs 进行格式化
> \# mkfs.btrfs /tmp/file
> 挂载成分区
> \# mkdir newdisk
> \# mount -o loop /tmp/file /mnt/newdisk
> 这时可以通过df -h 查看新添加的分区。
> 如果想开机自动挂载,可以加入到/etc/fstab中
> \# vi /etc/fstab
> 添加 /tmp/file /newdisk btrfs defaults 1 2
测试使用的是第一个方法。
**snapper安装**
> 直接使用yum 安装
> \# yum -y install snapper
> 可以看到其依赖于snapper-libs、boost-system、boost-thread
----------
####使用
这里只给出snapper的使用,以下命令均经过测试可用
**snapper 的相关文件**
>/etc/sysconfig/snapper
> 全局配置文件。
包含配置文件的目录。
/etc/snapper/config-templates
包含配置文件模板的目录。
/etc/snapper/filters
包含筛选规则文件的目录。
/var/log/snapper.log
日志文件。错误报告包含在此文件中。
**配置**
>snapper list-configs
>列出所有配置(即备份方案)
配置文件在 /etc/snapper/configs/allfs
snapper delete-config allfs
删除对应快照配置
snapper -c allfs get-config
列出allfs配置的参数
snapper -c allfs set-config 'TIMELINE_CREATE=no'
将allfs 配置中的TIMELINE_CREATE 参数值设为no
**配置参数以及意义**
> SUBVOLUME="/" 对应备份目录
FSTYPE="btrfs" 文件类型
ALLOW_USERS="" 允许使用该配置的用户
ALLOW_GROUPS="" 允许使用该配置的组
BACKGROUND_COMPARISON="yes" 创建前后快照结束进行后台比较
NUMBER_CLEANUP="yes" 运行每天的编号清理
NUMBER_MIN_AGE="1800" 清理前的快照最小生存期(s)
NUMBER_LIMIT="50" 最大快照数
TIMELINE_CREATE="no" 是否每小时创建快照
TIMELINE_CLEANUP="yes" 一定时间后是否进行每小时清理
TIMELINE_MIN_AGE="1800" 定时清理的参数:最小生存时间(s)
TIMELINE_LIMIT_HOURLY="10" 每小时快照数上限
TIMELINE_LIMIT_DAILY="10" 每天快照数上限
TIMELINE_LIMIT_MONTHLY="10" 每月快照数上限
TIMELINE_LIMIT_YEARLY="10" 没年快照数上限
EMPTY_PRE_POST_CLEANUP="yes" 清理无差别前后快照EMPTY_PRE_POST_MIN_AGE="1800" 无差别前后快照的最小生存时间
**查看**
> 快照的类别有四类 ,后两种都属于single
> pre/post/timeline(single)/user_defined(single)
\#snapper -c allfs list
列出allfs 中的已有备份快照 -c 表示备份配置 --configs
列表中的编号0表示当前状态。
\#snapper -c allfs list -t single(pre-post)
列出allfs 汇总已有的single(前后置)快照 -t --type
**创建**
> \#snapper -c allfs create -t single
创建single类型快照
\#snapper -c allfs create --command "yum install redis"
执行命令"yum install redis" 并为其创建前后快照
**比较**
> \#snapper -c allfs status 31..32
比较31 和32号快照,列出变动文件列表,
一般小的在前,+表示32比31多的内容,c表示修改,-表示删除的内容
\#snapper -c allfs diff 31..32
比较31 和32号快照,列出变动文件以及 内容 列表,
一般小的在前,+表示32比31多的内容,c表示修改,-表示删除的内容
后一个比较命令回显结果较多
回滚恢复
> \#snapper -c allfs undochange 32..0
将allfs 的 32号编号替换成当前状态
**修改**
> \#snapper -c allfs modify -d 'yum install redis' 32
将32号快照的描述修改为(添加)"yum install redis"
**删除**
> \#snapper -c allfs delete 3
删除allfs 的3号快照,如果3号快照是pre-post 那么与其关联的另一个快照也将被删除。
btrfs-snapper 实现Linux 文件系统快照回滚的更多相关文章
- linux svn代码回滚命令
取消对代码的修改分为两种情况: 第一种情况:改动没有被提交(commit). 这种情况下,使用svn revert就能取消之前的修改. svn revert用法如下: # svn revert [-R ...
- Linux下svn回滚
方法1: 用svn merge 1) 先 svn up,保证更新到最新的版本,如20: 2) 然后用 svn log ,查看历史修改,找出要恢复的版本,如10 .如果想要更详细的了解情况,可以使用sv ...
- KVM虚拟机快照链创建,合并,删除及回滚研究
1 QEMU,KVM,libvirt关系 QEMU QEMU提供了一个开源的服务器全虚拟化解决方案,它可以使你在特定平台的物理机上模拟出其它平台的处理器,比如在X86 CPU上虚拟出Power的CPU ...
- 存储那些事儿(二): 下一代Linux文件系统BTRFS简介
BTRFS,通常念成 Butter FS,Better FS 或B-tree FS.下一代的Linux文件系统. 它基于写时拷贝(copy-on-write),支持高效的snapshot和clone. ...
- 新一代 Linux 文件系统 btrfs 简介
https://www.ibm.com/developerworks/cn/linux/l-cn-btrfs/ Btrfs 简介 文件系统似乎是内核中比较稳定的部分,多年来,人们一直使用 ext2/3 ...
- Linux svn 回滚版本库
Linux代码 svn up Index/ 然后找出要撤销的确切版本: Linux代码 svn log --limit 10 Index/tpl/css/global.css 根据log怀疑是 ...
- 基于ceph快照快速回滚openstack上的虚拟机
查看虚拟机ID 1 2 [root@node1 ~]# nova list --all | grep wyl | dc828fed-1c4f-4e5d-ae84-795a0e71eecc | wyl ...
- 【linux】【jenkins】jenkins构建、mvn或者npm打包、docker运行、失败自动回滚脚本
小白对jenkins运维的使用有点简单的想法,这里开个记录贴记录下. 由于未找到jenkins构建失败后执行其他脚本的插件,也暂时没有使用其他运维工具.所以想自己写一个shell脚本,一是方便其他人使 ...
- linux运维、架构之路-K8s滚动更新及回滚
一.滚动更新 应用程序一次只更新一小部分副本,更新成功后,再更新更多的副本,最终完成所有副本的更新. 滚动更新的优点:零停机,整个更新过程始终有副本在运行,从而保证了业务的连续性. 1. ...
随机推荐
- 存储过程中使用事务,sql server 事务,sql事务
一.存储过程中使用事务的简单语法 在存储过程中使用事务时非常重要的,使用数据可以保持数据的关联完整性,在Sql server存储过程中使用事务也很简单,用一个例子来说明它的语法格式: 代码 ...
- 集群工具ansible使用方法
ansible简介 ansible是与puppet.saltstack类似的集群管理工具,其优点是仅需要ssh和Python即可使用,而不像puppet.saltstack那样都需要客户端.与pupp ...
- ie浏览器,背景色兼容解决方法
rgba的含义,r代表red,g代表green,b代表blue,a代表透明度.红绿蓝是三原色,所有颜色都可以由这三种颜色拼合而成.比如 rgba(0,0,0,.5)就是透明度为0.5的黑色.现代浏览器 ...
- 【MySQL】漫谈MySQL中的事务及其实现
最近一直在做订单类的项目,使用了事务.我们的数据库选用的是MySQL,存储引擎选用innoDB,innoDB对事务有着良好的支持.这篇文章我们一起来扒一扒事务相关的知识. 为什么要有事务? 事务广泛的 ...
- IIS7.5 伪静态 脚本映射 配置方法
首先,是IIS7.0的配置,由于Windows Server 2008操作系统默认的IIS版本为7.0,我们知道,IIS7.0与IIS6.0 核心注意的地方:先要将应用池设置为集成模式,修改OK后,再 ...
- SQLite 函数大全
http://blog.sina.com.cn/s/blog_48e2ea3401012031.html
- 对c语言中malloc和free函数的理解
最近在复习c语言的时候再次用到了malloc函数和free函数,此处着讲解一下自己对这两个函数的理解和认识. 一. malloc函数和free函数的基本概念和基本的用法 对于malloc函数: 1. ...
- Android sdk tool android 命令参数
命令参数说明: $ ./android --? Error: Flag '--?' is not a valid global flag. Did you mean to specify it a ...
- ORACLE10gRAC数据库迁移至10gRAC
1.数据库备份RUN {ALLOCATE CHANNEL ch00 DEVICE TYPE disk;ALLOCATE CHANNEL ch01 DEVICE TYPE disk;ALLOCATE C ...
- Codeforces 732D [二分 ][贪心]
/* 不要低头,不要放弃,不要气馁,不要慌张 题意: n天进行m科考试,每科考试需要a的复习时间,n天每天最多可以考一科.并且指定哪天考哪科. 注意考试那天不能复习. 问最少需要多少天可全部通过考试. ...