RAID 10을 시작할 수 없습니다.

RAID 10을 시작할 수 없습니다.

내가 관리하는 RAID 10 어레이에 mdadm오류가 발생했습니다. 증상은 X가 충돌하고 터미널에서 로그인할 수 없다는 것입니다. 컴퓨터를 다시 시작했지만 /dev/md1부팅되지 않습니다.

다음 정보를 수집했습니다. 일부 정보는 다른 컴퓨터에 수동으로 복사했기 때문에 불완전합니다.

$ cat /proc/mdstat

....

md1 :   inactive sdb3[1](S) sdd1[3](S) sdc2[2](S) sda1[0](S)
        1250273760 blocks super 1.0

설치 실패

$ mount /dev/md1    
EXT4-fs (md1): unable to read superblock

스캔에서 메타데이터를 찾았습니다.

$ mdadm --examine --scan
...
ARRAY /dev/md/1 metadata=1.0 UUID=2c... name=linux:1

운영 이미지 부족으로 실행 실패

$ mdadm --run /dev/md1
md/raid0:md1: not enough operational mirrors.
md: pers->run() failed...
mdadm:failed to run array /dev/md1: Input/output error

실행을 시도한 후 어레이에 두 개의 디스크만 남습니다.

$ cat /proc/mdstat
....
md1  : inactive sdd1[3] sdc2[2]
       62513638 blocks super 1.0

디스크를 다시 추가하려는 시도가 실패했습니다.

$ mdadm /dev/md1 --add /dev/sda1
mdadm: /dev/sda1 reports being an active member for /dev/md1, but --re-add fails
mdadm: not performing --add as that would convert /dev/sda1 in to a spare
mdadm: To make this a spare, use "mdadm --zero-superblock /dev/sda1" first

배열을 다시 생성하기 위해 일부 메타데이터를 기록했습니다.

$ mdadm --examine /dev/sdb3 /dev/sdd1 /dev/sdc2 /dev/sda1 | grep -E 'dev|Update|Role|State|Chunk Size'
/dev/sdb3:
  State: active
  Update time:  Mon May 14 21:51:41 2012
  Chunk Size: 256K
  Device Role: Active device 1
  Array State : AAAA
/dev/sdd1:
  State: active
  Update time:  Mon May 14 22:11:11 2012
  Chunk Size: 256K
  Device Role: Active device 3
  Array State : ..AA
/dev/sdc2:
  State: active
  Update time:  Mon May 14 22:11:11 2012
  Chunk Size: 256K
  Device Role: Active device 2
  Array State : ..AA
/dev/sda1:
  State: active
  Update time:  Mon May 14 21:51:41 2012
  Chunk Size: 256K
  Device Role: Active device 0
  Array State : AAAA

이전에 기록된 정보를 기반으로 배열을 수동으로 다시 생성해 보았습니다.

$ mdadm --create --metadata=1.0 --assume-clean --level=10 --raid-devices=4 --chunk=256K /dev/md1 /dev/sda1 /dev/sdb3 /dev/sdc2 /dev/sdd1
mdadm: /dev/sda1 appears to contain an ext2fs file system
mdadm: /dev/sda1 appears to be part of a raid array
mdadm: /dev/sdb3 appears to contain an ext2fs file system
mdadm: /dev/sdb3 appears to be part of a raid array
mdadmin: /dev/sdc2 appears to be part of a raid aray
mdadmin: /dev/sdd1 appears to be part of a raid aray

마운트가 다시 실패합니다. 이는 공격대가 올바르게 생성되지 않았음을 의미할 수 있습니다.

$ 마운트 /dev/md1 /mnt

EXT4-fs (md1): ext4_check_descriptors: Checksum forgroup 0 failed (54076!=0)
EXT4-fs (md1): group descriptors corrupted!

fsck를 실행하면 심각하게 고려할 수 없을 만큼 많은 오류가 발생하므로 실행을 허용하지 않았습니다.

"누락된" 장치와 두 개의 디스크를 사용하여 어레이를 다시 생성하려고 시도했지만 조합이 작동하지 않았습니다. 모두 시도했는지는 모르겠지만 확실히 많이 시도했습니다.


일부 세부정보:

  • mdadm버전은 2.3.2이며 OpenSUSE 12.1, 커널 3.1.10, x86_64에서 실행됩니다.
  • smartctl -t short모든 하드 드라이브가 오류 없이 완료되었습니다 .

정보 손실 없이 RAID 어레이를 재구축하는 방법또는정보를 추출하여 다른 곳에 복사하시겠습니까? 또한 배열을 다시 만들려고 할 때 위에서 뭔가 잘못된 일을 하고 있는지 알고 싶습니다.

답변1

약간의 도움을 받아 다음을 통해 성능이 저하된 어레이를 재구축할 수 있었습니다.

  1. 사용테스트 디스크유틸리티를 실행하고 디스크 /dev/sdc/dev/sdd파티션 테이블 모두 GPT로 표시되어 있는지 확인하세요.
  2. 파티션 유형 이 아닌 /dev/sdd열로 나열되도록 파티션 테이블을 수정했습니다 .fd83
  3. /dev/sda1RAID 어레이만 사용하고 생성합니다./dev/sdd1
  4. 실행 e2fsck -y /dev/md1(많은 수정이 예상됨)

RAID 어레이를 재구축할 때 유용한 팁은 원시 장치의 처음 100MB를 보고 e2fsck에 전달되어야 하는 유효한 ext2처럼 보이는지 확인하는 것입니다.

dd if=/dev/md1 of=/tmp/md1.img bs=1k count=1024
strings md1.img | lesss

관련 정보