LWD I/O フィルタを仮想マシンにアタッチすると、「 SPIF filters change failure: Operation failed.」というエラーが表示され、失敗します。
search cancel

LWD I/O フィルタを仮想マシンにアタッチすると、「 SPIF filters change failure: Operation failed.」というエラーが表示され、失敗します。

book

Article ID: 430639

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

免責事項: これは英文の記事「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.

Environment

VMware ESXi 7.x
VMware ESXi 8.x
VMware vCenter 7.x
VMware vCenter 8.x

Cause

DRS は仮想マシンのメモリ オーバーヘッドの上限を設定します。LWD フィルターが VM に接続されている場合、再構成操作を成功させるには約 20 MB 程度のオーバーヘッドが必要です。ただし、「MemOverheadGrowth」オプションがデフォルト値に設定されている DRS 対応クラスターの場合、host spec sync の memLimit の増加は LWD フィルター再構成操作を実行するのに不十分で、散発的な障害が発生します。

Resolution

クラスター レベルで 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 フィルタのアタッチが発生する処理を再試行します。