Btrfs

如何刪除 btrfs 子卷?

  • September 17, 2019

我有一個要刪除的快照:

04:03:21::mlissner@pounamu::~ 
↪ sudo btrfs subvolume list /
ID 257 gen 267078 top level 5 path @badroot
ID 258 gen 267151 top level 5 path @home
ID 422 gen 267151 top level 5 path @

名為@badroot 的那個很糟糕,必須去。但:

04:03:23::mlissner@pounamu::~ 
↪ sudo btrfs subvolume delete \@badroot
ERROR: error accessing '@badroot'
04:03:31::mlissner@pounamu::~ 

所以我不知道從哪裡開始。我嘗試閱讀幫助文件:

↪ sudo btrfs subvolume delete --help
usage: btrfs subvolume delete <subvolume> [<subvolume>...]

   Delete subvolume(s)

但這也沒用。也許網際網路的善良人有想法。

第一種可能性

您似乎指的是@badroot使用錯誤的路徑。

如果我正確地閱讀了您的 shell 提示符,那麼您的目前目錄是~,您的主目錄——可能是/home/mlissner或類似的。您將子卷的路徑指定為相對路徑(不以 開頭/),因此您實際上是在要求刪除諸如/home/mlissner/@badroot… 之類的不存在的內容。

嘗試使用絕對路徑:

sudo btrfs subvolume delete /@badroot

第二種可能性

也許您在 上安裝了一個非預設子卷/,例如編號 422 @,. 在這種情況下,只有該子卷出現在下面/,您無法看到該路徑上方的任何內容,包括其他兩個子卷以及位於 Btrfs 根目錄中的任何正常文件。

在這種情況下,將真正的 Btrfs 根目錄掛載到其他地方,以便您可以訪問其內容。Btrfs 的真正根稱為子卷 ID 0(並且未列在 中btrfs subvolume list)。查找或創建一個空閒的掛載點並掛載如下:

mount -o subvolid=0 /dev/some-device /mnt

現在您應該能夠看到/mnt/@, /mnt/@badroot, /mnt/@home, 以及 . 下的一些其他文件/mnt/mnt/@badroot您可以照常刪除子卷。

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