Diskcheckは共有ディスクの健全性を確認するためのリソースエージェントです。
Diskcheckでは以下のハードウェア環境でテストしています。
注意:ドライバのバージョンの違いなどにより正常に動作しない場合があります。事前に動作検証を行なってから利用してください。
Diskchek-1.0.tar.gz (3.3 KB)
ファイルをダウンロード&展開
# tar xzvf Diskcheck-1.0.tar.gz Diskcheck-1.0/Diskcheck
# cd Diskcheck-1.0 # chown root Diskcheck # chgrp root Diskcheck # chmod 755 Diskcheck
# cp -p Diskcheck /usr/lib/ocf/resource.d/heartbeat/.
DiskcheckはACT/SBY構成の両ノードで動作することを前提に作成されています。両ノードで動作させるためにはcloneリソースの設定を使用します。
(略)
<resource>
<clone id="clone0">
<instance_attributes id="clone0_instance_attrs">
<attributes>
<nvpair id="clone0-clone_max" name="clone_max" value="2"/>
<nvpair id="clone0-clone_node_max" name="clone_node_max" value="1"/>
</attributes>
</instance_attributes>
<primitive class="ocf" type="Diskcheck" ←★ typeにDiskcheckを指定してください。
provider="heartbeat" id="clone0-diskcheck">
<operations> (略) </operations>
<instance_attributes id="clone0-diskcheck_instance_attrs"> ←★ Disk種別によって設定方法が違います。次節で解説します。
<attributes> (略) </attributes>
</instance_attributes>
</primitive>
</clone>
</resource>
(略)
<resource>
<clone id="clone0">
(略)
<instance_attributes id="clone0_instance_attrs"> (略) </instance_attributes>
<primitive class="ocf" type="Diskcheck" provider="heartbeat" id="clone0-diskcheck">
<operations> (略) </operations>
<instance_attributes id="clone0-diskcheck_instance_attrs">
<attributes> ←★ 動作環境毎に設定値が異なります。
<nvpair id="clone0-diskcheck_attr_name" name="attr_name" value="diskcheck_status"/>
<nvpair id="clone0-diskcheck_driver_type" name="driver_type" value="CCISS"/>
<nvpair id="clone0-diskcheck_ctrl_serialno" name="ctrl_serialno" value="PAB360NX3TU030"/>
</attributes>
</instance_attributes>
</primitive>
</clone>
</resource>
(略)
属性 |
MSA500G2 |
MSA1000 |
DS4300 |
fdisk※3 |
備考 |
attr_name |
任意 |
任意 |
任意 |
任意 |
デフォルト値はdiskcheck_status |
driver_type |
CCISS |
QLA |
RDAC |
FDISK |
指定必須項目。ディスク環境によって文字列が変わる |
ctrl_serialno |
指定必須 |
指定不可 |
指定不可 |
指定不可 |
MSA500G2を使う場合のコントローラのシリアルナンバー※1 |
mppfile_path |
指定不可 |
指定不可 |
指定必須 |
指定不可 |
共有ディスクのドライバ情報ファイルへのパスを指定※2 |
device_name |
指定不可 |
指定不可 |
指定不可 |
指定必須 |
共有ディスクのデバイス名(例:/dev/sdb, /dev/sdb1)を指定 |
※1:"hpacucli controller all show"を実行した際に出力される、sn: PAB360NX3TU030といった番号です。
※2:"/proc/scsi/mpp/5"といった形式で指定します。環境によって異なるので調査の上指定します。
※3:ディスクによらない方法としてfdisk -lコマンドを使用する方法もあります。fdiskでは故障が検知できない場合があるようですので、もし使用する場合は事前に十分検証を行い、利用可能か判断してください。
(略)
<constraints>
<rsc_location id="diskcheck0:grpPostgreSQLDB" rsc="grpPostgreSQLDB">
<rule id="diskcheck0:rule0" score="-INFINITY" boolean_op="and">
<expression id="diskcheck0:rule0-0" attribute="diskcheck_status" operation="defined"/>
<expression id="diskcheck0:rule0-1" attribute="diskcheck_status" operation="eq" value="ERROR"/>
</rule>
</rsc_location>
</constraints>
(略)
Diskcheckが出力するログメッセージ一覧を示します。
ログ種別 |
ログメッセージ |
意味 |
対処方法 |
info |
Diskcheck start .. |
Diskcheckの起動が開始した |
- |
info |
Diskcheck started. |
Diskcheckの起動が完了した |
- |
info |
Diskcheck stopped . |
Diskcheckが停止した |
- |
warn |
failed to update attribute (#) |
属性値の更新に失敗した。(括弧内は失敗した回数) |
attrd_updaterコマンドの実行権を確認する。 |
warn |
detected all connections are failed (#). |
共有ディスクと接続している全ケーブルが断線していることを検知した(括弧内は検知した回数) |
共有ディスクとのケーブル接続を確認する。 |
warn |
detected some connections are failed (#). |
共有ディスクと接続しているケーブルの一部が断線していることを検知した(括弧内は検知した回数) |
共有ディスクとのケーブル接続を確認する。 |
warn |
detected all connections are failed. |
共有ディスクと接続している全ケーブルが断線していることを検知した |
共有ディスクとのケーブル接続を確認する。 |
warn |
detected some connections are failed. |
共有ディスクと接続しているケーブルの一部が断線していることを検知した |
共有ディスクとのケーブル接続を確認する。 |
warn |
Disk connection is Error. |
ディスク故障を検知した |
共有ディスクとのケーブル接続を確認する。 |
err |
Diskcheck failed to start. |
Diskcheckの起動に失敗した |
直前にDiskcheckが出力したログを確認する。 |
err |
Can’t execute /usr/sbin/attrd_updater |
/usr/sbin/attrd_updater(属性値を更新するコマンド)が実行できない |
attrd_updaterコマンドの実行権を確認する。 |
err |
Can't execute /usr/sbin/hpacucli |
/usr/sbin/hpacucli(ccissドライバ使用時のディスク接続状態確認用コマンド)が実行できない |
hpacucliコマンドの実行権を確認する。 |
err |
<mppfile_path> file doesn't exist. |
パラメータ”mppfile_path”で指定したファイルが存在しない |
指定したパスにドライバ情報ファイルが存在することを確認する。 |
err |
Can't execute /usr/sbin/adapter_info |
/usr/sbin/adapter_info(qlaドライバ使用時のディスク接続状態確認用コマンド)が実行できない |
adapter_infoコマンドの実行権を確認する。 |
err |
Can't execute /sbin/fdisk |
/sbin/fdiskコマンドが実行できない |
fdiskコマンドの実行権を確認する。 |
err |
ctrl_serialno is required. |
パラメータ”driver_type”が”CCISS”であるにもかかわらずパラメータ”ctrl_serialno”が設定されていない |
コントローラのシリアルナンバーを調べて、cib.xmlに定義する |
err |
mppfile_path is required. |
パラメータ”driver_type”が”RDAC”であるにもかかわらずパラメータ”mppfile_path”が設定されていない |
ドライバ情報ファイルのパスを調べてcib.xmlに定義する。 |
err |
device_name is required. |
パラメータ”driver_type”が”FDISK”であるにもかかわらずパラメータ”device_name”が設定されていない |
共有ディスクのデバイス名を調べて、cib.xmlに定義する。 |
err |
driver type is unknown. |
cib.xmlで指定された、共有ディスクのドライバの種類が不正である |
Diskcheckに対応したdriver_typeを指定する。{CCISS|IBM|QLA|FDISK} |
err |
<stateファイル名> doesn't exist. |
stateファイルが存在しない |
/var/run/heartbeat/rsctmp/ディレクトリ配下にDiskcheck-****.stateファイルが生成されているか確認する。 |
err |
Can't read <stateファイル名> |
stateファイルの読み込みに失敗した |
stateファイルのパーミッションを確認する。 |
err |
Can't write <stateファイル名> |
stateファイルの書き出しに失敗した |
stateファイルのパーミッションを確認する。 |
err |
Diskcheck is failed. |
ディスク接続状態の通知処理に失敗した |
直前にDiskcheckが出力したログを確認する。 |
debug |
get probe. (Diskcheck is not running.) |
probe(start前に発信される起動確認)を受信した |
- |
debug |
Disk connection is Normal. |
ディスクの接続状態は正常である |
- |
debug |
Diskcheck is succeeded. |
ディスク接続状態の確認および通知処理が正常に終了した |
- |