BTRFS: usuwanie woluminu

11

Tydzień temu stworzyłem Btrfs puli instrumentów, dwa dyski flash (32 GB każdy) z tym poleceniem: /sbin/mkfs.btrfs -d single /dev/sda /dev/sdb. Wtedy zdałem sobie sprawę, że powinien Użyłem partycje /dev/sda1i /dev/sdb1zamiast dysków /dev/sdai /dev/sdb, więc odtworzone wielkości użyciu /dev/sd[ab]1.

Mój problem polega na tym, że teraz mam dwa tomy:

$ 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

Próbowałem różnych opcji, aby usunąć drugi wolumin (identyfikator UUID kończący się na c145879a3d6a), tj .: używając urządzenia usuwającego btrfs. Następnie mkfs.btrfs, odmontował urządzenia, a także fdisk, aby odtworzyć cały nalot od zera, ale bez względu na to, co zrobię, btrfs fi shownadal pokazuje oba woluminy. Jak mogę całkowicie usunąć te woluminy z mojego systemu i rozpocząć wszystko od zera? Bez względu na to, co robię, woluminów nie można usunąć, tj .:

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

Używam tutaj jądra 3.12.21 + btrfs v0.19

limaunion
źródło

Odpowiedzi:

8

Sam napotkałem podobne problemy przy użyciu BTRFS.

Po pierwsze - masło nie musi znajdować się na partycji, więc jeśli nie było jakiegoś niewymienionego powodu, że chciałeś go w / dev / sdb1, zrobiłeś dokładnie to, co zrobiłem i napotkałeś dokładnie ten sam problem.

Po przeszukaniu i próbie znalezienia czystego rozwiązania tego problemu, wipefs jest najlepszą opcją - podobno nowsze wersje mogą usunąć wszystkie ślady. Jednak w momencie, w którym na to wpadłem, po prostu użyłem dd do napisania zer na całym moim urządzeniu, coś takiego:

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

To goryl o wadze 9000 funtów, ale przywróci Twoje kciuki do świeżego stanu.

Ostrzeżenie o dysku SSD: Może to być szkodliwe dla wydajności dysku SSD (w zależności od producenta) i tak naprawdę powinno być wykonywane tylko na dyskach USB. Zobacz to pytanie, które oferuje inne alternatywy (blkdiscard), które mogą być szybsze / bezpieczniejsze / lepsze dla dysków SSD. To pytanie ma również kilka dobrych odpowiedzi, które mogą dać temu wyraz, ale bez zerowania (funkcja bezpiecznego kasowania).

Sam
źródło
Dzięki Nextraztus! wydaje się, że to rozwiązało problem! Odtworzę je teraz od zera. Mam nadzieję, że zostanie to naprawione w przyszłych wersjach btrfs.
limaunion
3

Wolałbym, wipefs -t btrfs /dev/sda1 /dev/sdb1jak sugeruje to oficjalna wiki btrfs . Jest to trochę ukryte w opisie opcji mkfs:

-f --force Wymuś zastąpienie urządzeń blokowych po wykryciu istniejącego systemu plików. Domyślnie mkfs.btrfs użyje libblkid do sprawdzenia jakiegokolwiek znanego systemu plików na urządzeniach. Alternatywnie możesz użyć narzędzia wipefs, aby wyczyścić urządzenia.

użytkownik421075
źródło
3
sudo wipefs --all -t btrfs /dev/sda /dev/sdb

pracował dla mnie. Musiałem dodać, --allżeby sudo btrfs fi showpojawił się pusty.

-a, --all

Usuń wszystkie dostępne podpisy. Zestaw wymazanych podpisów można ograniczyć za pomocą opcji -t.

Array / Btrfs został utworzony za pomocą sudo mkfs.btrfs --label btrfs_6TB_RAID1 --metadata raid1 --data raid1 /dev/sda /dev/sdb --force

Zobacz dokumentację wipefs

użytkownik319436
źródło
Musiałem dodać -fflagę, aby zmusić wipefs do pracy dla mnie.
ergohack
0

Alternatywnie możesz użyć cryptsetup do wyczyszczenia informacji btrfs:

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

Pracował dla mnie.

Jaltek
źródło