ITの教科書検索
入門読了 約10分

オブジェクトストレージとは ― ブロックとの違い

画像やログ、バックアップの置き場所に向くオブジェクトストレージは、キーを指してHTTPで丸ごと出し入れします。ブロック・ファイルとの違いと、向かない用途も図で比べます。

目次
  1. オブジェクトストレージとは
  2. バケット・キー・メタデータ
  3. HTTPのAPIで読み書きする
  4. ブロック・ファイルとの違い
  5. 大きく増やせる理由
  6. 書いた直後に読めるか
  7. 向く用途と向かない用途
  8. 保存先の階層化
  9. 練習問題
  10. 参考にした資料

オブジェクトストレージとは、データをキーで出し入れするストレージ

Webサービスの写真や動画、毎日たまるログ、バックアップは、量が多く、いったん置いたら丸ごと読むデータです。こうしたデータの置き場所に向くのがオブジェクトストレージです。データにキーとメタデータを付けたオブジェクトを単位にして、HTTPで出し入れします。基本の形では、フォルダの階層を持たず、すべてのオブジェクトを1つの平らな空間に置きます。

クラウドでは、ブロックとファイルに並ぶ3つ目のストレージの種類として使われます。ブロックとファイルの違いは、NASとSANの記事で比べています。

バケット・キー・メタデータの関係

オブジェクトは、データの中身と、それを説明する情報をひとまとめにしたものです。説明する情報をメタデータと呼びます。種類や作成日時のほか、部署名のような項目を利用者が足せる製品が多くあります。

オブジェクトを1つずつ見分けるために、オブジェクトには名前が付きます。この名前をキーと呼び、同じ入れ物の中では重なりません。オブジェクトを入れる入れ物は、製品によってバケットやコンテナと呼ばれます。

キーには「経理/2026/見積.pdf」のように「/」を含められます。ただし、「経理」というフォルダが作られるわけではありません。「/」も含めた全体が1つの名前で、置き場所はフラットな名前空間です。

管理画面では、名前の先頭がそろったオブジェクトをまとめて、フォルダのように見せることがあります。Amazon S3とGoogle Cloud Storageの資料も、標準の形のバケットでは、フォルダは名前の区切りで見せているだけだと説明しています。一方で、どちらにもフォルダの階層を持つ種類のバケットがあり、Azure Blob Storageにも階層を持たせる設定があります。

読み書きはHTTPのAPIで行う

オブジェクトストレージには、Webと同じHTTPで読み書きを頼みます。置くときはPUT、読むときはGET、消すときはDELETEのように、HTTPのメソッドで操作を指定します。読み書きする相手は、URLの中のバケット名とキーで指します。

ストレージの業界団体SNIAの解説によると、どのオブジェクトストレージも、作る・読む・消す・メタデータで探すという単純な操作を備えています。HTTPで扱えるので、Webのアプリやクラウドの中のサービスから直接使えます。誰でも読めるように公開したオブジェクトなら、ブラウザでURLを開いて読むこともできます。

代表的な製品には、Amazon S3、Azure Blob Storage、Google Cloud Storageがあります。呼び方や機能は違いますが、どれもHTTPでオブジェクトを出し入れする点は同じです。製品によっては、NFSなどでファイルストレージのようにつなぐ機能も用意されています。

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

3つの違いは、同じデータの一部を直すときにはっきり出ます。次の図は、同じファイルの1文字を直すときに、それぞれ何で指して頼み、どこが書き換わるかを並べています。

ブロックストレージ番号で指すiSCSI・FCなど1203番を書く書き換える1個のブロックだけファイルストレージパスで指すNFS・SMB見積.txtの5文字目を書く書き換える経理/見積.txtファイルの途中だけオブジェクトストレージキーで指すHTTPのAPIPUT 経理/見積.txt書き換えるキー 経理/見積.txtデータ+メタデータオブジェクト全体書き換わる部分書き換わる部分ブロックストレージ番号で指すiSCSI・FCなど1203番を書く書き換える1個のブロックだけファイルストレージパスで指すNFS・SMB見積.txtの5文字目を書く書き換える経理/見積.txtファイルの途中だけオブジェクトストレージキーで指すHTTPのAPIPUT 経理/見積.txt書き換えるキー 経理/見積.txtデータ+メタデータオブジェクト全体
同じ「経理/見積.txt」の1文字を直すときの違いです。ブロックとファイルは一部だけを書き換えられますが、オブジェクトは多くの製品で、オブジェクト全体を新しいものに置き換えます。

ブロックストレージは、決まった大きさのブロックを番号で読み書きします。ファイルの形にまとめるのはサーバの側のOSなので、直す部分のブロックだけを書き換えられます。ファイルストレージも、ファイルの途中を指して書き換えられます。

オブジェクトストレージの基本の形では、オブジェクトの一部だけを書き換えられません。SNIAの解説は、通常はオブジェクト全体を書き直すとしています。Google Cloud Storageも、オブジェクトは変更できず、置き換えだけができると説明しています。

