mdadm-raid5 재조립

mdadm-raid5 재조립

내 친구가 9개의 디스크가 있는 mdadm-raid5를 가지고 있는데 더 이상 재조립되지 않습니다.

시스템 로그를 살펴본 후 디스크 sdi가 어레이에서 쫓겨난 것을 발견했습니다.

Jul  6 08:43:25 nasty kernel: [   12.952194] md: bind<sdc>
Jul  6 08:43:25 nasty kernel: [   12.952577] md: bind<sdd>
Jul  6 08:43:25 nasty kernel: [   12.952683] md: bind<sde>
Jul  6 08:43:25 nasty kernel: [   12.952784] md: bind<sdf>
Jul  6 08:43:25 nasty kernel: [   12.952885] md: bind<sdg>
Jul  6 08:43:25 nasty kernel: [   12.952981] md: bind<sdh>
Jul  6 08:43:25 nasty kernel: [   12.953078] md: bind<sdi>
Jul  6 08:43:25 nasty kernel: [   12.953169] md: bind<sdj>
Jul  6 08:43:25 nasty kernel: [   12.953288] md: bind<sda>
Jul  6 08:43:25 nasty kernel: [   12.953308] md: kicking non-fresh sdi from array!
Jul  6 08:43:25 nasty kernel: [   12.953314] md: unbind<sdi>
Jul  6 08:43:25 nasty kernel: [   12.960603] md: export_rdev(sdi)
Jul  6 08:43:25 nasty kernel: [   12.969675] raid5: device sda operational as raid disk 0
Jul  6 08:43:25 nasty kernel: [   12.969679] raid5: device sdj operational as raid disk 8
Jul  6 08:43:25 nasty kernel: [   12.969682] raid5: device sdh operational as raid disk 6
Jul  6 08:43:25 nasty kernel: [   12.969684] raid5: device sdg operational as raid disk 5
Jul  6 08:43:25 nasty kernel: [   12.969687] raid5: device sdf operational as raid disk 4
Jul  6 08:43:25 nasty kernel: [   12.969689] raid5: device sde operational as raid disk 3
Jul  6 08:43:25 nasty kernel: [   12.969692] raid5: device sdd operational as raid disk 2
Jul  6 08:43:25 nasty kernel: [   12.969694] raid5: device sdc operational as raid disk 1
Jul  6 08:43:25 nasty kernel: [   12.970536] raid5: allocated 9542kB for md127
Jul  6 08:43:25 nasty kernel: [   12.973975] 0: w=1 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul  6 08:43:25 nasty kernel: [   12.973980] 8: w=2 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul  6 08:43:25 nasty kernel: [   12.973983] 6: w=3 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul  6 08:43:25 nasty kernel: [   12.973986] 5: w=4 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul  6 08:43:25 nasty kernel: [   12.973989] 4: w=5 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul  6 08:43:25 nasty kernel: [   12.973992] 3: w=6 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul  6 08:43:25 nasty kernel: [   12.973996] 2: w=7 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul  6 08:43:25 nasty kernel: [   12.973999] 1: w=8 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul  6 08:43:25 nasty kernel: [   12.974002] raid5: raid level 5 set md127 active with 8 out of 9 devices, algorithm 2

불행하게도 이는 인식되지 않았으며 이제 다른 드라이브가 킥됩니다(sde).

