Linux btrfs 如何從清單中刪除不存在的檔案系統?

Linux btrfs 如何從清單中刪除不存在的檔案系統?

我正在嘗試 btrfs。我犯了一些錯誤,這對學習很有好處!

我在不同的裝置(sdX、loop、lvm 等)上建立了多個 btrfs 檔案系統。在這些測試期間,我(突然)刪除了屬於 btrfs 檔案系統一部分的部分或全部裝置(首先卸載了 fs)。

但現在,命令btrfs show仍然顯示檔案系統 UUID 和設備清單。我知道我應該在刪除設備之前完成btfrs device del...

但是 btrfs 將其處理的檔案系統清單儲存在哪裡?某處有conf檔嗎? btrfs-tools 中的特殊指令?

我沒有通過閱讀維基和教程來獲得全面的答案...據說我們可以恢復失效的文件系統並安裝它,但這mount -o recovery /dev/yourBTFSvolume /mount/point意味著元數據/數據和相關設備仍然存在,但這裡的情況並非如此。

這裡我並不是試圖恢復數據,我只是想清理btrfs管理。

答案1

我瀏覽了一下程式碼,看看發生了什麼事。當該btrfs filesystem show命令用於顯示所有設備上的所有檔案系統時,它會掃描/proc/partitions.檢查每個裝置和每個分區,看看是否存在 BTRFS「幻數」以及在距離裝置或分區開頭偏移 0x10040 處找到的關聯有效根資料結構。

然後,我在磁碟上使用了 hexedit,在我自己的情況下顯示錯誤,並且果然有一個_BHRfS_M來自我之前的實驗的 BTRFS 幻數(即 ASCII 字串)。

我只是通過用“**”覆蓋字串中的幾個字元(也使用十六進制編輯)來確定這個神奇的數字,並且錯誤的條目神奇地消失了!

相關內容