図1●物理ストレージの制約を仮想化で解消<BR>管理と性能の大きく二つの問題がある。管理については,ストレージを増設するほど,サーバーごとに個別に物理ディスクを管理する手間が増える。性能では,ランダム・アクセス性能が頭打ちになる。
図1●物理ストレージの制約を仮想化で解消<BR>管理と性能の大きく二つの問題がある。管理については,ストレージを増設するほど,サーバーごとに個別に物理ディスクを管理する手間が増える。性能では,ランダム・アクセス性能が頭打ちになる。
[画像のクリックで拡大表示]
図2●仮想化の粒度&lt;BR&gt;ディスクをアクセスする単位には,粒度の細かい生データ「ブロック」と粒度の粗い「ファイル」の大きく二つある。
図2●仮想化の粒度<BR>ディスクをアクセスする単位には,粒度の細かい生データ「ブロック」と粒度の粗い「ファイル」の大きく二つある。
[画像のクリックで拡大表示]
図3●ストレージの主な仮想化手法&lt;BR&gt;(a)は仮想化制御の通信路とデータ転送の通信路を分ける形態。Out-of-Band方式と呼ぶ。仮想ストレージにアクセスするコンピュータに仮想化ソフトを導入する必要があるが,データ転送のオーバーヘッドはない。(b)~(d)は仮想化制御とデータ転送が同じ通信路を使うため,In-Band方式と呼ぶ。仮想ストレージの利用するコンピュータに別途仮想化ソフトを導入する必要はないものの,In-Band方式はアクセス制御や仮想ストレージの構成管理などの通信がデータ転送の帯域を圧迫して仮想化機構がボトルネックになる可能性がある。
図3●ストレージの主な仮想化手法<BR>(a)は仮想化制御の通信路とデータ転送の通信路を分ける形態。Out-of-Band方式と呼ぶ。仮想ストレージにアクセスするコンピュータに仮想化ソフトを導入する必要があるが,データ転送のオーバーヘッドはない。(b)~(d)は仮想化制御とデータ転送が同じ通信路を使うため,In-Band方式と呼ぶ。仮想ストレージの利用するコンピュータに別途仮想化ソフトを導入する必要はないものの,In-Band方式はアクセス制御や仮想ストレージの構成管理などの通信がデータ転送の帯域を圧迫して仮想化機構がボトルネックになる可能性がある。
[画像のクリックで拡大表示]
図4●富士通研究所が開発中のオーガニック・コンピューティング・システムのストレージ&lt;BR&gt;キャッシュの容量をブレード・サーバーの増設という形で拡張できるのが特徴。ストレージ当たりのキャッシュを増やすことで,ディスク装置の性能差を隠蔽する。
図4●富士通研究所が開発中のオーガニック・コンピューティング・システムのストレージ<BR>キャッシュの容量をブレード・サーバーの増設という形で拡張できるのが特徴。ストレージ当たりのキャッシュを増やすことで,ディスク装置の性能差を隠蔽する。
[画像のクリックで拡大表示]

 ハードディスクの増設は簡単だ。購入してパーティションを作成してフォーマットするだけで,後はフォルダを作るなり,ファイルを放り込むなりすれば,それなりに使えてしまう。ついつい増設を重ねると,年々容量と性能が向上するため,読み書きの速度や容量の異なるハードディスクが散在することになる。ネットワークで手軽に共有できるネットワーク・ストレージの普及もこれに拍車をかけた。

 結果,基幹システムを除いた情報系のシステムは「メーカーの違う製品がバラバラに散在しているのが当たり前」(日立製作所RAIDシステム事業部事業企画本部製品企画部の安積義弘部長)という事態を招いた。このため管理が行き届かず,空き容量の多いハードディスクがユーザーに使われていなかったり,既に空き容量がほとんどないハードディスクにばかりアクセスが集中したりする。

 こうした事態に対応するのが,ストレージ装置群の仮想化だ。つまり,見掛け上は単一のストレージへと姿を変えていく。最終的には,ファイル操作のアドレス情報を一つのディレクトリ・ツリーで統合。仮想ストレージの背後で並列にディスクを読み書きすることで,読み書き性能の向上を図る。

