Windows 2003 Serverにミラーリングされたダイナミックディスクがあります。ボリュームの状態をどのように監視しますか?
ボリュームに問題があるときにサーバーにメールを送信させる方法はありますか?サーバーにS.M.A.R.T.テストを実行させる方法はありますか?
編集:クライアントサーバーにログインし、DISKPART LIST VOLUMEを実行してこれを確認するようなWTFはありません。
Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ----- ---------- ------- --------- --------
Volume 0 X xDrive NTFS Mirror 233 GB Failed Rd
Volume 1 C NTFS Simple 57 GB Healthy System
Volume 2 D DVD-ROM 0 B Healthy
Volume 3 F RAW Partition 466 GB Healthy
Volume 4 E New Volume NTFS Partition 932 GB Healthy
少し前に同じ質問がありました。私が最初に考えたのはWMIの使用ですが、奇妙な理由により、WMIは通常のWin32_ *クラスを通じてRAIDボリュームの正常性を公開しません。
私は最終的に偶然に遭遇しました この記事のスクリプト と私の要件に合わせていくつかの変更を加えました。 diskpart.exeの「LIST VOLUME」コマンドの出力を解析します。これは少し汚くて醜いように見えるかもしれませんが、今のところ、これが私が見た中で最良のオプションです。
リンクされたページに表示されるスクリプトは、 Nagios / NSClient ++ で使用する準備ができています。 VBScriptについて少し知っている場合は、これを変更して、ステータス情報を印刷する代わりに電子メールを送信するのは簡単です。
VBScriptがわからない場合は、目的に応じて変更を加えたバージョンを喜んで提供します。
for /f "tokens=4,9 delims= " %a IN ('echo list volume ^| diskpart ^| find "SSD"') do echo %a %b
Find "SSD"を "mirror"(またはストライプ...何でも)またはボリューム名に置き換えます。 (私のボリュームはSSD1 + SSD2という名前です)
@echoをオフにしてバッチファイルを挿入します。 :)
@echo off
for /f "tokens=4,9 delims= " %%a IN ('echo list volume ^| diskpart ^| find "SSD"') do echo %%a %%b
上の行はバッチに必要です。 =)
tokens=8
に変更してくださいSmartmontools( http://sourceforge.net/apps/trac/smartmontools/wiki )にはWindowsバージョンがありますが、2K8で動作することはわかりません
この醜いバッチファイルを使用して、100を超えるサーバーを監視し、ミラーのステータスを確認したところ、すばらしい結果が得られました。これは、4時間ごとにパッシブチェックを実行して結果をnagiosサーバーに送信するnsclient ++クライアントプラグインです。
check_mirror.bat
@echo off
echo list volume | diskpart | find "Mirror" > H
for /f %%i in ('type H ^| find /c "Mirror"') do set /a M=%%i
for /f %%i in ('type H ^| find "Mirror" ^| find /c "Health" ') do set /a H=%%i
for /f %%i in ('type H ^| find /c "Risk"') do set /a risk=%%i
@del H /q
rem echo M=%M%, H = %H% Risk=%risk%
if %risk% GTR 0 goto err
IF %M%.==0. goto nomirror
IF %M% EQU %H% goto mirrorok
:err
echo CRITICAL: Something Wrong.
exit /B 1
:mirrorok
echo OK: Mirror Health.
exit /B 0
:nomirror
echo OK: No Mirror Found.
exit /B 1