raid-5 mdadm 어레이에서 디스크 1개를 제거하는 방법은 무엇입니까?

raid-5 mdadm 어레이에서 디스크 1개를 제거하는 방법은 무엇입니까?

RAID-5에서 HDD 1개를 제거하려고 시도했는데 문제가 발생했지만 여전히 데이터를 복구할 수 있기를 원합니다. (사실 모두 백업해 두었기 때문에 mdadm가능성의 문제일 뿐입니다.)

4 x 1 Tb RAID-5가 있는데 디스크 중 하나에 많은 정보가 표시되기 시작했습니다.재할당_섹터_Ct, 그래서 삭제하기로 결정했습니다.

내가 뭘 한거지:

  1. mdadm --manage /dev/md0 --fail /dev/sdc
  2. mdadm --manage /dev/md0 --remove /dev/sdc

  3. 다음을 실행해 보세요.

    root@darkstar:/home/anton# mdadm --grow /dev/md0 --raid-devices=3
    mdadm: this change will reduce the size of the array.
    use --grow --array-size first to truncate array.
    e.g. mdadm --grow /dev/md0 --array-size 1953262592
    
  4. mdadm --grow /dev/md0 --array-size 1953262592

마침내:

  1. mdadm --grow /dev/md0 --raid-devices=3 --backup-file=/root/grow_md1.bak

이제 모양 변경 및 복원이 완료되었으므로 내/dev/md0(설치되지 않았습니다) resize2fs /dev/md0run first 를 말하고 e2fsck다음 e2fsck을 말하세요.

The filesystem size (according to the superblock) is 732473472 blocks
The physical size of the device is 488315648 blocks
Either the superblock or the partition table is likely to be corrupt!

반면에 다음과 같이 mdadm -D /dev/md0말해 보세요.

Array Size : 1953262592 (1862.78 GiB 2000.14 GB)
Used Dev Size : 976631296 (931.39 GiB 1000.07 GB)

이로 인해 내 데이터가 손실되지 않을 것이라는 희망이 생겼습니다. 3 x 1Tb 디스크의 RAID-5 어레이가 작동하려면 어떻게 해야 하는지 아는 사람이 있나요?

답변1

당신이 해야 할 일은 첫 번째 단계이다

mdadm --manage /dev/md0 --fail /dev/sdc

이 시점에서 RAID 5 어레이는 성능 저하 모드에서 실행 중이므로 디스크를 새 디스크로 교체할 수 있습니다.

불행히도 당신은 그런 것 같습니다잘린어레이의 유효 크기는 2TB에서 1TB로 증가하므로 파일 시스템의 두 번째 절반이 손상됩니다. 다행히 백업이 있다고 하셨습니다.

조금 혼란스러워요. RAID5 구성에 4개의 디스크가 있는 경우 3TB의 여유 공간이 있어야 합니다. 하지만 결과를 보지 않고서 mdadm --examine제가 여러분에게 무엇을 더 제공할 수 있는지 잘 모르겠습니다.

답변2

순서가 거꾸로 되셨네요.

축소하려면, 당신은첫 번째파일 시스템을 축소한 resize2fs다음( ) 블록 장치를 두 번째로 축소합니다( mdadm). 파일 시스템을 늘리는 순서는 정확하지만 축소하는 순서는 반대입니다.

귀하의 데이터가 파괴되었습니다. 이를 복구하려면 먼저 백업이 손상되지 않았는지 확인해야 합니다. 그런 다음 어레이를 mkfs하고 백업에서 복원합니다. 백업이 잘못된 경우 파일 시스템의 처음 2TB에서 파일을 복원할 수 있습니다. (아래 참조)

추신: 어레이를 관리하는 일반적인 방법은 디스크에 오류가 발생하면 용량이 동일하거나 더 큰 디스크로 교체하는 것입니다. mdadm --grow디스크 오류 처리의 일반적인 부분이 아닙니다.

다시 덮다

파일 시스템의 원래 세 번째 테라바이트는 기본적으로 덮어쓰기되었으며 이제 해당 공간은 패리티에 사용됩니다. (실제 섹터에는 패리티와 다른 디스크에서 이동한 데이터가 혼합되어 포함되어 있으며 이제 패리티가 포함되어 있습니다.) 해당 데이터 부분은 섹터를 읽을 수 있는 (아마도 이론적으로) 기능이 없으면 영원히 사라집니다. 복원할 수 없는 이전 콘텐츠입니다.

또한 ext4는 파일 시스템 시작 부분의 모든 메타데이터를 유지하지 않으며 파일 시스템 전체에 배포됩니다. 따라서 많은 메타데이터도 손실됩니다. 중요한 것은 파일 데이터의 일부가또는메타데이터는 누락된 세 번째 항목에 있으므로 파일에 액세스할 수 없습니다. 네 번째 디스크에서는 제한된 범위 내에서 조각을 복원할 수 있습니다(해당 디스크는 당시 장애가 발생했기 때문에 성장에 영향을 받지 않았을 수 있습니다).

