raid5のアレイが応答しないので、cat /proc/mdstatを見たら、Personalities : [raid6] [raid5] [raid4] [raid0] [raid1] [raid10]md0 : inactive sdf1[3] sdb1[1] sdg1[5] sdc1[0] sde1[4] sdd1[2]11720309763 blocks super 1.2 unused devices:これはアレイが壊れたと言うことですか。

突然アレイが inactive(非活性)になると焦りますよね。

結論から言うと、「アレイが構成情報を失って停止している」状態ですが、データが消えた(壊れた)と決まったわけではありません。

RAID5のメタデータ(管理情報)の読み込みに失敗したり、起動時にデバイスが揃わなかったりすると、このように「とりあえずデバイスは認識しているが、アレイとしては動かさない」という保護状態になります。

以下の手順で復旧を試みてください。

1. アレイを強制的に開始させる

まず、現在の構成情報を使ってアレイを再活性化(start)させます。

bash

sudo mdadm --run --assemble /dev/md0 /dev/sd[bcdefg]1

※もし mdadm.conf が正しく設定されているなら、単純に sudo mdadm --assemble --scan でも構いません。

2. それでも起動しない場合(詳細の確認)

上記でエラーが出る場合は、各ディスクのメタデータがどうなっているかを確認します。

bash

sudo mdadm --examine /dev/sd[bcdefg]1

ここで “State : clean” や “active” と表示されているか、あるいは “dirty” や “failed” になっているディスクがないかチェックしてください。

3. 注意点

  • --create は厳禁: 焦って mdadm --create を実行しないでください。データが完全に消去される可能性があります。 Linux RAID Wiki(英語)などの専門サイトでも、安易な再作成は推奨されていません。
  • 原因の切り分け: 物理故障(ケーブル抜けやHDDの寿命)が原因で inactive になることが多いです。dmesg コマンドで I/Oエラーが出ていないか確認してください。

まずは --assemble を試して、その結果(エラーメッセージなど)を教えていただけますか?

どのコマンドでエラーが出ましたか? または dmesg に何か怪しいログは残っていますか?

mdadm: –assemble would set mdadm mode to “assemble”, but it is already set to “misc”.

そのエラーは、「既に md0 という名前のデバイスが(不完全な状態で)存在しているため、新しくアセンブル(起動)モードに入れない」という mdadm の仕様によるものです。 

man7.orgman7.org

現在の md0 は inactive(非活性)としてシステムに掴まれているため、一度それを解放(停止)してからやり直す必要があります。 

以下の手順を試してください。

1. 現在の不完全なアレイを停止する

まず、現在 inactive で残っている /dev/md0 を一度停止させます。

bash

sudo mdadm --stop /dev/md0

2. 再度アセンブルを実行する

停止できたら、改めてアレイの起動を試みます。

bash

sudo mdadm --assemble --run /dev/md0 /dev/sdf1 /dev/sdb1 /dev/sdg1 /dev/sdc1 /dev/sde1 /dev/sdd1

※ ディスクが全て揃っているはずなのに起動しない場合は、末尾に --force を付けることで、多少の情報のズレを無視して強制起動させることができます。 

もし「device or resource busy」と出る場合

もし mdadm --stop でエラーが出る場合は、そのデバイスを何らかのプロセスが掴んでいます。

  • sudo zpool export(ZFSを使っている場合)や sudo vgchange -an(LVMを使っている場合)などで上位レイヤーを停止させてから再度試してください。

この手順で /proc/mdstat の表示は active に変わりましたか? エラーが出る場合はその内容を教えてください。

assemble で mdadm: failed to RUN_ARRAY /dev/md0: Invalid argument と出ます。

Invalid argument

 エラーは、「アセンブルしようとしているディスク間のメタデータ(Events値など)に不整合がある」か、「既に inactive 状態でカーネルに認識されている md0 が邪魔をしている」場合に発生します。

一度 md0 を完全に停止させた上で、情報のズレを無視して強制的に組み立て直す必要があります。

手順:強制アセンブルの実行

  1. 既存の不完全なアレイを停止する
    これをしないと、リソースが使用中(busy)になり、構成のやり直しができません。bashsudo mdadm --stop /dev/md0
  2. --force を付けてアセンブルする
    ディスクが全て揃っている(または1台欠けまで)場合、--force を使うことで、メタデータのわずかな差異(シャットダウン時のタイミングのズレなど)を無視してアレイを強制起動させます。bashsudo mdadm --assemble --run --force /dev/md0 /dev/sd[bcdefg]1

上記で解決しない場合(情報の確認)

もしこれでも Invalid argument が出る場合は、ディスクごとのステータスを確認し、どの個体が「古い」または「異常」と判断されているか特定する必要があります。

以下のコマンドの結果を確認してください。

bash

sudo mdadm --examine /dev/sd[bcdefg]1 | grep -E 'Update Time|Events|State'
  • Events の値が極端に離れているディスクはありませんか?
  • State が active ではなく failed や faulty になっているものはありませんか?

--force で起動に成功しましたか? もし失敗する場合、mdadm --examine の結果に Events値の食い違い がないか教えてください。

