web-dev-qa-db-ja.com

UbuntuのZFSRAIDプールの整合性とパフォーマンスの監視

私はUbuntuで(Fuseを介して)自宅のストレージアレイ用にZFSをセットアップしましたが、「ベータ」ステータスにもかかわらず、ほぼ1年前からうまく機能しています。私はログインして、時々配列をチェックします:

zpool status

その結果:

NAME        STATE     READ WRITE CKSUM
media       ONLINE       0     0     0
  raidz1    ONLINE       0     0     0
    sda     ONLINE       0     0     0
    sdb     ONLINE       0     0     0
    sdc     ONLINE       0     0     0
errors: No known data errors 

これはすべて問題ありませんが、プールにエラーがないことを確認するために時々チェックする方法を自動化したいと思います。

サボテンとzabbixを自由に利用できます。その出力を取得するプログラムを作成することもできると思います。「既知のデータエラーはありません」というフレーズが見つからない場合は、メールを送ってください。

ただし、これを行うパッケージはすでに作成されていますか、またはこのアレイからいくつかのパフォーマンスメトリックを取得する方法に関する仕様はありますか?

3
Dave Drager

zabbixおよびgnuツールを想定しています... zabbixエージェントデーモン設定ファイルに次を追加します。

UserParameter = zpool.status、zpool status | grep -q "既知のデータエラーはありません" && echo 1 ||エコー0

ここで、zabbixでキー「zpool.status」のアイテムを追加し、それに対してトリガーを作成し(「.last(0)= 0」などの関数を使用)、完了です。トリガーは、その文字列がzpoolステータス出力。

これは、「zpool」がzabbixユーザーのパスにあり、このユーザーがzpoolの実行を許可されることも前提としています。そうでない場合は、フルパスを指定してSudoを使用します。もう1つの問題は、使用される構文をサポートしないデフォルトのシェルである可能性があります。その場合、userparameterを書き換えるか、bashを使用するように強制できます。

2
Richlv

zpool status -xは、スクリプトを介してプールのステータスを確認するための推奨される方法です。テストとして使用しやすくする問題がない限り、その出力は「すべてのプールは正常です」です。そうしないと、複数のプールを取得すると、チェックスクリプトとgrepsがより複雑になります。したがって、スクリプトを実行するcronジョブを設定し、そのステータスが「すべてのプールが正常である」であることを確認し、それ以外の場合は出力のアラート電子メールを送信できます。

これを行うためにnagiosプラグインをセットアップすることもできます。 zabbixも同じように拡張できるはずだと思います。

また、zpoolscrubを定期的に実行していることを確認してください。これもcronジョブで設定します。これにより、頻繁にアクセスされないファイルシステムの領域のプールで見つかった問題を検出して修正し、データが破損する前に問題を検出して修正できます。

パフォーマンスメトリックを取得するには、zpool iostatを使用できます[更新間の秒数]それをサボテンに関連付ける方法はわかりませんが、可能であると確信しています。

5
3dinfluence

可能であれば、ディスクまたはコントローラーのHWまたはトランスポートエラーに対してiostat -xCznおよびgrepも実行します。

0
Khushil