Fedora

BTRFS 中的回滾根快照

  • December 1, 2020

我只有1 個 BTRFS 分區,其中包含//home.

我已經通過以下命令對根文件系統進行了快照:

btrfs subvolume snapshot / /root/snapshots/test

現在我想恢復這個快照。我怎麼做 ?

當我啟動到救援介質並安裝時,我得到:

# mount -t btrfs /dev/sda3 /mnt
# ls /mnt
# bin  boot  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

如您所見,從這裡看不到我的子卷。

但是當我這樣做時:

$ btrfs subvolume list /
ID 256 gen 3794 top level 5 path fedora
ID 264 gen 2296 top level 256 path root/snapshots/test

如何恢復此快照?

教程說我必須將子卷重命名為根。我怎麼做 ?

我已經嘗試編輯,/etc/fstab但它沒有效果。

你所擁有的是一個帶有兩個子卷的 BTRFS 文件系統:

  1. fedora- 這被設置為您的預設子卷,並且是您在未指定子卷的情況下掛載文件系統時看到的內容。前任。mount -t btrfs /dev/sda3 /mnt
  2. root/snapshots/test- 這是您創建的快照fedora

在 BTRFS 中確實沒有恢復快照這樣的事情。相反,您只需使用不同的子卷作為根文件系統進行引導。有幾種方法可以做到這一點。

重命名子卷

為此,您首先需要掛載頂級卷,該卷始終為 ID 5,在您的情況下,預設情況下不會掛載。之後,您可以進行正常的目錄重命名。

**注意:**這在您的情況下不起作用,因為您的作業系統配置為將預設子卷掛載為根文件系統,並且此過程不會更改預設子卷。

mount -t btrfs -o subvolid=5 /dev/sda3 /mnt
cd /mnt
mv fedora fedora-old
mv fedora-old/root/snapshots/test fedora

更改預設子卷

通過更改預設子卷,在重新啟動時,您的系統將從新的預設子卷啟動。下面顯示的子卷 ID 264 來自您的範例btrfs subvolume list /

btrfs subvolume set-default 264 /

更改引導載入程序中的根子卷

這如何完成取決於您的引導載入程序,但引導載入程序(例如 GRUB)通常包含一行配置,指定要掛載為根文件系統的文件系統。可以更改該配置以引導不同的子卷。不幸的是,我沒有一個例子可以展示。但要知道這不能完成,/etc/fstab因為該文件直到稍後才會被讀取。

結論

對於您的具體情況,我認為您將通過更改預設子卷獲得最佳結果。

引用自:https://unix.stackexchange.com/questions/622148