forceでもmdadm: failed to RUN_ARRAY /dev/md0: Invalid argumentになります。 examineではState : active Events : 69683 Array State : AAAAAA (‘A’ == active, ‘.’ == missing, ‘R’ == replacing) State : active Events : 69683 Array State : AAAAAA (‘A’ == active, ‘.’ == missing, ‘R’ == replacing) State : active Events : 69683 Array State : AAAAAA (‘A’ == active, ‘.’ == missing, ‘R’ == replacing) State : active Events : 69683 Array State : AAAAAA (‘A’ == active, ‘.’ == missing, ‘R’ == replacing) State : active Events : 69683 Array State : AAAAAA (‘A’ == active, ‘.’ == missing, ‘R’ == replacing) State : active Events : 69683 Array State : AAAAAA (‘A’ == active, ‘.’ == missing, ‘R’ == replacing) となります。

examine

 の結果、すべてのディスクで Events (69683) が一致し、Array State (AAAAAA) も正常であるにもかかわらず Invalid argument で失敗する場合、メタデータ自体ではなく、カーネルモジュールの不備デバイスの重複認識が原因である可能性が高いです。

以下の3つのポイントを順に確認してください。

1. RAIDモジュールが読み込まれているか確認 

カーネルが RAID5 を制御する「パーソナリティ(モジュール)」を正しく認識できていないときにこのエラーが出ることがあります。

bash

sudo modprobe raid456

を実行した後、再度 sudo mdadm --assemble --run --force /dev/md0 /dev/sd[bcdefg]1 を試してください。

2. 重複している「古い」アレイ情報を消去する

cat /proc/mdstat で md0 : inactive と表示されている場合、カーネルが古い構成情報をメモリ上に保持しており、新しい組み立て命令を拒否(Invalid argument)している状態です。

一度、確実に停止させてから再実行します。

bash

sudo mdadm --stop /dev/md0
# もし md127 など別の名前で inactive があればそれも停止
sudo mdadm --stop /dev/md127 

この後、cat /proc/mdstat を見て unused devices: <none> だけになったことを確認してからアセンブルしてください。

3. Bad Block Log (BBL) の影響を確認

最近の mdadm(1.2以降のメタデータ)では、ディスク上の不良セクタ情報をメタデータに書き込みますが、これが原因で起動できない場合があります。

bash

sudo mdadm --assemble --run --update=force-no-bbl /dev/md0 /dev/sd[bcdefg]1

※これにより不良ブロックログが無視され、起動できることがあります。

4. カーネルログ (dmesg) の確認

上記でも失敗する場合、エラーの真因がカーネルログに出力されています。

bash

dmesg | tail -n 20

ここに “md: personality for level 5 is not loaded!” や “block size conflict” といった具体的な理由が出ていませんか?

modprobe 後のアセンブルで変化はありましたか? もしダメなら dmesg の最後数行に記録されているエラーメッセージを教えてください。

modprobe後のassembleでmdadm: /dev/md0 has been started with 6 drives.と出ました。

無事にアレイが起動しましたね!お疲れ様でした。

mdadm: /dev/md0 has been started with 6 drives. という表示が出たのであれば、RAIDとしては正常に動き出しています。

念のため、以下の手順で最終確認と後処理を行ってください。

1. 状態の確認

まずは /proc/mdstat を見て、active になっていることと、リシンク(再同期)が走っていないか確認してください。

bash

cat /proc/mdstat

コードは注意してご使用ください。

md0 : active raid5 ... と表示され、末尾に [UUUUUU] とあれば完全復旧です。

2. ファイルシステムのマウント

アレイが認識されたので、次はデータを読み取れる状態にします。

bash

sudo mount /dev/md0 /mnt/your_mount_point

※ /mnt/your_mount_point はご自身の環境に合わせて読み替えてください。

3. 設定の保存(重要)

次回再起動時にまた inactive にならないよう、現在の(正常な)構成を mdadm.conf に反映させておくことを強く推奨します。

bash

# 現在の設定をスキャンして設定ファイルを更新
sudo mdadm --detail --scan | sudo tee /etc/mdadm/mdadm.conf
# 初期RAMディスクの更新(OS起動時にRAIDを正しく認識させるため)
sudo update-initramfs -u

なぜ動かなくなったのか?

今回 modprobe で解決したということは、「何らかの理由でRAID5のカーネルモジュールが自動ロードされなかった」ことが原因の可能性が高いです。OSのアップデート後や、initramfsの不整合で稀に発生します。

マウントして中のデータにはアクセスできましたか? もしマウント時にエラーが出る場合は、ファイルシステムのチェック(fsck)が必要になるかもしれません。

resync 97.0%ですね

ほぼ完了ですね!もう少しです。

現在、RAIDが全ディスクのデータの整合性を最終チェック(再同期)している状態ですが、97.0% ということは、あとわずかな時間で完了し、冗長性が完全に確保された状態(Clean)になります。

今後の流れと注意点

  1. そのまま待機:
    100%になるまでそのまま待ってください。watch cat /proc/mdstat と打つと、進捗をリアルタイムで監視できます。
  2. 負荷を避ける:
    再同期中はディスクI/Oが発生しているため、大量の書き込みや重い作業は避け、完了を待つのが安全です(読み取りは可能です)。
  3. 完了後の表示:
    完了すると、/proc/mdstat の表示が [UUUUUU](すべてU)となり、resync の文字が消えます。

念のためのアドバイス

今回、手動で modprobe しないと動かなかった点が気になります。前回の回答にある update-initramfs -u は、再同期が終わった後に必ず実行しておいてください。これを忘れると、次回の再起動時にまた同じ現象(inactive)が起きる可能性が高いです。

再同期が終わった後、ファイルの中身は無事に見られそうでしょうか? df -h などのコマンドでマウント状況も確認してみてください。