Hitachi

高信頼化システム監視機能 HAモニタ Linux(R)(x86)編


6.12.1 共有ディスクの設定

共有ディスクの設定は,共有ディスクをLVMで切り替えるか,HA Boosterで切り替えるかによって異なります。次に,設定の概要を示します。なお,「参照+更新接続」とは,ボリュームグループを活性化することを意味します。

表6‒6 共有ディスクの設定の概要

必要な設定

共有ディスクの切り替え方法

備考

LVM

HA Booster

ボリュームグループの設定

ボリュームグループの作成

切り替えるボリュームグループを作成します。

制御グループに登録するデバイス上に,ボリュームグループを作成します。※1

(1) ボリュームグループの設定」を参照してください。

/etc/rc.sysinitファイル(/etc/lvm/lvm.confファイル※2)の編集

システム起動時に自動的に参照+更新接続しないように設定します。

システム起動時に自動的に参照+更新接続するように設定します。※1

HA Boosterの制御グループの設定

設定は不要です。

設定します。

(2) HA Boosterの制御グループの設定」を参照してください。

ファイルシステムの設定

設定します。

設定します。

ファイルシステムを切り替える場合に必要です。

(3) ファイルシステムの設定」を参照してください。

キャラクタ型スペシャルファイルの設定

HAモニタのユーザコマンドを作成し,サーバ起動時にバインド,サーバ停止時にアンバンドするように設定します。

システム起動時にバインドするように設定します。

キャラクタ型スペシャルファイルを切り替える場合に必要です。

(4) キャラクタ型スペシャルファイルの設定」を参照してください。

注※1

LVMと併用する場合に該当します。

注※2

RHEL7以降のバージョンの場合は,/etc/lvm/lvm.confファイルを編集してください。

〈この項の構成〉

(1) ボリュームグループの設定

(a) ボリュームグループの作成

LVMで切り替えるボリュームグループの作成

共有ディスクの切り替えは,ボリュームグループ単位で実行されるため,システム管理者はOSのコマンドでボリュームグループを作成する必要があります。

ボリュームグループを作成するときは,次の事項に従ってください。

  • 複数の異なるサーバで系切り替え構成にする場合,各サーバが使用するデータは異なるボリュームグループに配置するよう,共有ディスクを構成してください。

    ただし,同じサーバグループ内でリソースサーバを使用する場合は,各サーバが使用するデータを同じボリュームグループに配置できます。

  • 共有ディスク上に作成するボリュームグループの名称を両方の系で同じにしてください。

  • 共有ディスク上に作成するボリュームグループは,HAモニタが制御します。このため,システム起動時,ボリュームグループに自動的に参照+更新接続をしない設定にする必要があります。RHEL7以降のバージョンの場合は/etc/lvm/lvm.confファイル,RHEL6の場合は/etc/rc.sysinitファイルを編集してください。

HA Boosterで切り替えるボリュームグループの作成

HA Boosterを使用する場合,制御グループ単位で共有ディスクを切り替えます。LVMと併用する場合,制御グループに登録するデバイス上に,ボリュームグループを作成します。作成したボリュームグループは,システム起動時,自動的に参照+更新接続する設定にする必要があります。RHEL7以降のバージョンの場合は/etc/lvm/lvm.confファイル,RHEL6の場合は/etc/rc.sysinitファイルを編集してください。

/etc/rc.sysinitファイルについては,「(b) /etc/rc.sysinitファイルの編集」および「(c) /etc/rc.sysinitファイルの編集例(LVMを使用する場合)」を参照してください。

/etc/lvm/lvm.confファイルについては,「(d) /etc/lvm/lvm.confファイルの編集」および「(e) /etc/lvm/lvm.confファイルの編集例」を参照してください。

(b) /etc/rc.sysinitファイルの編集

