BTRFS: удаление тома

11

Неделю назад я создал BTRFS бассейне с использованием двух флэш - накопителей (32 Гб каждый) с помощью следующей команды: /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, чтобы воссоздать весь рейд с нуля, но, что бы я ни делал, 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

limaunion
источник

Ответы:

8

Я сам сталкивался с подобными проблемами, используя BTRFS.

Перво-наперво - масло не обязательно должно быть в разделе, поэтому, если не было какой-то не упомянутой причины, по которой вы хотели сделать это в / dev / sdb1, вы сделали именно то, что я сделал, и столкнулись с точно такой же проблемой.

После того, как вы покопались и попытались найти чистое решение, чтобы исправить это, wipefs - ваш лучший вариант - предположительно, более новые версии могут удалить все следы. Однако в то время, когда я столкнулся с этим, я просто использовал dd для записи нулей на все устройство, что-то вроде следующего:

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

Это 9000 фунтов горилла решений, но он вернет ваши приводы в новое состояние.

Предупреждение SSD: это может быть вредным для производительности SSD (в зависимости от производителя) и должно быть сделано только на флэш-накопителях. Посмотрите на этот вопрос, который предлагает некоторые другие альтернативы (blkdiscard), которые могут быть быстрее / безопаснее / лучше для твердотельных накопителей. На этот вопрос также есть несколько хороших ответов, которые могут сделать то же самое, но без обнуления (функция безопасного стирания).

Сэм
источник
Спасибо Nextraztus! кажется, это решило проблему! Я воссоздаю их сейчас с нуля. Надеюсь, это будет исправлено в будущих версиях btrfs.
Лимаунион
3

Я бы предпочел, wipefs -t btrfs /dev/sda1 /dev/sdb1как предложено в официальной вики btrfs . Это немного скрыто в описании mkfs-option:

-f --force Принудительно перезаписать блочные устройства при обнаружении существующей файловой системы. По умолчанию mkfs.btrfs будет использовать libblkid для проверки любой известной файловой системы на устройствах. В качестве альтернативы вы можете использовать утилиту wipefs для очистки устройств.

user421075
источник
3
sudo wipefs --all -t btrfs /dev/sda /dev/sdb

работал на меня. Я должен был добавить, --allчтобы sudo btrfs fi showоказаться пустым.

-a, --all

Сотрите все доступные подписи. Набор стертых подписей может быть ограничен с помощью опции -t.

Array / Btrfs был создан с sudo mkfs.btrfs --label btrfs_6TB_RAID1 --metadata raid1 --data raid1 /dev/sda /dev/sdb --force

Смотрите документацию wipefs

user319436
источник
Мне пришлось добавить -fфлаг, чтобы заставить wipefs работать на меня.
ergohack
0

В качестве альтернативы вы можете использовать cryptsetup, чтобы стереть информацию btrfs:

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

Работал на меня.

jaltek
источник