オブジェクトストレージ(オブジェクトベースストレージ[ 1 ]またはブロブストレージとも呼ばれる)は、ファイルシステムのようにデータをファイル階層として管理するストレージアーキテクチャや、ブロックストレージのようにデータをセクターやトラック内のブロックとして管理するストレージアーキテクチャとは異なり、データを「ブロブ」または「オブジェクト」として管理するコンピュータデータストレージ方式です。[ 2 ]各オブジェクトには通常、可変量のメタデータとグローバルに一意な識別子が関連付けられています。オブジェクトストレージは、デバイスレベル(オブジェクトストレージデバイス)、システムレベル、インターフェースレベルなど、複数のレベルで実装できます。いずれの場合も、オブジェクトストレージは、アプリケーションが直接プログラム可能なインターフェース、複数の物理ハードウェアインスタンスにまたがる名前空間、オブジェクトレベルの粒度でのデータレプリケーションやデータ配信などのデータ管理機能など、他のストレージアーキテクチャでは対応できない機能を実現することを目指しています。
オブジェクトストレージシステムでは、データが一度書き込まれて一度(または複数回)読み取られる、大量の非構造化データを保持できます。 [ 3 ]オブジェクトストレージは、 Facebookの動画や写真、Spotifyの楽曲、 Dropboxなどのオンラインコラボレーションサービスのファイルなどのオブジェクトを保存する目的で使用されます。[ 4 ]オブジェクトストレージの制限の 1 つは、トランザクションデータには適していないことです。オブジェクトストレージは、 NAS のファイルアクセスと共有を置き換えるように設計されていないため、ファイルの単一の正確に更新されたバージョンを維持するために必要なロックおよび共有メカニズムをサポートしていません。[ 3 ]
ジム・スターキーは、デジタル・イクイップメント・コーポレーションで働いていたときに、不透明なデータ・エンティティを指すために「ブロブ」という用語を作り出した。この用語はRdb/VMSに採用された。 ブロブは、バイナリ・ラージ・オブジェクトの略語であるとユーモラスに説明されることが多い。スターキーによれば、このバクロニムは、アポロ・コンピュータのマーケティング部門で働いていたテリー・マッキバーが、この用語は略語である必要があると感じたときに生まれた。マッキバーは、基本ラージ・オブジェクトという拡張語を使い始めた。これは後に、ブロブをバイナリ・ラージ・オブジェクトとして遡及的に説明することに取って代わられた。スターキーによれば、「ブロブは何の略語でもない」。頭字語を拒否し、彼は造語の動機を説明し、「ブロブはシンシナティ[ sic ]、クリーブランド、あるいは何でも食べてしまうものだ」と述べ、1958 年のSF映画『ブロブ』に言及した。[ 5 ]
1995年、ガース・ギブソンが主導したネットワーク接続セキュアディスクの研究により、名前空間操作などのあまり一般的でない操作を、読み書きなどの一般的な操作から分離して、両方のパフォーマンスとスケーラビリティを最適化するという概念が初めて提唱されました。[ 6 ] 同年、ベルギーの企業FilePoolが設立され、アーカイブ機能の基盤を構築しました。オブジェクトストレージは、1996年にギブソンのカーネギーメロン大学の研究室で研究プロジェクトとして提案されました。 [ 7 ] もう1つの重要な概念は、データの書き込みと読み取りをより柔軟なデータコンテナ(オブジェクト)に抽象化することでした。オブジェクトストレージアーキテクチャによるきめ細かいアクセス制御[ 8 ]は、NASDチームの1人であるハワード・ゴビオフによってさらに詳しく説明されました。彼は後にGoogleファイルシステム の発明者の1人となりました。[ 9 ]
その他の関連研究としては、1987年に開始され、Lustreファイルシステムを生み出したカーネギーメロン大学のCodaファイルシステムプロジェクトがある。[ 10 ]また、 1999年に開始されたUCバークレーのOceanStoreプロジェクト[ 11 ]や、1998年に開始されたテネシー大学ノックスビル校のロジスティックネットワークプロジェクト[ 13 ]もある。1999年、ギブソンはNASDチームが開発したコンセプトを商業化するためにPanasasを設立した。
Seagate Technologyはオブジェクトストレージの開発において中心的な役割を果たしました。ストレージネットワーキング業界協会(SNIA)によると、「オブジェクトストレージは1990年代後半に誕生しました。1999年のSeagateの仕様では、最初のコマンドのいくつかが導入され、オペレーティングシステムがストレージの消費から効果的に解放される方法が示されました。」[ 14 ]
1999 年 10 月 25 日付けの「オブジェクトベースストレージデバイスコマンドセット提案」の予備版は、Seagate の Dave Anderson が編集し、National Storage Industry Consortium (NSIC) の作業の成果として、Carnegie Mellon University、Seagate、IBM、Quantum、StorageTekが貢献して提出されました。[ 15 ]この文書は、委員会を設立し、SCSI インターフェースプロトコルに基づいた仕様を設計することを目的として、INCITS T-10 (国際情報技術標準化委員会) に提案されました。この文書では、オブジェクトを一意の識別子とメタデータを持つ抽象化されたデータとして定義し、オブジェクトがファイルシステムとどのように関連付けられるか、その他多くの革新的な概念が定義されています。アンダーソンは、1999年10月のSNIA会議でこれらのアイデアの多くを発表した。その発表では、1997年2月に当初の共同研究者(シーゲイトはアンダーソンとクリス・マラカパリが代表)の間で締結された知的財産協定が明らかにされ、オブジェクトストレージ、スケーラブルコンピューティング、プラットフォーム非依存性、ストレージ管理の利点が網羅されていた。[ 16 ]

