mdadm: RAID 1에서 구성 요소를 제거할 수 없습니다.

mdadm: RAID 1에서 구성 요소를 제거할 수 없습니다.

mdadm을 사용하여 /boot 파티션을 RAID 1 어레이에 넣었습니다. 어레이는 과거에 여러 번 다운그레이드되었으며 물리적 드라이브를 제거하고 새 드라이브를 추가하고 어레이를 다시 가져올 때마다 새 드라이브 문자를 사용합니다. 배열에 이전 것을 그대로 두고 실패합니다. 더 이상 존재하지 않는 모든 구성 요소를 삭제할 수는 없는 것 같습니다.

[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_]

존재하지 않는 드라이브와 파티션을 삭제하는 방법은 다음과 같습니다. 예를 들어, /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

8:49나는 이것이 에 표시된 메이저 및 마이너 숫자를 참조한다고 생각 --detail하지만 여기서 어디로 가야 할지 잘 모르겠습니다. 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

노트:이제 어레이가 합법적으로 다운그레이드되었으며 현재 거기에 새 드라이브를 설치하고 있습니다. 그러나 위에서 볼 수 있듯이 이것은 실제로 중요하지 않습니다. 여전히 /dev/sdb1이 배열에서 삭제할 수 있습니다 .

답변1

이는 장치 노드가 더 이상 시스템에 존재하지 않기 때문입니다(드라이브가 손상되었을 때 udev가 해당 노드를 삭제했을 수 있음). 키워드를 사용 failed하거나 대신 다음 을 사용하여 제거할 수 있어야 합니다 detached.

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

mdadm 버전이 너무 오래되어 이 작업을 수행할 수 없는 경우 mknod"장치를 다시 존재하게 만들어" 작동되도록 할 수 있습니다. 아니면 솔직히 무시하세요. 실제로는 문제가 되지 않으며 다음 재부팅 시 사라져야 합니다.

답변2

결국 내가 한 일은 mknod내가 찾고 있던 장치를 만들기 위해 @derobert가 제안한 방식을 사용하는 것이었습니다. mdadmmdadm이 알려준 메이저/마이너 번호를 시도했지만 작동할 때까지 삭제하려고 했던 다른 드라이브 문자를 찾을 수 없었습니다.

mknod /dev/sde1 b 8 17

--force그런 다음 구성 요소를 제거하는 옵션을 사용해야 했습니다 .

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

그런 다음 생성된 블록 장치를 삭제했습니다.

rm /dev/sde1

답변3

배열의 디스크 수를 훑어봄으로써 이 문제를 해결할 수도 있습니다.

제 경우에는 raid-1 배열 /dev/md0/dev/sda1"삭제"를 사용했습니다. 저는 단지 하나의 드라이브만 사용하도록 축소했습니다.

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

삭제 후에는 실제로 삭제됩니다(행은 더 이상 삭제되지 않습니다 mdadm --detail).

관련 정보