在物理机上(例如 Arch Linux)创建快照并能够回溯到某个状态,通常需要使用文件系统级别的快照功能。BtrfsLVM(Logical Volume Manager) 是两种常用的支持快照功能的工具。

1. 使用 Btrfs 文件系统创建快照

Btrfs 是 Linux 的高级文件系统,支持创建和管理快照。你可以通过 Btrfs 文件系统快速创建快照,在系统出现问题时回滚到之前的状态。以下是使用 Btrfs 快照的基本步骤:

设置 Btrfs 文件系统

  1. 检查是否使用 Btrfs: 如果你已经在使用 Btrfs 文件系统,可以通过以下命令检查:
    df -T
    

    如果某个分区的文件系统类型是 btrfs,则你可以直接使用快照功能。

  2. 如果没有使用 Btrfs,转换为 Btrfs
    • 若要在现有系统上使用 Btrfs,可能需要重装系统或者将现有分区格式化为 Btrfs。安装时选择 Btrfs 作为根文件系统类型。
    • 你也可以在数据分区上使用 Btrfs,不一定必须重装整个系统。

创建 Btrfs 快照

  1. 创建快照: Btrfs 的子卷(subvolume)是其基本的管理单元,快照是针对子卷的。如果你已经有一个 Btrfs 子卷,可以用如下命令创建快照:

    sudo btrfs subvolume snapshot /mnt/@ /mnt/@snapshot
    

    其中 /mnt/@ 是你当前的 Btrfs 子卷(通常是根分区),/mnt/@snapshot 是快照所在的位置。

  2. 列出快照: 使用以下命令可以列出所有的子卷,包括快照:

    sudo btrfs subvolume list /
    

恢复快照

  1. 恢复到快照: 假设你想从一个快照中恢复,可以挂载 Btrfs 子卷并删除当前的系统状态,再将快照恢复:
    sudo mv /mnt/@ /mnt/@broken
    sudo mv /mnt/@snapshot /mnt/@
    

    这样,系统将会从快照恢复。

  2. 删除快照: 删除不再需要的快照以节省空间:
    sudo btrfs subvolume delete /mnt/@snapshot
    

使用工具管理快照

你可以使用一些工具来更方便地管理 Btrfs 快照,比如 snappertimeshift

  • Timeshift:是一个常用的快照管理工具,专为桌面用户设计,支持自动快照和恢复。
  • Snapper:是另一个功能强大的快照管理工具,常用于服务器环境。
sudo pacman -S timeshift

使用 timeshift 可以自动定期创建和管理快照,出问题时通过 GUI 恢复系统非常方便。

2. 使用 LVM 快照

如果你的系统使用了 LVM(Logical Volume Manager),你可以通过 LVM 快照来实现类似功能。LVM 允许你对逻辑卷创建快照并在需要时回滚到某个时间点。

创建 LVM 快照

  1. 检查系统是否使用 LVM: 你可以用以下命令查看是否使用 LVM:
    lsblk
    

    如果分区类型显示为 LVM,那么你可以使用 LVM 的快照功能。

  2. 创建 LVM 快照: 首先,查找你要对其创建快照的卷:
    sudo lvdisplay
    

    假设卷组名是 vg0,逻辑卷名是 root,可以使用以下命令创建快照:

    sudo lvcreate --size 10G --snapshot --name root_snapshot /dev/vg0/root
    

[!NOTE] LVM 快照的大小 仅存储从创建快照开始,到删除快照期间,原始逻辑卷的变化数据

这个命令创建了一个名为 root_snapshot 的 10 GB 快照。

  1. 恢复快照: 要从快照恢复,可以使用以下命令:
    sudo lvconvert --merge /dev/vg0/root_snapshot
    

    这个命令会将快照合并回原始卷,下次重启时系统会恢复到快照状态。

  2. 删除快照: 如果快照不再需要,可以删除:
    sudo lvremove /dev/vg0/root_snapshot
    

Btrfs 与 LVM 的比较

功能 Btrfs LVM
快照类型 文件系统级快照,针对子卷 卷级快照,针对整个逻辑卷
快照创建速度 快速创建和恢复 快照创建速度快,但恢复过程需要重启
存储空间管理 Btrfs 支持动态调整子卷大小,具有更灵活的存储管理 需要手动管理逻辑卷大小
使用场景 更适合桌面用户和文件系统级管理 通常用于服务器环境,卷级快照适合大规模系统
常见工具 Snapper, Timeshift LVM 自带工具,配合其他管理工具如 lvcreate