일부 디스크에서 여러 차례 정전이 발생한 후 Linux 소프트 RAID5가 작동하지 않습니다. 어떻게 해야 합니까?

일부 디스크에서 여러 차례 정전이 발생한 후 Linux 소프트 RAID5가 작동하지 않습니다. 어떻게 해야 합니까?

나는 모든 중요한 데이터를 백업해 두었습니다. 결국 복원이 필요합니다. 하지만 이 길을 가기 전에 먼저 뭔가를 해보고 싶고 여기서 사용한 모든 것에 대해 배울 수 있는 좋은 상황입니다.

8개의 SATA 채널이 구성된 2개의 내부 2,5" 디스크 베이에 연결된 mpt sas 컨트롤러가 있습니다. 그 중 2개는 lvm 볼륨 캐싱에만 사용되는 SSD 드라이브에 사용되었습니다.

6개의 1TB 디스크는 RAID5 소프트 어레이로 구성된 파티션 3의 데이터 부분에 사용됩니다.

그 중 두 개는 파티션 1의 부팅 부분으로, 파티션 2의 루트 부분으로 사용되었습니다. 두 부팅 부분 모두 ext3 fs가 있는 단순한 RAID1입니다. 두 부팅 부분 모두 luks로 암호화된 RAID1이며 여러 lvs가 있는 lvm vg xenrootdg가 있습니다. 6개의 데이터 부분은 모두 설명된 대로 RAID5로 사용됩니다. RAID 볼륨은 luks로 암호화되어 있으며 여기에는 vg xendatadg가 있는 lvm이 있습니다. RAID5 볼륨에서만 이를 불러오는 데 문제가 있습니다.

주요 문제는 6개의 1TB 디스크 중 4개를 보관하는 4개의 디스크 인클로저에서 여러 차례 정전이 발생했다는 것입니다. 제거된 디스크로 인해 새 디스크를 추가해야 하며, 마지막에 새 디스크를 다시 동기화해야 할 수도 있습니다. 이는 정확히 알려져 있지 않습니다.

첫 번째 실패 후 볼륨을 시작할 수 있었고 재동기화를 시작할 수 있었습니다. 그러나 문제가 다시 발생하여 이러한 RAID 볼륨이 다시 실패했습니다.

두 번째 오류가 발생했을 때 시스템은 특수 디스크의 섹터를 읽을 수 없었고 오류가 발생한 디스크 중 하나의 일부 섹터에 기록된 영구 읽기 오류로 인해 RAID5의 성능이 저하되었습니다.

그 동안 디스크는 커널에 의해 새 이름으로 다시 등록됩니다(예: sde에서 sdk로 이름이 변경됨 등).

시스템을 다시 시작한 후 어떤 디스크가 실패로 기록되었는지 확인하고 일련 번호를 비교하여 찾았습니다. /dev/zero에 디스크를 추가해도 아무런 문제가 표시되지 않아 다시 동기화를 시도했지만 동일한 문제가 발생합니다.

이제 디스크 베이 전원에 문제가 있을 수 있다는 것을 깨닫고 모든 디스크를 제거하고 최소한 메인보드에 있는 기존 SATA 포트에 연결했습니다. 이제 dd를 사용하여 파티션에 백업을 만들 수 있도록 sas 컨트롤러에 더 많은 디스크를 추가했습니다.

관련된 모든 파티션을 두 개의 새 디스크에 복사할 수 있었기 때문에 읽는 데 문제가 없었습니다.

또한 최대. lvm vg 내부의 3개 볼륨이 사용 중이었습니다. 따라서 첫 번째 디스크 #2(sdl3)를 제거한 후에도 수정되지 않았기 때문에 대부분의 lvs는 여전히 깨끗한 상태에 있어야 합니다.

smartctl을 확인하여 등록된 디스크 자체에 영구적인 문제가 없는지 확인했습니다(복구할 수 없는 오류 및 재배치된 섹터가 표시되지 않음).

하지만 디스크가 충분해야 하는데 RAID5 볼륨을 시작할 수 없습니다.