/etc/rc.sysinitファイルの編集について,それぞれ次に示します。

  • LVMによる切り替えを使用する場合

    ファイル中の"/sbin/lvm vgchange -a y",または"/sbin/lvm vgchange -a ay"を含むすべての行を検索し,"/sbin/lvm.static vgchange -a y --ignorelockingfailure "を削除します。

    削除することによってactionで実行するコマンドがなくなる場合は,該当するaction自体を削除するか,またはコメントアウトしてください。また,actionを削除することによって,ifコマンドのthen節などで実行するコマンドがなくなる場合は,shellの構文エラーとならないよう,":"(コロン)による空行を挿入してください。

    共有ディスク以外で,システム起動時,ボリュームグループに自動的に参照+更新接続をしたいリソースがあるとき,およびボリュームグループをHA Boosterで切り替えるときは,削除した行の次の行に"/sbin/lvm.static vgchange -a y 接続するボリュームグループ名 --sysinit",または"/sbin/lvm vgchange -a ay 接続するボリュームグループ名 --sysinit")を追加します。

  • HA Boosterによる切り替えだけを使用する場合

    HA Boosterによる切り替えだけを使用し,LVMだけによる切り替えを使用しない場合は,/etc/rc.sysinitファイルの編集は不要です。

重要

/etc/rc.sysinitファイルを編集する場合は十分注意してください。誤って編集すると,システムが起動できなくなるおそれがあります。システムが起動できなくなる例を次に示します。

  • /etc/rc.sysinitファイルの編集を誤り,shellの構文エラーになった場合

  • /rootや/homeなど起動時に必要な領域にLVMを割り当てている場合で,/etc/rc.sysinitファイルにvgchange -a yによる接続を記載していないとき

/etc/rc.sysinitファイルの編集後,Red Hat Enterprise Linuxのinitscriptsパッケージを更新すると,/etc/rc.sysinitファイルが上書きされて編集した情報が消失することがあるので注意してください。編集した情報が消失した場合,/etc/rc.sysinitファイルを再編集してください。

以降に,/etc/rc.sysinitファイルの編集例を示します。

(c) /etc/rc.sysinitファイルの編集例(LVMを使用する場合)

LVMを使用する場合の/etc/rc.sysinitファイルの編集例を示します。

OSがRed Hat Enterprise Linux 6.1の場合の例を次に示します。

編集前(システム上のすべてのボリュームグループを自動的に参照+更新接続する設定)
・
・
if [ -x /sbin/lvm ]; then
    action $"Setting up Logical Volume Management:" /sbin/lvm vgchange -a y --sysinit
fi
・
・
編集後(ボリュームグループを自動的に参照+更新接続しない場合)
・
・
  if [ -x /sbin/lvm ]; then
#     action $"Setting up Logical Volume Management:" /sbin/lvm vgchange -a y --sysinit
     :
  fi
・
・
編集後(vg01vg02を自動的に参照+更新接続する場合)
・
・
if [ -x /sbin/lvm ]; then
#    action $"Setting up Logical Volume Management:" /sbin/lvm vgchange -a y --sysinit
     /sbin/lvm vgchange -a y vg01 --sysinit
     /sbin/lvm vgchange -a y vg02 --sysinit
fi
・
・

OSがRed Hat Enterprise Linux 6.4の場合の例を次に示します。

編集前(システム上のすべてのボリュームグループを自動的に参照+更新接続する設定)
・
・
if [ -x /sbin/lvm ]; then
    action $"Setting up Logical Volume Management:" /sbin/lvm vgchange -a ay --sysinit
fi
・
・
編集後(ボリュームグループを自動的に参照+更新接続しない場合)
・
・
if [ -x /sbin/lvm ]; then
#     action $"Setting up Logical Volume Management:" /sbin/lvm vgchange -a ay --sysinit
     :
fi
・
・
編集後(vg01vg02を自動的に参照+更新接続する場合)
・
・
if [ -x /sbin/lvm ]; then
#    action $"Setting up Logical Volume Management:" /sbin/lvm vgchange -a ay --sysinit
     /sbin/lvm vgchange -a ay vg01 --sysinit
     /sbin/lvm vgchange -a ay vg02 --sysinit
fi
・
・

OSがRed Hat Enterprise Linux 6.6,6.7,6.8,6.9および6.10の場合の例を次に示します。

編集前(システム上のすべてのボリュームグループを自動的に参照+更新接続する設定)
・
・
if [ -x /sbin/lvm ]; then
    if [ ! -f /.nolvm ] && ! strstr "$cmdline" nolvm ; then
        action $"Setting up Logical Volume Management:" /sbin/lvm vgchange -a ay --sysinit --ignoreskippedcluster
    else
        echo $"Logical Volume Management disabled at boot."
    fi
