MDADM - 재해 복구 또는 RAID5 어레이를 그대로 둔 상태에서 계속

MDADM - 재해 복구 또는 RAID5 어레이를 그대로 둔 상태에서 계속

간단히 말해서, 여기의 첫 번째 스레드에서는 다음과 같이 소프트웨어 RAID5 배열을 설정했습니다. 4개의 디스크 장치, 각 디스크 장치에 linux-RAID 파티션이 있습니다. 이러한 디스크는 다음과 같습니다. /dev/sda1 /dev/sdb1 /dev/sdd1 /dev/sde1

/dev/md0은 암호화된 LVM이 있는 raid5 장치입니다. cryptsetup을 사용하여 장치를 연 다음 vgscan 및 lvcan -a를 사용하여 볼륨을 매핑했습니다.

어제 /dev/sdd1이 다운된 것을 발견했습니다. 내가 따라온 단계는 다음과 같습니다.

0. 장애가 발생한 디스크 삭제

#  mdadm --remove /dev/md0 /dev/sdd1

1. 드라이브 결함 확인

mdadm --examine /dev/sdd1

"메타데이터를 읽을 수 없습니다" 오류가 발생합니다.

2. 파티션 테이블을 읽어보십시오.

parted를 사용했는데 Linux-RAID 파티션이 사라진 것을 발견하고 이를 다시 만들려고 했을 때(드라이브를 다시 추가할 수 있기를 바라면서) "귀하의 장치에 쓸 수 없습니다"라는 메시지가 나타났습니다.

따라서 분명한 사실은 하드 드라이브가 작동하지 않는다는 것입니다.

3. 케이스에서 하드 드라이브를 제거합니다. (안 좋은 일이 발생할 수 있습니다.)

그래서 내 케이스에서 /dev/sdd1을 추출해 보았지만 그것이 4개 드라이브 중 어느 드라이브인지는 알 수 없습니다. 그래서 SATA 케이블 중 하나를 뽑았고 방금 /dev/sde1을 뽑았다는 것을 깨달았습니다. 다시 연결하고 다음 케이블을 뽑았습니다. 잘했습니다! /dev/sdd1 입니다

4. 내가 무슨 짓을 한 거지? ! 슬픈 얼굴

사용:

# mdadm --detail /dev/md0

나는 /dev/sde1이 배열을 "삭제됨"으로 표시했다는 것을 깨달았습니다. --re-add 없이 다시 추가하려고 시도했지만 다음과 같습니다.

mdadm --add /dev/md0 /dev/sde1

/proc/mdstat는 재구축 프로세스를 보여주고 mdadm --detail /dev/md0은 /dev/sde1을 "예비"로 표시합니다. 아마도 여기서 끔찍한 일을 하고 있을 것입니다.

배열에서 /dev/sde1을 제거하고 --re-add를 사용해 보았지만 mdadm은 그렇게 할 수 없다고 말하면서 중지하고 배열을 다시 조립하라고 제안했습니다.

5. 다음에는 어디로 갈까요?

먼저, 고장난 하드 드라이브를 교체할 새 하드 드라이브를 기다리고 있습니다. 일단 갖고 이를 새로운 Linux-RAID 파티션 장치(/dev/sdd1이라고 함)로 설정하고 나면 어레이를 중지해야 합니다(LVM 볼륨은 더 이상 마운트되지 않으며 분명히 cryptsetup은 암호화 장치를 껐지만 mdadm 배열을 중지할 수 없습니다). 전체 시스템을 재부팅하고 처음부터 시작하는 것을 고려하고 있습니다. 제가 해야 할 일은 다음과 같습니다.

# mdadm --stop /dev/md0
# mdadm --stop /dev/md0
# mdadm --examine /dev/sd*1
# mdadm --assemble --scan --run --verbose

--run 옵션이 없으면 mdadm이 저하된 어레이 스캔을 거부한다는 내용을 읽었습니다.

최상의 시나리오: 재조립 프로세스는 /dev/sde1을 인식하고 새로운 /dev/sdd1을 사용하여 이전 오류를 수정합니다. 나는 어떤 데이터도 잃지 않을 것이며 행복할 것입니다.

최악이자 가장 일반적인 시나리오: 어레이 재조립이 /dev/sde1 복원에 실패하고 빈 새 어레이로 시작해야 합니다.

여기서 뭔가 빠졌나요? 이 프로그램에서 무엇을 검토해야 합니까?

프랑스에서 온 따뜻한 인사

답변1

그래서 완전히 회복할 수 있었어요. 감사합니다이 링크

내가 한 일은 다음과 같습니다.

  1. 고장난 디스크를 교체하고 서버를 다시 시작했습니다.
  2. 그런 다음 새 디스크를 Linux-RAID 파티션 유형으로 포맷했습니다.

    # mdadm --examine /dev/sda1 /dev/sdb1 /dev/sdd1 /dev/sde1
    

그런 다음 위의 링크를 따라 --examine 명령에서 제공한 정보를 기반으로 어레이를 (재)생성했습니다.

# mdadm --create /dev/md0 --level=5 --raid-devices=4 --chunk=512 --name=server:0 /dev/sda1 /dev/sdb1 missing /dev/sde1 --assume-clean

이 링크에서 알 수 있듯이 --assume-clean이 트릭을 수행했습니다! /dev/sde1의 "대기" 상태를 방지하고 이를 새 어레이의 활성 부분으로 사용합니다.

아마도 "기존" 장치에서 어레이를 다시 생성할 때 주요 문제는 데이터가 손실되지 않는 한 블록 매개변수를 조작하지 않는 것입니다.

  1. 그런 다음 이 새 어레이에 새 장치를 추가합니다.

    # mdadm --add /dev/md0 /dev/sde1
    

서버 재구축이 시작된 후(10Tb는 6시간 소요) 전체 어레이에 대한 무결성 검사를 강제 수행했습니다(역시 6시간 소요).

모든 것이 나에게 회복되었고 나는 안심했습니다!

관련 정보