###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 文件系统快照回滚的更多相关文章

  1. linux svn代码回滚命令

    取消对代码的修改分为两种情况: 第一种情况:改动没有被提交(commit). 这种情况下,使用svn revert就能取消之前的修改. svn revert用法如下: # svn revert [-R ...

  2. Linux下svn回滚

    方法1: 用svn merge 1) 先 svn up,保证更新到最新的版本,如20: 2) 然后用 svn log ,查看历史修改,找出要恢复的版本,如10 .如果想要更详细的了解情况,可以使用sv ...

  3. KVM虚拟机快照链创建,合并,删除及回滚研究

    1 QEMU,KVM,libvirt关系 QEMU QEMU提供了一个开源的服务器全虚拟化解决方案,它可以使你在特定平台的物理机上模拟出其它平台的处理器,比如在X86 CPU上虚拟出Power的CPU ...

  4. 存储那些事儿(二): 下一代Linux文件系统BTRFS简介

    BTRFS,通常念成 Butter FS,Better FS 或B-tree FS.下一代的Linux文件系统. 它基于写时拷贝(copy-on-write),支持高效的snapshot和clone. ...

  5. 新一代 Linux 文件系统 btrfs 简介

    https://www.ibm.com/developerworks/cn/linux/l-cn-btrfs/ Btrfs 简介 文件系统似乎是内核中比较稳定的部分,多年来,人们一直使用 ext2/3 ...

  6. Linux svn 回滚版本库

    Linux代码   svn up Index/ 然后找出要撤销的确切版本: Linux代码   svn log --limit 10 Index/tpl/css/global.css 根据log怀疑是 ...

  7. 基于ceph快照快速回滚openstack上的虚拟机

    查看虚拟机ID 1 2 [root@node1 ~]# nova list --all | grep wyl | dc828fed-1c4f-4e5d-ae84-795a0e71eecc | wyl ...

  8. 【linux】【jenkins】jenkins构建、mvn或者npm打包、docker运行、失败自动回滚脚本

    小白对jenkins运维的使用有点简单的想法,这里开个记录贴记录下. 由于未找到jenkins构建失败后执行其他脚本的插件,也暂时没有使用其他运维工具.所以想自己写一个shell脚本,一是方便其他人使 ...

  9. linux运维、架构之路-K8s滚动更新及回滚

    一.滚动更新        应用程序一次只更新一小部分副本,更新成功后,再更新更多的副本,最终完成所有副本的更新. 滚动更新的优点:零停机,整个更新过程始终有副本在运行,从而保证了业务的连续性. 1. ...

随机推荐

  1. 网站推广优化(SEO,网站关键字优化,怎么优化网站,如何优化网站关键字)

    网站推广优化教程100条(完整版)下面介绍新手建站推广完美教程,各位根据自己的实际情况酌情选用: 1.准备个好域名.①.尽量在5位数内,当然也不一定,反正要让用户好记.(看个人):②.尽量用顶级的域名 ...

  2. (转)php-curl响应慢(开发微信授权登陆时碰到的问题)

    最近在做一个php小项目的时候,发现curl调用微信的授权api.weixin.qq.com,经常是需要等待很久,但是有时候却很快. 刚开始以为是网络慢问题,没去注意.后面通过打上时间日志观察发现,慢 ...

  3. bzoj1091: [SCOI2003]切割多边形

    Description 有一个凸p边形(p<=8),我们希望通过切割得到它.一开始的时候,你有一个n*m的矩形,即它的四角的坐标分别为(0,0), (0,m), (n,0), (n,m).每次你 ...

  4. mysql删造成表死锁研究

    现在互联网公司对于代码的管理越来越规范,一般都会有3个环境:开发环境,测试环境,正式环境.在开发环境进行开发,开发完成后将代码提交到测试环境进行测试,测试完毕后上线到正式环境. 今天在正式环境上遇到一 ...

  5. some notes about spring aop

    1 . timeCountIntecetor implements handlerInterceptor { preHandle(); postHandle(); afterComplete(); } ...

  6. Visual Studio远程调试

    Visual Studio支持调试远程机器上的程序,经过简单设置后,就像调试本地代码一样方便. 第一步:将vs工具里的Remote Debugger文件夹拷贝到目标机器.大致的目录应该是:D:\Pro ...

  7. SQLSERVER分页查询

    转:http://blog.csdn.net/qiaqia609/article/details/41445233   Sqlserver数据库分页查询一直是Sqlserver的短板,   第一种方案 ...

  8. Ajax跨域访问

    Ajax如何跨域访问数据 最近在做项目的过程中遇到的问题,一个网站需要访问另外一个网站的数据,并且是通过脚本的方式,而由于同源策略的限制,开发人员不能再与外部服务器进行通信的时候使用XMLHttpRe ...

  9. unity 读取文本与写入文本

    void writeData(string str,string file)    {        string parth = Application.dataPath;        Strea ...

  10. Partitioning & Archiving tables in SQL Server (Part 1: The basics)

    Reference: http://blogs.msdn.com/b/felixmar/archive/2011/02/14/partitioning-amp-archiving-tables-in- ...