Linux RAID5 어레이에서 고장 나지 않은 디스크를 안전하게 교체하는 방법은 무엇입니까?


26

4 개의 디스크에 소프트웨어 RAID5 어레이 (Linux md)가 있습니다.

어레이를 성능 저하 상태로 만들지 않고 가능하면 온라인 상태로 두지 않고 디스크 중 하나를 새 디스크로 교체하고 싶습니다 . 어떻게 가능할까요?

내가하고 싶지 않기 때문에 중요합니다.

  • 다른 디스크에 스트레스를 가하여 재 구축 중에 충돌 할 수 있습니다.
  • "패리티가없는 상태"에 빠질 위험이 있으므로 한동안 안전망이 없습니다.

온라인에서 그렇게하는 것이 너무 많이 요구된다고 생각하고 dd이전 디스크의 데이터를 새 디스크에 오프라인으로 복사 한 다음 교체해야하지만 이론적으로는 가능하다고 생각합니다 ...

일부 상황 :이 디스크는 모두 5.5 년 이상 거의 연속적으로 회전 해 왔습니다. 그들은 여전히 ​​순간 동안 완벽하게 작동하며 모두 (긴) SMART 자체 테스트를 통과합니다. 그러나 4 개의 디스크 중 하나가 더 오래 지속되지 않을 것이라고 생각할만한 이유가 있습니다 (예상 된 예측 실패).

답변:


36

mdadm 3.3 사용

mdadm3.3 이후 (2013 년 9 월 3 일 출시) 3.2 이상 커널 이 있으면 다음과 같이 진행할 수 있습니다.

# mdadm /dev/md0 --add /dev/sdc1
# mdadm /dev/md0 --replace /dev/sdd1 --with /dev/sdc1

sdd1교체하려는 장치 sdc1이고 선호하는 장치이며 어레이에서 예비 장치로 선언해야합니다.

--with옵션은 선택 사항이며, 지정되지 않은 경우 사용 가능한 스페어가 사용됩니다.

이전 mdadm 버전

참고 : 여전히 3.2+ 커널이 필요합니다 .

첫째, (대체 여분으로 새 드라이브를 추가 md0하고 sdc1각각 당신의 RAID 및 디스크 장치) :

# mdadm /dev/md0 --add /dev/sdc1

그런 다음 다음과 같이 복사 교체 작업을 시작하십시오 ( sdd1실패한 장치 임).

# echo want_replacement > /sys/block/md0/md/dev-sdd1/state 

결과

시스템은 읽을 수있는 모든 블록을에서 sdd1로 복사합니다 sdc1. 읽을 수없는 블록 인 경우 패리티에서 재구성합니다. 작업이 완료되면 이전 스페어 (여기서는 sdc1)가 활성화되고 실패한 드라이브는 실패 (F)로 표시되므로 제거 할 수 있습니다.

참고 : 크레딧은 frostschutzAnsgar Esztermann 에게 원래 솔루션을 찾았습니다 ( 중복 질문 참조 ).

이전 커널

다른 답변은 다음과 같이 제안합니다.

  • Johnny접근 방식 : 어레이를 RAID6으로 변환하고 디스크를 "교체"한 다음 다시 RAID5로
  • Hauke ​​Laging접근 방식 : RAID5 어레이에서 디스크를 간단히 제거하고 새 디스크로 RAID1 (미러)의 일부로 만든 다음 해당 미러 드라이브를 RAID5 어레이에 다시 추가하십시오 (이론적) ...

2
mdadm --add--replace작동 하기 전에 여전히 필요 합니다. ( mdadm3.3, 우분투 15.10). --addafter 를 수행하면 --replace여유 공간이 추가되는 즉시 복사가 시작됩니다. (장치는 "원치 않는 교체"로 표시되어 있습니다).
Peter Cordes

3

요구 사항을 충족하는 것이 가능할 수 있습니다

  1. 온라인
  2. 교체 할 디스크를 제외하고 디스크에 스트레스를주지 마십시오.

그러나 다음과 같이 작동하더라도 "책에서"그런 종류의 권장 사항을 찾지 못할 것입니다 ...

생각:

  1. 어레이에서 디스크 OLD를 꺼내십시오 (잠시 동안). mdadm --manage /dev/raid5 --fail /dev/OLD
  2. OLD 및 NEW 디스크에서 새 md 장치 (RAID-1)를 만듭니다. mdadm --build /dev/md42 --level=mirror --raid-devices=2 /dev/OLD /dev/NEW
  3. RAID-1을 어레이에 다시 넣으십시오 (/ dev / OLD 대신). mdadm --manage /dev/raid5 --re-add /dev/md42

무엇을 해야 일이 :-) :

  1. RAID-5는 / dev / md42를 동기화시킵니다. 오래 걸리지 않아야합니다.
  2. RAID-5는 정상적으로 다시 작동하지만 느려집니다.
  3. / dev / NEW는 / dev / OLD와 동기화됩니다.

동기화 진행 상황을 확인하십시오 ( cat /proc/mdstat또는 mdadm --monitor). 동기화가 완료되면 RAID-5에서 RAID-1을 꺼내고 RAID-1을 중지하고 / dev / NEW를 RAID-5에 다시 추가하십시오. 모든 것이 정상이면, 문제를 피하기 위해 / dev / OLD의 mdraid 수퍼 블록을 덮어 씁니다.mdadm --zero-superblock

경고 : 비트 맵을 사용하는 경우에만 빠른 RAID-5 동기화가 작동 할 수 있습니다. 없는 경우 먼저 더미 RAID-5 (비트 맵없이)로 테스트하는 것이 좋습니다. 또는 하나를 추가하십시오. 적어도 외부를 추가하는 것이 가능해야합니다. 그렇지 않으면 장치를 변경하기 전에 RAID-5를 중지해야 할 수도 있습니다. RAID-5로 부팅하면 약간 복잡해집니다.


3

RAID-6 (1이 아닌 2 개의 패리티 디스크)을 실행하지 않고 mdadmin 3.1.x 이상을 실행중인 경우 RAID-5 어레이를 RAID-6 으로 변환하여 추가 패리티 디스크를 추가 할 수 있습니다 . 그러나 재 구축 중에 어레이에 스트레스가 가해집니다. 또한 쓰기 중에 업데이트 할 패리티 디스크가 더 많기 때문에 성능에 영향을 미칩니다.

그러나 성공적으로 완료되면 장애가 발생한 디스크를 제자리에 유지할 수 있으며 궁극적으로 장애가 발생한 경우에도 어레이에 대한 패리티 보호 기능을 사용할 수 있습니다. RAID6으로 유지하기를 기다리지 않으면 RAID6에서 RAID5로 어레이를 수렴 할 수 있다고 생각합니다.

어레이를 RAID-5로 유지하고 어레이를 성능 저하 모드로 두지 않고 디스크를 교체하는 온라인 방법을 알지 못합니다. 어레이를 교체 실패로 표시해야한다고 생각합니다. dd 복사 아이디어가 그렇게 할 수 있습니다.


@ haukelaging 참고로 커널 3.2부터 가능합니다 . 제 답변을 참조하십시오 .
Totor
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.