mdadm RAID5를 조립할 수 없습니다

mdadm RAID5를 조립할 수 없습니다

어제는 서버 유지 관리를 좀 하고 싶었습니다. 전원 버튼을 한 번 눌러 끄면 매번 완벽하게 작동합니다.

10분 후에도 서버가 여전히 꺼져 있었기 때문에 하루에 한 번씩 전원 버튼을 사용하여 서버를 강제로 껐습니다. (강제 종료 전에 SSH 접속을 시도했는데 SSH 서비스가 중지되었습니다.)

유지 관리를 완료하고 서버를 다시 시작한 후 2TB 디스크 7개로 구성된 RAID5가 더 이상 작동하지 않는 것을 발견했습니다. 이는 디스크 5개와 디스크 2개로 구성된 2개의 RAID로 분할되며 모두 (S) 모드(예비)이고 비활성 상태입니다.

시도했지만 mdadm --assemble --scan --run -f도움이 되지 않았습니다.

mdadm: Merging with already-assembled /dev/md/128
mdadm: failed to add /dev/sdc1 to /dev/md/128: Invalid argument
mdadm: failed to add /dev/sde1 to /dev/md/128: Invalid argument
mdadm: failed to RUN_ARRAY /dev/md/128: Input/output error
mdadm: No arrays found in config file or automatically

반쯤 조립된 것 같습니다.

cat /proc/mdstat 
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md128 : inactive sda1[0] sdg1[6] sdf1[5] sdd1[7] sdb1[1]
      9766891962 blocks super 1.2

unused devices: <none>

또한 다음 명령을 사용하여 수동으로 다시 조립해 보았습니다 mdadm --assemble --run /dev/md0 /dev/sd[abcdefg]1 --verbose.

mdadm: looking for devices for /dev/md0
mdadm: /dev/sda1 is identified as a member of /dev/md0, slot 0.
mdadm: /dev/sdb1 is identified as a member of /dev/md0, slot 1.
mdadm: /dev/sdc1 is identified as a member of /dev/md0, slot 2.
mdadm: /dev/sdd1 is identified as a member of /dev/md0, slot 4.
mdadm: /dev/sde1 is identified as a member of /dev/md0, slot 3.
mdadm: /dev/sdf1 is identified as a member of /dev/md0, slot 6.
mdadm: /dev/sdg1 is identified as a member of /dev/md0, slot 5.
mdadm: added /dev/sdb1 to /dev/md0 as 1
mdadm: failed to add /dev/sdc1 to /dev/md0: Invalid argument
mdadm: failed to add /dev/sde1 to /dev/md0: Invalid argument
mdadm: added /dev/sdd1 to /dev/md0 as 4
mdadm: added /dev/sdg1 to /dev/md0 as 5
mdadm: added /dev/sdf1 to /dev/md0 as 6
mdadm: added /dev/sda1 to /dev/md0 as 0
mdadm: failed to RUN_ARRAY /dev/md0: Input/output error

이제 모든 디스크에 mdadm --examine /dev/sd[abcdefg]1이 출력이 있는지 확인하세요.hastebin.com에서 확인해보세요나에게는 모든 것이 괜찮아 보인다.

사용된 디스크입니다lsblk

NAME                      MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                         8:0    0   1,8T  0 disk 
└─sda1                      8:1    0   1,8T  0 part 
sdb                         8:16   0   1,8T  0 disk 
└─sdb1                      8:17   0   1,8T  0 part 
sdc                         8:32   0   1,8T  0 disk 
└─sdc1                      8:33   0   1,8T  0 part 
sdd                         8:48   0   1,8T  0 disk 
└─sdd1                      8:49   0   1,8T  0 part 
sde                         8:64   1   1,8T  0 disk 
└─sde1                      8:65   1   1,8T  0 part 
sdf                         8:80   1   1,8T  0 disk 
└─sdf1                      8:81   1   1,8T  0 part 
sdg                         8:96   1   1,8T  0 disk 
└─sdg1                      8:97   1   1,8T  0 part 

