2011年3月7日月曜日

FreeNASでファイルサーバー構築 2

前回のエントリで、どうしても外せない機能がFreeNASでは現在GUIで実装されていないので
スクリプト書く知識0で上手いこと実装できたら自作ファイルサーバーにすると決めました。

・外せない機能
ZFSのpoolに異常が発生したらメールアラートを飛ばす。
定期的にscrubをかける。
定期的にsnapshotをとる。

このへんが是非ほしい。
とりあえずVirtualBoxにFreeNASをインストールして上記機能を搭載できるか実験してみます。

まずpoolの異常発生でのメールアラート。検索しまくってみつけたのがここ

ここの投稿に返信している、torf74氏のスクリプトを試してみることにする。

zpoolnotice.sh
zpoolstatus.sh

異常発生時にメールアラート飛ばすスクリプトと、定期的にpoolの状態をメールするスクリプト。
両方いれてみました。使用方法まで丁寧に書いてあって非情に分かりやすいです。

二つのスクリプトを適当に /mnt/tank/bin とかに保存します。
cronの設定ページに行き適当にスケジュールを設定して

bash /mnt/tank/bin/zpoolnotice.sh

と記述して保存。今すぐ実行ボタンを押します。(メール設定が済んでいるのが大前提。)
poolに異常は発生していないのでメールは来ません。
ZFS設定ページに移動してpoolのHDを一つOFFLINEにして異常を発生させます。
もう一度cronのページに行き今すぐ実行ボタンを押します。

ばっちりメールが届きました。おー良い感じ。
zpoolstatus.shも同様に設定し問題なく動作を確認。

定期的にscrubするスクリプトもここで公開されてました。

さっきと同様の手順でばっちり動作を確認。


さらにここで定期的にsnapshotとるスクリプトがあるんですが
weeklyは問題なく動作するんですがdailyとhourlyがどうも上手く動かない・・・。
むう・・・

書いてあるスクリプトの構文を適当に検索しまくって、スクリプト知識0であれこれ調べた結果、

zfs snapshot $1@daily.`date "+%a"`

ここの `date "+%a"` は日付や時間を取得する一般的な記述のようだ・・・
%a は曜日を取得するみたい。唯一上手く動いたweeklyのスクリプトには使われていないので、この辺が怪しい・・・・・・気がする。
でもどうすればいいかはよくわからん・・・。

といったところで今日はもう疲れたのでこの辺で終了。

0 件のコメント:

コメントを投稿