PowerStore:NVMe/TCPを使用するvSphere環境で、単一のPowerStoreノードが使用できない場合にI/Oタイムアウトが発生する
概要: vSphere 8.0U2およびNVMe/TCPを使用している場合、単一のPowerStoreノードが使用できないシナリオでI/Oタイムアウトが発生することがあります。(ユーザーが修正可能)
現象
vSphere 8.0U2およびNVMe/TCPをストレージ プロトコルとして使用すると、単一のPowerStoreノードが使用不可となるシナリオでI/Oタイムアウトが発生することがあります。
このようなシナリオの例:
- PowerStore NDU
- PowerStoreノードのシャットダウン
- ノード パニックやネットワークの中断などの予期しない状況
この問題は、次の状況で発生する可能性があります。
- ESXiバージョン8.0U2が使用されている
- NVMe/TCPプロトコルが使用されます
- 1つのPowerStoreノードが何らかの理由で使用不可になり、別のノードは使用可能なままです
- I/Oタイムアウトは、ESXiによってホストされているVMで実行されているアプリケーション、またはVMにインストールされているオペレーティング システムによって観察されます
- PowerStore I/Oメトリックに長時間実行されるI/Oが表示されない
この問題の影響を受けるのはNVMe/TCPのみです。NVMe/FC、iSCSI、FCプロトコルは影響を受けません。この問題はESXiホストにのみ影響し、他のタイプのホストはこの問題の影響を受けません。
この問題は、アプリケーション エラーとして、またはESXiホストによってホストされているVM内で実行されているアプリケーション サービスへの影響として現れる場合があります。また、ゲスト オペレーティング システム(ESXiホストで実行されているVMにインストールされているオペレーティング システム)でエラーが発生する可能性もあります。影響のレベルは、アプリケーション ソフトウェアがI/Oタイムアウトを処理する方法に起因します。
この問題は断続的に発生します。複数のホストが接続されている場合、一部のホストのみが問題を経験する可能性があります。
この問題は、vVolデータストアと非vVolデータストアの両方に影響します。
原因
これは、ESXi 8.0U2の問題が原因です。あるPowerStoreノードのNVMe/TCPコントローラーが何らかの理由で使用できなくなったが、別のノードが使用可能でI/Oを処理できる場合、パスのフェールオーバー プロセスに遅延が発生します。この遅延により、I/Oタイムアウトが発生する場合があります。
解決方法
NVMe/TCPをご利用のお客様には、ESXi 8.0U2を使用しないことをお勧めします。
メモ:
- パッチ2より古いESXi 8.0U1では、同じシナリオで別の問題が発生するため、回避する必要があります。VMware KB記事 https://kb.vmware.com/s/article/94106 へのリンク
- ESXiのバージョンのみが重要です。バージョンに互換性がある限り、ESXi 8.0Uoneパッチ2またはその他の構成でvCenter 8.0U2を使用できます。
この修正は、今後のESXi 8.0U3に含まれる予定です。
VMFSおよびNFSデータストアの回避策
従来の(非vVol)データストアを使用しているお客様は、回避策を利用できます。回避策は、NVMe/TCP I/Oコントローラーの作成時に、より低いキープアライブ タイムアウトを適用することです。
すでに存在するコントローラーのタイムアウトを変更することはできません。コントローラーがすでに作成されている場合は、それらを削除し、タイムアウト値を短縮して再作成することができます。
デフォルトのタイムアウト値は 30 秒です。必要なI/Oフェールオーバー時間がN秒の場合、短縮されるタイムアウト値はN/2 - 10秒を超えないようにする必要があります。たとえば、目的のフェールオーバー時間が60秒の場合は、20秒を使用する必要があります(60/2 - 10 = 20)。
手順1:NVMe/TCPコントローラーを削除します(すでに存在する場合)
vSphere UI
- vSphere UIでホストを選択します
- [Configure → Storage Adapters]に移動します
- NVMe/TCPアダプターの選択
- アダプター リストの下にある [Controllers ]タブに移動します
- コントローラーを選択し、[削除]をクリックします
コントローラーを取り外す前に、コントローラーがI/Oに使用されていないことを確認してください。そうしないと、コントローラーを通過するI/Oが中断される可能性があります。
CLI
「」を使用してコントローラーを一覧表示します。esxcli nvme controller list' を使用して切断します。esxcli nvme fabrics disconnect'.
[root@hoABCDEF:~] esxcli nvme controller list Name Controller Number Adapter Transport Type Is Online Is VVOL ------------------------------------------------------------------------------------- ----------------- ------- -------------- --------- ------- nqn.xxx-11.com.xxxx:powerstore:00:042d0bc302a61CBF6EA0#vmhba67#xx.xxx.x.xxx:4420 4435 vmhba67 TCP true false nqn.xxx-11.com.xxxx:powerstore:00:042d0bc302a61CBF6EA0#vmhba67#xx.xxx.x.xxx:4420 4436 vmhba67 TCP true false nqn.xxx-08.org.xxxxyyy.discovery#vvol#vmhba67#xx.xxx.x.xxx:8009 4488 vmhba67 TCP true true nqn.xxx-11.com.xxxx:powerstore:00:042d0bc302a61CBF6EA0#vvol#vmhba67#xx.xxx.x.xxx 4490 vmhba67 TCP true true nqn.xxx-11.com.xxxx:powerstore:00:042d0bc302a61CBF6EA0#vvol#vmhba67#xx.xxx.x.xxx 4489 vmhba67 TCP true true nqn.xxx-08.org.xxxxyyy.discovery#vvol#xx.xxx.x.xxx:8009 4491 vmhba67 TCP true true [root@hop051108:~] esxcli nvme fabrics disconnect -a vmhba67 -n 4435
手順2:タイムアウト値を小さくしてコントローラーを再作成します。
コントローラーを作成するには、次のパラメーターが必要です。
- PowerStoreクラスターNQN
- PowerStoreストレージIPアドレス
これらの値は、コントローラーを削除する前にvSphere UIまたはesxcli nvme controller listの出力からコピーするか、PowerStore Managerから取得できます。
NQNを取得するには、[Settings]→[Properties]の順に移動し、[NVMe Qualified Name]の値をコピーします。
ストレージIPは、 Settings → Network IPs→Select storage network → Modifyで使用できます。
これらの値を取得したら、次のようにコントローラーを作成できます。
vSphere UI
ホストを選択して →→ストレージ アダプターを構成し→アダプターを選択して→コントローラー →を手動で追加します。
タイムアウト値は、[Keepalive Timeout]フィールドにコピーする必要があります。![[キープアライブ タイムアウト(Keepalive Timeout)] フィールド](https://supportkb.dell.com/img/ka0Do000000loHyIAI/ka0Do000000loHyIAI_ja_4.jpeg)
CLI
使う esxcli nvme fabrics connect -i <storage ip> -p 4420 -a <adapter id> -s <powerstore's NQN> -t <timeout>
[root@hoABCDEF:~] esxcli nvme fabrics connect -i 10.xxx.x.xx -p 4420 -a vmhba67 -s