PowerFlex:過剰なデータの役割の切り替えにより、IOレイテンシーとエラーが発生する
Summary: この記事では、過剰なデータのロール切り替えによってI/Oレイテンシーとエラーが発生する方法について説明します。
Symptoms
特定のクラスターの状態遷移では、MDMのロールバランス ロジックにより、多くのコーム(ボリューム データの各部分を格納するSDSノードを追跡する内部データ構造)にわたってプライマリー/セカンダリーのロール切り替えを迅速に繰り返し行うことができます。各ロール スイッチは、クライアント側(SDC)のコーム マップを無効にし、I/Oの再試行を強制します。十分な数のコムが同時に影響を受けると、累積的な再試行オーバーヘッドにより、SDCホストでI/Oレイテンシーの急増とI/Oエラーが発生します。ホスト環境によっては、アプリケーションのI/Oタイムアウト、VMが読み取り専用状態になる、またはファイル システムが使用不可になる場合があります
この動作は、複数のトリガー シナリオで確認されており、1 つの操作手順に限定されません。
一般的なインジケーター
MDM_DATA_DEGRADEDイベントの後に 1 から 15+ 分続く持続的な I/O 待機時間が続きます- SDCホストは、劣化ウィンドウ中にI/OエラーやI/Oタイムアウトを報告します
- VMware(ESXi): VMFSハートビート タイムアウト、SCSIハードウェア エラー(
sense data: 0x4 0x0 0x0)、VMが読み取り専用状態になり、HAフェールオーバーが発生する - Linuxの場合システム ログの I/O エラー (
/var/log/messages, dmesg)、アプリケーションでI/Oタイムアウトが発生したり、ファイル システムが読み取り専用で再マウントされたりする可能性があります
- VMware(ESXi): VMFSハートビート タイムアウト、SCSIハードウェア エラー(
- MDMイベント ログに、単一のSDS損失に対して予想よりも長いDEGRADED状態のシステムが表示される
- システムは最終的に手動操作なしで自己回復し、通常の状態に戻ります(通常)
シナリオ1:アングレースフルSDS損失(メンテナンス モードなし)
問題が発生する場合:
- これはまれなシナリオです。異常なSDS損失中にロール切り替えイベントが急速に繰り返し発生するには、いくつかの特定の条件が同時に存在している必要があります。
-
- 大規模環境 - 多数のSDSノードとボリューム
- 本番I/O負荷が高い - SDSに障害が発生した時点で大量のI/Oアクティビティが発生する
- 再構築ワークロードが処理能力を超えています - 再構築が必要なメタデータ行の数が、MDMバランサーのサイクルあたりの制限である1,024行を超えています
各再バランシング サイクルは、最大1,024のメタデータ行を処理できます。さらに多くの行を再構築する必要がある場合、バランサーは、次の計画を生成する前に現在の計画を完了できません。
何が起こるか:
- SDSがMDMから突然分離される(イベントSDS_DECOUPLED)
- そのSDSに接続されていたすべてのSDCは、SDC切断イベント→接続を失います
- MDMはクラスターをDEGRADEDとマークします(イベント
MDM_DATA_DEGRADED)を作成します。 - 再構築する行数が1,024を超えているため、MDMバランサーは現在の再バランシング計画を完了できません
- バランサーは、前のプランがまだ実行されている間に新しいプランを開始し、ロール切り替えイベントを迅速に繰り返し生成します
- クライアントSDCで連続的なI/O障害(
IO_FAULT_NOT_PRI, SCSI sense 0x4)を提供する必要があります。再試行回数が尽きると、ホストOSはI/Oエラー、タイムアウト、または読み取り専用ファイル システムを報告します - MDMトレースの証拠:
再バランシング ワークロードが1,024行の制限を超えると、MDMトレースに閾値を超えていることが示されます。
2026/03/28 22:43:53.246702 MED:7f1f984aedb0:balanceExec_HandleDegradedRows:00343: BALANCER: Storage Pool: 1193844800000000 - 1024 rows processed out of 1098 degraded rows. 0 allocation failures. 0 cumulative allocation failures.
これは、1,098 行の再構築が必要であることを示していますが、現在のサイクルで処理できたのは 1,024 行のみです。残りの行は、前のプランが完了する前に新しい再バランス プランをトリガーし、フィードバック ループを開始します
イベントの連鎖:
Log Source Event / Pattern MDM events SDS_DECOUPLED — SDS formally declared dead MDM events MDM_DATA_DEGRADED — Cluster enters DEGRADED state SDS traces Flood of IO_FAULT_NOT_PRI — SDS received IO for a comb it is no longer primary for ESXi vmkernel SCSI sense data: 0x4 0x0 0x0 — Hardware error MDM events MULTIPLE_SDC_CONNECTIVITY_CHANGES — Mass SDC connectivity storm MDM events SDC_DISCONNECTED_FROM_SDS_IP — SDCs losing contact with the failed SDSMDMイベント シーケンスの例:
SDC_DISCONNECTED_FROM_SDS_IP SDC disconnected from SDS <name> SDS_DECOUPLED SDS <name> decoupled MDM_DATA_DEGRADED The system is now in DEGRADED state
シナリオ2:PMM入力中にSDSの電源がオフになる
いつ発生する可能性があるか:
これは、次の 2 つの同時イベントを必要とするまれなシナリオです。
- SDSが保護メンテナンス モード(PMM)に移行しています
- PMMの移行が完了する前にSDSに障害が発生したか、電源がオフになっている
何が起こるか:
- MDMはPMMエントリー コマンドを受信し、成功として記録します
- PMMエントリーの進行中にSDSが予期せず分離されます
- MDMがクラスターをDEGRADEDとマークする
- ロール バランサーは、PMM開始フェーズ全体を通して、ロール切り替えループに移行します
- 非PMMデータ行は、ストレージ プール全体で繰り返しロール切り替えされる
- ストームは、SDSがクラスターに再参加し、メンテナンス モードの移行を完了するまで続きます
イベントの連鎖:
Log Source Event / Pattern MDM events CLI_COMMAND_SUCCEEDED — enter_protected_maintenance_mode command succeeded MDM events SDS_DECOUPLED — SDS decoupled before maintenance mode started MDM events MDM_DATA_DEGRADED — Cluster enters DEGRADED state SDS traces Repeated role-switch operations across non-PMM rows
MDMイベント シーケンスの例:
CLI_COMMAND_SUCCEEDED Command enter_protected_maintenance_mode succeeded SDS_DECOUPLED SDS <name> decoupled MDM_DATA_DEGRADED The system is now in DEGRADED state
SDSが再参加し、PMMが完了すると、次のようになります。
SDS_MAINTENANCE_MODE_STARTED SDS maintenance mode started MDM_DATA_NORMAL The system is now in NORMAL state
シナリオ3:インスタント メンテナンス モード(IMM)のSDS
いつ発生する可能性があるか:
SDSがインスタント メンテナンス モード(IMM)に入るか、終了します。このシナリオは、単一のSDSがメンテナンス モードで、特定のデータのI/Oを処理するSDSをシステムが決定できない場合に発生します
何が起こるか:
- システムは、同じデータの提供を担当するSDSを繰り返し変更します
- これらの絶え間ない変化は、アプリケーションがI/O要求の送信先を認識できないことを意味します
- I/Oが間違ったSDSに送信され、再試行と遅延が発生する
- 影響を受けるデータへのアクセス試行中にアプリケーションでレイテンシーまたはタイムアウトが発生する
影響:
- お客様への影響: SDSがIMMにある間に、アプリケーションがレイテンシーとタイムアウトを報告する
- 再生時間:SDSがIMM状態の間も続行します
- 回復:自動:SDSがIMMを終了すると解決されます
イベントの連鎖:
Log Source Event / Pattern SDS traces Repeated role-switch operations on the same data SDS traces Primary and secondary role switches on identical data
シナリオ4: SDSの保護メンテナンス モード(PMM)の終了
いつ発生する可能性があるか:
SDSが保護メンテナンス モード(PMM)を終了します。このシナリオは、すべてのPMM終了時に発生します。まれなイベントではありませんが、メンテナンス モードの操作が継続した時間によって重大度が異なります
何が起こるか:
- SDSがPMMを終了すると、ロール バランサーはデータ セグメントを再割り当てして、戻りSDSを含める必要があります
- 再バランシング プロセスは、返されるSDS上のデータだけでなく、ストレージ プール全体に影響します
- ロールの切り替えは、再統合中に多くのデータ セグメントで発生します
- ロールの割り当てが安定するにつれて、アプリケーションで短時間のI/Oエラーまたはレイテンシーが発生する可能性があります
影響:
- お客様への影響: 短いメンテナンス ウィンドウ(5秒未満)の場合、影響はほとんど目立ちません。アクティブなI/Oを伴う拡張メンテナンスでは、数千のロール切り替えが発生し、I/Oが持続的に停止する可能性があります
- 再生時間:再バランシングが完了するまで、再統合フェーズの間継続されます
- 回復:自動
イベントの連鎖:
Log Source Event / Pattern MDM events Role-switch operations across the storage pool during exit SDS traces Repeated role-switch operations during reintegration
MDMイベント シーケンスの例:
SDS_MAINTENANCE_MODE_EXIT_STARTED SDS maintenance mode exit started SDS_MAINTENANCE_MODE_EXIT_COMPLETED SDS maintenance mode exit completed
ログ出力:
MDMイベント ログ: MDMイベント ログには、クラスターレベルのシーケンスが表示されます。キー インジケーターは、メンテナンス モード終了時のロール切り替え操作です
SDSトレース ログ: SDSノードでは、トレース ログに、再統合中にロールスイッチ操作が繰り返されたことが示されます。
raidComb_SetPriTgtGenNum: combId <id> combGenNum: cur <gen> new <gen> contCmd_SetCombState: CombId <id> devId <id> PRI->SEC Switch roles contCmd_SetCombState: CombId <id> devId <id> SEC->PRI Switch roles
短いタイム ウィンドウ(数秒以内に数千以上)に大量のスイッチ ロール エントリーが発生することは、この問題のSDS側の決定的なインジケーターです。
SDC/ホスト ログ: VMware(ESXi) SDC I/O再試行で、コム、ターゲットSDS、障害コードが表示されます。
vmkernel log PowerFlex mapVolIO_Do_CK:1496 :Mit: <addr>. Retrying IO Type WRITE. Failed comb: <id>. SDS_ID <id>. Comb Gen <gen>. Head Gen <gen>. PowerFlex mapVolIO_Do_CK:1510 :Mit: <addr>. Vol ID <id>. Last fault Status IO_FAULT_NOT_PRI(12). Retry count (1)
エグレスを再試行すると、SCSIエラーが返されます。
sense data: 0x4 0x0 0x0 -- SCSI Hardware Error
診断のヒント: (問題のあるノードだけでなく)複数のSDSノードでI/Oエラーが発生した場合は、通常の縮退状態の動作ではなく、役割スイッチのストームを示している可能性があります。I/Oエラーが単一のSDSに切り分けられている場合、これは予想される縮退状態の動作です。
シナリオ5:メンテナンス モードのフェーズ移行
いつ発生する可能性があるか:
移行中、SDSがメンテナンス モード(IMMまたはPMM)を開始または終了するとき、つまり状態が通常からMMに、またはMMから通常に戻った時点で
何が起こるか:
- ロール バランサーは、変更に対応するためにデータの責任を再配分します
- システムが新しい配置に落ち着くと、ロールの切り替えが短時間発生します
- 移行中にアプリケーションで短いレイテンシーのスパイクが発生する可能性がある
影響:
- お客様への影響: 短時間のレイテンシーの急上昇は数秒から数分続きます。通常はアプリケーション タイムアウトのしきい値を下回る
- 再生時間:数秒から数分続き、その後落ち着きます
- 回復:自動
イベントの連鎖:
Log Source Event / Pattern SDS traces Brief role-switch operations during phase transitions
Cause
MDMロールバランス ロジックのソフトウェアの欠陥により、SDSの損失またはメンテナンス モードの操作によってクラスターが状態を遷移するときにフィードバック ループが発生します。
特定の条件下では、MDMは、影響を受けるコームへのI/O処理を担当するSDSノードを繰り返し再割り当てします。再割り当てのたびに、データが存在する場所のSDCのキャッシュ ビューが無効になり、I/Oの再試行が強制されます。多くのコムが同時に影響を受けると、再割り当ての量がSDCのアップデート能力を上回り、複数のホスト間でI/Oエラーが持続します。
通常、嵐は自己制限的です。クラスターが安定すると解決しますが、期間はイベント発生時の保護ドメインのサイズとI/O負荷によって異なります。
Resolution
この問題は、PowerFlex Coreバージョン4.5.6で対処されています。利用可能になったら、このバージョンにアップグレードしてください。リリース タイムライン情報については、 Dellサポート にお問い合わせください。
計画的なメンテナンス操作の場合:
- MDMログが記録されるまで、SDSの電源を入れ直したり再起動したりしないでください
SDS_MAINTENANCE_MODE_STARTEDの詳細を確認してください。物理メンテナンスを続行する前に、SDSが完全にメンテナンス モードになっていることを確認します。 - メンテナンス モードの開始時または終了時のレイテンシーのスパイクを監視します。
計画外のSDSアウテージの場合:
- ストームは自己制限的であり、通常、クラスターが安定するにつれて数分以内に解消されます。問題が発生した場合は、収集します
getinfo保護ドメイン内のすべてのSDSノード、すべてのマネージャーMDMからログを取得し、イベント後できるだけ早く Dellサポートにお問い合わせください。
まれに、問題が自己解決しない場合は、再構築を一時的に無効にして再度有効にすることで、MDMを安定させることができます。
scli --set_rebuild_mode --protection_domain_name <pd_name> --storage_pool_name <sp_name> --disable_rebuild
#5〜10秒待ってから、再構築を有効にします。
scli --set_rebuild_mode --protection_domain_name <pd_name> --storage_pool_name <sp_name> --enable_rebuild
scli --query_all コマンド出力。