如何對 btrfs 根檔案系統進行快照(/ 的快照)?

如何對 btrfs 根檔案系統進行快照(/ 的快照)?

我有 Fedora 20,當我安裝它時,我選擇使用 btrfs 作為檔案系統,原因有很多,但主要是為了有可用的快照。

但我似乎無法創建/.我可以像這樣對我的主資料夾(也是 btrfs)進行快照btrfs subvolume snapshot /home/ /snap/home,但是當我嘗試/透過寫入來快照時btrfs subvolume snapshot / /snap,它只會輸出ERROR: incorrect snapshot name ('/').

我確信 / 是 btrfs。 gparted

列出子卷輸出:

# 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 設定。

相關內容