먼저 실수를 저질렀으며이 RAID의 모든 데이터에 대한 백업은 하지는 않습니다 . 나는 여전히 나머지 데이터를 복구하기를 희망합니다. 복구 전문가 회사로 드라이브를 가져갈 돈이 없습니다.
100 % 백업이없는 실수 # 0. 알아.
mdadm
4x3TB 의 RAID5 시스템이 있습니다. 하나의 파티션으로 / dev / sd [be]를 구동합니다 /dev/sd[b-e]1
. 매우 큰 드라이브의 RAID5가 위험하다는 것을 알고 있지만 어쨌든 그렇게했습니다.
최근 이벤트
두 개의 드라이브 장애 후 RAID 성능이 저하됩니다. 하나의 드라이브 [/ dev / sdc]는 실제로 사라졌고 다른 [/ dev / sde]는 전원을 껐다 켠 후에 백업되었지만 RAID에 자동으로 다시 추가되지 않았습니다. 따라서 2 개의 활성 드라이브 [/ dev / sdb 및 / dev / sdd] 만있는 4 개의 장치 RAID가 남았습니다.
RAID 복원을 위해 드라이브의 dd 사본을 사용하지 않는 실수 # 1. 나는 드라이브 나 시간이 없었다. 실수 # 2, 수퍼 블록 및 mdadm -E
나머지 드라이브의 백업을 만들지 않습니다 .
복구 시도
RAID를 성능 저하 모드로 재 조립했습니다.
mdadm --assemble --force /dev/md0, using /dev/sd[bde]1.
그런 다음 내 데이터에 액세스 할 수 있습니다. 나는 /dev/sdc
여분으로 교체 했다. 빈; 동일한 드라이브.
/dev/sdc1
RAID 에서 오래된 것을 제거했습니다
mdadm --fail /dev/md0 /dev/sdc1
실수 # 3, 드라이브 를 교체 하기 전에이 작업을 수행하지 않음
그런 다음 새 파티션을 분할 /dev/sdc
하여 RAID에 추가했습니다.
mdadm --add /dev/md0 /dev/sdc1
그런 다음 RAID를 복원하기 시작했습니다. ETA 300 분 나는 과정 /proc/mdstat
을 2 %로 진행 한 다음 다른 일을했습니다.
결과 확인
몇 시간 후 (300 분 미만) 프로세스를 확인했습니다. 의 읽기 오류로 인해 중지되었습니다 /dev/sde1
.
문제가 실제로 시작되는 곳
그런 다음 /dev/sde1
RAID에서 제거 했다가 다시 추가했습니다. 내가 왜 이런 짓을했는지 기억이 나지 않습니다. 늦었다.
mdadm --manage /dev/md0 --remove /dev/sde1
mdadm --manage /dev/md0 --add /dev/sde1
그러나 /dev/sde1
이제 여분으로 표시되었습니다. 그래서 올바른 순서라고 생각한 것을 사용하여 --assume-clean을 사용하여 전체 배열을 다시 작성하기로 결정했습니다 /dev/sdc1
.
mdadm --create /dev/md0 --assume-clean -l5 -n4 /dev/sdb1 missing /dev/sdd1 /dev/sde1
그것은 효과가 있었지만 마운트하려고 할 때 파일 시스템이 인식되지 않았습니다. (EXT4 여야합니다).
장치 순서
그런 다음 최근에 보유한 백업을 확인한 후 /proc/mdstat
드라이브 순서를 찾았습니다.
md0 : active raid5 sdb1[0] sde1[4] sdd1[2] sdc1[1]
8790402048 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
그런 다음이 RAID가 약 1 년 전에 드라이브 손실을 겪었다는 것을 기억하고 결함이있는 드라이브를 예비 드라이브로 교체하여 복구했습니다. 장치 순서가 약간 뒤섞 였을 수 있습니다. 따라서 드라이브 [3]은없고 [0], [1], [2] 및 [4] 만있었습니다.
Permute_array 스크립트로 드라이브 순서를 찾으려고했습니다 : https://raid.wiki.kernel.org/index.php/Permute_array.pl 그러나 올바른 순서를 찾지 못했습니다.
질문
이제 두 가지 주요 질문이 있습니다.
드라이브의 모든 수퍼 블록을 망 쳤지 만 다음과 같은 결과 만 얻었습니다.
mdadm --create --assume-clean
명령 (따라서 데이터 자체를 덮어 쓰면 안됩니다
/dev/sd[bde]1
. 이론적으로/dev/sde1
올바른 장치 순서를 찾으면 RAID가 복원 될 수 있다는 것이 옳습니까?/dev/sde1
RAID에서 장치 번호 [4]를받는 것이 중요 합니까? 내가 그것을 만들 때mdadm --create /dev/md0 --assume-clean -l5 -n4 \ /dev/sdb1 missing /dev/sdd1 /dev/sde1
숫자 [3]이 할당됩니다. 그것이 패리티 블록의 계산과 관련이 있는지 궁금합니다. 중요한 것으로 판명되면
/dev/sdb1[0]
missing [1]을 사용하여 배열을 어떻게 다시 만들 수/dev/sdd1[2]
/dev/sde1[4]
있습니까? 작동시킬 수 있다면 성능 저하 모드에서 시작하여 새 드라이브를 추가하고/dev/sdc1
다시 동기화 할 수 있습니다.
이것이 최선의 행동 과정이 아니 었음을 나에게 지적하고 싶더라도 괜찮습니다. 그러나 이것을 깨달았습니다. 누군가 제안이 있으면 좋을 것입니다.