Linuxで組むSamba RAID1ファイルサーバーは、HDDが1台故障しても運用が継続できる仕組みがありますが、もう1台が壊れるとデータが全損するため、故障が判明したHDDはできるだけ速やかに交換する必要があります。
Sambaサーバーには、市販NASのようなRAID HDD故障状態の通知や表示を行う仕組みがないため、Zabbix監視サーバーを用いてRAID状態を自動監視する方法を記載します。
環境条件
本記事は以下の環境で解説します。
- 仮想サーバー:Proxmox VE8(構築方法はこちら)
- ファイルサーバー:ubuntu24.04LTS, Samba3, RAID1(4TBx2台)(構築方法はこちら)
- 監視サーバー:Zabbix Ver.7.0LTS(構築方法はこちら)
各種サーバーはproxmox上の仮想環境で動作させることができますので、ハード自体は1基のPCで組めます。
当サイトにも各種サーバーの構築方法を記載していますので、適宜参照してください。
またここで紹介するファイルサーバー用HDDはWD RED Plusを使いました。
記録方式が実績のあるCMRであり、無償交換保証も3年と長いので、ビジネス用ファイルサーバーとしても安心して使うことができオススメです。
障害検出の仕組みについて
Samba側のRAIDアレイ状態は/proc/mdstatの内容を見ることでわかります。
Zabbixでの自動監視はこの仕組みを利用します。
# cat /proc/mdstat Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 sdc1[1] sdb1[0] 5860335232 blocks super 1.2 [2/2] [UU] bitmap: 1/44 pages [4KB], 65536KB chunk unused devices: <none>
RAID1の場合、[UU]であれば正常です。異常時は[U_], [_U]のようになり、Uの数が2未満になればHDDに障害があるということになります。(RAID5の場合はHDDが3基のため[UUU]がとなるはずです。)
samba側でgrepと wcを用いて、健全な RAIDアレイのU数をカウントし、その値をZabbix agent経由でZabbixサーバーに通知すれば監視することができます。
作業前にSamba側で以下コマンドでRAIDアレイ数を返せることを確認します。
$ cat /proc/mdstat | grep -o U | wc -l 2 # RAID1の場合、正常時は2で異常時は1(または0)になる
Samba側のZabbix agent2インストール
Zabbixはubuntuのaptで入手できないため、最初にZabbixリポジトリから作業をします。
注記:最新のZabbixリポジトリの入手コマンドはここで確認してください。
# wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb # dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb # apt update
aptでZabbix agent2をインストールします。
# apt install zabbix-agent2 zabbix-agent2-plugin-*
以下を参考にzabbix_agent2.confを編集します。
# nano /etc/zabbix/zabbix_agent2.conf # 以下行をZabiixサーバーに設定 Server=192.168.0.246 ServerActive=192.168.0.246 Hostname=samba #最終行に以下を追記 UserParameter=raid.healthy,cat /proc/mdstat | grep -o U | wc -l
設定が記述できたらzabbix_agent2を再起動し、設定を有効化します。
# systemctl restart zabbix-agent2
agentの設定はこれで完了です。
Zabbixサーバー側設定
Zabbixサーバーにてホスト登録とRAIDドライブ情報の監視設定を行います。
ホストの作成
(ホスト作成が完了している場合は本作業は省略してください。)
ZabbixのWebコンソールにログイン後、「データ収集」→「ホスト」に進み、右上の「ホスト作成」をクリックし、監視対象ホストを作成します。
- ホスト名:falcon-samba(自分のサーバー名を入れてください)
- テンプレート:Linux by Zabbix Agent
- インタフェース:エージェントに設定し、対象ホストのIPアドレスを設定
アイテム設定
「データ収集」→「ホスト」→「アイテム」に進み、右上の「アイテム作成」で監視項目を追加します。
アイテム設定には以下の値を入力します。
- 名前:RAID_status
- タイプ:Zabbixエージェント
- キー:raid.health
- 監視間隔:30m(1mでは短すぎる)
トリガー設定
トリガー設定では、[UU]が2未満になると警報が出るよう設定するため、トリガー条件式は以下を入力します。
- 名前:raid.health
- 深刻度:「重度の障害」に設定
- 条件式:last(/falcon-samba/raid.healthy)<>2 (falcon-sambaはホスト名)
グラフ設定
以下に設定すると、監視の「グラフ」で過去の状態がわかるようになります。
- 名称:RAID_health
- 高さ:900
- 幅:200
- Y軸の最小値:固定0
- Y軸の最大値:固定2
- アイテム:Samba_4TB: RAID_health、グラデーションライン
監視データの確認
監視データ→ホスト→対象ホストのグラフをクリックすると、raid.healthの時系列の状態が表示されることを確認します。
agentデータがグラフに反映されるは10-30分ほど必要ですので少々待ってください。
Zabbixは構築にちょっと手間がいるのが難点ですが、サーバーソフトとしてはとても優れているので、この監視方法はオススメです。