Jul 14 08:02:45 nasty kernel: [   12.918556] md: bind<sdc>
Jul 14 08:02:45 nasty kernel: [   12.919043] md: bind<sdd>
Jul 14 08:02:45 nasty kernel: [   12.919158] md: bind<sde>
Jul 14 08:02:45 nasty kernel: [   12.919260] md: bind<sdf>
Jul 14 08:02:45 nasty kernel: [   12.919361] md: bind<sdg>
Jul 14 08:02:45 nasty kernel: [   12.919461] md: bind<sdh>
Jul 14 08:02:45 nasty kernel: [   12.919556] md: bind<sdi>
Jul 14 08:02:45 nasty kernel: [   12.919641] md: bind<sdj>
Jul 14 08:02:45 nasty kernel: [   12.919756] md: bind<sda>
Jul 14 08:02:45 nasty kernel: [   12.919775] md: kicking non-fresh sdi from array!
Jul 14 08:02:45 nasty kernel: [   12.919781] md: unbind<sdi>
Jul 14 08:02:45 nasty kernel: [   12.928177] md: export_rdev(sdi)
Jul 14 08:02:45 nasty kernel: [   12.928187] md: kicking non-fresh sde from array!
Jul 14 08:02:45 nasty kernel: [   12.928198] md: unbind<sde>
Jul 14 08:02:45 nasty kernel: [   12.936064] md: export_rdev(sde)
Jul 14 08:02:45 nasty kernel: [   12.943900] raid5: device sda operational as raid disk 0
Jul 14 08:02:45 nasty kernel: [   12.943904] raid5: device sdj operational as raid disk 8
Jul 14 08:02:45 nasty kernel: [   12.943907] raid5: device sdh operational as raid disk 6
Jul 14 08:02:45 nasty kernel: [   12.943909] raid5: device sdg operational as raid disk 5
Jul 14 08:02:45 nasty kernel: [   12.943911] raid5: device sdf operational as raid disk 4
Jul 14 08:02:45 nasty kernel: [   12.943914] raid5: device sdd operational as raid disk 2
Jul 14 08:02:45 nasty kernel: [   12.943916] raid5: device sdc operational as raid disk 1
Jul 14 08:02:45 nasty kernel: [   12.944776] raid5: allocated 9542kB for md127
Jul 14 08:02:45 nasty kernel: [   12.944861] 0: w=1 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul 14 08:02:45 nasty kernel: [   12.944864] 8: w=2 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul 14 08:02:45 nasty kernel: [   12.944867] 6: w=3 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul 14 08:02:45 nasty kernel: [   12.944871] 5: w=4 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul 14 08:02:45 nasty kernel: [   12.944874] 4: w=5 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul 14 08:02:45 nasty kernel: [   12.944877] 2: w=6 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul 14 08:02:45 nasty kernel: [   12.944879] 1: w=7 pa=0 pr=9 m=1 a=2 r=9 op1=0 op2=0
Jul 14 08:02:45 nasty kernel: [   12.944882] raid5: not enough operational devices for md127 (2/9 failed)

이제 어레이가 더 이상 시작되지 않습니다. 그러나 각 디스크에는 RAID 메타데이터가 포함되어 있는 것 같습니다.

/dev/sda:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 8600bda9:18845be8:02187ecc:1bfad83a

    Update Time : Mon Jul 14 00:45:35 2014
       Checksum : e38d46e8 - correct
         Events : 123132

         Layout : left-symmetric
     Chunk Size : 512K

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


/dev/sdc:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : fe612c05:f7a45b0a:e28feafe:891b2bda

    Update Time : Mon Jul 14 00:45:35 2014
       Checksum : 32bb628e - correct
         Events : 123132

         Layout : left-symmetric
     Chunk Size : 512K

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


/dev/sdd:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 1d14616c:d30cadc7:6d042bb3:0d7f6631

    Update Time : Mon Jul 14 00:45:35 2014
       Checksum : 62bd5499 - correct
         Events : 123132

         Layout : left-symmetric
     Chunk Size : 512K

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


/dev/sde:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : active
    Device UUID : a2babca3:1283654a:ef8075b5:aaf5d209

    Update Time : Mon Jul 14 00:45:07 2014
       Checksum : f78d6456 - correct
         Events : 123123

         Layout : left-symmetric
     Chunk Size : 512K

   Device Role : Active device 3
   Array State : AAAAAAA.A ('A' == active, '.' == missing)


/dev/sdf:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : e67d566d:92aaafb4:24f5f16e:5ceb0db7

    Update Time : Mon Jul 14 00:45:35 2014
       Checksum : 9223b929 - correct
         Events : 123132

         Layout : left-symmetric
     Chunk Size : 512K

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


/dev/sdg:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 2cee1d71:16c27acc:43e80d02:1da74eeb

    Update Time : Mon Jul 14 00:45:35 2014
       Checksum : 7512efd4 - correct
         Events : 123132

         Layout : left-symmetric
     Chunk Size : 512K

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


/dev/sdh:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : c239f0ad:336cdb88:62c5ff46:c36ea5f8

    Update Time : Mon Jul 14 00:45:35 2014
       Checksum : c08e8a4d - correct
         Events : 123132

         Layout : left-symmetric
     Chunk Size : 512K

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


/dev/sdi:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : active
    Device UUID : d06c58f8:370a0535:b7e51073:f121f58c

    Update Time : Mon Jul 14 00:45:07 2014
       Checksum : 77844dcc - correct
         Events : 0

         Layout : left-symmetric
     Chunk Size : 512K

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


/dev/sdj:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : f2de262f:49d17fea:b9a475c1:b0cad0b7

    Update Time : Mon Jul 14 00:45:35 2014
       Checksum : dd0acfd9 - correct
         Events : 123132

         Layout : left-symmetric
     Chunk Size : 512K

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

