Harbaugh最速と最遅のサーバーストレージの差はとてつもなく大きい。XPointのものと比べて6~7倍だ。SSDでは1マイクロ秒以下、同じものがSANストレージでは数ミリ秒、ディスクベースのSANまたはNASシステムでは数100ミリ秒の時間がかかる。最速から最遅まで、その係数は百万倍にもなっている。これだけの開きがあるわけだが、ティアリングやキャッシングによるストレージ最適化手法を駆使することによって、エンタープライズのアクティブ・データ・パフォーマンスで非常に大きな差をつけることができる。いえ、どのような環境でどれを使うべきかを判断するのは、単にどれかひとつを選ぶのに比べてずっと複雑だ。ティアリングにおいては、新規ストレージシステムとデータ管理技術は、単にデータをホット、ウォーム、コールドのティアに分けるより、もっと複雑だ。キャッシングにおいては、あなたの会社のシステムにどの手法を用いるのか、すなわち、ライトアラウンドかライトスルーかライトバックか、はたまたサーバーサイドかアプライアンスか、これらは達成しようと思っている信頼性やパフォーマンスのレベル、などいくつかの要素によって決まってくる。ティアリングとキャッシングの違いを理解し、これらのストレージ最適化技術のどちらを、どのように、どこで使うのか、を知ることは、エンタープライズ・パフォーマンスを良い状態に保つために極めて重要なことである。キャッシングの選択肢キャッシュには大きく分けて二つのタイプがある:サーバーサイドか、サーバーと永続データストアの間に据えられるアプライアンスだ。■サーバーサイド・キャッシング1台のサーバーの複数箇所にキャッシングをインストールできる。いくつかのキャッシング・ソフトウェアはサーバーのRAMの一部をキャッシュとして使う。これによりPCIeバスでなくメモリーバス上で最速のデータ移動が可能になる。NVMeストレージより何千倍も高速だ。Memory1のようなDIMMベースの製品だ。これらの製品はPCIeバスではなくメモリーバスを介してサーバーと接続する。達成するパフォーマンスはいくらかDRAMより低いが、PCIeバス経由で接続しているものよりは高速であり、DRAMと同じ価格で10倍以上の容量を持てる。SSD、およびキャッシュを組み込んだHBAやネットワーク・アダプターである。一つ、キャッシングで問題になるのが、必要となるソフトウェアだ。いくつかの方式は他の方式よりも透過的だ。HBAやネットワーク・アダプターは内部メモリーにデータをキャッシュし、ハードウェアレベル、またはアダプターのドライバー・ソフトウェアを介して動作する。そのため、キャッシュをセットアップする処理は比較的透過的だ。SSDのキャッシングは、ドライバー層またはOS層、アプリケーション層でのキャッシング・ソフトウェアのインストールを必要とし、潜在的な障害発生点やパフォーマンスの低下を生み出す原因を作っている。■キャッシング・アプライアンスキャッシング・アプライアンスは、サーバーと永続ストレージの間に置かれ、サーバー上のアプリケーションやOSから完全に透過的になれる。サーバーを開けることも、新規のハードウェアをインストールするためにサーバーをオフラインにすることも必要ない。マイクロ秒の範囲ではパフォーマンスの改善は相当なものになるかも知れないが、RAMまたはDIMMベースのフラッシュのキャッシュが実現するレベルには及ばないだろう。Expressバスや多くのシステムに組み込まれているSATAバスなどのストレージ接続バスよりもレイテンシがはるかに低く、スループットもはるかに高い。NVMeディスクがPCIeチャネルを飽和させるところまで来てしまった。論理的に考えうる次のステップは、より高速なPCIe規格を使うか(但し最低でも1年は待たなければならない、しかも速度は2倍になるだけだ。)、より高速なフラッシュの性能を活かすためにメモリーバスを使うことだ。後者の方法を選択すれば、速度はPCIeの何十倍、何百倍にもなる可能性がある。多くのサーバーのマザーボードには、16以上のDIMMスロットがあり、フラッシュDIMM用の空きスロットを探すのはそれほど難しい事ではないからだ。どちらも、ダイナミックRAM(DRAM)より安価で大容量、かつ高速なDIMM対応のフラッシュを提供しており、サーバーサイド・キャッシングをターゲット・アプリケーションのひとつとしている。その他の使用形態としては、大きなメモリープールを作成し、アプリケーションを完全にメモリーの中に置いておく方法がある。これにより、大容量のDRAMにかかる莫大なコストを回避することができる。DIMMベースのフラッシュに使われるドライバーは、DRAMとフラッシュを識別し、これらが適切に使われるようにする機能を持っていなければならない。これらの技術は比較的新しいので、本格的なデプロイメントを行う前にアプリケーションとドライバーのテストをしておいた方がよいだろう。ティアリングの選択肢ティアリングによるストレージ最適化技術のレベルは、元々は今世紀の変わり目に市場に出ていたハードディスクの種類と関係している。rpmのハードディスクはティア3になっている。それぞれのティアは上位のティアより低速で安価だった。その後SSDが登場したが、ティア0として階層に追加されたため、従来のティアの名前を付けなおさずに済んだ。それ以降事態は混沌としてきた。高速のティアには、より新しくより早いSSDやDRAMなども使われ、低速のティアではテープやクラウドストレージに書き込む、ということが行われるようになった。ストレージ管理やストレージ仮想化のソフトウェアは、データを複数のティアに確実に送る。これはサーバーにとっては透過的に行われる。ある単一のディレクトリ内の複数のファイルが複数の異なるティアに保存されることもあるが、OSからは単一のディレクトリ内にファイルが収まっているように見える。ここで差別化要因となるのは、データを異なるティアに割り当てるストレージ管理ソフトウェアだ。ひとつの方式は、まずデータを最速のティアに書き込み、その後しばらくリードがなかったデータをより低速なティアに移すというものだ。ひとつの方式は、データをアプリケーションの種類、指定されたディレクトリ、何らかの基準などに基づいて優先順位をつけるものだ。多くのSANシステムは何らかの形で自動ティアリングを提供している。これはボリュームやLUNに基づいて手動でティアを指定する方法に比べて明らかに使い勝手が良い。初期の自動ティアリングシステムは、多くの場合単純な時系列アルゴリズムを使っていた。サーバーに読み込まれたデータは自動的に最速のティアに移動され、しばらくアクセスがなかった古いデータは低速で安価なストレージのティアに送り込まれる、という仕組みだ。次に出てきたのが予測アルゴリズムで、あるファイルが読み込まれた時、そのファイルに関連する複数のファイルを高速のティアに移動する仕組みだ。これ以降も、最もアクセスが頻繁なファイルが可能な限り最善のパフォーマンスを発揮できるように、アルゴリズムの改良が行われてきている。ティアリングシステムはSANシステムのレベルで運用されるのが一般的だ。異なるストレージ製品は通常、独自のティアリングシステムを持っている、ということだ。異なるメーカーからの複数のSANシステムを運用しているデータセンターは、追加でストレージ管理アプリケーションを購入するか、アプリケーションごとにストレージサイロを分ける必要がある。自動ティアリングは一般的に最善のパフォーマンスを提供し、ストレージ管理者が定期的にシステムチューニングを行わなくても良いように見える。手動によるティアリングシステムのほうが良いと思われるケースもある。データベース管理者はデータベースに関連するすべてのファイルを同一のティアに置くことを求めるかも知れない。一部のファイルへのアクセスがさほど頻繁ではなくても、その方が最高のパフォーマンスを確保する上では得策だからだ。このことは、非常時または定期的に発生する特定の業務で、特定のファイルだけがロードされる、バックアップやメンテナンスなどのその他のアプリケーションやシステムにも当てはまるかも知れない。DRにおける違いティアリングとキャッシングによるストレージ最適化技術による影響が端的に出るケースは、BCPや災害復旧(DR)だろう。データが最初にストレージに書き込まれるとき、プログラムはデータが書き込まれたことが確認されるのを待つ。システムが中断され確認が未達になった場合、プログラムは中断以前の状態にシステムを戻すことができる。ところが、データがキャッシュディスクのような揮発性ディスクに書かれ、プログラムは書き込みを確認したのに、データがストレージ最終目的地点に書き込まれる前に電源が落ちた場合、キャッシングの方式によってはデータが失われる可能性がある。■ライトスルーデータがキャッシュを通過して永続ストレージ上の最終目的地点に届くまで、ライト完了としない。これによってデータの安全な書き込みが保証されるが、これはまたライトのレイテンシが比較的高くなることを意味する。言うものの、データがディスクからでなくキャッシュから読み込まれるため、リードは速くなる。■ライトアラウンド書き込みの際、データはキャッシュをバイパスして直接最終地点に書き込まれ、永続ストレージへの書き込をもってライト完了とする。この方式により、ライトのパフォーマンスは改善するが、データがキャッシュに無いため、リードのパフォーマンスは低下する。■ライトバックデータがキャッシュに書き込まれたらすぐにライト完了とする。データが高速なキャッシュメモリーで読み書きされるため、最高のリード・ライトパフォーマンスを提供する。データが永続ストレージに書き込まれる前に、システムがオフラインまたは電源断になるとデータを損失する可能性がある。この問題は、バッテリー・バックアップを持ったキャッシュシステムまたはキャッシュと永続ストレージへの重複書き込みによって解決できる。ストレージのティアリングでは、データは永続ストレージに書き込まれるまでライト完了にはならない。そのため、データ損失の可能性は最小限に抑えられている。ティアリングによるストレージ最適化技術で得られるパフォーマンス改善の度合いは、揮発性のキャッシングが提供するものほど大きくはない。高速な揮発性ストレージへの最初の書き込み時ではなく、永続ストレージへデータが書き込まれるまでシステムが待たなければならないからだ。キャッシュのレベルは何段階?異なる種類のキャッシングやティアリングは同時に実行することができる。1台のサーバーの中では、複数の場所に異なる種類のキャッシュがデプロイされており、それぞれがシステム上のトランザクションの速度を上げるべく全力を尽くしている。そこでは、CPUのL1、L2、L3キャッシュやホストバスアダプター、ネットワークインターフェースカード、RAIDコントローラーの小さなDRAMキャッシュ、あるいは、RAIDコントローラーに搭載された大容量フラッシュキャッシュなどが使われているかも知れない。ほとんどのキャッシュはOSあるいはストレージ管理者にさえ透過的に稼働する。ティアリングと違いキャッシングは他のレベルのストレージとは無関係に独立して動作する。HBAのキャッシュはRAIDコントローラーやストレージアレイ上のキャッシュとは完全に分かれている。ティアリングは複数のレベルで実行可能だ。個別のサーバー上で稼働しているソフトウェア、DatacoreのSANSymphonyのようなソフトウェア、SANストレージアレイのコントローラーに組み込まれたソフトウェアなどでもティアリングを設定できる。ストレージ管理者にとって唯一の心配は、電源が落ちた時にキャッシュがデータを失くしてしまうことだ。多くのRAMやフラッシュキャッシュは停電の際ライトの完了を保証するために、バッテリーやスーパーキャパシターによるバックアップを行っている。使い方に関する補足ティアリングまたはサーバーサイド・キャッシングを使えば、実際どのようなアプリケーションも速くなる。コツは、アプリケーションのニーズに基づいてティアリングやキャッシングの最適な種類を選ぶことだ。データベース・アプリケーションのキャッシュの最適化は、例えばメディアサーバーやデータレイクのリアルタイム分析のそれとはおのずから異なるだろう。それぞれがデータの整合性の確保やアプリケーションのニーズに合ったパフォーマンスの種類について違った要件を持っている。パフォーマンスはリードに求められるのか、ライトに対してか、あるいはその両方か、読み書きはランダムかシークエンシャルか、高いIOPSを求めているのかスループットが重要なのか、等々。アプリケーションは一つ一つみな異なる。それゆえ、全てのニーズを満たす万能の製品は存在しない。このことはコストを検討するときなおさら重要になってくる。ストレージの価格には大きな幅があり、これらストレージ最適化技術で最も高価なものはGBあたり$100、最も安価なものはGBあたり10セントだ。多くの場合、キャッシングやティアリングを使えば、比較的小さな投資で、非常に大きなストレージ・パフォーマンスの改善を実現できる。サーバーサイドのキャッシュやストレージアレイのSSDベースのティア0によってパフォーマンスは10倍以上改善できる。必要な容量は下位層の10%から20%でよい。あらゆる環境にとって最善な、たった一つの製品というものは存在しないが、あなたの会社のアプリケーションと予算を考慮しながら、あなたにはどれが最善かを判断してもらいたい。Harbaughは、フリーのレビュアー兼IT業界で25年以上のキャリアを持つITコンサルタント。このページに掲載されている記事・写真・図表などの無断転載を禁じます。表示させるためには、JavaScriptを有効にしてください。