不揮発性メモリ・エクスプレス(NVMe)ストレージの性能が向上するにつれ、ローカル接続されたNVMeデバイスの入出力毎秒処理数(IOPS)と帯域幅をより有効に活用するため、アプリケーション設計は変わらなければならない。これは、セミリタイアして考える時間が増えた最近、私が発展させてきた仮説だ。もし正しければ、高いコンピューティング能力を必要とする外付けストレージに大きな影響を及ぼすことになる。この点については後ほど説明する。
この考えの大部分は、過去40年間に見られた入出力性能の飛躍的な向上(毎秒3 MBから毎秒13 GB)に基づいている。もちろん、これはCPUやメモリの性能向上には及ばず、ネットワークの性能向上はおおむねストレージとCPU/メモリの中間に位置する。
現行のPCIe 5.0ソリッドステートドライブ(SSD)の最高クラスの性能は、読み出しが毎秒13.5 GB、シーケンシャル書き込みが毎秒11.8 GBだ。読み出しが速いベンダーもあれば、書き込み性能が速いベンダーもあるが、競争力を保つ必要があるため、どれもかなり近い性能になっている。これらのSSDは、コンシューマー向けのM.2版なら数百ドルで購入でき、エンタープライズ向けのU.2 SSDも、容量によっては1,000ドル未満で購入できる。
NMVeデバイスはますます高速化している。CPUベンダーがPCIeレーンを増やしているためだ。サーバーベンダーは、より高速なNVMeデバイスと増加したPCIeレーンの両方を活用し、I/O帯域幅を拡大したサーバーを構築している。SASやNFSなど従来のプロトコルを使った現在のネットワーク接続ストレージは、NVMe接続によって利用可能になる性能向上により、データ処理用途では過去のものになるだろう。従来のプロトコルは、アーカイブ用途では引き続き使える可能性がある。
接続性能とストレージ性能を見てみよう。PCIe 6はPCIe 5に比べて性能が2倍になり、今年後半または来年初めの登場が見込まれているため、これも加えて考える。結果は次のとおりだ。100ギガビット・イーサネット(GbE)および200 GbE接続では、まもなく性能が頭打ちになることが分かる。
| PCI 5 | PCI 6 | |||
|---|---|---|---|---|
| 読み出し(GB/秒) | 書き込み(GB/秒) | 読み出し推定(GB/秒) | 書き込み推定(GB/秒) | |
| 13.5 | 11.8 | 26 | 22 | |
| GbE | 単一ポートに対する割合 | 単一ポートに対する割合 | 単一ポートに対する割合 | 単一ポートに対する割合 |
| 100 | 120.00% | 104.89% | 231.11% | 195.56% |
| 200 | 60.00% | 52.44% | 115.56% | 97.78% |
| 400 | 30.00% | 26.22% | 57.78% | 48.89% |
| 注:パケットのオーバーヘッドとチェックサムを考慮し、ネットワーク性能の90%を想定 | ||||
現在でも、100 GbEは、読み出しでも書き込みでも、単一のPCIe 5 SSDのデータを最大速度で転送するには十分な速度ではない。PCIe 6では、状況ははるかに悪化する。
現在、サーバー用の100 GbEポートは100ドル、20~30ポートのスイッチ用のイーサネットポートは300ドルで購入できるとしよう。各SSDの帯域幅性能を最大限に引き出したい場合、SSDのコストに最大40%もの追加費用がかかる。イーサネットのネットワーク遅延がある状態でIOPSを実現するのは非常に難しい。この状況が成り立つのは、そう長くはない。
アプリケーションの問題
ネットワーク接続されたエンタープライズ向けおよびコンシューマー向けの外部ストレージは、古いインタープロセッサー割り込み(IPI)、ATアタッチメント(ATA)、SCONプロトコルから、シリアルATアタッチメント(SATA)、スモール・コンピューター・システム・インターフェース(SCSI)、ファイバーチャネル、シリアル接続SCSI(SAS)、ネットワーク接続ストレージ(NAS)に至るまで、数十年にわたって存在してきた。外部ストレージのネットワーク接続は、常にストレージの性能に追いつくことを課題としてきた。私が初めて手掛けたファイバーチャネル・ストレージアレイには、毎秒1 GBのファイバーチャネル(FC)性能を大幅に上回るハードディスクドライブが搭載されていた。
ストレージネットワークベンダーの性能は、ほぼ常にストレージそのものの性能に後れを取っており、ストレージ筐体は一般にさらに遅れている。その大きな理由は、必要な信頼性、可用性、性能、製造可能性を実現するストレージ筐体の設計が複雑で、コストも時間もかかることだ。ベンダーがこうしたシステムやストレージを開発するには何年もかかり、その間にもストレージ性能は向上し続けるため、システムのコストを償却するにも何年もかかる。
問題は、ストレージ技術の世代交代の間隔が短くなっており、ベンダーがシステムを設計し、製造し、コストを回収する前に次世代製品が登場してしまうことだ。PCIeの世代交代の間隔も短くなっているようだ。このパラダイムを生かすには、アプリケーションも変わる必要がある。
現在、NASシステム上で動作する標準的なアプリケーションを考えてみよう。NASシステムから、アプリケーションが動作している場所へデータを移動する。その場所はワークステーションかサーバーだろうが、NASのストレージ性能に匹敵するネットワーク帯域幅を持っているはずがない。
概算として、NASの使用可能なストレージ容量が800 TBで、筐体が各デバイスでPCIe 5の最大速度を実現できるとしよう。15 TBのNVMe U.2デバイスを使うとすれば、デバイスは54台になる(この例では、障害耐性は考慮していない)。読み出しでデバイスを最大速度で動作させるには、NASのネットワーク帯域幅として毎秒729 GBの読み出し帯域幅、または毎秒637.2 GBの書き込み帯域幅が必要になる。これは、読み出し速度を最大にする場合は400 GbEチャネルが16本、書き込み速度を最大にする場合は400 GbEチャネルが14本必要になるということだ。
NASサーバーからこれほど大量のネットワーク帯域幅を確保するのは大変だ。この規模と複雑さのシステムを設計し、毎年性能を倍増させながら利益を上げることなど、誰にもできない。また、これほどの速度で各アプリケーションにデータを移動するためのネットワーク帯域幅を負担できる企業もほとんどない。
変化は近づいている
NASからクライアントへデータを移動して処理し、また書き戻すというNASアプリケーションの開発は、数十年にわたって行われてきたため、一夜にして変わることはない。必要なのは、アプリケーションがデータの保存場所の近くでデータを処理する必要があることであり、つまり大量のNVMe接続ストレージを備えたサーバー上で処理し、その結果をクライアントに送り返すことだ。
この方向に進んでいるアプリケーションがいくつもあることは知っているが、実現には時間がかかる。業界がクラウドへ向かっていることを受け、多くの新しいアプリケーションはこの方式で開発されている。しかし、ネットワーク・ファイル・システム(NFS)プロトコルが開発されたのは1984年であり、書き換えが必要なアプリケーションは約40年分に及ぶ。
グローバルに考え、ローカルで計算する
データを移動することには、高速ネットワークのコスト、複雑さ、保守費用から、遅延のコスト、コンピューティング環境内でデータを移動するための電力コストまで、さまざまな面でコストがかかる。データを移動することは環境に優しい技術ではないため、データがある場所で計算処理を行おう!
アプリケーションに求められる性能がますます高まり、数年ごとにNVMeレーンの増加によって利用可能な性能も向上するなか、ストレージ筐体、外部ストレージ、古いプロトコルを使う従来のモデルでは、帯域幅とIOPSのいずれにおいても、NVMeデバイスの性能を高い割合でコスト効率よく引き出すことはできない。こうした外部デバイスとプロトコルは、コンピューティングリソースからますます遠ざかっていくだろう。
これはいつ起きるのか。友人が自分の予測について言っていたように、「何が起きるかについてはほぼいつも正しいが、それがいつ起きるかについてはいつも間違っている」。
アプリケーションがローカルストレージを使えるよう問題を切り分けて処理するようになるにせよ、サーバー上で処理して結果だけをクライアントに送るようになるにせよ、アプリケーションを書き換えるには時間がかかる。2年か、5年か、それとも10年か。一部は2年、別のものは10年かもしれないが、結局のところ、いつものように本当の問題は、イノベーションを継続するために必要な資本だ。ある時点で企業は、再投資してイノベーションを起こし、新しいテクノロジーを統合するのに十分な利益を得られなくなる。IT業界のかなりの割合がクラウドへ移行し、筐体、NVMeデバイス、それらを利用するソフトウェアスタックなどの独自技術を開発していることは、従来型のIT企業にとって助けにはならない。
従来のプロトコルで接続されたリモートストレージ上でデータを処理する時代は、残りわずかだと思う。私たちは皆、データを処理して情報へ変換するアプリケーションのために、ローカルのNVMe接続ストレージへ移行することになる。問題は、この移行にどれだけ時間がかかるかだけだ。