하지만 보시다시피 두 개의 드라이브(sde, sdi)가 활성 상태이고(그러나 raid는 중지됨) sdi는 예비 드라이브입니다. sde는 대부분의 다른 드라이브보다 이벤트 수가 약간 낮은 반면(123132 대신 123123), sdi의 이벤트 수는 0입니다. 그래서 나는 sde가 거의 최신 버전이라고 생각합니다. 하지만 sdi는 그렇지 않습니다.

이제 우리는 심각한 정전으로 인해 이러한 "차단" 메시지가 발생할 수 있다는 사실을 온라인에서 보고 있습니다. 사실 내 친구가 한두 번 심각한 정전을 일으켰습니다. 그래서 우리는 온라인에서 찾은 지침에 따라 sde를 어레이에 다시 추가하려고 했습니다.

$ mdadm /dev/md127 --add /dev/sde
mdadm: add new device failed for /dev/sde as 9: Invalid argument

그러나 실패했고 이제 mdadm --examine /dev/sdesde의 이벤트 카운트도 0입니다(+는 이제 sdi처럼 대기 상태입니다).

/dev/sde:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x0
     Array UUID : b8a04dbb:0b5dffda:601eb40d:d2dc37c9
           Name : nasty:stuff  (local to host nasty)
  Creation Time : Sun Mar 16 02:37:47 2014
     Raid Level : raid5
   Raid Devices : 9

 Avail Dev Size : 7814035120 (3726.02 GiB 4000.79 GB)
     Array Size : 62512275456 (29808.18 GiB 32006.29 GB)
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
          State : clean
    Device UUID : 689e0030:142122ae:7ab37935:c80ab400

    Update Time : Mon Jul 14 00:45:35 2014
       Checksum : 5e6c4cf7 - correct
         Events : 0

         Layout : left-symmetric
     Chunk Size : 512K

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

우리는 2개의 드라이브 오류가 일반적으로 raid5의 죽음을 의미한다는 것을 알고 있습니다. 그런데 데이터를 저장할 수 있도록 최소한 sde를 레이드에 추가할 수 있는 방법이 있을까요?

답변1

좋아요, 이제 습격에 들어갈 수 있을 것 같습니다. 적어도 첫 번째로 확인한 파일은 괜찮아 보입니다. 이것이 우리가 한 일입니다:


이것습격 복구 기사kernel.org 위키에서는 문제에 대한 두 가지 가능한 해결책을 제안합니다.

  1. 사용--assemble --force(derobert도 언급함)
    기사는 다음과 같이 말합니다.

    [...] 이벤트 수가 50개 미만으로 차이가 나는 경우 드라이브의 정보는 여전히 정상일 수 있습니다. [...] 이벤트 수가 거의 일치하지만 정확하지 않은 경우 "mdadm --assemble --force /dev/mdX"를 사용하여 mdadm이 어레이를 어셈블하도록 강제합니다 [...]. 드라이브의 이벤트 수가 [...]에서 크게 벗어나는 경우 드라이브 [...]를 어셈블리에 포함해서는 안 됩니다.

    이 예에서는 드라이브 sde의 이벤트 차등이 9입니다. 따라서 --force성공할 가능성이 높습니다 . 그러나 --add명령을 실행한 후 이벤트 수가 0으로 떨어지고 드라이브가 예비로 표시되었습니다.

    그러니 우리는 그것을 사용하는 것을 중단하는 것이 좋습니다 --force.

  2. 배열 다시 만들기
    이 솔루션은 잘못하면 데이터가 손실될 수 있으므로 위험하다고 명시적으로 표시됩니다. 그러나 이것이 우리의 유일한 선택인 것 같습니다.

    아이디어는 이전 raid와 동일한 구성으로 기존 raid 장치에 새 raid를 생성 (즉, 장치의 슈퍼 블록 덮어쓰기)하고 mdadm에게 해당 raid가 이미 존재하며 깨끗한 것으로 가정해야 함을 명시적으로 알리는 것입니다.

    이벤트 수 차이가 9에 불과했기 때문에 유일한 문제는 슈퍼블록을 잃어버렸다는 것이었습니다. 따라서 sde새 슈퍼블록을 작성하면 데이터에 액세스할 수 있는 좋은 기회가 있었고... 작동했습니다. :-)


우리의 솔루션

참고: 이 해결 방법은 당사의 문제에만 해당되며 귀하의 설정에는 적용되지 않을 수도 있습니다. 작업을 완료하는 방법을 이해하려면 다음 메모를 작성해야 합니다. 하지만 상황에 가장 적합한 것이 무엇인지 조사해야 합니다.