사용된 하드 드라이브는 최고는 아니지만 작동합니다. 에서 까지 의 sda모든 드라이브에 대한 스마트 출력sdg hastebin.com에서도 이용 가능합니다.

이 사실 때문에내 RAID5 디스크에서 오류가 발생하고 모든 데이터가 손실된 것으로 가정합니다. ...

편집 1:

dmesg -T반품:

[Sa Okt  7 15:41:08 2017] md/raid:md128: device sda1 operational as raid disk 0
[Sa Okt  7 15:41:08 2017] md/raid:md128: device sdf1 operational as raid disk 6
[Sa Okt  7 15:41:08 2017] md/raid:md128: device sdb1 operational as raid disk 1
[Sa Okt  7 15:41:08 2017] md/raid:md128: device sdd1 operational as raid disk 4
[Sa Okt  7 15:41:08 2017] md/raid:md128: device sdg1 operational as raid disk 5
[Sa Okt  7 15:41:08 2017] md/raid:md128: not enough operational devices (2/7 failed)
[Sa Okt  7 15:41:08 2017] md/raid:md128: failed to run raid set.
[Sa Okt  7 15:41:08 2017] md: pers->run() failed ...
[Sa Okt  7 15:41:12 2017] md: md127 stopped.
[Sa Okt  7 15:41:15 2017] md: md128 stopped.
[Sa Okt  7 15:41:20 2017] md: md0 stopped.
[Sa Okt  7 15:41:20 2017] md: sdc1 does not have a valid v1.2 superblock, not importing!
[Sa Okt  7 15:41:20 2017] md: md_import_device returned -22
[Sa Okt  7 15:41:20 2017] md: sde1 does not have a valid v1.2 superblock, not importing!
[Sa Okt  7 15:41:20 2017] md: md_import_device returned -22

슈퍼블록을 수정하는 방법은 무엇입니까?


내가 여기서 뭔가 잘못하고 있는 걸까요?

내가 얻는 이유는 무엇입니까?

mdadm: failed to add [...] to [...]: Invalid argument?

여기서 유효하지 않은 주장은 무엇입니까?

어떻게 더 디버깅할 수 있나요?

답변1

경고: 이 답변은 정의된 증상에 대한 답변이지만 실제 답변은 제가 제안한 것과 다릅니다.

그러나 이런 일이 발생했을 수도 있습니다. 문제는 다음과 같습니다.

Unused Space : before=262056 sectors, after=177 sectors
Unused Space : before=262056 sectors, after=177 sectors
Unused Space : before=262056 sectors, after=18446744073709289480 sectors
Unused Space : before=262056 sectors, after=177 sectors
Unused Space : before=262056 sectors, after=18446744073709289480 sectors
Unused Space : before=262056 sectors, after=177 sectors
Unused Space : before=262056 sectors, after=177 sectors

나는 이것을 바로잡을 수 있는 유쾌한 방법을 제시할 수 없습니다. sdc1의 MD 메타데이터를 백업한 다음 디스크 형식을 확인하고 16진수 편집기를 사용하여 문제를 해결해야 합니다.

dd어쩌면 다른 디스크 중 하나에서 관련 부분을 복사할 수도 있습니다. 해당 바이트가 어디에 있는지 "그냥" 알아내면 됩니다.

조금 웃긴 건 이렇습니다.

   Checksum : 85f67f98 - correct
   Checksum : 6a4fb921 - correct
   Checksum : 92db2c10 - correct
   Checksum : ad5c81b8 - correct
   Checksum : a657023 - correct
   Checksum : 6880d6c7 - correct
   Checksum : c0c31cf - correct

따라서 메타데이터를 수정하면 체크섬이 손상될 수 있습니다. 이것이 실제 문제인지는 모르겠지만, 이 시점에서 새로운 질문을 하는 것이 합리적일 수 있습니다.

관련 정보