ストレージ仮想化の基礎知識
ストレージ仮想化の歴史
本連載では、ストレージ仮想化の技術について3回にわたって解説していく、第1回では、ストレージの仮想化におけるこれまでの歴史や、押さえておきたいシンプロビジョニング、ILMといった技術について解説する。
現時点で何の断りもなく「仮想化」と言うと、「IAサーバー上に複数の仮想サーバーを稼働させる形のサーバー仮想化」を真っ先に思い浮かべる人が大半だろう。しかし、ストレージの仮想化はサーバー仮想化よりも早く実用化され、運用されている技術だ。
仮想化技術全般に共通する目標は、物理的なデバイスの詳細を隠ぺいし、制約を回避するために論理的なインターフェースを構築/提供すること、である。ストレージの場合、基本となる物理的なデバイスとは、個々のHDDのドライブ単体ということになるだろう。
現在のHDDは、単体でも容量がTB単位に達しており、十分大容量と言える状況になっている。しかし、これは段階的な高密度化の進展によるもので、数年前には最大でも数十~数百GB程度のドライブが一般的だった。
さらに言えば、PCが本格的な普及を始めた20年ほど前には外部記憶デバイスの主役はフロッピーディスクであり、当時のHDDは数十MB程度の容量しかなかった。既にフロッピーディスクは容量でUSBメモリに全く及ばず、ついにドライブ自体の生産が終了するというニュースも報じられた。
記憶媒体の世代交代が進む中、HDDが技術革新を繰り返して現在もなお主役の座を譲っていない理由は、市場の期待に十分に応えるだけの大容量化を継続的に実現してきたからだ。
HDDは大容量化を繰り返して進化してきたが、それでもある時点で入手可能なHDDの最大容量が、ユーザーが必要とする記憶容量の上限値を超えていたわけではない。PCユーザーの場合、HDDのサイズを超えるような巨大なデータは扱う術がないと言い切ってしまっても過言ではないと思われるが、企業の情報システムはそういうわけにもいかない。HDDの単体容量という制約を回避する技術は必須となる。
RAIDによるHDDの統合
HDDの場合、「分割」と「統合」という2つの方向の「仮想化」がどちらも長く利用されてきている。まず分割は、パーティション分割としておなじみの手法だ。HDDの容量を分割し、それぞれを独立したHDDのように見せかけることができる。一方、統合に関しては、主にRAID(Redundant Arrays of Inexpensive Disks)が用いられてきた。RAIDとは、安価で低信頼のHDDを複数組み合わせて信頼性を確保しようとする技術だが、結果的にHDDの単体容量を超える記憶領域をつくり出し、物理デバイスの制約を超えた運用を可能にすることにも貢献している。
一般的なWindows PCを例に、RAIDによるHDDの統合の状況を見てみよう。
例えば、1TBのHDDを3台用意し、Dドライブ、Eドライブ、Fドライブとして接続したとする。この場合、ユーザーが利用可能な記憶容量は合計で3TBとなるが、この使い勝手は3TBのサイズのドライブが1台接続されている場合と同じにはならない。どのデータをどのドライブに記憶したか、という情報をユーザーが正確に把握しておく必要があるという問題もあるが、最大の問題は、1TBを超えるサイズのファイルを記録することができない、という点にある。
仮に、サイズが2.5TBの巨大ファイルがあったとしたら、このファイルを保存するためには最低でも3つの断片に分割して各ドライブに分散して記録し、使用する際にはこの断片をつなぎ合わせるという作業をユーザーが行うことになる。一方、RAID-0によるストライピングを使う場合、ユーザーは3TBのドライブをDドライブとして使用することが可能になる。ここにはもちろん、2.5TBのサイズのファイルをそのまま記録することができる。物理的な実体としては1TBのドライブが3台あることに変わりはないが、これを統合して仮想的な3TBのドライブを創り出しているわけだ。
これも仮想化の1つの実例であり、ドライブの最大容量という物理的な限界を意識せずに柔軟な運用が可能になっているのである。