mdadm raid1이 다시 동기화되지 않음

mdadm raid1이 다시 동기화되지 않음

mdadm raid1에서 발생한 이 문제를 해결하려고 합니다.

mdadm이 포함된 소프트웨어 2드라이브 raid1에서 실행되는 우분투 9.04 서버가 있습니다. 어제 드라이브 중 하나에 오류가 발생하여 동일한 크기의 새 드라이브로 교체했습니다. 결함이 있는 드라이브를 제거하고 남은 양호한 드라이브의 파티션을 새 드라이브에 복사한 다음 이를 RAID에 추가했습니다. 다시 동기화되었고 시스템은 정상적으로 작동했지만, 고장나지 않은 드라이브도 고장이라는 라벨이 붙었습니다.

이제 새 드라이브에서만 공격대를 실행했습니다. 그래서 다른 드라이브를 구입하고 위의 절차를 반복했습니다. 이제 2개의 새 드라이브가 생겼고 공격대가 동기화 중이었습니다. 그러나 몇 분 후에 /proc/mdstat를 확인했는데 공격대가 더 이상 동기화되지 않았습니다.

mdadm --detail /dev/md1 표시: (sdb는 첫 번째 새 드라이브이고 sdc는 두 번째 새 드라이브입니다)

root@dola:/home/jjaramillo# mdadm --detail /dev/md1 /dev/md1: 버전: 00.90 생성 시간: Sat Dec 20 00:42:05 2008 Raid Level: raid1 배열 크기: 974711680 (929.56 GiB 998.10 GB ) 사용된 장치 크기: 974711680 (929.56 GiB 998.10 GB) Raid 장치: 2 총 장치: 2 선호 마이너: 1 지속성: 슈퍼블록은 지속적입니다.

Update Time : Wed Jun  2 10:09:35 2010
      State : clean, degraded

활성 장치: 1 작동 장치: 2 실패한 장치: 0 예비 장치: 1

       UUID : bba497c6:5029ba0b:bfa4f887:c0dc8f3d
     Events : 0.5395594

Number   Major   Minor   RaidDevice State
   2       8       35        0      spare rebuilding   /dev/sdc3
   1       8       19        1      active sync   /dev/sdb3

드라이브를 몇 번 제거했다가 다시 추가해 보았지만 같은 현상이 발생합니다. 공격대가 재동기화되지 않습니다. /var/log/messages를 살펴보고 다음을 발견했습니다.

6월 2일 07:57:36 dola 커널: [35708.917337] sd 5:0:0:0: [sdb] 처리되지 않은 감지 코드 6월 2일 07:57:36 dola 커널: [35708.917339] sd 5:0:0:0: [sdb] 결과: 호스트바이트=DID_OK 드라이버바이트=DRIVER_SENSE Jun 2 07:57:36 dola kernel: [35708.917342] sd 5:0:0:0: [sdb] 감지 키: 중간 오류 [현재] [설명자] Jun 2 07 :57:36 dola kernel: [35708.917346] 감지 설명자가 포함된 설명자 감지 데이터(16진수): 6월 2일 07:57:36 dola 커널: [35708.917348] 72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 6월 2일 07:57:36 dola 커널: [35708.917357] 00 43 9e 47 6월 2일 07:57:36 dola 커널: [35708.917360] sd 5:0:0:0: [sdb] 추가. 감지: 복구되지 않은 읽기 오류 - 자동 재할당 실패

그래서 sdb(첫 번째 새 드라이브)에 일종의 오류가 있는 것 같습니다. 내 질문은 공격대를 다시 시작하고 실행하는 가장 좋은 방법은 무엇입니까?입니다. 빈 하드 드라이브에 /dev/md1을 추가한 다음 처음부터 RAID를 다시 수행하고 데이터를 다시 로드하는 것에 대해 생각해 보았지만 더 쉬운 해결책이 있을 수 있습니다.

어떤 도움이라도 주시면 감사하겠습니다.

답변1

RAID 구성 요소가 실제로 디스크 자체가 아닌 디스크 파티션이 아닌 이상 의미 있는 방식으로 새 드라이브를 준비하려고 시도해서는 안 됩니다. 이 경우 나머지 활성 디스크의 파티션과 동일한 크기의 파티션을 새 드라이브에 생성합니다.

이전 드라이브는 전혀 건드릴 필요가 없습니다. 오류가 발생하고 신뢰할 수 없는 것으로 간주됩니다.

올바른 절차는 손상된 드라이브를 제거하고 비어 있는 새 드라이브를 추가한 다음 mdadm을 사용하여 해당 새 드라이브를 어레이에 추가하는 것입니다. 다음과 같이 하면 됩니다.

mdadm --add /dev/md0 /dev/<newdrive>

그런 다음 커널은 새 드라이브를 어레이에 동기화하여 나머지 양호한 드라이브 하나에서 데이터를 복사합니다.

답변2

답장:

결함이 있는 드라이브를 제거하고 남은 양호한 드라이브의 파티션을 새 드라이브에 복사한 다음 이를 RAID에 추가했습니다.

파티션을 직접 복사해서는 안 됩니다.

당신이 해야 할 유일한 일은 새 드라이브를 시스템에 넣고 mdadm을 사용하여 이를 RAID 그룹에 추가하는 것입니다.

실제로 복사(예: dd if=/dev/good_disk of=/dev/new_disk)를 수행했다면 아마도 RAID UUID를 복사하거나 mdadm에게 어떤 디스크가 어떤 디스크인지 알려주는 작업을 하게 되어 혼란스러울 것입니다.

답변3

새 HD를 설치하고 Tom O'Connor가 제안한 대로 파티션을 나눈 다음 mdadm을 사용하여 어레이를 복구합니다. "관리 모드:" 아래의 mdadm 매뉴얼 페이지에서 --add 옵션을 참조하세요.

mdadm /dev/md0 --add /dev/sda1 

먼저 첫 번째 교체 드라이브를 "--fail"해야 할 수도 있습니다.

관련 정보