この日記のはてなブックマーク数 Subscribe with livedoor Reader

2012-10-25 Thu


failed to pause VDI [XenServer]


下記、XenServer 5.6 SP2 + XS56EFP1001, XS56EFP1004, XS56EFP1005, XS56EFP1006, XS56ESP2, XS56ESP2001, XS56ESP2002, XS56ESP2003, XS56ESP2004, XS56ESP2005, XS56ESP2006, XS56ESP2007, XS56ESP2008, XS56ESP2009, XS56ESP2011, XS56ESP2013, XS56ESP2014, XS56ESP2015, XS56ESP2016

な環境での話。

検証環境でテストしていたら、妙な現象が。特定の VM でスナップショットが取れなくなっている。

Image

怪しげなログ(/var/log/SMlog)

[15446] 2012-10-12 16:03:53.947425 ***** BLKTAP2:call_pluginhandler: EXCEPTION XenAPI.Failure, ['HOST_OFFLINE', 'OpaqueRef:5d79ee19-6942-531e-7eb3-833fdbb29044']
[15446] 2012-10-12 16:03:53.954785 lock: released /var/lock/sm/a4c3399a-4cde-6738-2aab-d627f456f369/sr
[15446] 2012-10-12 16:03:53.955676 ***** vdi_snapshot: EXCEPTION util.SMException, failed to pause VDI c7514e13-25bd-4e0b-8ab7-32aad371a232
  File "/opt/xensource/sm/blktap2.py", line 1212, in call_pluginhandler
    {"sr_uuid":sr_uuid,"vdi_uuid":vdi_uuid})
  File "/usr/lib/python2.4/site-packages/XenAPI.py", line 229, in __call__
    return self.__send(self.__name, args)
  File "/usr/lib/python2.4/site-packages/XenAPI.py", line 133, in xenapi_request
    result = _parse_result(getattr(self, methodname)(*full_params))
  File "/usr/lib/python2.4/site-packages/XenAPI.py", line 203, in _parse_result
    raise Failure(result['ErrorDescription'])

[15446] 2012-10-12 16:03:53.954785      lock: released /var/lock/sm/a4c3399a-4cde-6738-2aab-d627f456f369/sr
[15446] 2012-10-12 16:03:53.955676      ***** vdi_snapshot: EXCEPTION util.SMException, failed to pause VDI c7514e13-25bd-4e0b-8ab7-32aad371a232
  File "/opt/xensource/sm/SRCommand.py", line 94, in run
    return self._run_locked(sr)
  File "/opt/xensource/sm/SRCommand.py", line 131, in _run_locked
    return self._run(sr, target)
  File "/opt/xensource/sm/SRCommand.py", line 169, in _run
    return target.snapshot(self.params['sr_uuid'], self.vdi_uuid)
  File "/opt/xensource/sm/LVHDSR.py", line 997, in snapshot
    raise util.SMException("failed to pause VDI %s" % vdi_uuid)

[15446] 2012-10-12 16:03:53.982316      Raising exception [82, Failed to snapshot VDI [opterr=failed to pause VDI c7514e13-25bd-4e0b-8ab7-32aad371a232]]


HOST_OFFLINEとか出てるけど、全プールのホストは生きてる。適当にググってみたけど、それっぽいエラーがなかった。たまには

Citrix Support Forums

で質問してみようと、事象をまとめてたら、なんとなく原因がわかってしまった。

こんな感じで追っていった。

1. EXCEPTION を投げてるコードをざっくり眺める
-> ぱっと見、疑わしき点はなかった
2. VDIの破損を疑う
-> 対処のVMは、問題なく起動したり、shutdownできるので、VDIが破損している可能性はなさそう。
3. 対象のVMを full copy して Cloneを作成してみる。
-> 問題なく、Snapshot が取得可能。元VMの構成情報がおかしい?

VDIの操作で失敗しているので、VDIの構成情報を眺めてみることに。

まずはvdiのuuidを特定する。

# xe vbd-list vm-name-label=<VMの名前> params=vdi-uuid
vdi-uuid ( RO) : c7514e13-25bd-4e0b-8ab7-32aad371a232

vdi-uuid ( RO) : <not in database>


片方は、CD-ROMドライブなので、必要なのは 上のほう。

# xe vdi-param-list uuid=c7514e13-25bd-4e0b-8ab7-32aad371a232


このパラメータを、full copy して問題がない VM と見比べると、次のことがわかった。

VM が電源ONされると、sm-config に

host_OpaqueRef:1279ce49-0bdf-809f-d4a3-df67d3021873: RO;


が追加される。host_OpaqueRef は、VMを稼働させるhostによって、uuid が異なる(が、なんと、その uuidは host-uuidじゃない。意味わからん)
起動が完了すると

host_OpaqueRef:1279ce49-0bdf-809f-d4a3-df67d3021873: RW;


になる。VMを shutdown すると、このパラメータは消される。

で、Snapshotが取れないVMは、停止状態で

host_OpaqueRef:5d79ee19-6942-531e-7eb3-833fdbb29044: RO;


稼動状態で

host_OpaqueRef:1279ce49-0bdf-809f-d4a3-df67d3021873: RW; host_OpaqueRef:5d79ee19-6942-531e-7eb3-833fdbb29044: RO;


ん?2つある...

実は、この問題となったVMは、検証環境を再構築する際に、退避させていた VM。

どうやら、強制shutdownしたか、起動途中で強制shutdown したかはわからないが、sm-config にこのゴミ情報が残った状態で、VMのバックアップが取られてしまったらしい。
で、新環境では、その host_OpaqueRef で指定される host は存在しないので、HOST_OFFLINE となった模様(VMのmeta情報に、バックアップしては困る(多分しちゃだめな)情報が残ることは、ままある話だけど……以前あった話では、そのVMでは、使ってないSR情報が入ってて、そのSRがないから meta情報は importできないよ!って怒られたことがある。泣いた...)

で、こまったことに、sm-config って RW じゃない。

sm-config (MRO):


xeコマンド使って、書き換えできない...良い子は真似しちゃいけない、マスターサーバ上での state.db 直接書き換え

# xe pool-ha-disable
# /etc/init.d/xapi stop
# cp /var/xapi/state.db /var/xapi/state.db.bak
# vi /var/xapi/state.db <- 該当部分の削除
# /etc/init.d/xapi start


slaveサーバには、古い情報が残るけど、snapshotの作成&削除とかしてると、更新されるのでまぁいいでしょう。

state.db のクリーナーが欲しい今日この頃。

と、ここまで来ても、なんで RO な host_OpaqueRef が残ってたか、いつの時点でかはトレースできなかった。



IPv4/IPv6 meter
検索キーワードは複数指定できます
ChangeLogを検索
Google
Web www.kunitake.org
思ったより安い……時もある、Amazon

カテゴリ