ConoHaオブジェクトストレージについて(導入編)
投稿日:2014/09/03 13:30
ConoHaオブジェクトストレージがリリースされました
ConoHaオブジェクトストレージは、インターネット経由で使用できるオブジェクトストレージサービスです。容量無制限、転送量無制限、可用性が高いストレージサービスを、わかりやすい価格体系で利用できます。ConoHaのVPSサービスから利用することはもちろんですが、ConoHaを利用していなくても利用することができ、APIを経由してウェブ上のどこからでもデータを保存、取得することができます。
また、ConoHaオブジェクトストレージは、一般的なオブジェクトストレージの機能を満たしつつ、ConoHa VPSなどからも簡単に利用でき、コントロールパネルが共通なため管理が簡単で、決済などもまとめることができます。
オブジェクトストレージとは
オブジェクトストレージは比較的新しい技術なので、まだご存じない方も多いと思います。オブジェクトストレージとはどういうものなのでしょうか?
結論を先に書くと、オブジェクトストレージは、既存のストレージとは少し異なった特徴を持っています。なので、その特徴を押さえておかないと「なにが便利なのかわからない・・・」となってしまうかもしれません。この技術ブログでは、皆様にオブジェクトストレージの特徴をできるだけ理解してもらえることを目指し、何回かに分けて解説を進めていきます。
オブジェクトストレージについて説明する前に、他のストレージ技術であるブロックストレージ、ファイルストレージについて知っておくと理解がしやすいです。まずはこれら二つの技術について簡単に説明をします。そのあと、オブジェクトストレージがこれら二つと異なる点を説明しつつ、特徴や向いている用途などを説明したいと思います。
ブロックストレージ
ブロックストレージの代表的な例は、コンピュータに直接接続されたハードディスク、SSD、CD-ROMドライブなどです(実際は”ブロックデバイス”と呼ばれることが多いです)。ほかにも後述しますがRAIDデバイスや、SAN(Storage Area Network)もブロックストレージに分類されます。
Linuxの話をすると、ハードディスク、CD-ROMドライブ、RAMディスクなど、ランダムアクセスが可能なディスク装置をブロックデバイスとして扱います。これはブロックと呼ばれる一定サイズのデータ(Linuxでは4KByteが多いです)でランダムアクセスするデバイスのことです。ブロックストレージはこのブロックデバイスとしてOSから扱えるストレージデバイスです。データを扱う単位はこのブロックです。
一方で、システムが大規模になり、サーバが仮想化され、数が多くなった場合に、サーバに直結された単一のストレージだけでは、利用効率、管理、データの共有など、様々な面で不利な面が出てきました。そして複数のデバイスをまとめて高速化や冗長性を高めるためのRAIDや、複数のストレージを集約しiSCSIやファイバチャネルなど高速ネットワークで接続するSANなどの技術が登場しました。
これらはすべて、OSからはコンピュータに直接接続されたデバイスと同じようにアクセスされます。OSからはデバイスの種類(HDDやSANやRAIDデバイス)を気にせず、共通したインターフェイスでアクセスできることがブロックストレージのメリットになります。これを「デバイスを抽象化する」と表現したりします。
ファイルストレージ
ファイルストレージの代表的な例はNASです。最近は家電量販店に行くとNASという名前以外に「ネットワーク対応HDD」や「ネットワーク接続ハードディスク」などという名前の製品が販売されていたりします。NASはNetwork Attached Storageの略で、そのままネットワークに接続されるストレージという意味ですね。みなさんの職場でMicrosoft Word©やMicrosoft Excel©のファイルを他の人と共有するために、「共有フォルダ」を使って作業をしていたりしませんか? あれもNASが設置されているから使えるものです。
OSがファイルストレージにアクセスする際、ネットワークを経由してアクセスします。ただブロックストレージがブロックの単位でデバイスにアクセスしていたのに対し、ファイルストレージのデータの扱いは、OSのファイルシステムが扱う単位です。プロトコルはSMB(Windows)やAFP(MacOS)などです。
オブジェクトストレージ
さて本題のオブジェクトストレージについてです。他の二つのストレージとはどのように違うのでしょうか?
オブジェクトストレージはネットワークを経由してアクセスするストレージで、データを扱う単位は「オブジェクト」です。データアクセスにはREST APIを使用します。少し難しい話なので順を追って解説します。
「オブジェクト」とは何のことでしょうか? プログラミング経験者の方には馴染みがあるのですが、一般的にはわかりにくい概念かもしれません。とりあえず「ファイル」に属性情報である「メタデータ」が付随したものと理解してもらえれば良いかと思います。メタデータというのはオブジェクトに対して様々な情報を付加するもので、例えばオブジェクト毎に保存期限を指定したり、バージョンを設定したり、オブジェクトの種類を設定したりするのに使用します。他にも自分でカスタマイズした属性情報をセットすることもできます。
オブジェクトストレージはこの「オブジェクト」をREST APIを通じてクライアントとやりとりします。RESTの詳細についてはとても書き切れないので割愛しますが、オブジェクトに対し一意なURLが存在し、一般的なHTTPのGET, POST, PUT, DELETEメソッドを使用してオブジェクトを操作すると考えていただければ十分です。
オブジェクトストレージの仕組みがわかったところで、ブロックストレージやファイルストレージと比較してみましょう。
-
オブジェクトストレージはRESTを使用するため、OSやファイルシステムに依存しません。ブロックストレージやファイルストレージは、ストレージにアクセスする際にOSやファイルシステムが介在しますが、オブジェクトストレージの場合はHTTPアクセスさえできればストレージにアクセスできます。
-
オブジェクトは常にメタデータが付随すると説明しました。オブジェクトストレージを使用しない一般的なアプリケーションでは、ファイルとメタデータを別々に保存することが一般的です。たとえば、写真共有サービスで、画像データをファイルとして保存し、メタデータをRDBMSなどに保存するなどです。オブジェクトストレージを使用すると、このような複雑な実装を避け、シンプルな実装をすることができます。
-
オブジェクトストレージには「ディレクトリ(フォルダ)」という概念がありません。オブジェクトストレージではバケットというデータを保存する領域を用意し、オブジェクトに一意なIDを付けそこに格納します。ただ、ConoHaオブジェクトストレージでは、コントロールパネルから擬似的なディレクトリを作成し、他の二つのストレージににた管理を行うことも可能です。
-
オブジェクトストレージは容量無制限です(少なくともConoHaでは)。なので容量を気にしたり、ストレージの運用に気を遣う必要はありません。他の二つのストレージは、空き容量を含め運用に気を使う必要があります。
-
一般的なオブジェクトストレージは、データを3分散して冗長化して保管することで高い信頼性を実現します。ConoHaオブジェクトストレージもこの構成になっています。他の二つのストレージシステムと同等かそれ以上の耐障害性、可用性があります。
-
一般的には、ブロックストレージは高速です。ファイルストレージも、高速なネットワークに接続されていればかなりの速度が出ます。用途によっては、ローカルストレージを置き換える使い方もできるでしょう。これらはファイルに対する低レベルのアクセス、たとえばファイルに対するシークや、部分的なリード/ライトなどが可能なためです。オブジェクトストレージは、操作の単位がオブジェクトであることや、HTTPアクセスのオーバーヘッドがあるため、他二つのストレージよりは低速です。
-
上記と同じ理由で、従来のファイル操作ツール、例えばWindowのエクスプローラやMacOSのFinderなどは、オブジェクトストレージには使用できません。オブジェクトストレージ向けのツールも増えてきてはいますが、まだまだ数は少ないと言わざるを得ません。
以上により、オブジェクトストレージは既存のブロックストレージやファイルストレージを置き換えるものではなく、全く性質の違うストレージと言うことがわかります。
オブジェクトストレージの使いどころ
では、オブジェクトストレージをどんな用途に使うと良いのでしょうか? その特徴からすると、構造化されていない情報、あまり書き換えの発生しないデータ、容量の増加が読めないケースに向いていそうです。逆に、データに対してランダムアクセスを行ったり、頻繁に更新あるデータには向かないでしょう。
下記にオブジェクトストレージに向いているデータ、向いていないデータの例をまとめました。
-
オブジェクトストレージに適したデータ
- 画像ファイル
- 動画ファイル
- バックアップファイル
- ログファイルのアーカイブ
- 仮想マシンイメージ
-
オブジェクトストレージに適していないデータ
- データベース(SQLiteのような1ファイルに書き出すものや、RDBMSのデータファイル)
- リアルタイムに書き込みのあるログファイル
- 頻繁に更新のあるキャッシュファイル
まとめ
長くなりましたが、以上がオブジェクトストレージの解説でした。オブジェクトストレージの特徴をまとめますと。
- アクセスするのにREST APIを使用する
- ディレクトリなどが存在しないフラットな構造
- ファイルの代わりにメタデータが付随したオブジェクトを格納する
- 冗長化による高い信頼性
と言ったところでしょうか。次回は実際にオブジェクトストレージを触ってみたいと思います。
アカウント登録(無料)
ConoHa byGMO