Sheepdog/概要
デザイン †
sheepdogのアーキテクチャは完全なSymmetric,つまり左右対称です.
メタサーバのような中心ノードが存在しません.
このようなシステム構成は次のような特徴と持ちます.
- 性能と容量における直線的なスケーラビリティを持っている.
クラスタ環境により高い性能,またはより大きなストレージ容量が必要である場合、単純に新しいマシンをクラスタ環境に加えることによって、Sheepdogは直線的に性能,ストレージ容量の増加が可能です.
- NSPOFである.
NSPOFとは,No Single Point Failureの略でノードが1つ壊れただけで全体が停止することがないようなシステムであることを意味します.
つまり,ノードが故障しても,データは他のマシンを通してアクセス可能です.
- 簡単な管理が可能である.
クラスタ環境の構築に関するコンフィグファイルが殆どありません.
管理者が新たに加えられたノードでSheepdogプログラムを実行するとき,Sheepdogは自律的に加えられたノードを検出して、クラスタのメンバとして構成し始めます.
アーキテクチャ †
Sheepdogは,Sheepdogクライアント(qemuブロックドライバ)に簡単なKeyValueInterface?を提供するストレージシステムです.
Sheepdogは複数のノードから構成されます.
Sheepdogは1ノード(collieと呼ばれる)とパッチを適用したQEMU/KVMから構成されます.
Virtual Disk Image (VDI) †
SheepdogクライアントはVMイメージを固定サイズオブジェクトに分割します.(デフォルトで4MB).
そして、分配されたストレージシステムにオブジェクトを保存します.
各オブジェクトは、グローバルにユニークな64bit IDによって決定されて,複数のノードにコピーされます.
#ref(): File not found: "dvi.png" at page "Sheepdog/デザイン"
オブジェクト †
Sheepdogオブジェクトは2つのタイプに分類されます.
- VDI Object
VDIオブジェクトはイメージ名,ディスクサイズ,作成時間などのVMイメージのためのメタデータを保持しています.
- Data Object
VMイメージはデータ・オブジェクトに分割されます.
通常,Sheepdogクライアントはこのオブジェクトにアクセスします.
Sheepdogは,オブジェクトがどこに保存されるかを決定するのにconsistent hashを使用します.
consistent hashは,ハッシュ表の機能性を提供するスキーマです.
そして,ノードの参加か離脱がオブジェクトに関するマッピングをあまり変えません.
入出力負荷はノードの向こう側にハッシュ表を用いることでバランスをとっています.
手当たりしだいに分配するのではなく,インテリジェントにデータを分配するメカニズムは今後の活動です.
各ノードはリングそれ自身のIDに基づいているconsistent hashによって配置されます.
どこにオブジェクトを保存するかを決定するために,SheepdogクライアントはオブジェクトIDを得て,リングに適合するポイントを発見し,時計回りにターゲットノードを決定します.
VDIの管理 †
多くの場合,クライアントが同時に同じイメージにアクセスするのを許容しません.
しかし,Sheepdogクライアントは独自にそれらのイメージにアクセスできます.
しかし,いくつかのVDI操作(例えば,VDIをロックして,VDIのクローンを作る)には,排他的な全体的な情報のアップデートがあります.
この可用性の高いシステムを実装するために,私たちはGroup communication systems(GCS)を使用します.
Group communication systemsはメッセージの全ての命令などの提供を保証します.
私たちはcorosync,有名なGCSの1つを使用します.