BTRFS: excluindo um volume

11

Uma semana atrás, eu criei um Btrfs conjunto utilizando duas unidades flash (32GB cada) com este comando: /sbin/mkfs.btrfs -d single /dev/sda /dev/sdb. Então eu percebi que eu deveria ter usado as partições /dev/sda1e /dev/sdb1, em vez dos discos /dev/sdae /dev/sdb, então eu recriado os volumes usando /dev/sd[ab]1.

Meu problema é que agora tenho dois 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

Eu tentei opções diferentes para excluir o segundo volume (uuid que termina em c145879a3d6a), ou seja: usando o dispositivo de exclusão btrfs. Então o mkfs.btrfs desmontou os dispositivos e também o fdisk para recriar todo o ataque do zero, mas não importa o que eu faça, btrfs fi showainda mostra os dois volumes. Como posso remover completamente esses volumes do meu sistema e iniciar tudo do zero? Não importa o que eu faça, os volumes não podem ser removidos, ou seja:

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

Estou executando aqui o kernel 3.12.21 + btrfs v0.19

ligação
fonte

Respostas:

8

Eu me deparei com problemas semelhantes usando o BTRFS.

Primeiras coisas primeiro - a manteiga não precisa estar em uma partição, então, a menos que houvesse algum tipo de razão não mencionada para você querer isso em / dev / sdb1, você fez exatamente o que eu fiz e me deparei com exatamente o mesmo problema.

Depois de procurar e tentar encontrar uma solução limpa para corrigi-lo, o wipefs é sua melhor opção - as versões supostamente mais recentes podem remover todos os vestígios. No entanto, no momento em que me deparei com isso, acabei usando o dd para gravar zeros em todo o meu dispositivo, algo como o seguinte:

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

É o gorila de 9000 libras de soluções, mas colocará suas chaves de novo em um novo estado.

Aviso de SSD: isso pode ser prejudicial ao desempenho de um SSD (dependendo do fabricante) e deve ser feito apenas em drives de polegar. Veja esta pergunta, que oferece outras alternativas (blkdiscard) que podem ser mais rápidas / seguras / melhores para SSDs. Essa pergunta também possui algumas boas respostas que podem fazer o equivalente, mas sem zerar (recurso de exclusão segura).

Sam
fonte
Obrigado Nextraztus! isso parece ter resolvido o problema! Vou recriá-los agora do zero. Espero que isso seja corrigido nas versões futuras do btrfs.
Limaunion
3

Eu preferiria wipefs -t btrfs /dev/sda1 /dev/sdb1como sugerido no wiki oficial do btrfs . Está um pouco oculto na descrição do mkfs-option:

-f --force Substitua à força os dispositivos de bloco quando um sistema de arquivos existente for detectado. Por padrão, o mkfs.btrfs utilizará o libblkid para verificar qualquer sistema de arquivos conhecido nos dispositivos. Como alternativa, você pode usar o utilitário wipefs para limpar os dispositivos.

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

trabalhou para mim. Eu tive que adicionar --allpara sudo btrfs fi showaparecer vazio.

-a, --all

Apague todas as assinaturas disponíveis. O conjunto de assinaturas apagadas pode ser restrito com a opção -t.

Matriz / Btrfs foi criado com sudo mkfs.btrfs --label btrfs_6TB_RAID1 --metadata raid1 --data raid1 /dev/sda /dev/sdb --force

Veja a documentação do wipefs

user319436
fonte
Eu tive que adicionar -fsinalizador para forçar os wipefs a trabalhar para mim.
Ergohack 28/08/19
0

Como alternativa, você pode usar o cryptsetup para limpar as informações do btrfs:

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

Trabalhou para mim.

jaltek
fonte