fi
・
・
編集後(ボリュームグループを自動的に参照+更新接続しない場合)
・
・
if [ -x /sbin/lvm ]; then
    if [ ! -f /.nolvm ] && ! strstr "$cmdline" nolvm ; then
#        action $"Setting up Logical Volume Management:" /sbin/lvm vgchange -a ay --sysinit --ignoreskippedcluster
   :
    else
        echo $"Logical Volume Management disabled at boot."
    fi
fi
・
・
編集後(vg01vg02を自動的に参照+更新接続する場合)
・
・
if [ -x /sbin/lvm ]; then
    if [ ! -f /.nolvm ] && ! strstr "$cmdline" nolvm ; then
#        action $"Setting up Logical Volume Management:" /sbin/lvm vgchange -a ay --sysinit --ignoreskippedcluster
         /sbin/lvm vgchange -a ay vg01 --sysinit --ignoreskippedcluster
         /sbin/lvm vgchange -a ay vg02 --sysinit --ignoreskippedcluster
    else
        echo $"Logical Volume Management disabled at boot."
    fi
fi
・
・

(d) /etc/lvm/lvm.confファイルの編集

HAモニタが制御する共有ディスクについて,次の設定となるように,/etc/lvm/lvm.confファイルの"auto_activation_volume_list"を編集してください。

  • HA Boosterの制御対象のボリュームグループ(制御グループに登録したデバイスの上のボリュームグループ):

    システム起動時に,ボリュームグループを自動的に参照+更新接続(活性化)するように設定する。

  • HA Boosterの制御対象外のボリュームグループ:

    システム起動時に,ボリュームグループを自動的に参照+更新接続(活性化)しないように設定する。

(e) /etc/lvm/lvm.confファイルの編集例

LVMを使用する場合の/etc/lvm/lvm.confファイルの編集例を示します。

OSがRed Hat Enterprise Linux server 7.1の場合の例を次に示します。

編集前(システム上のすべてのボリュームグループを自動的に参照+更新接続する設定)
activation {
・
・
# If auto_activation_volume_list is defined but empty, no volumes will be
# activated automatically and --activate ay/-a ay will do nothing.
#
# auto_activation_volume_list = []
 
# If auto_activation_volume_list is defined and it's not empty, only matching
# volumes will be activated either automatically or by using --activate ay/-a ay.
#
# "vgname" and "vgname/lvname" are matched exactly.
# "@tag" matches any tag set in the LV or VG.
# "@*" matches if any tag defined on the host is also set in the LV or VG
#
# auto_activation_volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
・
・
}
編集後(ボリュームグループを自動的に参照+更新接続しない場合)
activation {
・
・
# If auto_activation_volume_list is defined but empty, no volumes will be
# activated automatically and --activate ay/-a ay will do nothing.
#
# auto_activation_volume_list = []
 
# If auto_activation_volume_list is defined and it's not empty, only matching
# volumes will be activated either automatically or by using --activate ay/-a ay.
#
# "vgname" and "vgname/lvname" are matched exactly.
# "@tag" matches any tag set in the LV or VG.
# "@*" matches if any tag defined on the host is also set in the LV or VG
#
# auto_activation_volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
 
auto_activation_volume_list = []
・
・
}
編集後(vg01とvg02を自動的に参照+更新接続する場合)
activation {
・
・
# If auto_activation_volume_list is defined but empty, no volumes will be
# activated automatically and --activate ay/-a ay will do nothing.
#
# auto_activation_volume_list = []
 
# If auto_activation_volume_list is defined and it's not empty, only matching
# volumes will be activated either automatically or by using --activate ay/-a ay.
#
# "vgname" and "vgname/lvname" are matched exactly.
# "@tag" matches any tag set in the LV or VG.
# "@*" matches if any tag defined on the host is also set in the LV or VG
#
# auto_activation_volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
 
auto_activation_volume_list = [ "vg01", "vg02" ]
・
・
}

OSがRed Hat Enterprise Linux server 7.2の場合の例を次に示します。

