vSphere 8におけるNVMe over TCPの設定:最小限のコストでストレージパフォーマンスを「極限」まで高める方法

VMware tutorial - IT technology blog
VMware tutorial - IT technology blog

「ストレージのボトルネック」という悩みの種

私は以前、10GbEネットワーク上でiSCSIを実行する8台のESXiホストクラスターを運用していました。当初は順調でしたが、ERPシステムやSQLデータベースの負荷が増えるにつれ、問題が発生しました。レイテンシが頻繁に15〜20msまで跳ね上がり、アプリケーションのレスポンスが著しく低下したのです。

当時、Fibre Channel(FC)へのアップグレードが明らかな解決策でしたが、HBAカードや専用の光スイッチの導入コストは数万ドルに達します。幸いなことに、vSphere 7 Update 3からvSphere 8にかけて、VMwareはNVMe over TCP (NVMe/TCP)をサポートしました。このテクノロジーにより、既存のEthernetインフラを活用しながらパフォーマンスの課題を解決できるようになりました。

NVMe over TCPとiSCSI、Fibre Channelの比較

なぜNVMe/TCPに注目すべきなので状況でしょうか?技術的な違いを見てみましょう。

  • iSCSI: HDD時代のSCSIコマンドセットを使用します。コマンドキューが1つしかないため、マルチスレッド処理でボトルネックが発生しやすく、パケットのカプセル化に多くのCPUリソースを消費します。
  • Fibre Channel: 高速で安定していますが、高価であり、専門的な管理スキルが必要です。
  • NVMe/TCP: 最大64,000のキューをサポートする最新のNVMeコマンドセットを使用します。これにより、iSCSIと比較してレイテンシを最大50%削減でき、現在の25GbE/100GbEスイッチの帯域幅を最大限に活用できます。

実測スペックの比較

項目 iSCSI (10GbE) NVMe over TCP (25GbE) Fibre Channel (32G)
平均レイテンシ ~2-5 ms < 0.5 ms < 0.3 ms
ホストあたりの最大IOPS ~150,000 > 600,000 > 800,000
ホストCPU負荷 高い 低い 非常に低い

本番環境にNVMe over TCPを採用した理由

最大のメリットはコスト削減です。新しいSANスイッチを購入する代わりに、既存の25GbEスイッチを再利用しました。移行後の実際のパフォーマンスは目覚ましく、データバックアップ作業の時間は30%短縮され、ピーク時にユーザーからアプリケーションのフリーズについて苦情が出ることもなくなりました。

vSphere 8での導入手順

設定を始める前に、スイッチでJumbo Frames (MTU 9000)が有効になっていることを確認してください。これは、ストレージの最適な帯域幅を確保するために非常に重要です。

ステップ1:VMkernelネットワークの設定

管理用(Management)ネットワークカードをストレージと共有しないでください。安全性とパフォーマンスを確保するために、トラフィックを分離します

  1. vSphere Clientにアクセスし、ホスト -> 設定 (Configure) -> ネットワーク (Networking) を選択します。
  2. 専用の分散スイッチ(Distributed Switch)または標準スイッチ上に、新しいVMkernelアダプタを作成します。
  3. ストレージコントローラーと同じセグメントの静的IPアドレスを割り当てます。注意:vSphere 8はNVMeトラフィックを自動的に識別するため、このステップで特別なサービスにチェックを入れる必要はありません。

ステップ2:Software NVMe over TCPアダプタの有効化

vSphere 8では、このアダプタは自動的に表示されないため、手動で追加する必要があります。

  1. 「設定」タブのストレージアダプタ (Storage Adapters) に移動します。
  2. ストレージアダプタの追加 (Add Storage Adapter) をクリックし、Software NVMe over TCPアダプタの追加 (Add Software NVMe over TCP adapter) を選択します。
  3. ストレージ用に用意した適切な物理NICを選択します。

システムによって仮想アダプタ(例:vmhba64)が作成されます。これがホストとストレージアレイ間のメインの通信ポートとなります。

ステップ3:ストレージコントローラーの登録

次に、ストレージアレイへの接続設定を行います。

  1. 作成したNVMe/TCPアダプタを選択し、コントローラー (Controllers) タブに切り替えます。
  2. コントローラーの追加 (Add Controller) をクリックし、ストレージターゲットのIPアドレスを入力します。
  3. デフォルトポートは通常 4420 です。コントローラーの検出 (Discover Controllers) をクリックして、システムに自動検索させます。

ステップ4:CLIによる接続確認

すべてが正常に接続されているか確認するために、ESXiホストにSSHでログインし、次のコマンドを実行します。

esxcli nvme controller list

State 列に Connected と表示されていれば成功です。Disconnected と表示される場合は、ルーティングやスイッチのファイアウォール設定を再確認してください。

ステップ5:データストアの作成

これでNVMeディスクが通常のストレージデバイスとして表示されます。新しいデータストア (New Datastore) に進み、VMFS 6 形式を選択してフォーマットを実行します。NVMeのフォーマット速度は非常に高速で、ほぼ瞬時に完了します。

システムを安定させるための実践的なアドバイス

運用を続けていく中で、3つの重要なポイントに気づきました。第一に、可能であれば RDMA 対応のネットワークカードを使用して、CPU負荷をさらに軽減すること。第二に、VMwareの High Performance Plugin (HPP) ポリシーを常に遵守すること。これは高速デバイス専用の最適化メカニズムです。

最後に、ネットワークカード(NIC)のファームウェア更新を忘れないでください。NVMe/TCP環境では、古いドライバが原因で、わずか数秒でデータストアの接続が失われる(All Paths Down)可能性があります。

NVMe over TCPはもはや未来の技術ではなく、現在のソリューションです。Fibre Channelを導入する予算はないが、システムをアップグレードして最大限のパフォーマンスを得たいと考えているなら、これが最短の道です。

Share: