重复使用设备后如何摆脱BTRFS中的"Some devices missing"?



我一直在我周围的几个驱动器上玩BTRFS。起初,我使用整个驱动器创建了BTRFS,但最终我决定在驱动器上使用GPT分区,并在分区上重新创建了我需要的文件系统。(这样我就可以使用每个驱动器的一部分作为Linux交换空间,供参考。)

当我完成这一切时,BTRFS发挥了作用。但是我收到了一些烦人的消息,说我有一些以前实验中的旧文件系统,我实际上已经销毁了。我担心这意味着BTRFS对驱动器上的可用空间感到困惑,或者可能发生某种损坏。

消息是这样的:

$ sudo btrfs file show
Label: 'x'  uuid: 06fa59c9-f7f6-4b73-81a4-943329516aee
    Total devices 3 FS bytes used 159.20GB
    devid    3 size 931.00GB used 134.01GB path /dev/sde
    *** Some devices missing
Label: 'root'  uuid: 5f63d01d-3fde-455c-bc1c-1b9946e9aad0
    Total devices 4 FS bytes used 1.13GB
    devid    4 size 931.51GB used 1.03GB path /dev/sdd
    devid    3 size 931.51GB used 2.00GB path /dev/sdc
    devid    2 size 931.51GB used 1.03GB path /dev/sdb
    *** Some devices missing
Label: 'root'  uuid: e86ff074-d4ac-4508-b287-4099400d0fcf
    Total devices 5 FS bytes used 740.93GB
    devid    4 size 911.00GB used 293.03GB path /dev/sdd1
    devid    5 size 931.51GB used 314.00GB path /dev/sde1
    devid    3 size 911.00GB used 293.00GB path /dev/sdc1
    devid    2 size 911.00GB used 293.03GB path /dev/sdb1
    devid    1 size 911.00GB used 293.00GB path /dev/sda1

正如您所看到的,我有一个标记为"x"的旧文件系统和一个标记为"root"的旧文件系统,这两个文件系统都有"Some devices missing"。真正的文件系统,最后显示的那个,就是我现在使用的那个。

那么我如何清理旧的"Some devices missing"文件系统呢?我有点担心,但主要是强迫症,想要整理这些乱七八糟的输出。

谢谢。

要从不属于您想要的BTRFS FS的磁盘中擦除,我发现:

如何清理旧的超级块?…要实际删除文件系统,使用:

wipefs -o 0x10040/dev/sda

8字节[5f 42 48 52 66 53 5f 4d]在偏移量0x10040 (btrfs)被擦除"

: https://btrfs.wiki.kernel.org/index.php/Problem_FAQ I_can.27t_mount_my_filesystem.2C_and_I_get_a_kernel_oops.21

我其实是自己想出来的。也许它会帮助别人。

我检查了一下代码,看看发生了什么。当使用btrfs filesystem show命令显示所有设备上的所有文件系统时,它会扫描/proc/partitions中的每个设备和分区。检查每个设备和每个分区,看看是否在设备或分区开始处的0x10040偏移处找到BTRFS"幻数"和相关的有效根数据结构。

然后我在一个磁盘上使用了hexedit,在我自己的情况下出现了错误,果然有一个BTRFS幻数(这是ASCII字符串_BHRfS_M)从我以前的实验。

我只是通过用"**"覆盖字符串的几个字符来确定这个神奇的数字,也使用hexedit,错误的条目神奇地消失了!

最新更新