Scality社(Magic Quadrant「分散ファイルシステム、オブジェクトストレージ」)(2)
前回に引き続きScalityについてまとめていきます。今回はアーキテクチャについてです。 www.dbstories.com
Scalityの提供機能
Scalityのアーキテクチャを追っていきますが、資料については以下を参照しています。 What is the RING? An Overview
ScalityはRINGと呼ばれるソフトウェアを利用してファイルアクセスに対する機能を提供しています。 ソフトウェアとしての提供のため、コモディティサーバ(x86サーバ)で稼働するためユーザーが自由に構成を行うことができ、以下の機能が提供されています。
- ストレージ容量、性能に対する拡張性
- データアクセス(接続)方法の提供
- データ保護機能の提供
RINGソフトウェア
RINGの技術的構成要素は3つ存在します。
RING Connectors ファイルアクセスの方法を提供するもので、REST API、Amazon S3、NFS、SMBなどのアクセスプロトコルを提供しているものです。
Storage Nodes and IO Daemons RINGはデータを各ノードに分散管理していますが、そのノードに相当する要素になります。
System Management システム管理の機能でいわゆる監視や統計情報の提供などの機能となります。
Chordアルゴリズム
そもそものキモはデータ増加に対してどのようにスケーラビリティを提供しているのかということになります。RINGはそのアーキテクチャをPeer-to-Peer技術で用いられているChordアルゴリズムを使用しています。Chordアルゴリズムは、キー空間(keyspace)をリング状に扱っています。このリング状というところから、RINGという名前がついていると推測されます。
このChordについては、以下の資料が理解に大変役に立ちます。 ChordアルゴリズムによるDHT入門 論文を読み込んで作成しており非常にわかりやすくまとまっています。本当にありがたいものです。
RINGに格納されるファイルは全てユニークなIDがハッシュ関数によってつけられます。 ファイルそのものについては128bitが割り当てられていて、全部で160bitあります。(冒頭24bitはデータ分散用、末尾8bitはデータ保持方式により決定)
すなわち1602-1だけのIDが管理されることになります。これをChordアルゴリズムによるDHT入門に記載されている方法で分散管理していくことになります。What is the RING? An Overviewと合わせて資料を読み解くと以下のようなことが言えます。
- 分散ハッシュテーブル(Distributed Hash Table)によりキー空間(Keyspace)をそれぞれのノードで分散管理する。
- ノードの追加、削除(障害による排除)は局所的に行われて全体に影響は出ない。
- データの利用する際に実際に、データを管理しているノードに到達するための最大数はノード数Nの場合、O[1/2(log(N))]となる。1000ノードの場合であっても5回で到達可能となる。
- サーバ台数だけで分散させると分散が不十分になるため、virtual nodeという考えを導入して、1台のサーバを複数の仮想ノードに分割させている。What is the RING? An Overviewによると1台のサーバで6個の仮想ノードを作成しているようです。以下の図参照
その他の特徴
RING自体は上記のようにChordをもとにした分散データ管理の仕組みを取り入れていて、されにファイル管理のための付加機能を提供しています。ファイル管理のための機能は基本的なものはサポートされていています(今後も向上していくと思われます)。その他の目についた特徴は以下の通りです。
- RINGノードはデータセンターをまたいだ構成も可能。
- データ保護のためには「Replication(複製)」「Erasure Coding(RAIDのようにデータと復元のためのパリティを用いて保護)」の2種類をサポート
まとめ
RINGソフトウェアのファイル管理の基礎部分はChordアルゴリズムによるものとなっており、そのアルゴリズム理論についての研究がほぼ完成していると仮定すると(ネットを検索した限りでは決定的な弱点は見当たりませんでした)、RINGのコア機能についてもおよそ完成しているのではないかと言えます。すなわちRINGソフトウェアのバージョンが上がっていっても格納済みデータの互換性は保つことができるのではないかと想像します。巨大クラスタを構成すると、HW/SWのEOSL(保守切れ)が良く問題となるのですが、一定の解決策を提示していると考えます。 Scalityについては今後も継続してウォッチしていくつもりです。