一周前,我使用两个闪存驱动器(每个 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
答案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
对我有用。