オブジェクトストレージの設計原則の一つは、ストレージの下位レイヤーの一部を管理者やアプリケーションから抽象化することです。そのため、データはブロックや(ファイルのみではなく)オブジェクトとして公開され、管理されます。オブジェクトには、インデックス作成や管理に役立つ追加の記述プロパティが含まれています。管理者は、ディスク容量を活用するための論理ボリュームの構築や管理、ディスク障害に対処するためのRAIDレベルの設定といった、下位レベルのストレージ機能を実行する必要がありません。
オブジェクトストレージでは、ファイル名やファイルパスだけでなく、より多様な方法で個々のオブジェクトを識別・参照できます。オブジェクトストレージは、バケット内またはシステム全体で一意の識別子を追加することで、より大規模な名前空間をサポートし、名前の衝突を解消します。
オブジェクトストレージは、追加機能をサポートするために、ファイルメタデータをデータから明示的に分離します。ファイルシステムの固定メタデータ(ファイル名、作成日、種類など)とは異なり、オブジェクトストレージは、次のような目的で、完全な機能を持つカスタムオブジェクトレベルのメタデータを提供します。
さらに、一部のオブジェクトベースのファイルシステム実装では、次のようになっています。
オブジェクトベースストレージデバイス(OSD)および一部のソフトウェア実装(例:DataCore Swarm)は、ストレージデバイスレベルでメタデータとデータを管理します。
オブジェクトストレージは、アプリケーションがデータを操作できるようにするためのプログラムインターフェースを提供します。基本レベルでは、基本的な読み取り、書き込み、削除操作のための作成、読み取り、更新、削除(CRUD)機能が含まれます。オブジェクトストレージの実装によっては、さらに高度な機能、例えばオブジェクト/ファイルのバージョン管理、オブジェクトのレプリケーション、ライフサイクル管理、異なる階層やストレージタイプ間でのオブジェクトの移動などをサポートしています。ほとんどのAPI実装はRESTベースであり、多くの標準的なHTTP呼び出しを使用できます。
市場で入手可能なクラウドストレージの大部分は、オブジェクトストレージアーキテクチャを採用しています。代表的な例としては、 2006年3月に登場したAmazon S3、Microsoft Azure Blob Storage、IBM Cloud Object Storage、Rackspace Cloud Files(そのコードは2010年にOpenStackプロジェクトに寄贈され、OpenStack Swiftとしてリリースされました)、そして2010年5月にリリースされたGoogle Cloud Storageなどが挙げられます。
分散ファイルシステムの中には、オブジェクトベースのアーキテクチャを採用しているものがあり、ファイルメタデータはメタデータサーバーに、ファイルデータはオブジェクトストレージサーバーに格納されます。ファイルシステムクライアントソフトウェアは、これらの個別のサーバーとやり取りし、それらを抽象化することで、ユーザーやアプリケーションに完全なファイルシステムを提供します。
オブジェクトストレージの初期バージョンの中には、アーカイブ用途で利用されたものもあった。これは、パフォーマンスよりも不変性などのデータサービスに最適化されていたためである。EMC CenteraとHitachi HCP(旧HCAP)は、アーカイブ用途でよく挙げられるオブジェクトストレージ製品である。Quantum ActiveScale Object Storage Platformもその一例である。
より汎用的なオブジェクトストレージシステムが市場に登場したのは2008年頃だった。Yahoo!メールのようなウェブアプリケーション内の「専用」ストレージシステムの驚異的な成長と、クラウドストレージの初期の成功に惹かれ、オブジェクトストレージシステムはクラウドストレージの規模と機能を備え、企業内やクラウドストレージサービスプロバイダーを目指す企業に導入できると期待された。
オブジェクトストレージシステムの中には、統合ファイルおよびオブジェクトストレージをサポートするものがあり、クライアントがストレージシステムにオブジェクトを保存すると同時に、他のクライアントが同じストレージシステムにファイルを保存することができます。 [ 17 ]ハイブリッドクラウドストレージ分野の他のベンダーは、クラウドストレージゲートウェイを使用してオブジェクトストレージ上にファイルアクセスレイヤーを提供し、SMBやNFSなどのファイルアクセスプロトコルを実装しています。
オブジェクトストレージ製品が市販されていなかったり、使用事例が非常に特殊だったりしたため、大手インターネット企業の中には独自のソフトウェアを開発したところもあった。Facebookは、大規模な写真管理のニーズに効率的に対応するために、コードネーム「Haystack」と呼ばれる独自のオブジェクトストレージソフトウェアを開発したことで有名である。[ 18 ]
プロトコル層とデバイス層でのオブジェクトストレージは20年前に提案され、約10年前に「オブジェクトベースストレージデバイスコマンド」(OSD)としてSCSIコマンドセットに承認されましたが[ 19 ]、Seagate Kinetic Open Storageプラットフォームの開発まで実用化されていませんでした[ 20 ] [ 21 ] 。オブジェクトストレージデバイス用のSCSI コマンドセットは、国際情報技術標準化委員会(INCITS)のT10委員会のためにSNIAのワーキンググループによって開発されました[ 22 ] 。T10 はすべてのSCSI標準を担当しています。
オブジェクトストレージ製品の初期製品の一つであるLustreは、トップ100スーパーコンピュータの70%、トップ500の約50%で使用されています。[ 23 ] 2013年6月16日現在、これにはトップ10のうち7台が含まれており、現在4番目に速いシステムである中国の天河2号と、7番目に速いオークリッジ国立研究所のスーパーコンピュータTitanが含まれています。[ 24 ]
オブジェクトストレージシステムは、特にサーベンス・オクスリー法などのコンプライアンス法の施行後、2000年代初頭にアーカイブプラットフォームとして広く採用されました。EMCのCentera製品は、市場投入から5年後の2007年までに3,500社以上の顧客と150ペタバイトの出荷を達成しました。 [ 25 ]日立のHCP製品も、ペタバイト規模の顧客を多数抱えています。[ 26 ]新しいオブジェクトストレージシステムも、特にeBayのオークションサイトのような非常に大規模なカスタムアプリケーションで注目を集めており、EMC Atmosは1日に5億個以上のオブジェクトの管理に使用されています。[ 27 ] 2014年3月3日現在、EMCは1.5エクサバイト以上のAtmosストレージを販売したと主張しています。[ 28 ] 2014年7月1日、ロスアラモス国立研究所は、史上最大規模となる500ペタバイトのストレージ環境の基盤としてScality RINGを選択した。 [ 29 ]
FacebookのHaystackのような「キャプティブ」オブジェクトストレージシステムは、驚異的な規模に成長しました。2009年4月、Haystackは600億枚の写真と1.5ペタバイトのストレージを管理しており、毎週2億2000万枚の写真と25テラバイトを追加していました。[ 18 ] Facebookは最近、1日に3億5000万枚の写真を追加し、2400億枚の写真を保存していると述べています。[ 30 ]これは最大で357ペタバイトに相当する可能性があります。[ 31 ]
クラウドストレージは、多くの新しいウェブアプリケーションやモバイルアプリケーションがバイナリデータを保存する一般的な方法として選択するようになったため、広く普及しています。[ 32 ] SmugmugやDropbox などの多くの人気アプリケーションのストレージバックエンドとして、Amazon S3は大規模に成長し、2013年4月には2兆を超えるオブジェクトが保存されていると述べています。[ 33 ] 2か月後、MicrosoftはAzureに8.5兆というさらに多くのオブジェクトを保存していると主張しました。[ 34 ] 2014年4月までに、Azureは20兆を超えるオブジェクトを保存していると主張しました。[ 35 ] Windows Azure Storageは、Blob(ユーザーファイル)、テーブル(構造化ストレージ)、キュー(メッセージ配信)を管理し、それらすべてをオブジェクトとしてカウントします。[ 36 ]
Coldago Researchは、オブジェクトストレージの年次評価レポートを2024年のレポート「Coldago Research Map 2024 for Object Storage」で発表し、急速な進化、普及の拡大、エンタープライズユースケースの拡大を特徴とするオブジェクトストレージのイノベーション、市場動向、将来の方向性についての洞察を提供しました。Coldago Researchは、オブジェクトストレージ市場の定性的および定量的分析を採用し、技術的能力、市場の勢い、イノベーションの軌跡に基づいて13の注目すべきベンダーをランク付けしました。[ 37 ]
Coldagoの2024年オブジェクトストレージ市場リーダーランキングはアルファベット順で、Cloudian、DataCore、Dell EMC、Huawei、IBM、MinIO、Pure Storage、Quantum、VAST Dataとなっています。[ 38 ]
OSD標準の最初のバージョンでは、[ 39 ]オブジェクトは64ビットのパーティションIDと64ビットのオブジェクトIDで指定されます。パーティションはOSD内で作成および削除され、オブジェクトはパーティション内で作成および削除されます。パーティションまたはオブジェクトには固定サイズは関連付けられておらず、デバイスの物理的なサイズ制限またはパーティションの論理クォータ制約に従って拡張できます。
オブジェクトを記述する属性は、拡張可能なセットです。オブジェクトのバイト数や変更時刻など、一部の属性はOSDによって直接実装されます。セキュリティメカニズムの一部である特別なポリシータグ属性もあります。その他の属性はOSDでは解釈されません。これらは、永続ストレージとしてOSDを使用する上位レベルのストレージシステムによってオブジェクトに設定されます。たとえば、属性はオブジェクトの分類や、異なるOSDに保存されている異なるオブジェクト間の関係の把握に使用できます。
listコマンドは、パーティション内のオブジェクトの識別子のリストを返します。オプションで、属性値との一致に基づいてフィルタリングすることも可能です。また、listコマンドは、リストされたオブジェクトの選択された属性を返すこともできます。
読み取りコマンドと書き込みコマンドは、属性の取得コマンドや設定コマンドと組み合わせたり、併用したりすることができます。この機能により、上位ストレージシステムがOSDへのインターフェースを経由する回数が減り、全体的な効率が向上します。
SCSIコマンドセットの第2世代である「オブジェクトベースストレージデバイス - 2」(OSD-2)では、スナップショット、オブジェクトのコレクションのサポートが追加され、エラー処理が改善されました。[ 40 ]
スナップショットとは、パーティション内のすべてのオブジェクトを新しいパーティションにコピーした、ある時点のオブジェクトのことです。OSDは、コピーオンライト技術を使用してスペース効率の良いコピーを実装できます。これにより、2つのパーティションはスナップショット間で変更されていないオブジェクトを共有します。あるいは、OSDはデータを物理的に新しいパーティションにコピーすることもできます。標準規格では、書き込み可能なクローンと読み取り専用のスナップショットが定義されています。
コレクションは、他のオブジェクトの識別子を格納する特殊なオブジェクトです。コレクションには、オブジェクトの追加や削除を行う操作、およびコレクション内のすべてのオブジェクトの属性を取得または設定する操作があります。コレクションはエラー報告にも使用されます。メディアの欠陥(ディスクの不良箇所など)やOSD実装内のソフトウェアエラーによってオブジェクトが破損した場合、その識別子は特別なエラーコレクションに格納されます。OSDを使用する上位レベルのストレージシステムは、このコレクションを照会し、必要に応じて是正措置を講じることができます。
オブジェクトストアとキーバリューストアの境界は曖昧で、キーバリューストアがオブジェクトストアと大まかに呼ばれることもある。
従来のブロックストレージインターフェースでは、0から始まる番号が付けられた一連の固定サイズのブロックが使用されます。データは正確にその固定サイズである必要があり、論理ブロック番号(LBN)で識別される特定のブロックに格納されます。後で、その固有のLBNを指定することで、そのデータブロックを取得できます。
キーバリューストアでは、データはLBNではなくキーによって識別されます。キーは「cat」や「olive」、「42」など、任意の長さの任意のバイト列にすることができます。データ(この用語では値と呼ばれます)も固定サイズである必要はなく、任意の長さの任意のバイト列にすることができます。データストアにキーとデータ(値)を提示することでデータを保存し、後でキーを提示することでデータを取得できます。この概念はプログラミング言語にも見られます。Pythonでは辞書、Perlではハッシュ、Java、Rust、C++ではマップなどと呼ばれています。Memcached、Redis、CouchDBなど、キーバリューストアを実装しているデータストアもいくつかあります。
オブジェクトストアは、キーバリューストアと2つの点で類似しています。1つ目は、オブジェクト識別子またはURL(キーに相当するもの)は任意の文字列にすることができます。[ 41 ] 2つ目は、データのサイズが任意であることです。
ただし、キーバリューストアとオブジェクトストアにはいくつかの重要な違いがあります。まず、オブジェクトストアでは、各データに限られた属性セット(メタデータ)を関連付けることができます。キー、値、および属性セットの組み合わせはオブジェクトと呼ばれます。次に、オブジェクトストアは大量のデータ(数百メガバイトまたはギガバイト)に最適化されていますが、キーバリューストアでは値は比較的小さい(キロバイト)ことが想定されています。最後に、オブジェクトストアは通常、結果整合性などの弱い整合性保証を提供するのに対し、キーバリューストアは強い整合性を提供します。
オブジェクトストレージは、データが一度書き込まれ、一度(または複数回)読み込まれる非構造化データに適しています。静的なオンラインコンテンツ、データバックアップ、画像アーカイブ、ビデオ、写真、音楽ファイルはオブジェクトとして保存できます。