一方で、SNIAの解説によれば、読むときはオブジェクトの一部だけを読むこともできます。書き換えについては、例外を持つ製品もあります。たとえばAzure Blob Storageの追加BLOBは、末尾への追記だけができます。同じ製品のページBLOBは、512バイトのページ単位で一部を書き換えられます。書き換えの扱いは、使う製品の資料で確かめます。

ブロック・ファイル・オブジェクトストレージの違い(SNIA・NIST SP 800-209・AWSの比較ページをもとに作成)
観点ブロックファイルオブジェクト
置く単位決まった大きさのブロックファイルデータとメタデータをまとめたオブジェクト
指し方ブロックの番号フォルダをたどるパスキー(オブジェクトの識別子)
階層なし(ファイルシステムはサーバの側)フォルダの階層がある基本はなし(フラットな名前空間)
主なつなぎ方iSCSI・ファイバチャネルNFS・SMBHTTPのAPI
一部の書き換えできるできる基本はできず、丸ごと置き換える
メタデータほとんど持たない名前・大きさ・日時・権限など利用者が項目を足せる

オブジェクトストレージを大きく増やせる理由

ファイルストレージでデータを探すときは、フォルダの木を上から1段ずつたどります。オブジェクトストレージでは、識別子を1つの平らな索引から引くだけで済みます。NISTの資料は、この平らな索引による拡張性を、オブジェクトストレージの主な利点に挙げています。

AWSの比較ページは、オブジェクトストレージをペタバイト単位、数十億個のオブジェクトまで増やせるとしています。たとえばS3は、データを複数のサーバに複製して置くことで、可用性も高めています。機器を足して全体を大きくする考え方を、スケールアウトと呼びます。

書いた直後に読めるかは製品ごとに違う

複数のサーバに複製するストレージでは、書いた直後の読み出しで新しいデータが返るかが問題になります。この扱いを整合性と呼び、オブジェクトストレージでは製品ごとに決まりが違います。

たとえばAmazon S3とGoogle Cloud Storageは、オブジェクトを書き込んだ直後に読むと新しいデータを返すと説明しています。一方で、S3はバケットの設定の変更、Cloud Storageはアクセス権の変更が、すぐには行き渡らない場合があるとしています。

同じキーに2つの書き込みがほぼ同時に届いたときも、扱いは製品によります。S3の資料は、時刻の新しい書き込みが残るとし、ロックが要るならアプリの側で作るよう求めています。整合性を前提にしたアプリを作るときは、使う製品の資料で条件を確かめます。

オブジェクトストレージが向く用途と向かない用途

向くのは、大量のデータをまとめて置き、丸ごと読み書きする用途です。写真や動画の配信、ログの蓄積、バックアップと長期の保管がその代表です。次の図で、用途ごとに3つのどれが向くかを確かめられます。

用途
仮想マシンの起動ディスクに向く方式
  • ブロック向く
  • ファイル-
  • オブジェクト-
OSは、ディスクの決まった場所を細かく何度も読み書きします。番号で指したブロックだけを書き換えられるブロックストレージが向きます。
オブジェクトストレージに置くと、一部を直すたびにオブジェクト全体を置き換えることになります。

向かないのは、同じデータの一部を何度も書き換える用途です。データベースのデータファイルや仮想マシンの起動ディスクは、細かい書き換えが続きます。オブジェクトストレージに置くと、直すたびにオブジェクト全体を置き換えることになるため、ブロックストレージを使います。

バックアップをオブジェクトストレージに置くときも、置き場所の分け方は大切です。元のデータと離れた場所に置く考え方は、バックアップの記事の3-2-1ルールにまとめています。

アクセスの頻度で保存先を分ける階層化

S3やAzure Blob Storageでは、読む頻度に合わせて保存先の層を選べます。よく読むデータは標準の層に置き、めったに読まないデータは保存の料金が安い層へ移します。安い層ほど、読み出すときの料金が高くなります。

最も安いアーカイブ用の層では、すぐには読めない製品もあります。たとえばAzure Blob Storageのアーカイブ層は、読む前に別の層へ戻す必要があり、最大で15時間かかることがあります。どちらの製品にも、条件に合ったデータを別の層へ自動で移す設定があります。

AWSでの層の選び方と自動で移す設定は、S3の記事で説明しています。AWSのブロックとファイルのサービスは、EBSとEFSの記事で比べています。

練習問題(全5問)

Q1オブジェクトストレージの説明として、最も適切なものはどれ?
Q2フラットな名前空間のオブジェクトストレージで「photos/2026/cat.jpg」というキーのオブジェクトを置いた。正しい説明はどれ?
Q31GBの動画ファイルのうち、先頭の数バイトだけを直したい。多くのオブジェクトストレージでの扱いとして適切なものはどれ?
Q4データベースのデータファイルを置く場所として、最も向いているものはどれ?
Q5オブジェクトストレージが、データの量が増えても扱いやすい理由として適切なものはどれ?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

参考にした資料

関連記事

クラウドの記事を続けて読む

クラウド 全36本中33本目