첫 번째이자 가장 중요한 단계는 4TB 디스크를 구입하여 이를 사용하여 파일 시스템의 전체 복사본(이미지)을 만드는 것입니다. 그런 다음 원본 디스크 4개를 따로 보관해 두세요. 원본 디스크의 신뢰성에 대해 의문이 있는 경우두번째복사본을 만들고 하나의 복사본에서만 작업하십시오. 또한 부분적으로 손상되었을 수 있는 파일의 여러 복사본을 포함하여 복구된 파일을 복사하려면 추가 디스크가 필요합니다.

이제 복구 단계를 시도해 볼 수 있습니다.사본에. 이러한 작업의 대부분은 새 복사본에서 수행되어야 합니다. 이러한 단계는 파괴적이므로 복사본에서만 작업해야 하는 많은 이유 중 하나입니다. 원본을 파기하지 마십시오.

  1. 이렇게 해보자 e2fsck -y /path/to/copy. 어쩌면 설치할 수 있는 것이 생성될 수도 있습니다. 계속해서 파일을 복사하세요.

  2. 복사본을 원래 크기로 다시 확장합니다(스파스는 작동해야 하며 truncate -s수행할 수 있음). 그런 다음 마운트할 수 있습니다(읽기 전용으로 실행). 가능한 한 복사하세요. 그것을 제거하고 e2fsck -y다시 작업을 수행하십시오. 다시 설치하고 최대한 많은 콘텐츠를 복사하세요.

  3. fsck를 실행 -y하고 실제로 이러한 모든 메시지를 확인하십시오. 예를 들어, 파일 데이터의 일부가 누락된 영역에 있을 때 수행할 작업을 실제로 사용자가 선택할 수 있게 되기를 바랍니다(0으로 대체, 파일 삭제). 어쩌면 누락된 메타데이터에 관한 옵션도 제공할 수도 있습니다. 나는 그것을 먼저 할 것이다. -y왜냐하면 그것은많은당신을 위한 질문들...

  4. 이전 파일 시스템 이미지 백업이 있는 경우 현재 있는 2TB + 백업에서 누락된 1TB를 결합합니다. fsck결과를 확인하고 다른 파일을 얻을 수 있는지 확인하세요. 그러나 복구된 파일이 손상될 위험은 상당히 높습니다.

  5. 파일 시스템 이미지를 스캔하여 데이터 패턴을 찾는 프로그램을 사용합니다(예: photorecJPEG 검색). 이는 새 복사본의 엄격한 복사본이 필요하지 않은 유일한 버전입니다.

  6. 이론적으로 "실패한" 디스크 #4의 마지막 1/3 중 3/4에는 일부 손실된 데이터가 포함되어 있습니다. 섹터/블록 매핑을 알아낼 수 있다면(절대 그렇지 않습니다!) 해당 디스크에서 ~250GB를 이미지로 다시 복사한 다음 위의 모든 복구 단계를 반복하여 다른 파일을 복구할 수 있습니다.

복구된 파일은 모두 손상되었을 수 있습니다(예: 데이터 대신 0으로 채워진 블록). 어딘가에 체크섬이 있으면 이를 확인하는 것은 쉽지만 그렇지 않으면 지루한 수동 프로세스가 됩니다.

손상된 파일 시스템에서 데이터를 복구하는 것에 대해 많은 질문을 받습니다.복사본만 처리데이터를 더 이상 위험에 빠뜨리지 않고 실험을 수행할 수 있습니다.

답변3

장치를 삭제하는 올바른 방법을 요약하려면 먼저 장치를 실패로 표시하십시오.

sudo mdadm /dev/md127 --fail /dev/sdc

축소 후 파일 시스템의 새 크기를 예측합니다.

sudo resize2fs -P /dev/md127

디스크가 큰 경우 작업을 커밋하기 전에 resize2fs 명령에 걸리는 시간을 예측해야 할 수도 있습니다. 바라보다resize2fs가 축소되는 데 걸리는 시간 예측 - 프로그래밍 가든더 알아보기.

파일 시스템을 축소합니다.

sudo resize2fs -p -M /dev/md127

파일 시스템 확인:

sudo e2fsck -f /dev/md127

새 파일 시스템 크기를 확인합니다(참조:파일 시스템의 크기를 찾는 방법은 무엇입니까? -우분투에 물어보세요):

sudo dumpe2fs -h /dev/md127 |& awk -F: '/Block count/{count=$2} /Block size/{size=$2} END{print count*size}'

이 명령을 실행하고 오류 메시지를 확인하여 RAID5 어레이의 새 크기를 추정하십시오.

mdadm --grow --raid-devices=3 /dev/md127

파일 시스템이 들어갈 수 있을 만큼 작은지 확인하십시오. 수축 블록 장치:

mdadm --grow /dev/md127 --array-size new_size

중복 장치 제거:

mdadm --grow --raid-devices=3 /dev/md127 --backup-file /root/md127.backup 

사용 가능한 공간을 모두 차지하도록 파일 시스템 크기를 조정합니다.

resize2fs /dev/md127

@roaima가 지적했듯이 장치가 고장나서 교체하는 것이 더 일반적입니다. 여기에 제안된 방법을 사용하려면 라이브 시스템을 종료해야 하는데 이는 일반적으로 허용되지 않습니다.

또한보십시오:

관련 정보