mdadm: không thể xóa các thành phần trong RAID 1


14

Tôi có phân vùng / boot của tôi trong mảng RAID 1 bằng mdadm. Mảng này đã xuống cấp một vài lần trong quá khứ và mỗi lần tôi gỡ bỏ ổ đĩa vật lý, thêm một ổ đĩa mới, đưa mảng trở lại bình thường, nó sử dụng một ký tự ổ đĩa mới. Để lại cái cũ vẫn còn trong mảng và thất bại. Tôi dường như không thể loại bỏ tất cả các thành phần không còn tồn tại.

[root@xxx ~]# cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 sdg1[10] sde1[8](F) sdb1[7](F) sdd1[6](F) sda1[4] sdc1[5]
      358336 blocks super 1.0 [4/3] [UUU_]

Đây là những gì tôi đã cố gắng để loại bỏ các ổ đĩa và phân vùng không tồn tại. Ví dụ , /dev/sdb1.

[root@xxx ~]# mdadm /dev/md0 -r /dev/sdb1
mdadm: Cannot find /dev/sdb1: No such file or directory
[root@xxx ~]# mdadm /dev/md0 -r faulty
mdadm: Cannot find 8:49: No such file or directory
[root@xxx ~]# mdadm /dev/md0 -r detached
mdadm: Cannot find 8:49: No such file or directory

Rằng 8:49tôi tin rằng đề cập đến số chính và số phụ được hiển thị trong --detail, nhưng tôi không chắc chắn sẽ đi đâu từ đây. Tôi đang cố gắng tránh khởi động lại hoặc khởi động lại mdadm.

[root@xxx ~]# mdadm --detail /dev/md0 
/dev/md0:
        Version : 1.0
  Creation Time : Thu Aug  8 18:07:35 2013
     Raid Level : raid1
     Array Size : 358336 (350.00 MiB 366.94 MB)
  Used Dev Size : 358336 (350.00 MiB 366.94 MB)
   Raid Devices : 4
  Total Devices : 6
    Persistence : Superblock is persistent

    Update Time : Sat Apr 18 16:44:20 2015
          State : clean, degraded 
 Active Devices : 3
Working Devices : 3
 Failed Devices : 3
  Spare Devices : 0

           Name : xxx.xxxxx.xxx:0  (local to host xxx.xxxxx.xxx)
           UUID : 991eecd2:5662b800:34ba96a4:2039d40a
         Events : 694

    Number   Major   Minor   RaidDevice State
       4       8        1        0      active sync   /dev/sda1
      10       8       97        1      active sync   /dev/sdg1
       5       8       33        2      active sync   /dev/sdc1
       6       0        0        6      removed

       6       8       49        -      faulty
       7       8       17        -      faulty
       8       8       65        -      faulty

Lưu ý: Mảng hiện đang xuống cấp một cách hợp pháp và tôi đang có một ổ đĩa mới trong đó khi chúng ta nói chuyện. Tuy nhiên, như bạn có thể thấy ở trên, điều đó không quan trọng. Tôi vẫn có thể loại bỏ /dev/sdb1khỏi mảng này.


Bạn không cần - lực lượng để xóa đĩa ở trạng thái "đã xóa" và nó có thể ẩn một vấn đề nghiêm trọng hơn. Bỏ nó đi.

Câu trả lời:


16

Đó là vì các nút thiết bị không còn tồn tại trên hệ thống của bạn (có lẽ udev đã xóa chúng khi ổ đĩa bị chết). Bạn có thể xóa chúng bằng cách sử dụng từ khóa failedhoặc detachedthay vào đó:

mdadm -r /dev/md0 failed     # all failed devices
mdadm -r /dev/md0 detached   # failed ones that aren't in /dev anymore

Nếu phiên bản mdadm của bạn quá cũ để làm điều đó, bạn có thể khiến nó hoạt động bằng cách mknod'thiết bị tồn tại trở lại. Hoặc, thành thật mà nói, hãy bỏ qua nó, nó không thực sự là vấn đề, và sẽ biến mất vào lần tới khi bạn khởi động lại.


Tôi đã thử sử dụng các từ khóa, bạn có thể thấy đầu ra mà nó đã cho tôi trong bài viết gốc. Tôi sẽ xem xét mknod. Vâng, nó có thể không phải là một vấn đề, nhưng tôi là OCD, lol.
Sajan Parikh

Đúng, tôi đã sử dụng mknod để thực hiện điều này và nó đã hoạt động.
Sajan Parikh

@SajanParikh thực sự, bằng cách nào đó tôi đã bỏ lỡ những dòng cho thấy bạn đã thử thất bại và tách ra. Vui mừng khi mknod làm việc.
derobert

6

Những gì tôi đã làm là sử dụng mknod như @derobert đề xuất để tạo ra các thiết bị mdadmđang tìm kiếm. Tôi đã thử các số chính / phụ mdadm đang nói với tôi rằng nó không thể tìm thấy với các ký tự ổ đĩa khác nhau mà tôi đang cố xóa cho đến khi nó hoạt động.

mknod /dev/sde1 b 8 17

Sau đó, tôi đã phải sử dụng --forcetùy chọn để có được nó loại bỏ thành phần.

mdadm /dev/md0 --remove --force /dev/sde1

Sau đó, tôi loại bỏ thiết bị khối đã tạo.

rm /dev/sde1

Hmm ... 8:17 là sdb1. (8:65 là sde1) Nhưng cái đó cũng bị mất, vì vậy tôi đoán rằng nó hoạt động ...
derobert

Điều này không hiệu quả với tôi, mdadmtiếp tục nói: "thiết bị hoặc tài nguyên bận", nhưng điều này khiến tôi cố gắng nuôi anh ta không phải bằng thiết bị khối giả, mà bằng một thiết bị khối "thật" như hình ảnh được gắn loopback. Tại thời điểm này, tôi phát hiện ra rằng tôi đã /dev/loopsử dụng một tập tin trên mảng đã xuống cấp. Tôi tách nó ra và cuối cùng mdadmđể tôi dừng mảng. Tử thần! Đối với tất cả mọi người đọc điều này, luôn có một lời giải thích hợp lý cho mdadmviệc bị giật, vì vậy hãy tìm một trình xử lý cũ / tệp / mountpoint / nfs handler / open bash / loopback device / etc. vẫn đang sử dụng mảng xuống cấp. :)
Avio

Tôi đã có thể sử dụng chính xác các phiên bản chính và phụ giống nhau (8:18 trong trường hợp của tôi) để xác định thiết bị giả / dev / sdb2. Sau đó, mdadm --remove đã xóa bản ghi cũ của / dev / sdb2 từ / Proc / mdstat. Nhớ rm / dev / sdb2 sau khi hành động - thành công.
ILIV

3

Bạn cũng có thể khắc phục chỉ bằng cách giảm số lượng đĩa trong mảng:

Trong trường hợp của tôi, tôi có mảng raid-1 /dev/md0với /dev/sda1và "loại bỏ". Tôi chỉ đơn giản thu nhỏ nó để sử dụng một ổ đĩa duy nhất:

mdadm -G /dev/md0 --raid-devices=1 --force

Sau đó, loại bỏ đã thực sự được gỡ bỏ (không còn dòng nào bị xóa nữa mdadm --detail)


Bạn phải cẩn thận với phương pháp này, mặc dù. Hiểu rõ loại RAID bạn đang xử lý trước khi sửa đổi các thiết bị sợ.
ILIV
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.