如何在重用设备后摆脱BTRFS中的“某些设备丢失”?

时间:2014-03-13 20:54:02

标签: linux filesystems

我一直在玩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”的旧文件系统,并且这两个文件系统都“丢失了一些设备”。真正的文件系统,即显示的最后一个,是我现在使用的文件系统。

那么如何清理旧的“缺少某些设备”文件系统呢?我有点担心,但大多只是OCD而且想要整理这个混乱的输出。

感谢。

2 个答案:

答案 0 :(得分:1)

要从不属于您想要的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

答案 1 :(得分:0)

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

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

然后我在一个在我自己的情况下显示错误的磁盘上使用了hexedit,并且确实在我之前的实验中有一个BTRFS幻数(这是ASCII字符串_BHRfS_M)。

我只是通过用" **"覆盖字符串中的几个字符,并使用hexedit,错误地输入了错误的条目!