This site best when viewed with a modern standards-compliant browser. We recommend Firefox Get Firefox!.

Linux-HA project logo
Providing Open Source High-Availability Software for Linux and other OSes since 1999.

USA Flag UK Flag

Japanese Flag

ホームページ

サイトについて

コンタクト情報

使用条件

協力方法

セキュリティ

This web page is no longer maintained. Information presented here exists only to avoid breaking historical links.
The Project stays maintained, and lives on: see the Linux-HA Reference Documentation.
To get rid of this notice, you may want to browse the old wiki instead.

2010.1.28
追加パッケージ集リニューアル
追加パッケージ集は、こちらから

2008.8.28
RHEL用rpm更新
更新情報はこちらから

2008.8.18
Heartbeat 2.1.4
リリース!
Downloadはこちらから

2007.11.13
Linux-ha-japan日本語ML移植しました

2007.10.5
日本語サイトOPEN
日本語MLも開設しました

2007.10.5
OSC2007 Tokyo/Fall で Heartbeat紹介
発表資料を公開しました

Last site update:
2018-01-19 13:46:18

ディスク監視デーモン (diskd)

このプログラムはディスク(主に共有ディスク)の状態を監視するものです。
pingdによるネットワーク監視をディスクに監視に応用しました。
作成、テストはHeartbeat2.1.3, RHEL 5.1で行っています。他の環境でのテストは行っていませんので、問題があれば linux-ha-japan@lists.souceforge.jp にご報告ください。

ダウンロード

  • バイナリファイル(32bit) --- diskd-1.00-i386.zip (5.6 KB) [md5sum: bde1e7d1c975c744c9fea2c47a90228d]

  • バイナリファイル(64bit) --- diskd-1.00-x86_64.zip (6.2 KB) [md5sum: 57a6513d76064d6b0d4887a1931de07f]

  • ソースファイル --- diskd-1.00-source.tar.gz (5.0 KB) [md5sum: 262288898e91a8125b53855e829cdca6]

インストール

  • バイナリファイルのインストール
    RHEL5用(32bit, 64bit環境用)のバイナリファイルを用意しています。環境に合ったファイルを展開し、diskdを所定のディレクトリに配置してください。
    以下の実行例は64bit環境です。32bit環境では/usr/lib/heartbeatになります。

     # cp diskd /usr/lib64/heartbeat/. 
    ファイルの実行権限、オーナを適切に変更してください。
     # chmod 755 /usr/lib64/heartbeat/diskd
     # chown root:root /usr/lib64/heartbeat/diskd 
  • ソースからのインストール
    現在、diskd単体のmakefileは用意していません。Heartbeat本体と一緒にmakeしてください。

    • diskd, Heartbeatのソースファイルを展開
       $ tar xzvf heartbeat-2.1.3.tar.gz
       $ tar xzvf diskd-1.00-source.tar.gz 
    • diskd のソースファイルを配置
       $ cd heartbeat-2.1.3
       $ cp ../diskd-1.00-source/diskd.c tools/. 
    • Makefile用のパッチを適用
       $ patch -p0 < ../diskd-1.00-source/tools_Makefile.am.patch 
       patching file tools/Makefile.am
       $ patch -p0 < ../diskd-1.00-source/tools_Makefile.in.patch 
       patching file tools/Makefile.in 
    • Heartbeat全体をConfigure, make
      $ ./ConfigureMe configure --enable-snmp_subagent \
           --with-group-id=90 --with-ccmuser-id=90 2>&1 | tee configure.log
      $ make 2>&1 | tee make.log 
    • install

      • バイナリファイルはtools/.libs/diskd に作成されています。
        diskdだけをインストールする場合は上のバイナリファイルのインストールを参照してください。
        Heartbeat全体をインストールする場合はmake installでdiskdもインストールされます。

