使用Btrfs对Linux系统进行快照回滚方法

  Btrfs 又被称为 Butter FS、Better FS 或 B-Tree FS,是由 Oracle 于 2007 年开始设计、开发的一个现代文件系统,它于 2009 年开始便被合并入 Linux 2.6.29 内核。Btrfs 基于 GPL 许可,由于不是十分稳定,虽然许多 Linux 发行版都对其进行了集成,但并不作为默认文件系统进行使用。Btrfs 之所以被广泛集成,因其支持磁盘快照、支持递归快照、对 RAID 的支持,支持子卷(Subvolumes),以及允许在线调整文件系统大小等优秀特性。虽然目前大多 Linux 发行版都在用 Ext4 作为主要文件系统,但将来随时有可能被 Btrfs 所取代。

  Btrfs 主要被设计用于解决当前 Linux 文件系统各种「弱点」的 COW(copy-on-write)文件系统, 有望提供更好的可扩展性和可靠性,其主要开发焦点都放在了容错、修复和易于管理等方面。

  接下来我将主要向大家介绍如何使用 apt-btrfs-snapshot 将 Linux 中的 btrfs 文件系统快照回滚到之前的系统状态。使用 apt-btrfs-snapshot 创建和管理文件系统快照就像其它 APT 操作一样简单,使用它我们可以轻松地恢复 btrfs 文件系统的状态。

  先决条件

  为了创建并使用 btrfs 恢复你的 Linux 文件系统,当然需要使用的是 btrfs 文件系统,还需要没有使用 Ext 文件系统的单独 /boot分区,不然就没法玩了。

  安装Btrfs包

  条件满足之后,就使用如下命令安装 apt-btrfs-snapshot 包:

  apt-get install apt-btrfs-snapshot

  安装完成之后使用如下 apt-btrfs-snapshot 命令检查是否支持 btrfs 快照的创建:

  apt-btrfs-snapshot supported



  如果满足 btrfs 文件系统的先决条件,会输出 Supported,否则会输出:

  Sorry, your system lacks support for the snapshot feature

  你可以使用如下命令检查 Ubuntu 上的 btrfs 子卷的默认布局:

  btrfs subvolume list

  使用ATP操作创建快照

  为了测试回滚操作,我们先在当前系统中执行一些 apt 操作,例如 apt-get。

  apt-get update && apt-get upgrade



  按 Y 继续执行系统升级,你会看到 apt-btrfs-snapshot 已经自动为升级之前的系统状态创建了快照。



  你也可以使用如下命令查看当前系统中的快照列表:

  btrfs subvolume list /

  apt-btrfs-snapshot list



  还原Btrfs快照

  例如在系统升级过程中遇到了问题,我们需要恢复升级之前的系统状态,可以将 btrfs 文件系统 mount 到一个单独的位置,例如/mnt 下进行操作。

  mount /dev/sda1 /mnt

  查看 /mnt 目录会输出子卷:

  ls -l /mnt/

  其中的 @apt-snapshot-2016-05-24_02:18:31 是之前 apt 操作时的 root 文件系统快照。将当前子卷重命名为 @ 开头,再将 @apt-snapshot-2016-05-24_02:18:31 重命名为为当前子卷后重启系统,即对快照进行了恢复操作。



  删除Btrfs快照

  当快照恢复后,或需要腾出部分磁盘空间时,可以使用如下命令来删除快照:

  mount /dev/sda1 /mnt/

  btrfs subvolume delete /mnt/@_latest-root/

  umount /mnt

  说得直白一点,Btrfs 快照实际上就是与其它子卷进行数据共享的子卷,其使用 Btrfs 的 copy-on-write 能力共享数据和对快照进行修改,原始子卷并不可见。一旦快照创建完成,它就被视为原始文件系统的可替换版本。

(0)

相关推荐

  • linux系统中InputStream输入流的方法之reset()和mark()命令的注意事项

    今天写一个读写程序,运用到InputStream的reset方法是发现竟然失败了,然后查了一下JDK源码,发现BufferInputStream重写了父类FilterInputStream的mark和 ...

  • Linux系统下Telnet的设置方法

    Linux系统下Telnet的设置方法 Linux系统下Telnet服务的配置步骤: 一、安装Telnet软件包(通常要两个) 1、 Telnet-clIEnt (或 Telnet),这个软件包提供的 ...

  • Linux系统无法使用访问MySQL解决方法

    Linux系统无法使用访问MySQL解决方法.MySQL是最为常见的关系型数据库管理系统,不过有不少用户在使用过程中也会遇到一些小问题,有Linux系统用户发现,在Linux系统无法访问MySQL,为 ...

  • Linux系统网卡绑定的设置方法

     Linux系统网卡绑定的设置方法 简介 端口绑定就是将多个物理网卡绑定为一个逻辑网卡;根据模式不同可以网卡绑定的作用可分为提升吞吐量和热备份两个主要作用,一般都是提升吞吐量.另外需要bonding内 ...

  • Linux系统中网络配置检查方法

    相信很多小伙伴都有在使用Linux系统,那么在其中我们怎么去检查网络配置呢?方法很简单,下面小编就来为大家介绍.具体如下:1. 首先,打开电脑上的虚拟机软件,在终端处切换至student用户,并命令为 ...

  • linux系统中tar命令使用方法

    简单介绍下linux系统中tar命令使用方法,有举例说明. 操作方法 01 打包当前目录下的所有后缀为.log的文件和一个box目录(tar包). 02 把当前目录下所有后缀名为.log的文件打包并压 ...

  • Linux系统中查找文件的方法

    -name 必须用到的选项。表明要求系统按照文件名查找. 一般格式:find /(dirname) -name filename 具体文件名查找法: 如果知道了某个文件的文件名,而不知道这个文件放到哪 ...

  • Linux系统下软件包的制作方法和过程

    总的情况下Linux下软件安装主要有三种方式: 一种是源码安装,需要用户自己手动编译 另一种是RPM包(RedHat Linux Packet Manager),通过RPM命令就可以实现安装 还有一种 ...

  • 调整Linux系统为正确时区的方法

    如果你的 Linux 系统时区配置不正确,必需要手动调整到正确的当地时区.NTP 对时间的同步处理只计算当地时间与 UTC 时间的偏移量,因此配置一个 NTP 对时间进行同步并不能解决时区不正确的问题 ...