利用効率と性能面で問題

 これまで情報システムのストレージは,全社で,また部門ごとにと,増設を繰り返してきた(図1[拡大表示])。その結果,性能やインタフェースなどの仕様が異なるストレージが乱立。例えば,新たにストレージ装置を追加したとする。既存のストレージ装置には,ユーザーが利用してきたデータが蓄積されている。当然,従来のストレージに利用が集中してしまい,増設したストレージ装置の利用効率はなかなか高まらない。このためストレージ間で空き容量を平準化するデータの移動やコピーといった管理の手間が増える。

 そこで管理については,仮想化機構を搭載するサーバーやスイッチで単一の仮想ストレージに物理ハードディスク群を統合することで,問題の解決を図る。仮想化機構が物理ハードディスクの空き容量を平準化する。古いディスクを撤去する場合でも,仮想ストレージをユーザーに対して提供しつつ,既存の物理ハードディスクの内容を増設したディスクに順次コピーする。速さの異なるストレージがあったとしても,利用頻度の高いデータを高速なストレージに,利用頻度が低いデータを低速なストレージに,といった最適化が可能になる。

 ストレージは性能面の課題も抱えている。ランダム・アクセス性能向上の停滞だ。例えば,最も一般的なストレージ装置であるハードディスクを考える。一般にハードディスクの性能は,データの読み書きを始めるまでのヘッドの位置決めにかかる時間(シーク時間)と,読み出しを開始した後のデータ転送速度で決まる。前者は,ディスクの回転数が高いほど短くなる。後者は,記録密度の上昇に応じて高速になる。このうち前者の性能向上が,発熱の問題から毎分1万5000回転で足踏みしている。記録密度は今後も上昇を続ける見込みだが,連続したデータの読み出し(シーケンシャル・アクセス)はともかく,ランダム・アクセス性能の向上は頭打ちになる。

 性能改善を目的とする仮想化では,異機種混在の状態にあるストレージ装置群の個々の性能差をキャッシュによって隠蔽する。インテリジェントなキャッシュとストレージを組み合わせる手法の開発が進んでいる。

管理/単一のツリーを使いファイルを仮想化

 ストレージの仮想化を実現するには,物理ハードディスクの格納場所と,ストレージ装置を利用するコンピュータが使うアドレスを,仮想化機構によって自由に組み替えられる仕組みが必要になる。そこで現在のコンピュータがハードディスクを利用する単位「ブロック*1」と「ファイル」の両面で仮想化する(図2[拡大表示])。ブロック・レベルの仮想化は,既に製品が登場。企業内のストレージ統合に使われている。今後はファイル・レベルの仮想化技術の整備が進む見込みだ。

 ファイルは,何らかの名前を付けたデータの固まりである。例えば一般的なOSのシェルであれば,ファイルの名前と場所を指定すると,ブロックのアドレスに変換される。

 問題はOSが管理するディレクトリ構造とストレージ装置が密に結びついていること。ストレージ装置ごとにディレクトリの管理が必要になる。そこでファイル・レベルの仮想化では,ストレージごとに分かれているディレクトリ構造を,単一のディレクトリ構造にまとめた「グローバル・ネームスペース」を生成する。具体的には,仮想化機構がディレクトリ・ツリーを生成し,仮想ストレージを利用するコンピュータがこのディレクトリ・ツリーを参照する。

 ファイル単位の仮想化の方がブロック単位のそれより粒度が粗いため,低速なネットワークで広域にストレージが分散する場合に向く。例えば「半導体設計や石油採掘などで,複数のプロジェクト・チームで異なるストレージを使いながら同時並行で作業を進めるケースがある。チームごとのストレージに格納された設計データや解析結果などの作業データを,横断的に利用する際のストレージとして使われている」(日本ネットワーク・アプライアンスの鈴木康正社長)という。