オプション

  • 基本オプション
    • -N <device_name> :アクセスするデバイス名。必須項目。

    • -i <intarval>:ディスクアクセスする間隔。デフォルト:30秒 指定可能範囲:1~3600秒

    • -D デーモン化の指定
    • -a <attribute>:status内の属性名。デフォルト:diskd

  • 詳細設定オプション
    • -t <timeout>:タイムアウト タイムアウトの値を設定する。指定範囲は1〜3600秒デフォルトは30秒。なお、本オプションは正常性確認で用いているread()システムコールがEAGEINでエラーとなった場合に、再度行うread()処理の最大待ち時間である。

    • -r <retry>:ディスク確認時の内部のリトライ回数。デフォルト:1回 指定可能範囲:0~10 retry=2とすると、最大3回の確認を行うことになる。

    • -I <retry_interval>:リトライする場合のリトライ間隔。デフォルト:5秒 指定可能範囲:1~3600秒

使用方法

  • respawn起動による使用方法 
    • ha.cfに以下の記述を追加する。
      respawn root /usr/lib64/heartbeat/diskd -N /dev/sdx -a diskcheck_status -i 10 
    • cib.xmlに以下の制約を追加。
      ==略==
      <constraints>
      ==略=
         <rsc_location id="rul_DK_dsc" rsc="grp_DB2">
            <rule id="prefered_rul_DK_dsc" score="-INFINITY" boolean_op="and">
                <expression attribute="diskcheck_status" id="dkstatus1" operation="defined"/>
                <expression attribute="diskcheck_status" id="dkstatus2" operation="eq" value="ERROR"/>
            </rule>
          </rsc_location>
       ==略==
      </constraints> 
  • 監視先の指定方法に関する注意
    • マウントするディスク領域の場合:
      • /dev/sdf2を他のAP等がマウントして使用しており、そのディスクを監視する場合にはdiskdでは"/dev/sdf"を指定する。
    • マウントしないディスク領域の場合:
      • 共有ディスク排他制御等で使用している、マウントして使わないディスクパーティションを監視対象として指定する場合にはその情報(たとえば/dev/sdf5)

エラーコード

レベル

出力内容

意味

出力関数

err

Could not send update

更新をattrdに送信できなかった。

send_update

err

permission denied. diskd shuld be execute by root.

rootで本プログラムが実行されていない

main

err

Argument code 0<arg> (<arg>) is not (?yet?) supported

実装されていないコマンドライン引数が指定された

main

err

non-option ARGV-elements: <arg>

必要なオプションが指定されていない

main

err

attrd registration failed

attrdに登録できなかった

main

err

Could not allocate memory

メモリの確保ができなかった

main

err

Could not open device <devicename>

指定されたデバイスがオープンできない

diskcheck

err

ioctl error, Could not flush buffer

ioctlにてバッファをフラッシュしようとしたが失敗した

diskcheck

err

Could not read from device <devicename>

read関数で読み込みに失敗した。

diskcheck

err

select failed on device <devicename>

select関数でfdを監視していたが、エラーとなった

diskcheck

err

select timeout on device <devicename>

select関数でfdを監視していたがタイムアウトとなった

diskcheck

warn

Error(s) occurred in diskcheck function.

diskcheck関数でなんらかのエラーが検出された

diskcheck

warn

read function return errno:EAGAIN

read関数にて読み込みを行ったがEAGAINが返却された

diskcheck

warn

non-defined status, new_status = <num>

規程されていないstatusが指定された

check_old_status

warn

disk status is changed, new_status = <STATUS>

ディスクの状態が変わった時。normal->ERROR / ERROR->normal

check_old_status

info

Exiting

本関数がコールされ、プログラムが終了段階にあることをログ出力する

diskd_shutdown

info

Starting <system_name>

diskdを開始し、mainloopに入る

main

info

Exiting <system_name>

diskdを終了する

main

debug

attrd registration attempt: <times>

attrdに登録を試みている。回数を含めて表示

main

debug2

Diskcheck function start

ディスクチェック関数が開始されたことを示すデバッグログ

diskcheck

debug2

Reading form data is OK

ディスクの正常状態が確認されたことを示すデバッグログ

diskcheck

リリース情報

関連情報

Heartbeat用 追加パッケージ集 (contrib)