5개의 디스크(#0,1,3,4,5)가 있고 아직 제거된 디스크 #2가 있습니다. 또한 새 교체 디스크 #2가 있지만 예비 디스크로 표시됩니다. 6개 중 5개 볼륨을 사용할 수 있는 #0,1,3,4,5로 볼륨을 높이는 것이 가능해야 합니다. 그러나 내가 적어도 #3을 시도하는 것은 무엇이든 볼륨의 일부로 받아들여지지 않기 때문에 나에게 가장 큰 문제를 안겨줍니다.

sdX가 여기에서 표시된 장치 역할 순서대로 검사를 변경할 수 있기 때문입니다. 현재 간단한 목록은 다음과 같습니다.

#0 sdc3 #1 sdk3 #3 sda3 #4 sdg3 #5 sdf3

제거된 #2 sdl3 새 #2는 #S sdb3로 표시됨

root@newxen:~# mdadm -E /dev/sdc3
/dev/sdc3:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : 8d0acbbb:73bcfac9:a26557de:c29d5434
           Name : newxen:128  (local to host newxen)
  Creation Time : Sun Nov  8 22:22:15 2015
     Raid Level : raid5
   Raid Devices : 6

 Avail Dev Size : 1909221936 (910.39 GiB 977.52 GB)
     Array Size : 4773051840 (4551.94 GiB 4887.61 GB)
  Used Dev Size : 1909220736 (910.39 GiB 977.52 GB)
    Data Offset : 260992 sectors
   Super Offset : 8 sectors
   Unused Space : before=260912 sectors, after=1200 sectors
          State : clean
    Device UUID : 1142cc76:b224395c:8fb15126:fd1801fe

Internal Bitmap : 8 sectors from superblock
    Update Time : Tue Jan 16 00:02:32 2024
       Checksum : bae896cd - correct
         Events : 248741

         Layout : left-symmetric
     Chunk Size : 64K

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

   root@newxen:~# mdadm -E /dev/sdk3
/dev/sdk3:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : 8d0acbbb:73bcfac9:a26557de:c29d5434
           Name : newxen:128  (local to host newxen)
  Creation Time : Sun Nov  8 22:22:15 2015
     Raid Level : raid5
   Raid Devices : 6

 Avail Dev Size : 1909221936 (910.39 GiB 977.52 GB)
     Array Size : 4773051840 (4551.94 GiB 4887.61 GB)
  Used Dev Size : 1909220736 (910.39 GiB 977.52 GB)
    Data Offset : 260992 sectors
   Super Offset : 8 sectors
   Unused Space : before=260912 sectors, after=1200 sectors
          State : clean
    Device UUID : 701ed2ed:13a03708:da9cc185:9c9ce3e2

Internal Bitmap : 8 sectors from superblock
    Update Time : Tue Jan 16 10:26:32 2024
       Checksum : 223defb1 - correct
         Events : 248741

         Layout : left-symmetric
     Chunk Size : 64K

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

   root@newxen:~# mdadm -E /dev/sdl3
/dev/sdl3:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : 8d0acbbb:73bcfac9:a26557de:c29d5434
           Name : newxen:128  (local to host newxen)
  Creation Time : Sun Nov  8 22:22:15 2015
     Raid Level : raid5
   Raid Devices : 6

 Avail Dev Size : 1909221936 (910.39 GiB 977.52 GB)
     Array Size : 4773051840 (4551.94 GiB 4887.61 GB)
  Used Dev Size : 1909220736 (910.39 GiB 977.52 GB)
    Data Offset : 260992 sectors
   Super Offset : 8 sectors
   Unused Space : before=260912 sectors, after=1200 sectors
          State : clean
    Device UUID : 1b34e8d5:f3df3e52:307a06a0:38c265e4

Internal Bitmap : 8 sectors from superblock
    Update Time : Mon Jan 15 13:36:40 2024
       Checksum : 7023234b - correct
         Events : 248741

         Layout : left-symmetric
     Chunk Size : 64K

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

   root@newxen:~# mdadm -E /dev/sda3
/dev/sda3:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x83
     Array UUID : 8d0acbbb:73bcfac9:a26557de:c29d5434
           Name : newxen:128  (local to host newxen)
  Creation Time : Sun Nov  8 22:22:15 2015
     Raid Level : raid5
   Raid Devices : 6

 Avail Dev Size : 1909221936 (910.39 GiB 977.52 GB)
     Array Size : 4773051840 (4551.94 GiB 4887.61 GB)
  Used Dev Size : 1909220736 (910.39 GiB 977.52 GB)
    Data Offset : 260992 sectors
   Super Offset : 8 sectors
Recovery Offset : 0 sectors
   Unused Space : before=260912 sectors, after=1200 sectors
          State : clean
    Device UUID : fa9d44c6:bb18bc8c:04ed5943:13a6ddfb

Internal Bitmap : 8 sectors from superblock
    Update Time : Tue Jan 16 00:02:32 2024
       Checksum : 55c99a69 - correct
         Events : 243265

         Layout : left-symmetric
     Chunk Size : 64K

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

   root@newxen:~# mdadm -E /dev/sdg3
/dev/sdg3:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x8b
     Array UUID : 8d0acbbb:73bcfac9:a26557de:c29d5434
           Name : newxen:128  (local to host newxen)
  Creation Time : Sun Nov  8 22:22:15 2015
     Raid Level : raid5
   Raid Devices : 6

 Avail Dev Size : 1909221936 (910.39 GiB 977.52 GB)
     Array Size : 4773051840 (4551.94 GiB 4887.61 GB)
  Used Dev Size : 1909220736 (910.39 GiB 977.52 GB)
    Data Offset : 260992 sectors
   Super Offset : 8 sectors
Recovery Offset : 0 sectors
   Unused Space : before=260904 sectors, after=1200 sectors
          State : clean
    Device UUID : 63a171d2:dad103ed:ff18efc4:d31bc05d

Internal Bitmap : 8 sectors from superblock
    Update Time : Tue Jan 16 10:22:01 2024
  Bad Block Log : 512 entries available at offset 72 sectors - bad blocks present.
       Checksum : a5b990c1 - correct
         Events : 244946

         Layout : left-symmetric
     Chunk Size : 64K

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

   root@newxen:~# mdadm -E /dev/sdf3
/dev/sdf3:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x1
     Array UUID : 8d0acbbb:73bcfac9:a26557de:c29d5434
           Name : newxen:128  (local to host newxen)
  Creation Time : Sun Nov  8 22:22:15 2015
     Raid Level : raid5
   Raid Devices : 6

 Avail Dev Size : 1909221936 (910.39 GiB 977.52 GB)
     Array Size : 4773051840 (4551.94 GiB 4887.61 GB)
  Used Dev Size : 1909220736 (910.39 GiB 977.52 GB)
    Data Offset : 260992 sectors
   Super Offset : 8 sectors
   Unused Space : before=260912 sectors, after=1200 sectors
          State : clean
    Device UUID : d6e11e48:e1258598:f9d5251c:795c8308

Internal Bitmap : 8 sectors from superblock
    Update Time : Tue Jan 16 10:26:32 2024
       Checksum : c8dc31e3 - correct
         Events : 248741

         Layout : left-symmetric
     Chunk Size : 64K

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

Here the replacing disc
root@newxen:~# mdadm -E /dev/sdb3
/dev/sdb3:
          Magic : a92b4efc
        Version : 1.2
    Feature Map : 0x9
     Array UUID : 8d0acbbb:73bcfac9:a26557de:c29d5434
           Name : newxen:128  (local to host newxen)
  Creation Time : Sun Nov  8 22:22:15 2015
     Raid Level : raid5
   Raid Devices : 6

 Avail Dev Size : 7720024847 (3681.19 GiB 3952.65 GB)
     Array Size : 4773051840 (4551.94 GiB 4887.61 GB)
  Used Dev Size : 1909220736 (910.39 GiB 977.52 GB)
    Data Offset : 260992 sectors
   Super Offset : 8 sectors
   Unused Space : before=260912 sectors, after=5810804111 sectors
          State : clean
    Device UUID : 1be91027:ca00bcc9:7e21dd61:76cdf787

Internal Bitmap : 8 sectors from superblock
    Update Time : Tue Jan 16 10:26:32 2024
  Bad Block Log : 512 entries available at offset 16 sectors - bad blocks present.
       Checksum : f892a18d - correct
         Events : 248741

         Layout : left-symmetric
     Chunk Size : 64K

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

지금 상황:

root@newxen:~# cat /proc/mdstat 
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md128 : inactive sda3[3](S) sdb3[6](S) sdf3[5](S) sdc3[0](S) sdg3[2](S) sdk3[1](S)
      8633067263 blocks super 1.2
...

root@newxen:~# mdadm --detail /dev/md128
/dev/md128:
           Version : 1.2
        Raid Level : raid0
     Total Devices : 6
       Persistence : Superblock is persistent

             State : inactive
   Working Devices : 6

              Name : newxen:128  (local to host newxen)
              UUID : 8d0acbbb:73bcfac9:a26557de:c29d5434
            Events : 248741

    Number   Major   Minor   RaidDevice

       -       8      163        -        /dev/sdk3
       -       8       99        -        /dev/sdg3
       -       8       83        -        /dev/sdf3
       -       8       35        -        /dev/sdc3
       -       8       19        -        /dev/sdb3
       -       8        3        -        /dev/sda3

최신 날짜와 배열 상태를 확인하면 처음에는 1월 15일 13:36:40 sdl3이 실패로 설정되고 AAAAAA로 제거(수동으로 만들었음)되었지만 1월 16일 00:02:32 sda3은 깨끗해야 함을 의미합니다. AAAA.A는 깨끗해 보입니다. Jan 16 00:02:32 AARA.A가 있는 sdc3은 깨끗해 보입니다. Jan 16 10:22:01 .AA.AA가 있는 sdg3은 깨끗하지 않은 것 같습니다. Jan 16 10:26:32 .A가 있는 sdk3. ..A가 깨끗하지 않은 것 같습니다. Jan 16 10:26:32 .A...A가 있는 sdf3이 깨끗해 보입니다. Jan 16 10:26:32 .A..A가 있는 sdb3이 깨끗하지 않은 것 같습니다.

기존 부품 sda3 sdc3 sdg3 sdk3 sdf3으로 RAID 볼륨을 조립하는 것이 가능해야 합니다. 아마도 sdb3 배열에 있었기 때문일 것입니다.

다른 방법을 시도했지만 그 중 어느 것도 다시 동기화 볼륨으로 돌아가지 않습니다.

mdadm --assemble --scan --verbose
...
mdadm: /dev/sda3 is identified as a member of /dev/md128, slot 3.
mdadm: /dev/sdl3 is identified as a member of /dev/md128, slot 2.
mdadm: /dev/sdf3 is identified as a member of /dev/md128, slot 5.
mdadm: /dev/sdg3 is identified as a member of /dev/md128, slot 4.
mdadm: /dev/sdk3 is identified as a member of /dev/md128, slot 1.
mdadm: /dev/sdc3 is identified as a member of /dev/md128, slot 0.
mdadm: /dev/sdb3 is identified as a member of /dev/md128, slot -1.
mdadm: ignoring /dev/sdk3 as it reports /dev/sdl3 as failed
mdadm: ignoring /dev/sdf3 as it reports /dev/sdl3 as failed
mdadm: device 12 in /dev/md128 has wrong state in superblock, but /dev/sdb3 seems ok
mdadm: no uptodate device for slot 1 of /dev/md128
mdadm: added /dev/sdl3 to /dev/md128 as 2
mdadm: added /dev/sda3 to /dev/md128 as 3 (possibly out of date)
mdadm: added /dev/sdg3 to /dev/md128 as 4 (possibly out of date)
mdadm: no uptodate device for slot 5 of /dev/md128
mdadm: added /dev/sdb3 to /dev/md128 as -1
mdadm: added /dev/sdc3 to /dev/md128 as 0
mdadm: /dev/md128 assembled from 2 drives and 1 spare - not enough to start the array.
...
root@newxen:~# cat /proc/mdstat 
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md128 : inactive sdf3[5](S) sdb3[6](S) sdc3[0](S) sdk3[1](S) sdg3[2](S) sdl3[4](S)
      8633067263 blocks super 1.2
...
root@newxen:~# mdadm --detail /dev/md128
/dev/md128:
           Version : 1.2
        Raid Level : raid0
     Total Devices : 6
       Persistence : Superblock is persistent

             State : inactive
   Working Devices : 6

              Name : newxen:128  (local to host newxen)
              UUID : 8d0acbbb:73bcfac9:a26557de:c29d5434
            Events : 248741

    Number   Major   Minor   RaidDevice

       -       8      179        -        /dev/sdl3
       -       8      163        -        /dev/sdk3
       -       8       99        -        /dev/sdg3
       -       8       83        -        /dev/sdf3
       -       8       35        -        /dev/sdc3
       -       8       19        -        /dev/sdb3

따라서 이전에 제거된 sdl3 및 교체된 sdb3이 문제를 일으키는 것처럼 보입니다. 그래서 md128을 다시 중지하고 md128 없이 수동으로 불러오려고 했습니다.

root@newxen:~# mdadm --assemble /dev/md128 /dev/sdc3 /dev/sdk3 /dev/sda3 /dev/sdg3 /dev/sdf3 --verbose
mdadm: looking for devices for /dev/md128
mdadm: /dev/sdc3 is identified as a member of /dev/md128, slot 0.
mdadm: /dev/sdk3 is identified as a member of /dev/md128, slot 1.
mdadm: /dev/sda3 is identified as a member of /dev/md128, slot 3.
mdadm: /dev/sdg3 is identified as a member of /dev/md128, slot 4.
mdadm: /dev/sdf3 is identified as a member of /dev/md128, slot 5.
mdadm: ignoring /dev/sdk3 as it reports /dev/sdc3 as failed
mdadm: ignoring /dev/sdg3 as it reports /dev/sdc3 as failed
mdadm: ignoring /dev/sdf3 as it reports /dev/sdc3 as failed
mdadm: no uptodate device for slot 1 of /dev/md128
mdadm: no uptodate device for slot 2 of /dev/md128
mdadm: added /dev/sda3 to /dev/md128 as 3 (possibly out of date)
mdadm: no uptodate device for slot 4 of /dev/md128
mdadm: no uptodate device for slot 5 of /dev/md128
mdadm: added /dev/sdc3 to /dev/md128 as 0
mdadm: /dev/md128 assembled from 1 drive - not enough to start the array.

root@newxen:~# cat /proc/mdstat 
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md128 : inactive sdk3[1](S) sdf3[5](S) sdg3[2](S) sdc3[0](S)
      3818443872 blocks super 1.2
...

root@newxen:~# mdadm --detail /dev/md128
/dev/md128:
           Version : 1.2
        Raid Level : raid0
     Total Devices : 4
       Persistence : Superblock is persistent

             State : inactive
   Working Devices : 4

              Name : newxen:128  (local to host newxen)
              UUID : 8d0acbbb:73bcfac9:a26557de:c29d5434
            Events : 248741

    Number   Major   Minor   RaidDevice

       -       8      163        -        /dev/sdk3
       -       8       99        -        /dev/sdg3
       -       8       83        -        /dev/sdf3
       -       8       35        -        /dev/sdc3

그래서 sda3가 세부 사항에 표시되지 않는지 궁금합니다.

또한 sdb3 대신 sdl3을 사용하려고 시도하고 누락된 부분을 다시 추가하려고 시도했지만 실제로 도움이 되지 않았습니다. 따라서 슈퍼블록을 0으로 만들고 --assume-clean 옵션을 사용하여 공격대를 다시 생성해야 할 것 같습니다. 내 의견으로는 올바른 순서로 진행되어야 합니다. 기껏해야 sdb3 및 sdl3이 없어야 할 수도 있습니다. 첫 번째 문제가 발생하기 전에 sdb3이 동기화 상태에 도달했는지 확신할 수 없기 때문입니다. 확인할 수 있는 방법이 있나요?

따라서 다른 옵션이 없다면 그렇게 할 것입니다(이 순서가 맞습니까?)

mdadm --create --verbose --force --assume-clean /dev/md128 --level=5 --raid-devices=6 /dev/sdc3 /dev/sdk3 missing /dev/sda3 /dev/sdg3 /dev/sdf3

또 다른 해결책은 디스크 sdb3이 거의 동기화되었다고 가정하는 것입니다.

mdadm --create --verbose --force --assume-clean /dev/md128 --level=5 --raid-devices=6 /dev/sdc3 /dev/sdk3 /dev/sdb3 /dev/sda3 /dev/sdg3 /dev/sdf3

어떻게 확인할 수 있나요?:

echo check >> /sys/block/md128/md/sync_action and then check dmesg carefully?

제가 알고 싶은 또 다른 점은 재건축이 완료된 후 어떤 부문에서 문제에 대비해야 합니까? 어떻게 식별할 수 있는지 제안해 주시겠습니까?

추가 세부정보: 자세한 정보를 찾기가 어렵습니다. 그래서 누군가가 내 생각을 확인하고 수정해줄 수 있다면 좋을 것 같아요.

그동안 해독 테스트가 완료되어야 합니다. 장치 순서의 순열이 제대로 작동하지 않아야 합니다.

따라서 데이터 자체가 여전히 혼합되어 있고 여전히 사용할 수 없는 것처럼 보이는 방식으로 RAID 어레이를 가동하고 실행함으로써 가능했습니다. 그렇기 때문에 지금은 Luks 데이터를 해독할 수 없습니다.

관련 정보