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 字符串)。

我只是通过用“**”覆盖字符串中的几个字符(也使用十六进制编辑)来确定这个神奇的数字,并且错误的条目神奇地消失了!

相关内容