활성 및 예비 파티션이있는 Raid1


8

우분투 시스템의 RAID1 소프트웨어 RAID 파티션 (10.04 LTS, 2.6.32-24 서버)에 다음과 같은 문제가 있습니다.

내 디스크 중 하나 (sdb5)에서 I / O 오류가보고되어 어레이에서 결함으로 표시되었습니다. 그런 다음 하나의 활성 장치로 어레이 성능이 저하되었습니다. 따라서 하드 디스크를 교체하고 파티션 테이블을 복제 한 다음 모든 새로운 파티션을 RAID 어레이에 추가했습니다. 모든 파티션을 동기화 한 후 2 개의 활성 장치 (하나는 제외하고)가 있으면 정상 종료되었습니다. 그러나 이전에 결함이있는 디스크를보고 한 파티션에는 새 파티션이 활성 장치가 아니라 예비 디스크로 포함되었습니다.

md3 : active raid1 sdb5[2] sda5[1]
  4881344 blocks [2/1] [_U]

자세한 내용은 다음과 같습니다.

root@server:~# mdadm --detail /dev/md3
[...]
Number   Major   Minor   RaidDevice State
   2       8       21        0      spare rebuilding   /dev/sdb5
   1       8        5        1      active sync   /dev/sda5

여기에 질문이 있습니다 : 여분의 디스크를 활성 디스크로 바꾸는 방법을 어떻게 알 수 있습니까? 예비 장치로 추가 된 이유는 무엇입니까? 어레이를 다시 만들거나 다시 어셈블하는 것은 옵션이 아닙니다. 루트 파티션이기 때문입니다. 그리고 Software Raid HOWTO에서 그 주제에 대한 힌트를 찾을 수 없습니다.

도움을 주시면 감사하겠습니다.

현재 솔루션

내 문제에 대한 해결책을 찾았지만 이것이 실제 방법인지 확실하지 않습니다. 내 습격을 자세히 살펴보면 sdb5가 항상 예비 장치로 나열되어 있음을 알았습니다.

mdadm --examine /dev/sdb5
[...]
Number   Major   Minor   RaidDevice State
this     2       8       21        2      spare   /dev/sdb5

   0     0       0        0        0      removed
   1     1       8        5        1      active sync   /dev/sda5
   2     2       8       21        2      spare   /dev/sdb5

따라서 장치 sdb5를 배열 md3에 읽는 것은 항상 장치를 여분으로 추가하는 것으로 끝났습니다.

마지막으로 방금 배열을 다시 만들었습니다.

mdadm --create /dev/md3 --level=1 -n2 -x0 /dev/sda5 /dev/sdb5

작동했습니다.

그러나 질문은 나에게 열려 있습니다 : 수퍼 블록의 요약을 조작하고 sdb5를 여분의 디스크에서 활성 디스크로 바꾸도록 어레이에 지시하는 더 좋은 방법이 있습니까? 나는 아직도 답이 궁금하다.


"cat / proc / mdstat"는 무엇을 보여줍니까? 단지 재건이 아닌 재건이 완료되면 "예비"가 사라지지 않습니까? "mdadm --version"은 무엇을 표시합니까? 오래된 버그가 있었습니다 . mail-archive.com/linux-raid@vger.kernel.org/msg09818.html을 참조하십시오 .
rems

아니, 그게 문제 야 질문의 첫 번째 스 니펫은 배열에 대한 / proc / mdstat의 출력을 보여줍니다. 장치가 이미 동기화되었지만 동기화 프로세스가 완료된 후 볼 수 있듯이 장치는 예비 장치로 남아 있으며 활성 장치로 바뀌지 않습니다.
Daniel Baron

mdadm-v2.6.7.1
Daniel Baron

답변:


1

Daniel : 처음에 다음을 수행하여 스페어가 어레이에 통합되어 있는지 확인하십시오.

고양이 / proc / mdstat

빌드 프로세스가 진행되고 있는지, 그리고 얼마나 오래 걸릴지를보고해야합니다.

건물이 없으면 다음을 시도하십시오.

mdadm / dev / md3-/ dev / sdb5 제거

mdadm / dev / md3 --add / dev / sdb5

그리고 그것이 어떻게 작동하는지 다시보고하십시오. 자세한 내용은 http://linux.die.net/man/8/mdadm 을 참조하십시오.


도와 주셔서 감사합니다, Rolnik 첫 번째 코드에서 볼 수 있듯이 / proc / mdstat는 배열의 두 장치를 모두 보여줍니다. 장치가 문제없이 이전에 동기화되었습니다 (여기에서는 표시되지 않음). 그러나 재 동기화 프로세스를 마친 후에는 장치가 활성 장치로 바뀌지 않았습니다. 제거하고 다시 추가해도이 동작은 변경되지 않았습니다.
Daniel Baron

1

꽤 늦었지만 이렇게하면 스페어 드라이브가 활성화됩니다.

mdadm --grow /dev/md3 -n 2

맨 페이지에서 말한 것처럼 :

작성, 빌드 또는 확장의 경우 : -n, --raid-devices = 어레이의 활성 장치 수를 지정하십시오. 여기에 여분의 장치 수 (아래 참조)는 --create 명령 줄에 나열된 구성 요소 장치 ( "누락 된"장치 포함)의 수와 같아야합니다. 값 1을 설정하는 것은 실수 일 수 있으므로 --force를 먼저 지정해야합니다. 그러면 선형 다중 경로 RAID0 및 RAID1에 값 1이 허용됩니다. RAID4, RAID5 또는 RAID6에는 허용되지 않습니다. 이 숫자는 RAID1, RAID4, RAID5 및 RAID6 어레이의 경우 --grow를 사용하여 필요한 지원을 제공하는 커널에서만 변경할 수 있습니다.


0

내가 기억하는 것에서, (다른 이유로) 그 문제가 생겼을 때 --grow를 사용하여 예비 드라이브를 "적절하게"다시 추가해야했습니다 (오류 상태도 지 웁니다).

이와 같은 것 (문서로 확인하십시오!) :

mdadm --grow --level = faulty --layout = flush / dev / sdb5

그런 다음 장치를 추가 할 수 있으며 인식해야합니다.

문제는 md 드라이버가 드라이브 부팅 데이터에 각 파티션의 상태를 저장한다는 것입니다. 따라서 재부팅 후에도 상태를 알고 파티션에 결함이있는 것으로 표시되지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.