(-> % read write unlearn)

My writings on this area are my own delusion

オブジェクトストレージ と ファイルストレージ と ブロックストレージ

ストレージの話をする際、この3つをはっきりと比較して考えたことがありませんでした。 それぞれの意味や用途は分かっているのだけど。

ファイル・ストレージは、データを階層構造で保持しており、ファイル自体にはメタデータは含まれません*1。 階層構造自体が一種のメタデータの役割を果たしているとも言えます。 例えば、/home/hata/tmp/nginx/access.logというファイルであれば、このファイルはhataユーザの持ち物でNginxのアクセスログを一時的に置いているのかな、というのが分かります。 このファイルを/直下に移動してしまえば、上記のような情報(メタデータ)はなくなります。 代表的なファイル・ストレージとしてはNASです。

オブジェクト・ストレージは、ファイルを階層構造で格納せずフラットに保持し、ファイル自体にメタデータを付属させます。 こうすることで、ファイルストレージのような構造(ディレクトリ)の区切れを意識することなくファイル単位で柔軟に分散、再配置ができます。 そのため、ブロックストレージは大容量ストレージの構築に向いています。 一方で、データ更新のレイテンシが高く更新の頻繁な用途には向きません*2 代表的なオブジェクト・ストレージといえば、やはりAWS の S3でしょう。

ブロック・ストレージは、ファイルをブロックというさらに細かい単位ににおいて管理します。 通常、1つのファイルは1つ以上のブロックにまたがります。 ファイル・ストレージはファイル・システムやファイル共有機能を経由してデータ転送されるため、ブロックストレージに比べるとレスポンスが遅い。

もちろん、ブロック・ストレージをOSがファイルシステムとしてフォーマットして使えば、そのOSを介してアクセスするユーザからはファイル・ストレージとしてアクセス可能になります。

itpro.nikkeibp.co.jp

この視点でAWSのサービスを眺めると、↓な感じでしょうか。

レスポンス 容量の拡張性
S3 (Simple Storage Service) オブジェクト・ストレージ
EFS (Elastic File System) ファイル・ストレージ
EBS (Elastic Block Store) ブロック・ストレージ

この記事の下のほうの比較表がとてもまとまってて分かりやすいです。

www.fujitsu.com


このブログの全ての意見は個人のものであり、所属する団体や企業とは一切関係がありません。
All opinions expressed are solely my own and do not express the views or opinions of my employer.

*1:ファイル作成日時や作成者などのごく簡単なメタデータは保持しています

*2:なんで、他と比べてレイテンシが高くなるんだろう?HTTPによるAPIアクセスだから?HTTPが使われているのは一般的な実装の話なだけであって、オブジェクトストレージ自体の定義とは関係ないような気もするけど。