GNU/Linux >> Linux の 問題 >  >> Linux

ZFS スクラブが *完了* したらコマンドを実行する方法は?

解決策 1:

ZFS の場合 Linux の場合、バージョン 0.6.3 以降 これは、ZFS イベント デーモン (zed) を使用することで非常にエレガントに処理できます。 イベント デーモンは、カーネル イベントを直接監視することにより、発生するすべてのイベントにほぼ即座に反応でき、他のコマンドの出力の継続的なポーリングと解析に依存しません。

03 で始まる任意のファイル名でシェル スクリプトを作成します。 (例:11 )。このスクリプトは、電子メールを送信したり、どこかにログ エントリを書き込んだり、システムを歌ったり踊らせたりするなど、適切なアクションを実行できます (そうではないかもしれません)。出発点を提供できる例が提供されています。

スクラブが完了したときに電子メールを受信することだけが必要な場合は、提供されている 29 スクリプトはそれをうまく行います。 /etc/zfs/zed.d/zed.rc を編集して、電子メールの送信先と、プールで問題が発生していない場合に電子メールを送信するかどうかを指定するだけです。コード> その後に /etc/zfs/zed.d 内の何かが続くとそれにつながり、起動時に zed が開始されていることを確認してください。

解決策 2:

この簡単なスクリプトを使用して、電子メールでステータス レポートをスクラブします。

  • zpadmin

44 からの遷移を検出する必要がある場合 51まで 61 をチェックします 78 のフィールド 出力。このようなもの:

# start scrubbing 
zpool scrub ZPOOL

# wait till scrub is finished
while zpool status ZPOOL | grep 'scan:  *scrub in progress' > /dev/null; do
   echo -n '.'
   sleep 10
done

# send a report
zpool status | mail -s "zpool status: ZPOOL" RECIPIENT

解決策 3:

この質問は Linux に固有のものですが、「スクラブが終了するまで待つ」 を検索したときの最初の Google の結果です。 、したがって、Linux (通常の Solaris も動作するはずですが、そこではテストしていません) の代わりに、OpenSolaris を実行している人々 (OmniOS でテストしましたが、SmartOS、illumos なども同様であるはずです) に役立つ情報を追加したいと思います。

86 を使用できます カーネルイベントを登録します。完全なリストは 91 にあります (このファイルで「ZFS」を検索するだけです)。イベントを追加した後、サービスを再起動する必要があります。例:

syseventadm add -c EC_zfs -s ESC_ZFS_scrub_finish /path/to/script.sh \$pool_name
syseventadm restart

このようにして、プールのスクラブが終了するとスクリプトが開始されます - 105 の場合はスクリプト内をチェックする必要があります 目的のプール名と同じです。それでも、ポーリングよりもはるかにオーバーヘッドが少なくなります。

解決策 4:

zfswatcher で多くの成功を収めました


Linux
  1. 変数に格納されているコマンドを実行するにはどうすればよいですか?

  2. 実行中のSystemdコンテナ内でコマンドを実行する方法は?

  3. Linuxで一度に複数のファイルの名前を変更する方法

  1. Linux:特定のディレクトリでコマンドを実行する方法

  2. 起動後にコマンドを実行するにはどうすればよいですか?

  3. SSH経由でtopコマンドを適切に実行するには?

  1. 複数のリモートシステムで単一のコマンドを一度に実行する方法

  2. システム管理者(root)としてコマンドを実行する方法は?

  3. ルートプロパティなしでコマンドを実行する方法は?