仮想マシンといえども、どこまでも縦横無尽に移動できる様にはならない?

前回予告した内容とまったく違ってますが…m(_ _)m

サーバ仮想化の普及によってOS環境が物理リソースと切り離され、それに伴って動的になったシステムに対応するために、様々な仕組みのネットワーク仮想化方式が登場してきているが…というのが現時点の状況というかトレンド?なわけですが、だからといってシステムが物理リソースとは切り離され、完全に動的なものととして扱えるようになるかというと、そうはならないだろうと私は思っています*1。動的に移動するインフラ環境を考えた場合、最も移動範囲に制約を与える要素は結局のところストレージであり、そこが動的な移動範囲に一定の制約を与えることになると考えているからです(いわゆる、共有ストレージとしての接続性)。

そもそも、「通信の経路」として仕組みさえ用意すれば動的な変更を実装できるネットワークや、「基本的には計算リソース」であり保持するデータはあくあでも一時的なものとしてのオンメモリデータ(とはいっても、最近のサーバでは数百GB程度はあったりすることもあるわけですが…仮想マシンというレベルで考えれば、まだ数GB〜数十GB程度の範囲までが一般的かと思いますし)だけであくまでもデータを処理する存在であるコンピュートなどは、情報処理の「流れ」を処理する存在であり、整合性や継続性さえ確保できれば動的な変化に対応することは理論的には可能であったわけで、昨今そうした動的な移動を実現する実装が進んでいる状況であると言えます。

対して、ストレージはそもそもが「データを保持することが基本要素」であり、一定の性能条件を満たすためにはどうしてもデータを局所化しておかないと実用に耐えないであろうことは明白といえるからです。たとえば、あるファイルがデータA、B、Cから構成されているとした場合、ファイルを読み込むためにはA、B、Cの3つのデータを全て集めてくる必要があります。AとBはすぐに読み込むことができても、Cが距離的に遠方にあった場合などは結局I/O性能はそのデータのロードに要する時間に依存してしまいます。どんなに通信が高速化したとしても、距離に起因する遅延だけは逃れることはできません*2し、たとえば通信の断絶などによって一部データへのアクセスができないなどとなってはストレージとしての役割を果たすことはできません。

ストレージはサーバに対するインターフェイスの部分だけを標準化し、内部実装はそれぞれ各社各製品が独自実装によって機能を盛り込むことで独自性と汎用性を両立させてきたわけですが、レプリケーションなどの機能による遠隔データ同期は可能であっても、それは基本的には非同期であり、同期実装は性能面から距離的な制約条件はより厳しいといえます*3

そんなこんなで、結局はストレージの制約によって仮想マシンといえども動的な移動は一定の範囲に制限されるのに、なぜVXLANなどのネットワークを拡張する仕組みが求められているのでしょうか。私が考える理由は、結局のところ、「運用でゴチャゴチャやらずに済む」、つまりは一度構成を行った後に設定変更を運用の中であちこち行ったりしなくても済むなどのメリットを得られる仕組みだから、という点です。

…と書いて、ここからが本題のハズだったんですが、前置き部分のつもりの文章があまりにも長くなりすぎましたし、最近推敲続きでずっと下書きに入ったままの状態が続いていましたので、エントリーのタイトルも変えて一度ここまでで一区切りとして公開することにします。続きはまた次回…と書きながら、前回も同じようなこと書いて続いていないダメブログ状態m(_ _)m ここのところエントリーにまとまりがないから、もう少し小粒な内容にしよう…。

*1:金に糸目をつけない?ような、メトロクラスターを構成することができるリッチなシステムは除いて、ですが。

*2:WAN高速化・最適化の技術などによりファイル読み込みというレベルでは遅延の影響を最小限にする技術はありますが、たとえば仮想マシンのOS環境そのものであったり、データベースの表領域などについて、整合性と性能の両面でWAN越えを実装することはそれでも難しいと言えるかと思います

*3:一部例外を除き、基本機には同期レプリケーションは同一サイト内におけるデータ冗長化を目的に使用する機能でしょう。