BTRFS: eliminar un volumen

11

Hace una semana, he creado un BTRFS piscina utilizando dos unidades de memoria flash (32 GB cada uno) con este comando: /sbin/mkfs.btrfs -d single /dev/sda /dev/sdb. Entonces me di cuenta de que debería haber usado las particiones /dev/sda1y /dev/sdb1, en lugar de los discos /dev/sday /dev/sdb, así que recreé los volúmenes usando /dev/sd[ab]1.

Mi problema es que ahora tengo dos volúmenes:

$ 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

He probado diferentes opciones para eliminar el segundo volumen (uuid que termina en c145879a3d6a), es decir: usar el dispositivo de eliminación btrfs. Luego mkfs.btrfs, desmontó los dispositivos y también fdisk para recrear todo el ataque desde cero, pero no importa lo que haga, btrfs fi showtodavía muestra ambos volúmenes. ¿Cómo puedo eliminar completamente estos volúmenes de mi sistema y comenzar todo desde cero? No importa lo que haga, los volúmenes no se pueden eliminar, es decir:

$ sudo btrfs device delete /dev/sda /media/flashdrive/
ERROR: error removing the device '/dev/sda' - Inappropriate ioctl for device

Estoy corriendo aquí kernel 3.12.21 + btrfs v0.19

limaunion
fuente

Respuestas:

8

Me he encontrado con problemas similares usando BTRFS.

Lo primero es lo primero: la mantequilla no necesita estar en una partición, por lo que, a menos que haya algún tipo de razón no mencionada por la que lo quería en / dev / sdb1, hizo exactamente lo que hice y se encontró exactamente con el mismo problema.

Después de investigar y tratar de encontrar una solución limpia para solucionarlo, wipefs es su mejor opción: las versiones supuestamente más nuevas pueden eliminar todos los rastros. Sin embargo, en el momento en que me encontré con esto, terminé usando dd para escribir ceros en todo mi dispositivo, algo como lo siguiente:

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

Es el gorila de soluciones de 9000 libras, pero devolverá sus unidades de memoria a un estado nuevo.

Advertencia de SSD: Esto podría ser perjudicial para el rendimiento de un SSD (según el fabricante) y en realidad solo debe hacerse en unidades de memoria USB. Vea esta pregunta que ofrece algunas otras alternativas (blkdiscard) que podrían ser más rápidas / seguras / mejores para los SSD. Esta pregunta también tiene algunas buenas respuestas que podrían ser el equivalente de esto, pero sin poner a cero (función de borrado seguro).

Sam
fuente
Gracias Nextraztus! ¡eso parece haber resuelto el problema! Los recrearé ahora desde cero. Espero que esto se solucione en futuras versiones de btrfs.
limaunion
3

Preferiría wipefs -t btrfs /dev/sda1 /dev/sdb1como se sugiere en el wiki oficial de btrfs . Está un poco oculto en la descripción de mkfs-option:

-f --force Sobrescriba a la fuerza los dispositivos de bloque cuando se detecte un sistema de archivos existente. Por defecto, mkfs.btrfs utilizará libblkid para verificar cualquier sistema de archivos conocido en los dispositivos. Alternativamente, puede usar la utilidad wipefs para borrar los dispositivos.

usuario421075
fuente
3
sudo wipefs --all -t btrfs /dev/sda /dev/sdb

trabajó para mi. Tuve que agregar --allpara que sudo btrfs fi showapareciera vacío.

-a, --todos

Borra todas las firmas disponibles. El conjunto de firmas borradas se puede restringir con la opción -t.

Array / Btrfs se creó con sudo mkfs.btrfs --label btrfs_6TB_RAID1 --metadata raid1 --data raid1 /dev/sda /dev/sdb --force

Ver la documentación de wipefs

usuario319436
fuente
Tuve que agregar una -fbandera para obligar a los wipefs a trabajar para mí.
ergohack
0

Como alternativa, puede usar cryptsetup para borrar la información de btrfs:

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

Trabajó para mi.

jaltek
fuente