一部のディスクで複数回の電源障害が発生した後、Linux ソフト RAID5 が起動しません。どうすればよいでしょうか?

一部のディスクで複数回の電源障害が発生した後、Linux ソフト RAID5 が起動しません。どうすればよいでしょうか?

重要なデータはすべてバックアップしています。最後には復元が必要です。しかし、この方法を取る前にまず何かを試してみたいと思います。ここで使用したすべてのものについて何かを学ぶには良い状況です。

2 つの内部 2.5 インチ ディスク ベイに接続された 8 つの SATA チャネルを備えた MPT SAS コントローラーがあります。そのうち 2 つは SSD ドライブに使用されており、lvm ボリュームのキャッシュにのみ使用されます。

6 枚の 1 TB ディスクは、RAID5 ソフト アレイとして構成されたパーティション 3 のデータ部分に使用されます。

そのうちの 2 つは、パーティション 1 のブートパーツとパーティション 2 のルートパーツに使用されています。両方のブートパーツは、ext3 ファイルシステムを使用した単純な RAID1 です。両方のブートパーツは、luks で暗号化された RAID1 で、複数の lvm vg xenrootdg があります。6 つのデータパーツはすべて、説明されているように RAID5 として使用されます。RAID ボリュームは luks で暗号化され、これらの上に vg xendatadg を持つ lvm があります。RAID5 ボリュームでのみ、起動に問題があります。

主な問題は、6 枚の 1TB ディスクのうち 4 枚を収納する 4 枚のディスク エンクロージャで複数の電源障害が発生したことです。ディスクが取り外されたため、新しいディスクを追加する必要があり、おそらく終了間際に新しいディスクを再同期する必要があったのでしょう。これは正確にはわかっていません。

最初の障害の後、ボリュームを起動して再同期を開始できました。しかし、問題が再び発生し、これらの RAID ボリュームは再び障害を起こしました。

2 回目の障害発生時に、システムは特殊なディスクのセクターを読み取ることができず、障害が発生したディスクの 1 つにあるセクターの永続的な読み取りエラーが記録されたため、RAID5 のパフォーマンスが低下しました。

その間に、ディスクはカーネルによって新しい名前で再登録されます (例: sde から sdk に名前が変更されるなど)。

システムの再起動後、どのディスクが障害として記録されているかを確認し、シリアル番号を比較してそれらを見つけました。ディスクを /dev/zero に dd しても問題は見られなかったので、再度同期を試みましたが、同じ問題が発生します。

ディスク ベイの電源に問題がある可能性があることに気づいたので、すべてのディスクを取り外し、少なくともメインボード上の既存の SATA ポートに接続しました。SAS コントローラーにディスクを追加し、DD を使用してパーティションのバックアップを作成できるようになりました。

関連するすべてのパーティションを 2 つの新しいディスクにコピーできたので、読み取りに問題はありません。

また、lvm vg 内で使用されていたボリュームは最大 3 つだけです。最初のディスク #2 (sdl3) を削除した後は変更されていないため、ほとんどの lv はまだクリーンな状態であるはずです。

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

最新の日付とアレイの状態を確認すると、まず Jan 15 13:36:40 sdl3 は失敗に設定され、AAAAAA で削除されている必要があります (手動で実行) が、クリーンであるはずです Jan 16 00:02:32 sda3 と AAAA.A はクリーンのように見えます Jan 16 00:02:32 sdc3 と AARA.A はクリーンのように見えます Jan 16 10:22:01 sdg3 と .AA.AA はクリーンではないように見えます Jan 16 10:26:32 sdk3 と .A...A はクリーンではないように見えます Jan 16 10:26:32 sdf3 と .A...A はクリーンのように見えます Jan 16 10:26:32 sdb3 と .A..A はクリーンではないように見えます

既存のパーツ 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 を再度停止し、それらなしで手動で起動してみました。

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 を使って、不足している部分を再度追加しようとしましたが、何も役に立ちませんでした。したがって、スーパーブロックをゼロにして、--assume-clean オプションを使用して RAID を再作成する必要があると思います。私の意見では、正しい順序で実行する必要があります。最善の場合でも、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 データを復号化することはできません。

関連情報