지원
우리는 슈퍼블록을 잃었습니다. 그래서 이번에는 sd[acdefghij]dd를 사용하여 RAID를 처리하기 전에 각 RAID 장치()의 첫 번째와 마지막 GB를 저장했습니다. 각 공격대 장치에 대해 이 작업을 수행합니다.

# save the first gigabyte of sda
dd if=/dev/sda of=bak_sda_start bs=4096 count=262144

# determine the size of the device
fdisk -l /dev/sda
# In this case the size was 4000787030016 byte.

# To get the last gigabyte we need to skip everything except the last gigabyte.
# So we need to skip: 4000787030016 byte - 1073741824 byte = 3999713288000 byte
# Since we read blocks auf 4096 byte we need to skip 3999713288000/4096=976492502 blocks.
dd if=/dev/sda of=bak_sda_end bs=4096 skip=976492502

정보를 수집하다
레이드를 다시 생성할 때는 이전 레이드와 동일한 구성을 사용하는 것이 중요합니다. 이는 다른 mdadm 버전을 사용하여 다른 컴퓨터에서 어레이를 다시 생성하려는 경우 특히 중요합니다. 이 경우 mdadm의 기본값이 다를 수 있으며 기존 raid에 맞지 않는 슈퍼블록이 생성될 수 있습니다(wiki 기사 참조).

우리의 경우에는 동일한 시스템(따라서 동일한 mdadm 버전)을 사용하여 어레이를 다시 만듭니다. 그러나 어레이는 먼저 타사 도구에 의해 생성됩니다. 따라서 우리는 여기서 기본값에 의존하고 싶지 않으며 기존 공격대에 대한 일부 정보를 수집해야 합니다.

출력에서 mdadm --examine /dev/sd[acdefghij]우리는 raid에 대한 다음 정보를 얻습니다(참고: sdb는 운영 체제를 포함하는 SSD이며 raid의 일부가 아닙니다).

     Raid Level : raid5
   Raid Devices : 9
  Used Dev Size : 7814034432 (3726.02 GiB 4000.79 GB)
    Data Offset : 2048 sectors
   Super Offset : 8 sectors
         Layout : left-symmetric
     Chunk Size : 512K
   Device Role : Active device 0

Used Dev Size512바이트 블록 단위로 가격이 책정됩니다. 다음을 확인할 수 있습니다.
7814034432*512/1000000000 ~= 4000.79
그러나 mdadm에는 키비바이트 단위의 크기가 필요합니다.7814034432*512/1024 = 3907017216

Device Role새로운 레이드에서는 각 장치가 이전과 동일한 역할을 수행해야 한다는 것이 중요합니다 . 우리의 예에서는:

device  role
------  ----
sda     0
sdc     1
sdd     2
sde     3
sdf     4
sdg     5
sdh     6
sdi     spare
sdj     8

참고: 재부팅 후 드라이브 문자(및 순서)가 변경될 수 있습니다!

다음 단계를 위해 레이아웃과 블록 크기도 필요합니다.

공격대를 재현하세요
이제 마지막 단계의 정보를 사용하여 배열을 다시 만들 수 있습니다.

mdadm --create --assume-clean --level=5 --raid-devices=9 --size=3907017216 \
    --chunk=512 --layout=left-symmetric /dev/md127 /dev/sda /dev/sdc /dev/sdd \
    /dev/sde /dev/sdf /dev/sdg /dev/sdh missing /dev/sdj

장비를 올바른 순서로 통과시키는 것이 매우 중요합니다! 또한 이벤트 수가 너무 적기 때문에
추가하지 않았습니다 . sdi그래서 7번째 레이드 슬롯을 missing. 따라서 raid5에는 9개 장치 중 8개가 포함되어 있으며 성능 저하 모드에서 조립됩니다. 그리고 스페어가 부족하기 때문에 자동으로 재구축이 시작되지 않습니다.

--examine그런 다음 새 슈퍼블록이 이전 슈퍼블록에 맞는지 확인하는 데 사용합니다 . 실제로 :-) 파일 시스템을 마운트하고 데이터를 읽을 수 있었습니다. 다음 단계는 데이터를 백업한 후 다시 추가 sdi하고 재구축을 시작하는 것입니다.

답변2