編集前(システム上のすべてのボリュームグループを自動的に参照+更新接続する設定)
# Configuration section activation.
activation {
・
・
        # Configuration option activation/auto_activation_volume_list.
        # Only LVs selected by this list are auto-activated.
・
・
        # Example
        # volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
        # 
        # This configuration option does not have a default value defined.
・
・
}
編集後(ボリュームグループを自動的に参照+更新接続しない場合)
# Configuration section activation.
activation {
・
・
        # Configuration option activation/auto_activation_volume_list.
        # Only LVs selected by this list are auto-activated.
・
・
        # Example
        # volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
        # 
        # This configuration option does not have a default value defined.

    auto_activation_volume_list = []
・
・
}
編集後(vg01とvg02を自動的に参照+更新接続する場合)
# Configuration section activation.
activation {
・
・
        # Configuration option activation/auto_activation_volume_list.
        # Only LVs selected by this list are auto-activated.
・
・
        # Example
        # volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
        # 
        # This configuration option does not have a default value defined.

    auto_activation_volume_list = [ "vg01", "vg02" ]
・
・
}

OSがRed Hat Enterprise Linux server 7.3~7.7,8.1,および8.2の場合の例を次に示します。

編集前(システム上のすべてのボリュームグループを自動的に参照+更新接続する設定)
# Configuration section activation.
activation {
・
・
# Configuration option activation/auto_activation_volume_list.
# Only LVs selected by this list are auto-activated.
・
・
# Example
# auto_activation_volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
#
# This configuration option does not have a default value defined.
・
・
}
編集後(ボリュームグループを自動的に参照+更新接続しない場合)
# Configuration section activation.
activation {
・
・
# Configuration option activation/auto_activation_volume_list.
# Only LVs selected by this list are auto-activated.
・
・
# Example
# auto_activation_volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
#
# This configuration option does not have a default value defined.
auto_activation_volume_list = []
・
・
}
編集後(vg01とvg02を自動的に参照+更新接続する場合)
# Configuration section activation.
activation {
・
・
# Configuration option activation/auto_activation_volume_list.
# Only LVs selected by this list are auto-activated.
・
・
# Example
# auto_activation_volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
#
# This configuration option does not have a default value defined.
auto_activation_volume_list = [ "vg01", "vg02" ]
・
・
}

(2) HA Boosterの制御グループの設定

HA Boosterを使用する場合,制御グループ単位で共有ディスクを切り替えます。HAモニタは,制御グループのアクセス権限をサーバ単位で変更することで,共有ディスクを制御します。

HA Boosterの制御グループには,ディスクデバイスを登録します。サーバごとに,制御グループを独立させてください。制御グループへの登録方法については,HA Booster関連のドキュメントを参照してください。

なお,LVMによる切り替えだけを使用し,HA Boosterによる切り替えを使用しない場合は,この設定は不要です。

(3) ファイルシステムの設定

共有ディスク上のファイルシステムを使用する場合,OSに対してファイルシステムの設定をする必要があります。

ファイルシステムの切り替え制御では,HAモニタがマウント・アンマウントします。したがって,システム起動時に自動的にマウントしないように設定してください。設定方法は,OSのマニュアルを参照してください。

HAモニタが制御するファイルシステムを/etc/fstabファイルに指定する場合,次の点に注意してください。

(4) キャラクタ型スペシャルファイルの設定

キャラクタ型スペシャルファイルは,使用する条件によってバインド・アンバインドの要否やタイミングが異なります。

キャラクタ型スペシャルファイルを使用する条件と,バインド・アンバインドの要否を,次の表に示します。

表6‒7 キャラクタ型スペシャルファイルを使用する条件と,バインドまたはアンバインドの要否

キャラクタ型スペシャルファイルを使用する条件

バインド・アンバインドの要否

HA Boosterが管理する制御グループにない共有ディスク上

システム起動時ではなく,ボリュームグループに参照+更新接続をした時点でバインドし,ボリュームグループの切り離しをした時点でアンバインドします。HAモニタのユーザコマンドで設定します。

また,ボリュームグループを切り離す前にアンバインドする必要があるため,HAモニタの環境設定,およびサーバ対応の環境設定のdeviceoff_orderオペランドreverseを設定する必要があります。

キャラクタ型スペシャルファイルを使用するすべてのサーバに対して設定してください。

HA Boosterが管理する制御グループにある共有ディスク上

システム起動時に,次のファイルなどを用いてキャラクタ型スペシャルファイルをバインドします。アンバインドは不要です。

  • /etc/sysconfig/rawdevices

  • /etc/udev/rules.d配下のudevのruleファイル

  • HA Boosterの起動スクリプト

