如何对 btrfs 根文件系统进行快照(/ 的快照)?

如何对 btrfs 根文件系统进行快照(/ 的快照)?

我有 Fedora 20,当我安装它时,我选择使用 btrfs 作为文件系统,原因有很多,但主要是为了获得快照。

但我似乎无法创建 的快照/。我可以像这样 快照我的主文件夹(也是 btrfs)btrfs subvolume snapshot /home/ /snap/home,但当我尝试/通过写入来快照时btrfs subvolume snapshot / /snap,它只会输出ERROR: incorrect snapshot name ('/')

我确信 / 是 btrfs。 分区

列出子卷输出:

# btrfs subvolume list /
ID 256 gen 9562 top level 5 path home
ID 258 gen 9562 top level 5 path root
ID 306 gen 9517 top level 258 path snap/home/2014-08-15_00:44:00

即使使用 btrfs,是否也无法对根文件夹进行快照?

答案1

您需要为 /snap 下的快照提供一个名称,例如

$ btrfs subvolume snapshot / /snap/root

如果您不提供名称,btrfs 将使用源子卷的名称。 在您的例子中,源子卷的名称/不是快照的有效名称。

usage: btrfs subvolume snapshot [-r] <source> <dest>|[<dest>/]<name>

    btrfs subvolume snapshot [-r] [-i <qgroupid>] <source> <dest>|[<dest>/]<name>

    Create a snapshot of the subvolume
    Create a writable/readonly snapshot of the subvolume <source> with
    the name <name> in the <dest> directory.  If only <dest> is given,
    the subvolume will be named the basename of <source>.

    -r             create a readonly snapshot
    -i <qgroupid>  add the newly created snapshot to a qgroup. This
                   option can be given multiple times.

答案2

如果你想保留你的根系统,你可能希望这样做

mkdir /. snapshots
btrfs subvolume snapshot / /.snapshots/24072018
nano /.snapshots/24072018/etc/fstab

UUID=XXXXXXXX     /    btrfs    defaults, subvol=root/.snapshots/24072018  0      1

对于如今的 Fedora 来说,当您使用 btrfs 格式化系统时,创建一个名为 root 的子卷是很常见的,因此如果您在 fstab 中找不到 subvol 选项,则请从 subvol 中省略 root。

下一步将重新启动系统。系统启动时,您将看到 grub 启动菜单。

  • 在默认条目上按 e
  • 如果 Fedora 安装在子卷上,请向下滚动直到找到 subvol 选项。如果没有,则必须找到 rootflags 选项并写入以下内容:

    • rootflags=subvol=.snapshots/24072018

      或者对于系统安装在子卷上的情况:

    • rootflags=subvol=root/.snapshots/24072018

请注意,如果系统未安装在子卷上,则您不太可能在 grub 条目中看到 rootflags 选项,因此您必须在“ro”参数旁边写入 rootflags 参数才能使其起作用。

成功启动系统后,打开终端,登录 root 帐户,并更新 grub 配置(如果您想使更改永久生效)。

相关内容