4개의 디스크에 소프트웨어 RAID5 어레이(Linux md)가 있습니다.
어레이를 저하된 상태로 두지 않고 디스크 중 하나를 새 디스크로 교체하고 싶습니다., 가능하다면 온라인으로. 이것이 어떻게 가능한지?
다음과 같은 작업을 원하지 않기 때문에 이는 중요합니다.
- 다른 디스크에 스트레스를 가할 위험이 있으므로 재구축 중에 하나가 충돌할 수 있습니다.
- "패리티 없음 상황"에 처할 위험이 있으므로 한동안 안전망이 없습니다.
온라인에서 이 작업을 수행하는 것은 너무 많은 것을 요구하는 것 같아서 dd
이전 디스크의 데이터를 새 디스크로 원시 복사(raw copy() 해야 합니다.오프라인그럼 교체를 해보겠지만 이론적으로는 가능할 것 같은데...
일부 배경: 이 디스크는 5.5년 이상 거의 지속적으로 회전해 왔습니다. 현재로서는 여전히 완벽하게 작동하며 모두 (긴) SMART 자체 테스트를 통과했습니다. 그러나 4개의 디스크 중 하나가 오래 지속되지 않을 것이라고 생각하는 이유가 있습니다(예측 오류 가정).
답변1
mdadm 3.3 이상 사용
~부터mdadm
3.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+ 커널.
먼저 새 드라이브를 예비 드라이브로 추가합니다( 및 디스크 장치를 각각 RAID 및 디스크 장치로 교체 md0
) sdc1
.
# mdadm /dev/md0 --add /dev/sdc1
sdd1
그런 다음 다음과 같이( 실패한 장치로) 복사-교체 작업을 시작합니다 .
# echo want_replacement > /sys/block/md0/md/dev-sdd1/state
결과
시스템은 에서 으로 읽을 수 있는 모든 블록을 복사 sdd1
합니다 sdc1
. 읽을 수 없는 블록이 발견되면 패리티를 기반으로 블록을 다시 빌드합니다. 작업이 완료되면 이전 예비 드라이브(여기서: sdc1
)가 활성 드라이브가 되고 오류가 발생한 드라이브는 오류(F)로 표시되므로 제거할 수 있습니다.
노트:신용은 다음과 같습니다프로스트슈츠그리고안스가 에스테르만원래 솔루션을 찾은 사람(참조질문이 중복되었습니다.).
오래된 커널
다른 답변은 다음을 제안합니다.
답변2
이게 효과가 있을 수도 있어
- 온라인
- 교체하려는 디스크 이외의 다른 디스크에 압력을 가하지 마십시오.
그러나 다음 방법이 효과가 있을지라도 "책에서" 그러한 조언을 찾을 수 없을 것입니다...
아이디어:
- 어레이에서 이전 디스크를 제거합니다(일시적으로).
mdadm --manage /dev/raid5 --fail /dev/OLD
- 기존 디스크와 새 디스크에서 새 md 장치(RAID-1)를 만듭니다.
mdadm --build /dev/md42 --level=mirror --raid-devices=2 /dev/OLD /dev/NEW
- RAID-1을 다시 어레이에 넣습니다(/dev/OLD 대신):
mdadm --manage /dev/raid5 --re-add /dev/md42
무엇~해야 한다:-) 발생하다:
- RAID-5는 /dev/md42를 동기화합니다. 시간이 오래 걸리지 않습니다.
- RAID-5는 다시 잘 작동하지만 속도는 느려집니다.
- /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 사본 아이디어가 이를 수행하는 방법일 수 있습니다.