BTRFS: xóa một ổ đĩa


11

Một tuần trước, tôi đã tạo một nhóm BTRFS bằng hai ổ đĩa flash (mỗi ổ 32 GB) bằng lệnh này : /sbin/mkfs.btrfs -d single /dev/sda /dev/sdb. Sau đó, tôi nhận ra rằng tôi nên sử dụng các phân vùng /dev/sda1/dev/sdb1, thay vì các đĩa /dev/sda/dev/sdb, vì vậy tôi đã tạo lại các ổ đĩa bằng cách sử dụng /dev/sd[ab]1.

Vấn đề của tôi là bây giờ tôi có hai tập:

$ 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

Tôi đã thử các tùy chọn khác nhau để xóa tập thứ hai (uuid kết thúc bằng c145879a3d6a), tức là: sử dụng thiết bị xóa btrfs. Sau đó, mkfs.btrfs, ngắt kết nối các thiết bị và cả fdisk để tạo lại toàn bộ cuộc đột kích từ đầu, nhưng dù tôi có làm gì, btrfs fi showvẫn hiển thị cả hai tập. Làm cách nào tôi có thể xóa hoàn toàn các ổ đĩa này khỏi hệ thống của mình và bắt đầu mọi thứ từ đầu? Bất kể tôi làm gì, khối lượng không thể bị xóa, tức là:

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

Tôi đang chạy ở đây kernel 3.12.21 + btrfs v0.19

Câu trả lời:


8

Bản thân tôi đã gặp phải vấn đề tương tự khi sử dụng BTRFS.

Điều đầu tiên trước tiên - bơ không cần phải nằm trong một phân vùng, vì vậy trừ khi có một lý do không được đề cập đến mà bạn muốn nó trong / dev / sdb1, bạn đã làm chính xác những gì tôi đã làm và gặp chính xác vấn đề tương tự.

Sau khi đào xung quanh và cố gắng tìm một giải pháp sạch để sửa nó, wipefs là lựa chọn tốt nhất của bạn - được cho là phiên bản mới hơn có thể xóa tất cả dấu vết. Tuy nhiên, tại thời điểm tôi gặp phải vấn đề này, cuối cùng tôi chỉ sử dụng dd để ghi số không vào toàn bộ thiết bị của mình, đại loại như sau:

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

Đó là con khỉ đột 9000 pound dung dịch, nhưng nó sẽ đưa ngón tay cái của bạn trở lại trạng thái tươi mới.

Cảnh báo SSD: Điều này có thể gây hại cho hiệu suất của SSD (tùy thuộc vào nhà sản xuất) và thực sự chỉ nên được thực hiện trên ngón tay cái. Xem câu hỏi này cung cấp một số lựa chọn thay thế khác (blkdiscard) có thể nhanh hơn / an toàn hơn / tốt hơn cho SSD. Câu hỏi này cũng có một số câu trả lời tốt có thể thực hiện tương đương với điều này nhưng không có zeroing (tính năng xóa an toàn).


Cảm ơn Nextraztus! điều đó dường như đã giải quyết được vấn đề! Tôi sẽ tạo lại chúng từ đầu. Hy vọng điều này được cố định trong các phiên bản btrfs trong tương lai.
limaunion

3

Tôi muốn wipefs -t btrfs /dev/sda1 /dev/sdb1đề xuất như được đề xuất trong wiki btrfs chính thức . Đó là một chút ẩn trong mô tả của mkfs-tùy chọn:

-f --force Buộc ghi đè lên các thiết bị khối khi phát hiện một hệ thống tệp hiện có. Theo mặc định, mkfs.btrfs sẽ sử dụng libblkid để kiểm tra mọi hệ thống tập tin đã biết trên thiết bị. Ngoài ra, bạn có thể sử dụng tiện ích wipefs để xóa thiết bị.


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

đã làm cho tôi. Tôi đã phải thêm --allđể có sudo btrfs fi showtrống rỗng.

-a, - tất cả

Xóa tất cả chữ ký có sẵn. Tập hợp các chữ ký bị xóa có thể được hạn chế với tùy chọn -t.

Mảng / Btrfs đã được tạo bằng sudo mkfs.btrfs --label btrfs_6TB_RAID1 --metadata raid1 --data raid1 /dev/sda /dev/sdb --force

Xem tài liệu wipefs


Tôi đã phải thêm -fcờ để buộc các wipefs làm việc cho tôi.
ergohack

0

Để thay thế, bạn có thể sử dụng cryptsetup để xóa thông tin btrfs:

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

Đã làm cho tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.