免責事項: これは英文の記事「Attaching LWD i/o filter to virtual machines fails with ""SPIF filters change failure: Operation failed.""」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。
仮想マシンのバックアップを実行したり、VMware Cloud Disaster Recovery (VCDR) を使用してディザスタリカバリ (DR) 保護を設定したりする場合、プロセスの一環として LWD I/O フィルタが仮想マシンにアタッチされます。しかし、フィルタの初期化中に「out of memory」などのエラーが発生し、仮想マシンでパニックやクラッシュが発生することがあります。
vmware.log には、次のイベントが報告されます。
YYYY-MM-DDTHH:MM:SS.xxxZ In(05) vcpu-0 - DISKLIB-CHAINESX : ChainESXOpenSubChain:(0) fid = xxxxxxxxx, extentType = 2
YYYY-MM-DDTHH:MM:SS.xxxZ In(05) vcpu-0 - DISKLIB-CHAINESX : ChainESXOpenSubChain:(1) fid = xxxxxxxxx, extentType = 1
YYYY-MM-DDTHH:MM:SS.xxxZ In(05) vcpu-0 - PluginLdr_Load: Loaded plugin 'libvmiof-disk-vmwarelwd.so' from '/usr/lib64/vmware/plugin/libvmiof-disk-vmwarelwd.so'
YYYY-MM-DDTHH:MM:SS.xxxZ In(05) vcpu-0 - LWD: Initializing the LWD filter (process: 19146368)
YYYY-MM-DDTHH:MM:SS.xxxZ In(05) vcpu-0 - FiltLib: VMKPrivate_FiltModInitDiskInfo failed: "Out of memory (ok to retry)" (195887125).
YYYY-MM-DDTHH:MM:SS.xxxZ In(05) vcpu-0 - FiltLib: FiltLibAttachToFiltMod failed with error: "Operation failed" (1).
YYYY-MM-DDTHH:MM:SS.xxxZ In(05) vcpu-0 - DISKLIB-LIB : DiskLibFiltLibInit: Failed to create filtLib context: Operation failed (334).
YYYY-MM-DDTHH:MM:SS.xxxZ In(05) vcpu-0 - DISKLIB-LIB : DiskLibOpenInt: Failed to create filtLib context: Operation failed (334).
vpxa.log には以下のイベントが報告されます。
YYYY-MM-DDTHH:MM:SS.xxxZ info vpxa[xxxxxxx] [Originator@6876 sub=Default opID=xxxxxxxx-xxxx-xx-xx-xx] [VpxLRO] -- ERROR task-xxxxxx -- vm-48 -- vim.VirtualMachine.reconfigure: vim.fault.GenericVmConfigFault:
--> Result:
--> (vim.fault.GenericVmConfigFault) {
--> faultCause = (vmodl.MethodFault) null,
--> faultMessage = (vmodl.LocalizableMessage) [
--> (vmodl.LocalizableMessage) {
--> key = "msg.disk.spifChangeFailure",
--> arg = (vmodl.KeyAnyValue) [
--> (vmodl.KeyAnyValue) {
--> key = "1",
--> value = "msg.iofilter.failure"
--> }
--> ],
--> message = "SPIF filters change failure: Operation failed."
--> }
--> ],
--> reason = "SPIF filters change failure: Operation failed."
--> msg = "SPIF filters change failure: Operation failed.
VMware ESXi 7.x
VMware ESXi 8.x
VMware vCenter 7.x
VMware vCenter 8.x
DRS は仮想マシンのメモリ オーバーヘッドの上限を設定します。LWD フィルターが VM に接続されている場合、再構成操作を成功させるには約 20 MB 程度のオーバーヘッドが必要です。ただし、「MemOverheadGrowth」オプションがデフォルト値に設定されている DRS 対応クラスターの場合、host spec sync の memLimit の増加は LWD フィルター再構成操作を実行するのに不十分で、散発的な障害が発生します。
クラスター レベルで MemOverheadGrowth を増やすには、以下の手順に従ってください。
1) vCenter に root としてログインします。
2) vpxd.cfg のコピーを作成します。# cp -p /etc/vmware-vpx/vpxd.cfg /etc/vmware-vpx/vpxd.cfg.bak
3) vi でエディタで vpxd.cfg ファイルを編集します。 <vpxd> と </vpxd> タグの間に次の設定を追加します。
<cluster> <VMOverheadGrowthLimit>6</VMOverheadGrowthLimit> </cluster>
4) esc > wq! でファイルを保存します。
5) 変更をすべてのクラスタに適用するために、vpxd サービスを再起動します。# service-control --stop vmware-vpxd && service-control --start vmware-vpxd
6) LWD フィルタのアタッチに失敗した仮想マシンの vmx を再起動します。
- 仮想マシンが登録されている ESXi ホストに SSH 接続し、以下のコマンドを実行して VMID を確認します。
# vim-cmd vmsvc/getallvms
- 以下のコマンドを実行し、LWD フィルタのアタッチに失敗した仮想マシンの vmx を再起動します。
# vim-cmd vmsvc/power.suspendResume <VMID>
もしくは、
- 操作が可能な場合は、仮想マシンを再起動(パワーオフ、パワーオン)します。
7) LWD フィルタのアタッチが発生する処理を再試行します。