여러 개의 실패한 드라이브를 사용하여 mdadm RAID 5 어레이 재구축

여러 개의 실패한 드라이브를 사용하여 mdadm RAID 5 어레이 재구축

5개의 드라이브 Raid5 어레이가 있는데 2개의 드라이브에 오류가 발생했습니다. 교체해야 할 새 드라이브가 있는데 부팅하려고 하면 "/dev/md/0이 3개 드라이브로 조립되어 있습니다. 어레이를 부팅하기에 충분하지 않습니다."라는 메시지가 나타납니다.

원본 드라이브 중 하나의 슈퍼블록 데이터:

mdadm -E /dev/sdb
/dev/sdb:
          매직: a92b4efc
        버전: 1.2
    기능 맵: 0x1
     배열 UUID: eece6340:50c5f548:fec6e083:8e175d25
           이름: nas2:0(nas2 호스트에 대한 로컬)
  생성시간 : 2016년 6월 11일 토요일 15:08:47
     레이드 레벨: raid5
   레이드 장비: 5

 사용 가능한 개발 크기: 3906767024(1862.89GiB 2000.26GB)
     어레이 크기: 7813533696(7451.57GiB 8001.06GB)
  사용된 개발 크기: 3906766848(1862.89GiB 2000.26GB)
    데이터 오프셋: 262144 섹터
   슈퍼 오프셋: 8개 섹터
   사용되지 않은 공간: 이전 = 262056 섹터, 이후 = 176 섹터
          상태: 깨끗함
    장치 UUID: f99f8f44:bbf30563:35183897:5563d56a

내부 비트맵: 슈퍼블록의 8개 섹터
    갱신시간 : 2018년 8월 12일 일요일 15시 1분 12초
  불량 블록 로그: 섹터 오프셋 72에서 사용 가능한 항목 512개
       체크섬: 3c38edaa - 정확함
         활동: 364523

   장치 역할: 활성 장치 0
   어레이 상태: AA..A('A'==활성, '.'==누락, 'R'==교체됨)

이것은 어셈블을 시도한 결과입니다.

mdadm: /dev/sdb는 /dev/md/0, 슬롯 0의 구성원으로 식별됩니다.
mdadm: /dev/sdf는 /dev/md/0, 슬롯 4의 구성원으로 식별됩니다.
mdadm: /dev/sdc는 /dev/md/0, 슬롯 1의 구성원으로 식별됩니다.
mdadm: /dev/sdc를 /dev/md/0에 1로 추가합니다.
mdadm: /dev/md/0의 슬롯 2에 최신 장치가 없습니다.
mdadm: /dev/md/0의 슬롯 3에 최신 장치가 없습니다.
mdadm: /dev/sdf를 /dev/md/0에 4로 추가합니다.
mdadm: /dev/sdb를 /dev/md/0에 0으로 추가합니다.
mdadm: /dev/md/0은 3개의 드라이브로 구성되어 있습니다. 어레이를 부팅하기에 충분하지 않습니다.
mdadm: 추가 조립을 위한 장치 찾기
mdadm: 배열을 구성 파일에서 찾을 수 없거나 자동으로 찾을 수 없습니다.

어레이를 조립할 수 있도록 슈퍼블록 데이터(예: dd)를 새 드라이브에 복제할 수 있는 방법이 있습니까?

답변1

RAID-5 어레이의 여러 드라이브가 손상된 경우 데이터 손실 없이 어레이를 재조립할 수 없습니다. 이론적으로는 나머지 드라이브에서 데이터를 읽을 수 있지만 그 사이에 블록이 손실됩니다.

5 디스크 RAID-5의 구조는 다음과 같습니다. D는 데이터 블록이고 P는 패리티 블록입니다.

12345
DDDDP
DDDPD
DDPDD
DPDDD
PDDDD

두 개의 드라이브 중 하나라도 실패하면 20개의 데이터 블록과 5개의 패리티 블록마다 8개의 데이터 블록과 2개의 패리티 블록이 손실됩니다. 패리티 작동 방식에 따라 패리티가 손상되지 않은 경우(다이어그램의 각 행) 시스템은 손실된 단일 데이터 블록을 복구할 수 있습니다. 두 개의 손실된 데이터 블록의 경우 블록을 재구성할 수 있는 고유한 방법이 없습니다. 따라서 나머지 패리티 블록은 쓸모가 없으며, 20개의 데이터 블록 중 12개의 데이터 블록만 남게 됩니다. 데이터의 40%가 손실되었습니다.

~에 따르면mdadm 매뉴얼 페이지, 블록의 기본값은 512kB이므로 최대 1.5MB의 전체 데이터 블록을 찾을 수 있습니다. 그러나 파일 시스템 코드는 주요 메타데이터가 손실된 것을 보고 기뻐하지 않을 것이며, 파일의 데이터가 있는 올바른 장치 블록을 찾을 수 있더라도 그보다 큰 파일은 일부를 잃을 가능성이 높습니다.

답변2

디스크 어레이 5

에서 발췌위키피디아 기사:

실행하려면 하나의 드라이브를 제외한 모든 드라이브가 있어야 합니다. 단일 드라이브에 오류가 발생하면 분산 패리티를 기반으로 후속 읽기를 계산할 수 있으므로 데이터가 손실되지 않습니다.

그래서 제 결론은 이 두 드라이브가 정말 불량이었다면 지금 어레이를 조립하는 것은 불가능할 것이라는 것입니다. 죄송합니다.

관련 정보