정전 후 손실된 mdadm raid5 어레이가 raid0으로 재조립되었습니다.

정전 후 손실된 mdadm raid5 어레이가 raid0으로 재조립되었습니다.

내 RAID5 어레이는 3개의 디스크로 구성되어 있으며 예비 디스크는 없습니다. 정전 후 재부팅 후 어레이를 복구할 수 없습니다. 실제로 /dev/md127 장치는 완전히 사라지고 잘못된 /dev/md0으로 대체됩니다. 이는 시스템의 유일한 어레이입니다. 세 가지 구성 요소 장치에서 재조립을 시도했지만 어셈블리에서 raid5 대신 raid0 어레이가 계속 생성되었습니다.

3개 디스크의 세부정보는 다음과 같습니다.

root@bragi ~ # mdadm -E /dev/sdc1
/dev/sdc1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 002fa352:9968adbd:b0efdfea:c60ce290
           Name : bragi:0  (local to host bragi)
  Creation Time : Sun Oct 30 00:10:47 2011
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 2930269954 (1397.26 GiB 1500.30 GB)
     Array Size : 2930269184 (2794.52 GiB 3000.60 GB)
  Used Dev Size : 2930269184 (1397.26 GiB 1500.30 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
   Unused Space : before=1968 sectors, after=770 sectors
          State : clean
    Device UUID : a8a1b48a:ec28a09c:7aec4559:b839365e

    Update Time : Sat Oct 11 09:20:36 2014
       Checksum : 7b1ad793 - correct
         Events : 15084

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 2
   Array State : AAA ('A' == active, '.' == missing, 'R' == replacing)

root@bragi ~ # mdadm -E /dev/sdd1
/dev/sdd1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : 002fa352:9968adbd:b0efdfea:c60ce290
           Name : bragi:0  (local to host bragi)
  Creation Time : Sun Oct 30 00:10:47 2011
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 2930269954 (1397.26 GiB 1500.30 GB)
     Array Size : 2930269184 (2794.52 GiB 3000.60 GB)
  Used Dev Size : 2930269184 (1397.26 GiB 1500.30 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
   Unused Space : before=1968 sectors, after=770 sectors
          State : clean
    Device UUID : 36c08006:d5442799:b028db7c:4d4d33c5

    Update Time : Wed Oct 15 08:09:37 2014
       Checksum : 7e05979e - correct
         Events : 15196

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 1
   Array State : .A. ('A' == active, '.' == missing, 'R' == replacing)

root@bragi ~ # mdadm -E /dev/sde1
/dev/sde1:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x8
     Array UUID : 002fa352:9968adbd:b0efdfea:c60ce290
           Name : bragi:0  (local to host bragi)
  Creation Time : Sun Oct 30 00:10:47 2011
     Raid Level : raid5
   Raid Devices : 3

 Avail Dev Size : 2930275057 (1397.26 GiB 1500.30 GB)
     Array Size : 2930269184 (2794.52 GiB 3000.60 GB)
  Used Dev Size : 2930269184 (1397.26 GiB 1500.30 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
   Unused Space : before=1960 sectors, after=5873 sectors
          State : clean
    Device UUID : b048994d:ffbbd710:8eb365d2:b0868ef0

    Update Time : Wed Oct 15 08:09:37 2014
  Bad Block Log : 512 entries available at offset 72 sectors - bad blocks present.
       Checksum : bdbc6fc4 - correct
         Events : 15196

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : spare
   Array State : .A. ('A' == active, '.' == missing, 'R' == replacing)

기존 어레이를 중지하고 다음과 같이 재조립했습니다. (명확성을 위해 빈 줄을 삽입했습니다.)

root@bragi ~ # mdadm -S /dev/md0
mdadm: stopped /dev/md0

root@bragi ~ # mdadm -A /dev/md0 /dev/sdd1 /dev/sdc1 /dev/sde1
mdadm: /dev/md0 assembled from 1 drive and 1 spare - not enough to start the array.

root@bragi ~ # cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] 
md0 : inactive sdd1[1](S) sde1[3](S) sdc1[2](S)
      4395407482 blocks super 1.2
       
unused devices: <none>
root@bragi ~ # mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
     Raid Level : raid0
  Total Devices : 3
    Persistence : Superblock is persistent

          State : inactive

           Name : bragi:0  (local to host bragi)
           UUID : 002fa352:9968adbd:b0efdfea:c60ce290
         Events : 15084

    Number   Major   Minor   RaidDevice

       -       8       33        -        /dev/sdc1
       -       8       49        -        /dev/sdd1
       -       8       65        -        /dev/sde1

root@bragi ~ # mdadm -Q /dev/md0
/dev/md0: is an md device which is not active

어셈블리의 슈퍼블록에서 알 수 있듯이 이것이 raid5 장치 대신 raid0 장치로 어셈블되는 이유는 무엇입니까? /dev/sde1이 무료로 표시되어 있기 때문인가요?

편집하다:@wurtel의 제안에 따라 다음을 시도했으며 결과는 다음과 같습니다.

# mdadm --create -o --assume-clean --level=5 --layout=ls --chunk=512 --raid-devices=3 /dev/md0 missing /dev/sdd1 /dev/sde1
mdadm: /dev/sdd1 appears to contain an ext2fs file system
       size=1465135936K  mtime=Sun Oct 23 13:06:11 2011
mdadm: /dev/sdd1 appears to be part of a raid array:
       level=raid5 devices=3 ctime=Sun Oct 30 00:10:47 2011
mdadm: /dev/sde1 appears to be part of a raid array:
       level=raid5 devices=3 ctime=Sun Oct 30 00:10:47 2011
mdadm: partition table exists on /dev/sde1 but will be lost or
       meaningless after creating array
Continue creating array? no
mdadm: create aborted.
#

따라서 /dev/sde1이 다시 문제를 일으키는 것 같습니다. 예비용으로 표시되었기 때문인 것 같습니다. 어쨌든 해당 역할을 다시 활성 상태로 강제 변경할 수 있나요? 이 경우 어셈블리 배열이 작동할 수 있다고 생각됩니다.

답변1

꽤 혼란스러워 보이는 시스템이 있습니다. 출력의 주요 요소 mdadm --examine:

/dev/sdc1:
    Update Time : Sat Oct 11 09:20:36 2014
         Events : 15084

   Device Role : Active device 2

/dev/sdd1:
    Update Time : Wed Oct 15 08:09:37 2014
         Events : 15196

   Device Role : Active device 1

/dev/sde1:
    Update Time : Wed Oct 15 08:09:37 2014
  Bad Block Log : 512 entries available at offset 72 sectors - bad blocks present.
         Events : 15196

   Device Role : spare

/dev/sdc1어레이 는 다른 두 어레이보다 이벤트 수가 적고(데이터가 오래됨) 예 /dev/sde1비용으로 표시되므로(데이터가 어레이 상태와 아무 관련이 없음) 어레이를 다시 어셈블할 수 없습니다 . 이는 데이터가 포함된 하나의 드라이브만 제공하는 반면, 3개 디스크 RAID 5는 작동을 시작하려면 최소 두 개의 드라이브가 필요합니다. 전형적인 두 개의 드라이브 오류처럼 보이지 않기 때문에 어떻게 여기까지 오셨는지 모르겠습니다.

이벤트가 중요 /dev/sdc1하고 /dev/sdd1크게 다르지 않기 때문에 mdadm어레이를 두 볼륨에서 강제로 재조립하여 대부분 또는 모든 데이터를 복구할 수 있습니다. 다음 단계를 따라야 할 수도 있습니다.리눅스 RAID 위키그러나 모든 것을 잃을 가능성을 염두에 두지 않는다면 핵심 단계는 mdadm --assemble --force --run /dev/sdc1 /dev/sdd1이것이 fsck작동하거나 어레이를 완전히 파괴하는 것입니다. 확장 프로세스의 요점은 실제로 손상시키지 않고 어레이가 무엇인지 알아내는 것입니다. 데이터.

또는 동일한 이벤트 개수를 갖기 /dev/sdd1때문에/dev/sde1가능한"활성 장치 0"의 장치 역할을 갖도록 메타데이터를 변경하여 모든 것을 복원하는 것이 가능 /dev/sde하지만, 이를 위해서는 전문 지식과 디스크 내용의 직접적인 16진수 편집이 필요합니다.

답변2

mdadm RAID5에서 장치가 누락된 경우 이전 설정을 사용하여 RAID 장치를 다시 "생성"하고 이를 missing누락된 장치로 만듭니다. 예를 들어 귀하의 경우 다음과 같습니다.

mdadm --create --level=5 --layout=ls --chunk=512 --raid-devices=3 /dev/md0 missing /dev/sdd1 /dev/sdc1

참고: "장치 역할"이 0 기반이라고 가정하고 이전 mdadm -E 출력 형식에 익숙합니다. 즉, 첫 번째 장치가 손실되었습니다. 1에서 시작하면 분명히 세 번째 장치가 누락된 것이므로 missing장치 목록의 처음이 아닌 끝에 배치됩니다.

관련 정보