BTRFS: suppression d'un volume

11

Il y a une semaine, j'ai créé une BTRFS piscine à l' aide de deux lecteurs flash (32 Go chacun) avec cette commande: /sbin/mkfs.btrfs -d single /dev/sda /dev/sdb. Ensuite, j'ai réalisé que j'aurais dû utiliser les partitions /dev/sda1et /dev/sdb1, au lieu des disques /dev/sdaet /dev/sdb, j'ai donc recréé les volumes en utilisant /dev/sd[ab]1.

Mon problème est que maintenant j'ai deux volumes:

$ 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

J'ai essayé différentes options afin de supprimer le deuxième volume (uuid se terminant par c145879a3d6a), c'est-à-dire: en utilisant le périphérique de suppression btrfs. Ensuite, mkfs.btrfs, a démonté les appareils et aussi fdisk afin de recréer tout le raid à partir de zéro, mais quoi que je fasse, btrfs fi showmontre toujours les deux volumes. Comment puis-je supprimer complètement ces volumes de mon système et tout recommencer à zéro? Peu importe ce que je fais, les volumes ne peuvent pas être supprimés, c'est-à-dire:

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

J'exécute ici le noyau 3.12.21 + btrfs v0.19

limaunion
la source

Réponses:

8

J'ai moi-même rencontré des problèmes similaires en utilisant BTRFS.

Tout d'abord - le beurre n'a pas besoin d'être dans une partition, donc à moins qu'il n'y ait une sorte de raison non mentionnée que vous le vouliez dans / dev / sdb1, vous avez fait exactement ce que j'ai fait et vous avez rencontré exactement le même problème.

Après avoir fouillé et essayé de trouver une solution propre à le réparer, les wipefs sont votre meilleure option - les versions supposément plus récentes peuvent supprimer toutes les traces. Cependant, au moment où j'ai rencontré cela, j'ai fini par utiliser dd pour écrire des zéros sur l'ensemble de mon appareil, quelque chose comme ceci:

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

C'est le gorille de solutions de 9000 livres, mais cela remettra vos clés à feu à un état neuf.

Avertissement SSD: cela peut nuire aux performances d'un SSD (selon le fabricant) et ne devrait être effectué que sur des clés USB. Voir cette question qui propose d'autres alternatives (blkdiscard) qui pourraient être plus rapides / plus sûres / meilleures pour les SSD. Cette question a également quelques bonnes réponses qui pourraient faire l'équiv de ceci mais sans mise à zéro (fonction d'effacement sécurisé).

Sam
la source
Merci Nextraztus! cela semble avoir résolu le problème! Je vais les recréer maintenant à partir de zéro. J'espère que cela sera corrigé dans les futures versions de btrfs.
limaunion
3

Je préfère wipefs -t btrfs /dev/sda1 /dev/sdb1comme suggéré dans le wiki officiel de btrfs . C'est un peu caché dans la description de mkfs-option:

-f --force Écraser de force les périphériques de bloc lorsqu'un système de fichiers existant est détecté. Par défaut, mkfs.btrfs utilisera libblkid pour rechercher tout système de fichiers connu sur les périphériques. Vous pouvez également utiliser l'utilitaire wipefs pour effacer les périphériques.

user421075
la source
3
sudo wipefs --all -t btrfs /dev/sda /dev/sdb

travaillé pour moi. J'ai dû ajouter --allpour être sudo btrfs fi showvenu vide.

-a, --all

Effacez toutes les signatures disponibles. L'ensemble des signatures effacées peut être restreint avec l'option -t.

Array / Btrfs a été créé avec sudo mkfs.btrfs --label btrfs_6TB_RAID1 --metadata raid1 --data raid1 /dev/sda /dev/sdb --force

Voir la documentation des wipefs

user319436
la source
J'ai dû ajouter un -fdrapeau pour forcer les wipefs à travailler pour moi.
ergohack
0

Comme alternative, vous pouvez utiliser cryptsetup pour effacer les informations btrfs:

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

A travaillé pour moi.

jaltek
la source