我一直在我周围的几个驱动器上玩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,错误的条目神奇地消失了!