zoukankan      html  css  js  c++  java
  • 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 那么与其关联的另一个快照也将被删除。

  • 相关阅读:
    SQL行转列问题
    pgAdmin III 单表数据的导出导入
    window 服务的安装和卸载
    将Excel表格转成DataTable
    “Timeout 时间已到。在操作完成之前超时时间已过或服务器未响应”解决方法
    form-data提交
    由于本公司项目需要,现急需拥有微软MCSE证书的人才,一经录用,待遇从优!
    Head First设计模式悟道
    entityframwork
    .net 开源模板引擎jntemplate 教程:基础篇之在ASP.NET MVC中使用Jntemplate
  • 原文地址:https://www.cnblogs.com/xpxstar/p/4987558.html
Copyright © 2011-2022 走看看