注※

HAモニタの環境設定のdeviceoff_orderオペランドについては,「8.3.1 HAモニタの環境設定(sysdef)」を参照してください。また,サーバ対応の環境設定のdeviceoff_orderオペランドについては,「8.4.1 サーバ対応の環境設定(servers)」を参照してください。

以降に,キャラクタ型スペシャルファイルの設定に関するユーザコマンドについて説明します。ユーザコマンドの作成方法についての詳細は,「6.19 ユーザコマンドの作成」を参照してください。

(a) ユーザコマンドの発行タイミング

次のタイミングでOSのrawコマンドが発行されるよう,ユーザコマンドを設定します。

キャラクタ型スペシャルファイルのバインド

  • 実行サーバの起動時(-s start)(サーバ種別:online

  • 待機サーバの系切り替え処理開始時

    • 実行サーバでサーバ障害が発生(-a start)(サーバ種別:standby

    • 実行系で系障害が発生(-h start)(サーバ種別:standby

    • 実行系から待機系に計画系切り替えを実行(-w start)(サーバ種別:standby

キャラクタ型スペシャルファイルのアンバインド

  • 実行サーバの終了時

    • 実行サーバでサーバ障害が発生(-a start)(サーバ種別:online

    • 実行系から待機系に計画切り替えを実行(-w start)(サーバ種別:online

    • 実行サーバでサーバ障害が発生(系切り替え不可)(-o start)(サーバ種別:online

    • 実行サーバが正常終了(-e start)(サーバ種別:online

    • 実行サーバが計画終了(-p start)(サーバ種別:online

  • 待機サーバの起動時(-s start)(サーバ種別:standby

  • 待機サーバの系切り替え失敗時(-f start)(サーバ種別:standby

注※

モニタモードのサーバまたはリソースサーバの場合,渡されないパラメタであり,このタイミングでのアンバインドは不要です。

(b) ユーザコマンドのコーディング例

サーバ(LinuxTP1)に対して,共有ディスク上(/dev/vg10)でキャラクタ型スペシャルファイル(/dev/raw/raw1)を論理ボリューム(lvol0)にバインドする場合の,ユーザコマンドのコーディング例を次に示します。

このコーディング例は,サンプルファイルとしてHAモニタのサンプルファイル用ディレクトリの下に,usrcommand_raw_bindのファイル名で格納されています。

# サーバ識別名の定義
SERV="LinuxTP1"                        # サーバ識別名:LinuxTP1
# ユーザ名
USER_NAME="TP1user"                    # ユーザ名:TP1管理者またはHiRDB管理者
# デバイス名称の定義
RAW_NAME="/dev/raw/raw1"               # rawデバイス名称
DEV_NAME="/dev/vg10/lvol0"             # 共有ディスク上の論理ボリューム名称
 
# rawデバイスをアンバインドする
func_unbind(){
# デバイスが存在しなくなるまで待つ
COUNT=0
while [ \( ${COUNT} -lt 10 \) -a \( -e "$1" \) ]
do
   # rawデバイスを使用中のプロセスを強制終了する
   fuser -k "$1" >/dev/null 2>&1
   # コマンドの処理が完了するのを1秒待つ
   sleep 1
   # デバイスのアンバインド
   raw "$1" 0 0
   COUNT=`expr ${COUNT} + 1`
done
}
 
# rawデバイスをバインドする
func_bind(){
# デバイスのバインド
raw "$1" "$2"
# デバイスが使用可能になるまで待つ
COUNT=0
while [ ${COUNT} -lt 10 ]
do
   # デバイスへのアクセスを試行し,アクセスできればバインド完了
   dd of=/dev/null if="$1" bs=1 count=0 >/dev/null 2>&1
   if [ "$?" = 0 ]
   then
     break
   fi
   # 1秒sleepしリトライする
   sleep 1
   COUNT=`expr ${COUNT} + 1`
done
# デバイスの所有者を変更
chown $USER_NAME "$1"
}
 
# Main
# 実行サーバの起動開始時,または待機サーバの系切り替え開始時に
# rawデバイスをバインドする
# 実行サーバの終了開始時,待機サーバの起動開始時,または待機サーバの
# 系切り替え失敗時にrawデバイスをアンバインドする
PATH=/bin:/usr/bin:/sbin
export PATH
if [ "$2" = "${SERV}" ]
then
   if [ "$4" = "online" ]
   then
     case "$5" in
     "-s" )                      # 実行サーバの起動
       if [ "$6" = "start" ]     # 状態変化の開始
       then
         func_bind ${RAW_NAME} ${DEV_NAME}
       fi
     ;;
     "-a" | "-w" | "-o" | "-e" | "-p" )  # 実行サーバの終了
                                 # (サーバ障害,計画系切り替え,
                                 # サーバ障害(系切り替え不可能),
                                 # 正常終了,計画終了)
       if [ "$6" = "start" ]     # 状態変化の開始
       then
         func_unbind ${RAW_NAME} ${DEV_NAME}
       fi
     ;;
     esac
   else
     case "$5" in
     "-a" | "-h" | "-w" )        # 待機サーバ系切り替え
                                 # (サーバ障害,系障害,計画切り替え)
       if [ "$6" = "start" ]     # 状態変化の開始
       then
         func_bind ${RAW_NAME} ${DEV_NAME}
       fi
     ;;
     "-s" | "-f" )               # 待機サーバ起動,または系切り替え失敗
       if [ "$6" = "start" ]     # 状態変化の開始
       then
         func_unbind ${RAW_NAME} ${DEV_NAME}
       fi
     ;;
     esac
   fi
fi

このコーディング例では,実行サーバ起動時の実行系,または系切り替え時の系切り替え先の系でfunc_bindを実行し,キャラクタ型スペシャルファイルのバインドをしています。また,実行サーバ終了時の実行系,待機サーバ起動時の待機系,または系切り替え失敗時の系切り替えに失敗した待機系でfunc_unbindを実行し,キャラクタ型スペシャルファイルのアンバインドをしています。

func_bindでは,rawコマンドでキャラクタ型スペシャルファイルのバインドを実行します。そのあとに,キャラクタ型スペシャルファイルがアクセス可能になるまで,次の処理を1秒間隔で10回リトライしています。

  • ddコマンド

    キャラクタ型スペシャルファイルがアクセス可能になったか調べます。

  • sleepコマンド

    キャラクタ型スペシャルファイルがバインドされるのを待ちます。

  • chownコマンド

    キャラクタ型スペシャルファイルの所有者を変更します。ただし,RHEL6以降では,ユーザコマンドで所有者を変更する必要はありません。所有者の変更は,OSのudevの機能で行います。udevの設定については,OSのマニュアルを参照してください。

また,バインドしたキャラクタ型スペシャルファイルの所有者を指定のユーザに設定しています。

func_unbindでは,キャラクタ型スペシャルファイルがアンバインドするまで,次の処理を1秒間隔で10回リトライしています。

  • fuserコマンド

    系切り替え時に,キャラクタ型スペシャルファイルを使用するプロセスが存在するとアンバインドできないため,共有ディスクの切り離しに失敗します。このため,fuserコマンドでキャラクタ型スペシャルファイルを使用しているすべてのプロセスを強制停止します。

  • sleepコマンド

    キャラクタ型スペシャルファイルがアンバインドされるのを待ちます。

  • rawコマンド

    キャラクタ型スペシャルファイルをアンバインドします。

なお,このコーディング例では,なんらかの要因でバインド処理に10秒以上要した場合,最後に実行されるchownコマンドによる権限変更に失敗します。このままサーバの起動を継続する設定の場合,サーバがrawデバイスにアクセスするときまでエラーに気づけません。

注※

サーバ環境設定のuoc_neckを省略,またはnouseを指定。

このため,次のことを検討してください。

  • chownコマンドによる権限変更に失敗したタイミングでサーバの起動を中止するように,サーバ環境設定のuoc_neckuseを指定する。

    なお,サンプルのユーザコマンドでは,最後に実行するchownコマンドの結果がユーザコマンドの結果となっていますが,chownコマンドの後に処理を記述するなど,サンプルから変更している場合は,ユーザコマンドの結果にchownコマンドの結果などが反映されるように考慮してください。

  • サーバ環境設定のuoc_neckuseにしない場合,エラー発生に気づけるようにユーザコマンド内でsyslogなどにメッセージを出力する。

  • 必要に応じて,キャラクタ型スペシャルファイルがアクセス可能になるまでリトライする時間を変更してください。