5つのRAID1(ミラーリングされたセットアップごとに2つのドライブ)と5つのRAID1ペアすべてにわたるRAID0で構成されるLinuxソフトウェアRAID10セットアップがあります。負荷がかかってもすぐに故障するドライブがないことをテストするために、破壊的な読み取り/書き込みモードでRAID0全体でbadblockを使用しました。
Badblocksコマンド:badblocks -b 4096 -c 98304 -p 0 -w -s/dev/md13
デバイスの1つに障害が発生し、badblocksプログラムの代わりに、デバイス上を移動してハングしました。 syncコマンドを実行すると、これもハングします。まず、これはRAID1デバイスの標準的な動作ではないと思います。ドライブの1つに障害が発生した場合でも、2つのドライブが構成する仮想デバイスに問題なく書き込むことができるはずです。
それで、私はドライブを強制的に故障させて、それを取り除こうとしました。ドライブを問題なく故障に設定できます(ただし、IO操作はまだハングしています)。デバイスをレイドから完全に削除することはできません。ビジーであると表示されます。完全にレイドから追い出すことができますIOは継続しますが、それは単なる仮定であり、私はある種のバグを扱っていると思います。
ここで正確に何が起こっているのですか?バグが原因で回復不能な場所にいますか?
システムはカーネル2.6.18を実行しているため、まったく新しいものではありませんが、ソフトウェアRAIDが長い間存在していることを考えると、このような問題は発生しないと思います。
どんな洞察も大歓迎です。
mdadm --detail/dev/md13
/ dev/md13:
Version : 00.90.03 Creation Time : Thu Jan 21 14:21:57 2010 Raid Level : raid0 Array Size : 2441919360 (2328.80 GiB 2500.53 GB) Raid Devices : 5
合計デバイス数:5優先マイナー:13永続性:スーパーブロックは永続的です
Update Time : Thu Jan 21 14:21:57 2010 State : clean Active Devices : 5 Working Devices : 5
故障したデバイス:0スペアデバイス:0
Chunk Size : 64K UUID : cfabfaee:06cf0cb2:22929c7b:7b037984 Events : 0.3 Number Major Minor RaidDevice State 0 9 7 0 active sync /dev/md7 1 9 8 1 active sync /dev/md8 2 9 9 2 active sync /dev/md9 3 9 10 3 active sync /dev/md10 4 9 11 4 active sync /dev/md11
失敗したレイド出力:
/ dev/md8:バージョン:00.90.03作成時間:Thu Jan 21 14:20:47 2010 RAIDレベル:raid1アレイサイズ:488383936(465.76 GiB 500.11 GB)デバイスサイズ:488383936( 465.76 GiB 500.11 GB)RAIDデバイス:2
合計デバイス数:2優先マイナー:8永続性:スーパーブロックは永続的ですUpdate Time : Mon Jan 25 04:52:25 2010 State : active, degraded Active Devices : 1 Working Devices : 1
故障したデバイス:1スペアデバイス:0
UUID : 2865aefa:ab6358d8:8f82caf4:1663e806 Events : 0.11 Number Major Minor RaidDevice State 0 65 17 0 active sync /dev/sdr1 1 8 209 1 faulty /dev/sdn1
申し訳ありませんが、私はよく理解できていなかったので、猫の/ proc/mdstatが役立つかもしれませんが、私が見る限り、RAID0などの基盤となるRAID1アレイのデータを破壊する足を撃ちました。 RAIDの信頼性をテストする必要がある場合、問題を十分に理解していれば、下にあるすべてのRAID1ディスクを参照する論理ブロックを破壊しないように、ドライブ、ディスクに障害があるとタグ付けする必要があります(お知らせください)。
おそらく、障害のあるドライブを削除するようにカーネルに依頼する必要があります。ハングしたRAIDを解放します。
http://bash.cyberciti.biz/diskadmin/rescan-linux-scsi-bus/ のようなスクリプトで削除できます