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


14

mdadm을 사용하여 RAID 1 어레이에 / boot 파티션이 있습니다. 이 어레이는 과거에 몇 차례 성능이 저하되었으며, 실제 드라이브를 제거하고 새 드라이브를 추가 할 때마다 어레이가 정상 상태가되면 새 드라이브 문자를 사용합니다. 이전 배열을 어레이에 그대로두고 실패했습니다. 더 이상 존재하지 않는 모든 구성 요소를 제거 할 수 없습니다.

[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이 배열에서 여전히 제거 할 수 있어야합니다 .


"제거 된"상태에서 디스크를 제거하기 위해 --force가 필요하지 않으며 더 심각한 문제를 숨길 수 있습니다. 그만둬

답변:


16

장치 노드가 시스템에 더 이상 존재하지 않기 때문입니다 (드라이브가 죽었을 때 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장치를 다시 존재하게하면 작동시킬 수 있습니다 . 또는 솔직히 말해서 무시하십시오. 실제로 문제가되지 않으며 다음에 다시 부팅 할 때 사라져야합니다.


키워드를 사용해 보았습니다. 원래 게시물에서 나에게 얻은 결과를 볼 수 있습니다. 을 살펴 보겠습니다 mknod. 그래, 아마 문제는 아니지만, 나는 OCD입니다.
Sajan Parikh

네, mknod를 사용 하여이 작업을 수행했습니다.
Sajan Parikh

@SajanParikh는 실제로 어떻게 든 실패하고 분리했다는 것을 보여주는 줄을 놓쳤습니다. mknod가 일하게 된 것을 기쁘게 생각합니다.
derobert

6

내가 한 일은 mknod@derobert mdadm이 찾고 있는 장치를 만들도록 제안한 것처럼 사용하는 것이 었습니다 . mdadm이 작동 할 때까지 제거하려는 다른 드라이브 문자로 찾을 수 없다는 주요 / 부 번호를 시도했습니다.

mknod /dev/sde1 b 8 17

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

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

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

rm /dev/sde1

흠 ... 8:17은 sdb1입니다. (8:65 is sde1)하지만 저것도 빠졌기 때문에, 나는 그것이 효과가 있다고 생각합니다.
derobert

이것은 나에게 효과가 없었으며 mdadm"장치 또는 리소스 사용 중"이라고 계속 말했지만 가짜 블록 장치가 아니라 루프백 마운트 이미지와 같은 "진정한"블록 장치로 그를 공급하려고했습니다. 이 시점에서 성능이 /dev/loop저하 된 어레이에서 여전히 파일을 사용하고 있는 오래된 파일이 있음을 발견했습니다 . 나는 그것을 분리하고 마침내 mdadm배열을 멈추게했다. 호 레이! 이것을 읽는 모든 사람들에게는 항상 mdadm바보 같은 논리적 인 설명 이 있으므로 오래된 프로세스 / 파일 / 마운트 포인트 / nfs 핸들러 / 열린 bash / 루프백 장치 등을 찾으십시오. 여전히 저하 된 배열을 사용하고 있습니다. :)
Avio

가짜 / dev / sdb2 장치를 mknod하기 위해 정확히 동일한 주 버전과 부 버전 (제 경우 8:18)을 사용할 수있었습니다. 그 후 mdadm --remove는 / proc / mdstat에서 / dev / sdb2의 오래된 레코드를 삭제했습니다. --remove 조치가 완료된 후 rm / dev / sdb2를 기억하십시오.
ILIV

3

배열에있는 디스크 수를 제거하여 수정할 수도 있습니다.

제 경우에는 raid-1 배열을 /dev/md0가지고 /dev/sda1있고 "제거되었습니다". 나는 단지 하나의 드라이브 만 사용하도록 간단히 축소했습니다.

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

제거 된 후 실제로 제거되었습니다 (더 이상 제거 된 줄 없음 mdadm --detail)


그러나이 방법에주의해야합니다. --raid-devices를 수정하기 전에 처리중인 RAID 유형을 잘 이해하십시오.
ILIV
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.