BTRFS:删除卷

BTRFS:删除卷

一周前,我使用两个闪存驱动器(每个 32GB)创建了一个 BTRFS 池,命令如下:/sbin/mkfs.btrfs -d single /dev/sda /dev/sdb。然后我意识到我应该使用分区/dev/sda1/dev/sdb1,而不是磁盘/dev/sda/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

我尝试了不同的选项来删除第二个卷(uuid 以 c145879a3d6a 结尾),即:使用 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

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

答案1

我在使用 BTRFS 时也遇到过类似的问题。

首先要说的是 —— butter 不需要放在分区中,所以除非你因为某种未提及的原因而希望将它放在 /dev/sdb1 中,否则你所做的与我完全一样,并且会遇到完全相同的问题。

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

dd if=/dev/zero of=/dev/sdX bs=4M

这是重量高达 9000 磅的解决方案,但它可以让您的拇指驱动器恢复到全新状态。

SSD 警告:这可能会损害 SSD 的性能(取决于制造商),并且实际上只应在拇指驱动器上执行。请参阅这个问题它提供了一些其他替代方案(blkdiscard),这些替代方案可能对 SSD 更快/更安全/更好。这个问题也有一些很好的答案,可能会起到与此相同的作用,但没有归零(安全擦除功能)。

答案2

sudo wipefs --all -t btrfs /dev/sda /dev/sdb

对我有用。我不得不添加--all以使其sudo btrfs fi show变为空。

-a、--全部

删除所有可用的签名。可以使用 -t 选项限制删除的签名集。

Array/Btrfs 是用sudo mkfs.btrfs --label btrfs_6TB_RAID1 --metadata raid1 --data raid1 /dev/sda /dev/sdb --force

wipefs 文档

答案3

wipefs -t btrfs /dev/sda1 /dev/sdb1更喜欢官方 btrfs 维基。mkfs-option 的描述中有点隐蔽:

-f --force 当检测到现有文件系统时强制覆盖块设备。默认情况下,mkfs.btrfs 将利用 libblkid 检查设备上是否存在任何已知文件系统。或者,您可以使用 wipefs 实用程序清除设备。

答案4

另外,您可以使用 cryptsetup 来擦除 btrfs 信息:

cryptsetup -c aes-cbc-essiv:sha256 -y -s 256 luksFormat /dev/sdXY

对我有用。

相关内容