>>503
>>505は当該スクリプトの停止処理が入る前にlibvirt-bin(libvirtd)が停止開始
しているのが原因。つまりupstartが原因。upstartじゃない人ごめんなさい。
なお、当該スクリプトの停止処理はupstartのrcジョブから呼ばれている。

upstartよくわかってないけど、とりあえず

(1)save用のupstartジョブを用意し、
start on starting rc RUNLEVEL=[06]なtaskとし
中身に先のスクリプトのstop処理を入れる。
(2)libvirt-binの停止をsave用ジョブのstoppedで始めるようにする。

としたら保存処理が最後まで進んだ。
ただしコンソールより強制終了されているプロセスがあるように見える。
またresume後に復帰できるときもあるが、kvmが暴走(繋がらない)という
パターンもある。

順序としては
(1)save用のupstartジョブ開始〜終了
(2-A)ランレベル0/6のrcジョブ開始〜リブート
(2-B)libvirt-binの停止開始〜終了
となる感じ。自動resumeは保存失敗するときがあるのでやってない。

俺じゃここまでが限界。あとupstartは嫌いになった。