BTRFS:删除卷

lim*_*ion 11 linux btrfs

一个星期前,我创建了一个BTRFS池使用两个闪存驱动器(32GB每个)使用此命令:/sbin/mkfs.btrfs -d single /dev/sda /dev/sdb。然后我意识到我应该使用分区/dev/sda1and/dev/sdb1而不是磁盘/dev/sdaand /dev/sdb,所以我使用/dev/sd[ab]1.

我的问题是现在我有两卷:

$ sudo btrfs fi show
Label: none  uuid: ba0b48ce-c729-4793-bd99-90764888851f
        Total devices 2 FS bytes used 28.00KB
        devid    2 size 29.28GB used 1.01GB path /dev/sdb1
        devid    1 size 28.98GB used 1.03GB path /dev/sda1

Label: none  uuid: 17020004-8832-42fe-8243-c145879a3d6a
        Total devices 2 FS bytes used 288.00KB
        devid    1 size 29.28GB used 1.03GB path /dev/sdb
        devid    2 size 28.98GB used 1.01GB path /dev/sda
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的选项来删除第二个卷(以 c145879a3d6a 结尾的 uuid),即:使用 btrfs 删除设备。然后mkfs.btrfs,卸载设备和fdisk,以便从头开始重新创建整个raid,但无论我做什么,btrfs fi show仍然显示两个卷。如何从我的系统中完全删除这些卷并从头开始?无论我做什么,都无法删除卷,即:

$ sudo btrfs device delete /dev/sda /media/flashdrive/
ERROR: error removing the device '/dev/sda' - Inappropriate ioctl for device
Run Code Online (Sandbox Code Playgroud)

我在这里运行内核 3.12.21 + btrfs v0.19

小智 8

我自己使用 BTRFS 也遇到过类似的问题。

首先要做的事情是——butter 不需要在分区中,所以除非有某种未提及的原因想要在 /dev/sdb1 中使用它,否则您完全按照我所做的去做并遇到了完全相同的问题。

在四处挖掘并试图找到一个干净的解决方案来修复它之后,wipefs 是您最好的选择——据说较新的版本可以删除所有痕迹。但是,当我遇到这个问题时,我最终只使用 dd 将零写入我的整个设备,如下所示:

dd if=/dev/zero of=/dev/sdX bs=4M
Run Code Online (Sandbox Code Playgroud)

这是解决方案的 9000 磅大猩猩,但它会让您的拇指驱动器恢复到新鲜状态。

SSD 警告:这可能对 SSD 的性能有害(取决于制造商),并且应该只在拇指驱动器上进行。请参阅此问题该问题提供了一些其他可能对 SSD 更快/更安全/更好的替代方案(blkdiscard)。这个问题也有一些很好的答案,可以做这个等价但没有归零(安全擦除功能)。