mdadm raid1 が再同期に失敗する

mdadm raid1 が再同期に失敗する

私は mdadm raid1 でこの問題を解決しようとしています。

私は、mdadm を使用したソフトウェア 2 ドライブ RAID1 で実行されている Ubuntu 9.04 サーバーを持っています。昨日、ドライブの 1 つが故障したため、同じサイズの新しいドライブに交換しました。故障したドライブを削除し、残りの正常なドライブから新しいドライブにパーティションをコピーして、それを RAID に追加しました。再同期され、システムは正常に動作しましたが、故障しなかったドライブにも故障のラベルが付けられました。

これで、RAID は新しいドライブのみで実行されるようになりました。そこで、別のドライブを購入し、上記の手順を繰り返しました。これで、新しいドライブが 2 つになり、RAID が同期されました。ただし、数分後に /proc/mdstat を確認すると、RAID は同期されなくなっていました。

mdadm --detail /dev/md1 は次のように表示します: (sdb は最初の新しいドライブ、sdc は 2 番目の新しいドライブです)

root@dola:/home/jjaramillo# mdadm --detail /dev/md1 /dev/md1: バージョン: 00.90 作成時間: Sat Dec 20 00:42:05 2008 Raid レベル: raid1 アレイ サイズ: 974711680 (929.56 GiB 998.10 GB) 使用されているデバイス サイズ: 974711680 (929.56 GiB 998.10 GB) Raid デバイス: 2 合計デバイス数: 2 優先マイナー: 1 永続性: スーパーブロックは永続的です

Update Time : Wed Jun  2 10:09:35 2010
      State : clean, degraded

アクティブデバイス: 1 動作デバイス: 2 故障デバイス: 0 予備デバイス: 1

       UUID : bba497c6:5029ba0b:bfa4f887:c0dc8f3d
     Events : 0.5395594

Number   Major   Minor   RaidDevice State
   2       8       35        0      spare rebuilding   /dev/sdc3
   1       8       19        1      active sync   /dev/sdb3

ドライブを何度か取り外して再度追加してみましたが、同じことが起こります。RAID の再同期に失敗します。/var/log/messages を確認したところ、次の内容が見つかりました。

6 月 2 日 07:57:36 dola カーネル: [35708.917337] sd 5:0:0:0: [sdb] 未処理のセンス コード 6 月 2 日 07:57:36 dola カーネル: [35708.917339] sd 5:0:0:0: [sdb] 結果: ホストバイト = DID_OK ドライバーバイト = DRIVER_SENSE 6 月 2 日 07:57:36 dola カーネル: [35708.917342] sd 5:0:0:0: [sdb] センス キー: 中程度のエラー [現在] [記述子] 6 月 2 日 07:57:36 dola カーネル: [35708.917346] 記述子センス データとセンス記述子 (16 進数): 6 月 2 日 07:57:36 dola カーネル: [35708.917348] 72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 6 月 2 日 07:57:36 dola カーネル: [35708.917357] 00 43 9e 47 6 月 2 日 07:57:36 dola カーネル: [35708.917360] sd 5:0:0:0: [sdb] 追加。センス: 回復不能な読み取りエラー - 自動再割り当てに失敗しました

どうやら sdb (最初の新しいドライブ) に何らかのエラーがあるようです。質問ですが、RAID を再び起動して実行するための最善の方法は何でしょうか? /dev/md1 を空のハード ドライブに dd し、RAID を最初からやり直してデータをロードし直すことを考えましたが、もっと簡単な解決策があるかもしれません。

ご協力いただければ幸いです。

答え1

RAID の構成要素が実際にはディスク パーティションであり、ディスクそのものではない場合を除き、新しいドライブを意味のある方法で準備しようとしないでください。その場合、新しいドライブに、残りのアクティブ ディスクと同じサイズのパーティションを作成します。

古いドライブにはまったく触れる必要はありません。故障していて信頼できないと想定されているからです。

正しい手順は、壊れたドライブを削除し、新しい空のドライブを追加し、mdadm を使用してその新しいドライブをアレイに追加することです。次のように実行します。

mdadm --add /dev/md0 /dev/<newdrive>

次にカーネルは新しいドライブをアレイに同期し、残っている正常なドライブからデータをコピーします。

答え2

返信:

故障したドライブを取り外し、残りの正常なドライブから新しいドライブにパーティションをコピーし、それを RAID に追加しました。

自分でパーティションをコピーしないでください。

必要な作業は、新しいドライブをシステムに挿入し、mdadm を使用して RAID グループに追加することだけです。

実際にコピーを実行した場合 (つまり、dd if=/dev/good_disk of=/dev/new_disk)、おそらく RAID UUID または mdadm にどのディスクがどれであるかを知らせる何かをコピーすることになり、混乱が生じます。

答え3

新しい HDD をインストールし、Tom O'Connor の提案に従ってパーティション分割してから、mdadm を使用してアレイを修復します。mdadm のマニュアル ページの「管理モードの場合:」の --add オプションを参照してください。

mdadm /dev/md0 --add /dev/sda1 

最初に最初の交換用ドライブを「--fail」する必要がある可能性があります。

関連情報