UbuntuシステムのRAID1ソフトウェアRAIDパーティションで次の問題が発生しています(10.04 LTS、2.6.32-24-重要な場合はサーバー)。
ディスクの1つ(sdb5)がI/Oエラーを報告したため、アレイで障害が発生したとマークされました。次に、アレイは1つのアクティブデバイスで劣化しました。したがって、ハードディスクを交換し、パーティションテーブルのクローンを作成し、すべての新しいパーティションをRAIDアレイに追加しました。すべてのパーティションを同期した後、1つを除いて2つのアクティブなデバイスがあり、正常に終了しました。ただし、以前に障害のあるディスクを報告したパーティションには、新しいパーティションがアクティブデバイスとしてではなく、スペアディスクとして含まれていました。
md3 : active raid1 sdb5[2] sda5[1]
4881344 blocks [2/1] [_U]
詳細な外観は明らかにします:
root@server:~# mdadm --detail /dev/md3
[...]
Number Major Minor RaidDevice State
2 8 21 0 spare rebuilding /dev/sdb5
1 8 5 1 active sync /dev/sda5
だからここに質問があります:スペアディスクをアクティブディスクに変えるようにレイドにどのように伝えるのですか?そして、なぜそれがスペアデバイスとして追加されたのですか?アレイは私のルートパーティションであるため、アレイを再作成または再アセンブルすることはできません。そして、私はSoftware RaidHOWTOでその主題へのヒントを見つけることができません。
どんな助けでもいただければ幸いです。
現在の解決策
問題の解決策を見つけましたが、これが実際の方法かどうかはわかりません。私の襲撃を詳しく見てみると、sdb5が常にスペアデバイスとしてリストされていることがわかりました。
mdadm --examine /dev/sdb5
[...]
Number Major Minor RaidDevice State
this 2 8 21 2 spare /dev/sdb5
0 0 0 0 0 removed
1 1 8 5 1 active sync /dev/sda5
2 2 8 21 2 spare /dev/sdb5
そのため、デバイスsdb5をアレイmd3に再ロードすると、常にデバイスがスペアとして追加されることになります。
最後に、配列を再作成しました
mdadm --create /dev/md3 --level=1 -n2 -x0 /dev/sda5 /dev/sdb5
うまくいった。
しかし、質問は私には開いたままです:スーパーブロックの要約を操作し、アレイにsdb5をスペアディスクからアクティブディスクに変えるように指示するより良い方法はありますか?私はまだ答えに興味があります。
かなり遅いですが、これを行うとスペアドライブが有効になります。
mdadm --grow /dev/md3 -n 2
マンページが言うように:
Create、build、またはgrowの場合:-n、-raid-devices =アレイ内のアクティブなデバイスの数を指定します。これにスペアデバイスの数(以下を参照)を加えたものは、-createのコマンドラインにリストされているコンポーネントデバイス(「欠落している」デバイスを含む)の数と等しくなければなりません。値1を設定するのはおそらく間違いであるため、最初に--forceを指定する必要があります。線形、マルチパス、RAID0、およびRAID1には、値1が許可されます。 RAID4、RAID5、またはRAID6では許可されません。この数は、RAID1、RAID4、RAID5、およびRAID6アレイの--growを使用して、必要なサポートを提供するカーネルでのみ変更できます。
ダニエル:最初に、次の手順を実行して、スペアがアレイに統合されているかどうかを再確認します。
cat/proc/mdstat
ビルドプロセスが進行中であるかどうか、およびそれにかかると予想される期間を報告する必要があります。
建物が発生していない場合は、次のことを試してください
mdadm/dev/md3 --remove/dev/sdb5
mdadm/dev/md3 --add/dev/sdb5
そして、それがどのように機能するかを報告してください。詳細については、 http://linux.die.net/man/8/mdadm を参照してください。
私が思い出したことから、(別の理由で)その問題が発生したときは、-growを使用してスペアドライブを「適切に」再追加する必要がありました(エラー状態もクリアします)。
このようなもの(ドキュメントで確認してください!):
mdadm --grow --level = faulty --layout = flush/dev/sdb5
次に、デバイスを追加すると、認識されるはずです。
問題は、mdドライバーが各パーティションのステータスをドライブのブートデータに保存することです。したがって、再起動後でもステータスを認識し、障害としてマークされたパーティションを回避します。