web-dev-qa-db-ja.com

実行中に「mdadm」RAIDを確認する方法は?

自宅でコンピューターのコレクションを入手し始め、それらをサポートするために、「サーバー」LinuxボックスでRAIDアレイを実行しています。

現在はmdadmRAID-1であり、ドライブを追加するとRAID-5に移動します(それからRAID-6に期待しています)。ただし、1つのドライブでデータが破損するさまざまな話を聞いたことがあります。最初のドライブが故障し、2番目のドライブもねじ込まれている(そして3番目、4番目) 、5番目のドライブ)。

明らかにバックアップは重要であり、私もそれを処理していますが、この問題を解決し、実行中にRAIDを確認できると主張するスクリプトを以前に見たことがあります。しかし、これらのスクリプトをもう一度探すと、以前に実行したものに似ているものを見つけるのが難しくなり、古くなっていて、変更点を理解できないと感じています。

すべてのディスクが正常に実行されていることを確認するために、実行中のRAIDをどのようにチェックしますか?

私はすべてのドライブでSMART=を監視し、mdadmを設定してエラーが発生した場合にメールで通知するようにしていますが、ドライブも時々「自分でチェック」することを知りたいです。

43

冗長性を備えたRAIDのポイントは、可能な限り継続することですが、ディスクの故障など、劣化モードに移行するエラーを検出することは明らかです。 mdadm -Dを使用して、アレイの現在のステータスを表示できます。

# mdadm -D /dev/md0
<snip>
       0       8        5        0      active sync   /dev/sda5
       1       8       23        1      active sync   /dev/sdb7

さらに、コンポーネントの障害などの問題がある場合、mdadm -Dの戻りステータスはゼロ以外です(1はRAIDモードが補償するエラーを示し、2は完全な障害を示します)。

また、/proc/mdstatを見ると、すべてのRAIDデバイスステータスの簡単な概要を取得できます。 RAIDデバイスに関する情報は/sys/class/block/md*/md/*でも取得できます。カーネルのドキュメントの Documentation/md.txt を参照してください。一部の/sysエントリも書き込み可能です。たとえば、md0echo check >/sys/class/block/md0/md/sync_actionのフルチェックをトリガーできます。

これらのスポットチェックに加えて、mdadmは問題が発生するとすぐに通知します。 MAILADDR root/etc/mdadm.confがあることを確認してください(一部のディストリビューション(Debianなど)ではこれを自動的に設定しています)。次に、エラー(劣化したアレイ)が発生するとすぐに電子メール通知を受け取ります

ローカルマシンのrootに送信されたメールを受信することを確認してください(最近の一部のディストリビューションでは、すべてのメールが外部プロバイダーを経由すると見なされているため、これを省略していますが、ローカルメールの受信が必要です深刻なシステム管理者向け)。 rootにメールを送信してこれをテストします:echo hello | mail -s test root@localhost。通常、電子メールを適切に設定するには、次の2つが必要です。

  • ローカルマシンで [〜#〜] mta [〜#〜] を実行します。 MTAは、少なくともローカルメール配信を許可するように設定する必要があります。すべてのディストリビューションには適切なMTAが付属しているため、何でも選択できます(ただし、メールをローカルに配信する場合はnullmailerを選択しないでください)。
  • システムアカウント(少なくともroot)宛てのメールを、定期的に読むアドレスにリダイレクトします。これは、ローカルマシン上のアカウント、または外部の電子メールアドレスです。ほとんどのMTAでは、アドレスは/etc/aliasesで構成できます。次のような行があるはずです

    root: djsmiley2k
    

    現地配送の場合、または

    root: [email protected]
    

    リモート配信用。リモート配信を選択する場合は、MTAがそのように構成されていることを確認してください。 MTAによっては、/etc/aliasesの編集後にnewaliasesコマンドを実行する必要がある場合があります。

オンライン中にアレイ全体を強制的にチェックできます。たとえば、/dev/md0の配列を確認するには、rootとして実行します。

echo check > /sys/block/md0/md/sync_action

また、月に1回次のコマンドを実行するcronジョブもあります。

tar c /dir/of/raid/filesystem > /dev/null

これはドライブ自体の完全なチェックではありませんが、(ほとんど)すべてのファイルがディスクから正常に読み取れることをシステムに定期的に確認させます。はい、一部のファイルはディスクではなくメモリキャッシュから読み取られます。しかし、ファイルがメモリキャッシュにある場合は、最近ディスクから正常に読み取られたか、ディスクに書き込まれる直前であり、これらの操作のいずれかによってドライブエラーも明らかになります。とにかく、このジョブを実行すると、RAIDアレイの最も重要な基準がテストされ(「データを正常に読み取ることができますか?」)、3年間、アレイを実行していたときに、ドライブが故障したことがありました。それを発見したこのコマンド。

小さな警告の1つは、ファイルシステムが大きい場合、このコマンドには長い時間がかかることです。私のシステムは約6時間/ TiBかかります。 ioniceを使用して実行し、ドライブチェック中にシステムの残りの部分が停止しないようにします。

ionice -c3 tar c /dir/of/raid/filesystem > /dev/null
20
stharward

debianおよびUbuntuの「mdadm」パッケージには、ファイルが含まれています

/etc/cron.d/mdadm

次に、毎月の最初の日曜日にコマンドを実行します

/usr/share/mdadm/checkarray --cron --all --idle --quiet

これは、すべてのアレイの整合性をチェックします(/ etc/default/mdadmでAUTOCHECKをfalseに設定しない限り)。レポートが「root」ユーザーに送信されます(そのようなメールを必ず受信してください)。

11
am70

私はこの単純な関数を使用して/proc/mdstat

#Health of RAID array
raid() { awk '/^md/ {printf "%s: ", $1}; /blocks/ {print $NF}'  /proc/mdstat; }
8
jasonwryan