ロックファイル

情報をまとめてからだと、いつまでたっても更新できないようなので、小出しに更新していきます。
久々にOpenVZで気づいたことメモ。

先日vzctrlでstop/startを繰り返したところ、いつまでたってもVEが起動できないことがありあました。
調べてみると、vzctrlコマンドはVE起動の際に/vz/lock配下にVE番号のロックファイルを作成しているようで、処理がバッティングすることを防いでいるようです。

具体的には、


[root@vz ~]# vzctrl start 117
[root@vz ~]# ls /vz/lock/117.lck
[root@vz ~]# cat /vz/lock/117.lck
10794
といった感じで、「VE番号.lck」というファイルを作成して、その内容はvzctrlコマンドのpidのようです。

検証している過程で以下のような状態になって、vzctrlコマンドが滞積してしまいました。


[root@vz ~]# pgrep -lf vzctl
10794 /usr/sbin/vzctl start 117
10798 /usr/sbin/vzctl start 117
10823 /usr/sbin/vzctl start 117

[root@vz ~]# /var/log/vzctl.log
2007-01-30T20:35:25+0900 vzctl : VE 117 : VE already locked
2007-01-30T20:36:29+0900 vzctl : VE 117 : VE already locked
2007-01-30T20:36:55+0900 vzctl : VE 117 : VE already locked
2007-01-31T09:18:29+0900 vzctl : VE 117 : VE already locked
2007-01-31T09:22:23+0900 vzctl : VE 117 : VE already locked
2007-01-31T09:34:47+0900 vzctl : VE 117 : VE already locked

滞積した原因はvzctrlコマンドをstraceしっ放しにしておいたので、killできないプロセスができてしまったということでした。