仮想化制御がボトルネックに

 課題は仮想ストレージを制御するボトルネックだ。ストレージの仮想化機構の実装形態は,(1)コンピュータに仮想化ソフトを導入,(2)物理ストレージを仮想ストレージとして見せるサーバー機または(3)スイッチを,物理ストレージとコンピュータの結節点に設置,(4)ストレージ装置自体に仮想化機構を実装,の大きく四つある(図3[拡大表示])。形態によっては,仮想ストレージが性能や機能拡張の面で制約を受ける。

 (1)は仮想化制御の通信路とデータ転送の通信路を分ける形態。データのアクセス先を制御する管理サーバー機を用意する。この管理サーバー機が生成した仮想ストレージを,仮想化ソフトを導入したコンピュータが利用する。コンピュータとストレージ装置の接続形態に変更を加えないため,Out-of-Band方式と呼ぶ。いったんデータ転送が始まってしまえば,コンピュータとストレージが直接データをやり取りする。仮想化機構が性能のボトルネックになることはない。ただ仮想化ソフトをコンピュータに導入する手間がかかる。

 (2)~(3)は,コンピュータとストレージの通信路の間に,仮想化機構を備えるサーバーやスイッチを設ける。仮想化制御とデータ転送が同じ通信路を使う(In-Band方式と呼ぶ)。仮想化制御とデータ転送とで通信路の帯域を分け合うため,アクセス制御や仮想ストレージの構成管理などの仮想化制御の通信が多いと,データ転送の帯域を圧迫して性能が下がる。仮想ストレージ規模を拡張する上で,仮想化機構がボトルネックになる可能性がある。

 (2)は仮想ストレージを制御するサーバー機の性能によって,仮想ストレージの規模や読み書きの速度が決まってしまう。半面,サーバー機の仮想化ソフトに機能を追加するだけで,仮想ストレージのバックアップやキャッシュの最適化などの機能を増やせる。(3)はスイッチに組み込むため高速だが,組み込み機器であるスイッチではOSやメモリー容量の制約で柔軟な機能拡張が難しい。そこで(4)のように,仮想化機構をストレージ装置側のハードウェアとして実装することで,性能を上げる手法も採用されている。

キャッシュ/並列処理で容量対性能比を上げる

 異機種混在を前提とするストレージの仮想化は,ランダム・アクセスとシーケンシャル・アクセスの両方で性能の高いSCSIハードディスクや,シーケンシャル・アクセス性能だけが高いATAハードディスクなど,性能差があるストレージ装置を仮想的に統合しなくてはならない。その際,仕様の異なるハードディスクの性能を隠蔽するキャッシュ機構が重要になる。

 例えば日立製作所のディスクアレイ「SANRISE Universal Storage Platform」では,ストレージ・コントローラに最大データ転送速度が68Gバイト/秒の高速なクロスバー・スイッチを搭載する。スイッチでキャッシュとディスク用およびコンピュータ用のインタフェースを1対1接続することで,キャッシュ・アクセスの高速化を図っている。また,制御のトラフィックを分離するために最大データ転送速度が15Gバイト/秒の制御用バスを別途設けた。

 ただストレージ装置に仮想化機構と大容量キャッシュを実装するのはコストがかかる。「価格とスケーラビリティの両立を目指す」(富士通研究所ITコア研究所ITアーキテクチャ研究部の武 理一郎部長)のが,富士通研究所が開発中のオーガニック・コンピューティング・システムのストレージ部(図4[拡大表示])。「ランダム・アクセス性能が低い低価格なハードディスクを使ったストレージの高速化は,一度にアクセスできるブロック数とキャッシュの量を増やすことで実現する」という設計思想のもと,キャッシュの容量をブレード・サーバーの増設という形で拡張できるようにした。

 役割に応じて,3種類のブレード・サーバーを用意。相互にメッセージを交換してデータを読み書きするインテリジェントなストレージとした。データを要求するサーバー層(StorageEngine),データをキャッシュするディスク・キャッシュ層(CacheEngine),ハードディスクにデータを格納するストレージ・プール層(RealStorage)に分ける。例えば読み出しでは,クライアントからの読み書き要求を受けたStorageEngineが,目的のデータを保持するRealStorageまたはCacheEngineにデータ要求のメッセージを転送する。CacheEngineにヒットしなかった場合は,RealStorageがデータをクライアントとCacheEngineの両方に転送する。