BTRFS: menghapus volume

11

Seminggu yang lalu, saya membuat sebuah Btrfs pool menggunakan dua flash drive (32GB masing-masing) dengan perintah ini: /sbin/mkfs.btrfs -d single /dev/sda /dev/sdb. Kemudian saya menyadari bahwa saya seharusnya menggunakan partisi /dev/sda1dan /dev/sdb1bukannya disk /dev/sdadan /dev/sdb, jadi saya membuat ulang volume menggunakan /dev/sd[ab]1.

Masalah saya adalah sekarang saya memiliki dua volume:

$ 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

Saya telah mencoba berbagai opsi untuk menghapus volume kedua (uuid berakhir dengan c145879a3d6a), yaitu: menggunakan perangkat hapus btrfs. Kemudian mkfs.btrfs, unmount perangkat dan juga fdisk untuk membuat ulang seluruh serangan dari awal, tetapi tidak peduli apa yang saya lakukan, btrfs fi showmasih menunjukkan kedua volume. Bagaimana saya bisa sepenuhnya menghapus volume ini dari sistem saya dan memulai semuanya dari awal? Apa pun yang saya lakukan, volumenya tidak dapat dihapus, yaitu:

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

Saya menjalankan di sini kernel 3.12.21 + btrfs v0.19

limaunion
sumber

Jawaban:

8

Saya sendiri mengalami masalah serupa menggunakan BTRFS.

Hal pertama yang pertama - mentega tidak perlu berada di partisi, jadi kecuali ada beberapa alasan yang tidak disebutkan yang Anda inginkan di / dev / sdb1, Anda melakukan persis apa yang saya lakukan dan mengalami masalah yang sama persis.

Setelah menggali dan mencoba menemukan solusi bersih untuk memperbaikinya, wipef adalah pilihan terbaik Anda - seharusnya versi yang lebih baru dapat menghapus semua jejak. Namun, pada saat saya mengalami ini, saya akhirnya hanya menggunakan dd untuk menulis nol ke seluruh perangkat saya, sesuatu seperti berikut:

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

Ini adalah gorila 9000 pound solusi, tetapi itu akan membuat ibu jari Anda kembali ke keadaan segar.

Peringatan SSD: Ini mungkin merusak kinerja SSD (tergantung pabrikannya) dan seharusnya hanya dilakukan dengan menggunakan ibu jari. Lihat pertanyaan ini yang menawarkan beberapa alternatif lain (blkdiscard) yang mungkin lebih cepat / lebih aman / lebih baik untuk SSD. Pertanyaan ini juga memiliki beberapa jawaban yang baik yang mungkin dapat dilakukan, tetapi tanpa penekanan (fitur hapus aman).

Sam
sumber
Terima kasih Nextraztus! yang tampaknya telah menyelesaikan masalah! Saya akan membuatnya kembali dari awal. Semoga ini diperbaiki dalam versi btrfs di masa depan.
limaunion
3

Saya lebih suka wipefs -t btrfs /dev/sda1 /dev/sdb1seperti yang disarankan dalam wiki btrf resmi . Agak tersembunyi dalam deskripsi opsi-mkfs:

-f --force Menimpa perangkat blok secara paksa ketika sistem file yang ada terdeteksi. Secara default, mkfs.btrfs akan menggunakan libblkid untuk memeriksa sistem file yang dikenal di perangkat. Atau Anda dapat menggunakan utilitas wipef untuk menghapus perangkat.

pengguna421075
sumber
3
sudo wipefs --all -t btrfs /dev/sda /dev/sdb

bekerja untukku. Saya harus menambahkan --allagar sudo btrfs fi showmuncul kosong.

-a, --semua

Hapus semua tanda tangan yang tersedia. Set tanda tangan yang dihapus dapat dibatasi dengan opsi -t.

Array / Btrfs dibuat dengan sudo mkfs.btrfs --label btrfs_6TB_RAID1 --metadata raid1 --data raid1 /dev/sda /dev/sdb --force

Lihat dokumentasi wipefs

pengguna319436
sumber
Saya harus menambahkan -fbendera untuk memaksa wipef bekerja untuk saya.
ergohack
0

Sebagai alternatif, Anda dapat menggunakan cryptsetup untuk menghapus informasi btrf:

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

Bekerja untukku.

jaltek
sumber