オブジェクトストレージ、ファイルストレージ、ブロックストレージの違い

オブジェクトストレージ、ファイルストレージ、ブロックストレージの違いについて解説します。

ストレージの違い

ファイルストレージ、オブジェクトストレージ、ブロックストレージは、扱うデータの容量と種類によって使い分けられます。以下の表は、ファイルストレージ、オブジェクトストレージ、ブロックストレージの特徴とその違いをまとめたものです。

  ファイルストレージ オブジェクトストレージ ブロックストレージ
一貫性 結果整合性 強い整合性 強い整合性
構造化 階層構造 フラット構造 ボリューム・ブロック
メタデータの付与 限定的 多様 無し
制御構造と処理速度 階層構造により一定容量まで高速 インデックスにより高速 緻密で効率的な制御により高速
プロトコル CIFS/NFS HTTP(S) iSCSI/FCoE
適合データ 容量:小〜中規模
更新頻度:高
容量:中〜大規模
更新頻度:低
容量:小〜中規模
更新頻度:高
ストレージの違い

ファイルストレージとは

ファイルストレージの仕組み

ファイルストレージにおいて、データは「フォルダ」や「ディレクトリ」といった形式で、階層的に管理、保存されます。階層的に保存されたデータには一意のパスを用いて、階層をたどっていく形でアクセスします。データ保存の際にはファイル名、作成日、サイズ、データの種類など最低限のメタデータが付与されます。macOS、Linux, Windows等、UNIX系OSで汎用的に採用されているファイルシステムのストレージ形式なので、多くの人に馴染みの深いストレージ形式です。

ファイルストレージのメリット

ファイルストレージの全てのファイルはディレクトリ/サブディレクトリの形式で階層的に整理されているため、小中規模のデータ管理を行うにあたっては、簡潔かつ直感的な利用を実現しています。そのため家庭用・業務用コンピュータでは今でもファイルストレージが主流なストレージとして搭載されています。またファイルストレージは、CIFSやNFSといった通信規格を用いることで、ネットワーク越しに利用することもできます。

一方でファイルストレージは大規模なデータ利用や非構造化データの管理には向きません。ファイルストレージではデータ容量の増加に伴い、ハードウェアマシンへのリソース要求が大きくなりますが、その構造上、ファイルシステムの容量増加だけではパフォーマンス低下を解決することができないのです。

オブジェクトストレージとは

オブジェクトストレージの仕組み

オブジェクトストレージにおいて、データはフラットな形式で保存されます。またファイルストレージに比べて保存期間やコピー回数など、より多くのメタデータを付与することができます。全てのメタデータはオブジェクト と一緒に格納され、一意の識別子を持つフラットなアドレス空間に保存されます。またメタデータは任意に設定可能であり、フォルダやディレクトリでグルーピングしていたファイル群も、メタデータによる複数の属性情報でグルーピングを行うことができます。

オブジェクトストレージのメリット

オブジェクトストレージはフラットにアドレス空間に保存されているため、インデックスの作成が容易に行えます。データへのアクセスはメタデータに対する検索を通じて行われますが、インデックスが活用されることで、大規模なデータや非構造化データであっても高速な検索を実現可能にしています。

またオブジェクトストレージは仮想化の技術を用いて物理的に離れた複数のサーバーを並列化して、一つのストレージプールとする分散ファイルストレージの形式で構成することができます。これにより物理ストレージの管理コストが削減され、スケールアウト(データ容量の急激な増大への対応)を実現しています。

ファイルストレージでは通信規格について社内ネットワークからのアクセスを想定したCIFS、NFSが主流となっていましたが、オブジェクトストレージでは通信規格にHTTP(S)が採用されたことで、REST形式で場所を問わず自由なアクセスを実現しています。

ブロックストレージとは

ブロックストレージの仕組み

ブロックストレージは、物理マシンの記録領域をボリュームという単位で分割、さらにその内部を固定長のブロックに切り出して、そのブロックにデータを保存、管理するというストレージ形式です。ボリュームとブロックには固有の番号(アドレス)が振り分けられており、ユーザーの要求するデータ容量に合わせて、必要となるブロックリソースの確保と統合が行われます。また保存するデータがブロックサイズを越える際に、複数のブロックにまたがってデータの保存が行われます。その際にはブロック番号が指定されているため、ブロックが連続している必要はありません。

ブロックストレージのメリット

ブロックストレージは階層構造を必要としない他、読み込むデータへのパスを複数指定することができるため高速なアクセスを行うことができます。きめ細かやな制御を行うことができるため、高効率なパフォーマンスを求められるアプリケーションの実装に向いています。

一方でブロックストレージは価格が高価で、メタデータの付与を行うこともできません。そのためブロックストレージはファイルストレージやオブジェクトストレージよりも低レイヤーに位置付けられ、それらの基盤としての役割を果たすことが一般的です。

まとめ

ストレージにもそれぞれ特徴があり、構造化・非構造化されたデータの扱い、データへのアクセス方法、データの一貫性など、場面に合わせて最適化が行われてきました。これらは一概に優先順位があるわけではなく、状況に応じた使い分けが必要になります。実務においてはこのような低レイヤーのアプリケーションを触る機会は減ってきていますが、大規模な開発やデータセンターを自社で運営するにあたっては必要な知識となります。