オブジェクトストレージとは ― ブロックとの違い
画像や
オブジェクトストレージとは、データをキーで出し入れするストレージ
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文字を直すときに、それぞれ何で指して頼み、どこが書き換わるかを並べています。
ブロックストレージは、決まった大きさのブロックを番号で読み書きします。ファイルの形にまとめるのはサーバの側のOSなので、直す部分のブロックだけを書き換えられます。ファイルストレージも、ファイルの途中を指して書き換えられます。
オブジェクトストレージの基本の形では、オブジェクトの一部だけを書き換えられません。SNIAの解説は、通常はオブジェクト全体を書き直すとしています。Google Cloud Storageも、オブジェクトは変更できず、置き換えだけができると説明しています。
一方で、SNIAの解説によれば、読むときはオブジェクトの一部だけを読むこともできます。書き換えについては、例外を持つ製品もあります。たとえばAzure Blob Storageの追加BLOBは、末尾への追記だけができます。同じ製品のページBLOBは、512バイトのページ単位で一部を書き換えられます。書き換えの扱いは、使う製品の資料で確かめます。
| 観点 | ブロック | ファイル | オブジェクト |
|---|---|---|---|
| 置く | 決まった | ファイル | データと |
| 指し方 | ブロックの | フォルダを | キー |
| 階層 | なし | フォルダの | 基本は |
| 主な | iSCSI・ファイバチャネル | NFS・SMB | HTTPの |
| 一部の | できる | できる | 基本は |
| メタデータ | ほとんど | 名前・ | 利用者が |
オブジェクトストレージを大きく増やせる理由
ファイルストレージでデータを探すときは、フォルダの木を上から1段ずつたどります。オブジェクトストレージでは、識別子を1つの平らな索引から引くだけで済みます。NISTの資料は、この平らな索引による拡張性を、オブジェクトストレージの主な利点に挙げています。
AWSの比較ページは、オブジェクトストレージをペタバイト単位、数十億個のオブジェクトまで増やせるとしています。たとえばS3は、データを複数のサーバに複製して置くことで、可用性も高めています。機器を足して全体を大きくする考え方を、スケールアウトと呼びます。
書いた直後に読めるかは製品ごとに違う
複数のサーバに複製するストレージでは、書いた直後の読み出しで新しいデータが返るかが問題になります。この扱いを整合性と呼び、オブジェクトストレージでは製品ごとに決まりが違います。
たとえばAmazon S3とGoogle Cloud Storageは、オブジェクトを書き込んだ直後に読むと新しいデータを返すと説明しています。一方で、S3はバケットの設定の変更、Cloud Storageはアクセス権の変更が、すぐには行き渡らない場合があるとしています。
同じキーに2つの書き込みがほぼ同時に届いたときも、扱いは製品によります。S3の資料は、時刻の新しい書き込みが残るとし、ロックが要るならアプリの側で作るよう求めています。整合性を前提にしたアプリを作るときは、使う製品の資料で条件を確かめます。
オブジェクトストレージが向く用途と向かない用途
向くのは、大量のデータをまとめて置き、丸ごと読み書きする用途です。写真や動画の配信、ログの蓄積、バックアップと長期の保管がその代表です。次の図で、用途ごとに3つのどれが向くかを確かめられます。
- ブロック向く
- ファイル-
- オブジェクト-
- ブロック向く
- ファイル-
- オブジェクト-
- ブロック-
- ファイル向く
- オブジェクト-
- ブロック-
- ファイル-
- オブジェクト向く
- ブロック-
- ファイル使える
- オブジェクト向く
- ブロック-
- ファイル-
- オブジェクト向く
向かないのは、同じデータの一部を何度も書き換える用途です。データベースのデータファイルや仮想マシンの起動ディスクは、細かい書き換えが続きます。オブジェクトストレージに置くと、直すたびにオブジェクト全体を置き換えることになるため、ブロックストレージを使います。
バックアップをオブジェクトストレージに置くときも、置き場所の分け方は大切です。元のデータと離れた場所に置く考え方は、バックアップの記事の3-2-1ルールにまとめています。
アクセスの頻度で保存先を分ける階層化
S3やAzure Blob Storageでは、読む頻度に合わせて保存先の層を選べます。よく読むデータは標準の層に置き、めったに読まないデータは保存の料金が安い層へ移します。安い層ほど、読み出すときの料金が高くなります。
最も安いアーカイブ用の層では、すぐには読めない製品もあります。たとえばAzure Blob Storageのアーカイブ層は、読む前に別の層へ戻す必要があり、最大で15時間かかることがあります。どちらの製品にも、条件に合ったデータを別の層へ自動で移す設定があります。
AWSでの層の選び方と自動で移す設定は、S3の記事で説明しています。AWSのブロックとファイルのサービスは、EBSとEFSの記事で比べています。
練習問題(全5問)
正解:データと
オブジェクトストレージは、
解説記事:オブジェクトストレージとはの
正解:
フラットな
解説記事:バケット・キー・メタデータの
正解:直した
SNIAの
解説記事:ブロック・ファイルとの
正解:ブロックストレージ
データベースは、
解説記事:向く
正解:フラットな
NISTの
解説記事:
選んでから「採点する」を押すと、解説つきで答え合わせができます。
参考にした資料
- SNIA Dictionary(object storage・object service・object・metadataの各項目)
- SNIA「What is Object Storage?」
- NIST SP 800-209「Security Guidelines for Storage Infrastructure」(2.1〜2.3)
- AWS「Compare block, file, object storage」
- Amazon S3 User Guide「What is Amazon S3?」(オブジェクト・キー・REST API・整合性)
- Amazon S3 User Guide「Organizing objects in the Amazon S3 console by using folders」
- Microsoft Learn「Introduction to Blob (object) Storage」
- Microsoft Learn「Understanding block blobs, append blobs, and page blobs」
- Microsoft Learn「Access tiers for blob data」
- Google Cloud「About Cloud Storage objects」
- Google Cloud「Cloud Storage consistency」