mdadm --force이 문제는 해결되어야 합니다. 동기화하는 척하면서 약간의 데이터 손상이 발생할 수 있습니다. 다음과 같이 사용하세요:

  1. mdadm --stop /dev/md127(현재 실행 중인 프로그램을 먼저 중지해야 합니다)
  2. mdadm -v --assemble --run --force /dev/md127 /dev/sd[a-hl-z]. 열쇠는 여기서 나가는 것입니다. /dev/sdi왜냐하면 우리는알다디스크가 최신 상태입니다. 참고: 모든 디스크가 어레이에 속하지 않는 경우 쉘 와일드카드를 사용하는 것보다 실제로 여기에 디스크를 나열하는 것이 더 안전합니다.
  3. 여러 메시지가 표시되어야 하며 그 중 하나는 만료된 디스크가 포함되어 있음을 나타냅니다 /dev/sde. /proc/mdstat실행 중이지만 성능이 저하된 RAID5가 있는지 확인하세요 .
  4. 디스크가 떨어진 이유를 알아보세요. 이유에 따라 이제 데이터를 즉시 복사해야 할 수도 있고(예: 디스크 수명이 다해가는 경우) 계속해서 /dev/sdi데이터를 다시 추가하고 재구축할 수도 있습니다.

mdadm은 어레이를 모니터링하고 디스크 손실과 같은 불리한 상황이 발생할 때 경고를 보내도록 구성할 수 있습니다. 올바르게 구성해야 합니다.

답변3

드라이브를 예비 드라이브로 만들고 해당 메타데이터를 잃어버렸기 때문에 유일한 옵션은 RAID를 다시 만드는 것입니다. 이는 매우 위험하며 한 번의 실수로 데이터가 지워질 수 있습니다.

RAID를 다시 생성할 때 고려해야 할 몇 가지 사항이 있습니다. --assume-clean동기화되지 않도록 사용해야 합니다 . 하나의 드라이브(가급적 상태가 가장 나쁜 드라이브)를 로 지정하여 예약해야 합니다 missing. 마지막으로 드라이브 순서, 메타데이터 버전, RAID 수준, 블록 크기, 레이아웃, 데이터 오프셋 등 모든 변수를 올바르게 설정해야 합니다.

기본값은 시간이 지남에 따라 변경되는 경향이 있으므로 여기에서는 기본값을 신뢰할 수 없습니다 mdadm. 복구 환경이 mdadmRAID가 원래 생성된 환경과 동일한 버전을 사용하지 않고 정확히 동일한 매개변수 등을 사용하지 않는 경우 . 기본값에 의존하면 문제가 발생할 수 있습니다.

적어도 mdadm실험을 취소할 수 있도록 각 드라이브의 첫 번째 및 마지막 기가바이트 정도를 백업해야 합니다. 이상적으로는 전체 복사본에서 이 모든 작업을 수행하거나 쓰기 중 복사 모드에서 dm-snapshots 또는 nbd-server를 사용하여 읽기 전용 보기를 얻는 것입니다. 이것 좀 봐오버레이 작업 방법.

귀하가 게시한 출력을 올바르게 해석 하면 --examine드라이브 문자가 변경되지 않았다고 가정하고 이것이 다시 만드는 올바른 명령일 수 있지만 아무것도 보장할 수 없습니다.

mdadm --create /dev/md42 --assume-clean --metadata=1.2 --data-offset=1M \
      --level=5 --chunk=512 --layout=ls --raid-devices=9 \
      /dev/sda /dev/sdc /dev/sdd /dev/sde /dev/sdf \
      /dev/sdg /dev/sdh missing /dev/sdj

당신은 또한 볼 수 있습니다https://raid.wiki.kernel.org/index.php/RAID_Recovery그러나 조언을 주의해서 받아들이십시오. 오락은 무서운 일이고 실수하기 쉽습니다.

RAID를 생성한 후에는 읽기 전용 모드로 보아야 합니다.

mdadm --readonly /dev/md42
file -s /dev/md42
fsck -n /dev/md42
mount -o ro /dev/md42 /mnt/md42

지금까지 작동했다면 큰 파일(블록 크기 * 드라이브)을 찾아 모든 것이 괜찮은지 확인해야 합니다. 잘못된 두 드라이브를 교체하면 파일 시스템은 제대로 마운트될 수 있지만 파일이 손상될 수 있습니다.

mdadm.conf새로운 uuid 등을 포함한 새로운 레이드가 될 것이므로 등을 업데이트해야 합니다.

답변4

저는 2개의 드라이브가 어레이에서 제외된 RAID5 설정(드라이브 5개, 각각 1TB)에서 이것을 시도했습니다. 나는 위험을 감수하고 다음 명령을 사용하여 두 개의 부팅 드라이브를 추가했습니다. mdadm --create --assume-clean --level=5 --raid-devices=5 --chunk=512 --layout=left-symmetric /dev/md127 /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdb 여기서 sdd와 sdf는 부팅 드라이브입니다(일부 예비 개입 덕분에).

관련 정보