転送:http://blog.chinaunix.net/uid-20593827-id-4046681.html
クライアントが(パスオフセットIDやファイルオブジェクトを介して)データの部分にアクセスする必要がある分散ストレージソリューションでは、最初のステップは、サーバ上に格納されたデータを配置することです。一方が他方の位置を計算し、別の場所のマッピングデータを管理するために、1台のまたは複数のサーバを指定するために2つのアプローチが、ある特定のアルゴリズムIDを通るパスまたはファイルオブジェクトコンパクト設計と直接的にオフセットされています。
第一の方法は、単純で発生しやすく、このようなHDFSの名前ノード、迅速プロキシノードとして、しかし、欠点も明らかであるが、単一障害点は、そのHAまたはロードバランサー十分なセキュリティを確保し、要求をオフロードするために使用されなければならないれます。
ストレージ本物の安全を確保するためのデータなので、通常は3つの非常に重要なのは、一般的なデータは、セキュリティを失うことなくスペースを節約するために、二つに構成することができ、バックアップ、存在しなければならない、あなたはまた、EC(消去コーディング)を採用することができますしかし、いくつかの大規模な計算ECは、ストレージノードのCPUのアイドルならば、これを考慮してください。また、セキュリティ上の理由から、一般的なバックアップルール、別のバックアップに同じデータが頻繁にして、セキュリティのために、ECを使用して、別のラック上に存在があり、最高のデータのECは異なるラックに配布します。
また、非常に重要な分散ストレージの横方向伸張、すなわち、ノードが自動的に増加または減少です。二つのアプローチ、元のデータの一つは、新しいノードを置くためにのみ、新たなデータストレージを理解していないがあること、もう一つの方法は、物理的なストレージにデータを修正するためにバインドされている元のデータ再配分であり、マッピング。実装が十分でない場合は今のストレージソリューションは、平均的なディスクの使用状況を考慮するために、既存のデータは、ストレージノード、一貫性と外部アクセスの性能低下、さらにはシステム間で大量のデータトラフィックにつながる可能性があり、再配布する傾向がありますこれは、使用できなくなりました。
迅速一貫ハッシュアルゴリズム
迅速オブジェクトインタフェースが提供される以下のように、オブジェクトデータの位置アルゴリズムは:
1.ハッシュ空間を形成するために、0~2 ^ Nを取った後、端部をハッシュ値をすべてのオブジェクトの名前のハッシュを行いますリング
2.各ストレージ装置は、異なるハッシュ値、ハッシュを割り当てられて均等にリング上に分配されます。(その後、マイグレーションによるデバイスの変化に起因する不均衡データを低減するために、各デバイスは、仮想ハッシュ値を複数割り当てられ、異なる千鳥分布の仮想デバイスのハッシュ値)
3.オブジェクトが書き込まれる場合、このオブジェクトが計算されます前向きに対応する開始位置をハッシュリングからハッシュ値は、第1のデバイスが見つかったオブジェクトの格納場所です。
4.元のデバイスのデバイス減少、ハッシュ値は変わらないが、デバイスは、データのアクセス性を確保するために、データ移行に隣接する必要がある場合。
実装上、両者のハッシュは、固定されたハッシュアルゴリズムは、したがって、オブジェクトは、ライフサイクルでのみパーティションIDを持っているので、デバイスパーティションと呼ばれ、二次元アレイによって開発者(_replica2part2dev_id)。見つけるためにパーティション9527を対応DEVは次のとおり_replica2part2dev_id [0]〜[9527]、_replica2part2dev_idの[9527]、[1] _replica2part2dev_id [2] [9527]
このように、SWIFT環はハッシュマップ生成デバイスにデバイスからデータに位置しているクリティカルマップを変更するときにも変更されます。データを管理するために使用されるプロキシノード迅速なので、あなたはプロキシノードとの間のマッピング関係を同期する必要があります。
セファロのクラッシュアルゴリズム
CEPHは、複数のストレージ・インターフェースが、底部または格納されたオブジェクトの使用を提供します。
対象装置は、2つの概念、プールと配置グループ(PG)、算出された第1プールに対応する各オブジェクトを有し、そして、対応するPG、PGは、オブジェクトに対応する位置の複数コピーすることによって得ることができる計算の間CEPH 、最初の1の3つのコピーは、プライマリが、残りはreplciaと呼ばれています。
、オブジェクトfooを仮定それは次のようにデバイスが算出され、プールにあるバー:
1計算ハッシュfooが0x3F4AE323のに価値がある
ID 2 3得るために計算されたプールバー
PG 3プールバーの数256,0x3F4AE323 MOD 256であります= 23、IDは3.23 PGなるよう
PG [24、3、12]によって、対応するOSDマッピングテーブルで見つかった4 PG、24は一次である、3,12レプリカである
第四のステップは、アルゴリズムCRUSHでありますコアは、CRUSHアルゴリズムは、各デバイスの重量データオブジェクト重量の分布を計算します。オブジェクト分布がクラスター・マップおよびデータ配信ポリシーによって決定されます。クラスタマップは、(ラックの数、ラックあたりのサーバー数、サーバーあたりのディスク数として)使用可能なストレージ・リソースと階層を説明します。配置規則によって構成されたデータの配布ポリシー。各ルールは、(例えば、異なるラックに3つのコピーのような)これらの制約のコピーを格納し、データ・オブジェクトのどのように多くのコピーを決定します。
クラスタを粉砕、ルールPGIDおよびXはOSD(OSDオブジェクト記憶装置)のセットを設定するために計算されます。
(osd0、OSD1、OSD2 ... OSDN)= CRUSH(クラスタ、ルール、PGID)
ハッシュ関数パラメータxを含む複数のパラメータを使用して、CRUSHハッシュ関数OSDのセットからのX決定的とは無関係であるようにします。CRUSHは、クラスタマップ、配置ルール、Xを使用します。CRUSHは、同様の入力の結果の間に相関がない、擬似ランダムアルゴリズムです。
別の一貫性を粉砕し、迅速ハッシュがハッシュ迅速環が直線状デバイスを分散している、ということである、CRUSHは、階層構造の使用で、ユーザは詳細な戦略、より複雑従ってCEPHプロファイルを定義することができます。
# 始めるクラッシュ地図
#の デバイス
デバイス 10 device10
デバイス 11 osd.11
デバイス 12 osd.12
デバイス 13 osd.13
デバイス 21 osd.21
デバイス 22 osd.22
デバイス 23 osd.23
}
#の バケット
ホストceph1 {
ID -2
アイテムのosd.11の 重量 1.000
アイテムのosd.12の 重量 1.000
アイテムのosd.13の 重量 1.000
}
ホストceph2 {
ID -4
アイテムのosd.21の 重量 1.000
アイテムのosd.22の 重量 1.000
アイテムのosd.23の 重量 1.000
}
ラック unknownrack
{
ID -3 ALG 藁
0#ハッシュ rjenkinsを、ハッシュアルゴリズム
アイテムのceph1の 重量 3.000
アイテムのceph2の 重量 3.000
}
プール(ルート)デフォルト {
ID -1
アイテム unknownrack 重量24.000
}
#ルール
ルールデータ{
ルールセット 0
タイプ、複製
MIN_SIZE 1
MAX_SIZE 10
ステップテイクデフォルト
ステップ chooseleafのfirstn 0タイプのホスト
ステップが発します
}
#エンドクラッシュマップ
GlusterFS柔軟性ハッシュアルゴリズムの
GlusterFSは、通常のファイルシステム・インタフェース、ファイルのパス名のみ、クライアントが提供するアクセスの両方を提供します。
GlusterFSが完了するまでに、クライアント上のファイルを見つけ、保存するための分散型の方法を使用しています。
GlusterFSフロントエンドの同じディレクトリ構造で作成し、クライアントサービス、つまり、各ストレージノード上のフォルダを作成するには、クライアント上の任意のファイルは、実際のフォルダに対応しますが、特定のファイルがどのノードに存在してもらうために計算されますA。次のようにストレージノードが配置されている上のファイル:
1.すべてのファイルのハッシュ空間に32ビットの整数であり
、各フォルダについて2.ストレージノードの拡張属性は、フォルダハッシュ範囲フォルダが表示されますファイルの範囲に落ちたが、ノードに保存されている
サーバーに接続されたクライアントは、ハッシュ範囲は、すべてのストレージノード上のフォルダへのアクセスが必要になりますとき3.
4.ファイルにアクセスして、クライアントコンピューティングファイルをハッシュ値は、対応するアクセスノード
新しいノードは、このように既存のフォルダに新しいファイルを作成し、既存のフォルダの拡張属性を変更しない5.ファイルがまだ古いノードに配置されます
6。ディスク使用率のバランスをとるためには、新しいノード上の実際のファイルを作成し、古いリモートノード上のリンクを作成することができます。(これは、ノード間のデータ伝送の大量の原因となる)
リバランス手動対応関係を再マッピングすることができるファイルと、ストレージノード7。
比較では、glusterfsファイル位置付けは比較的簡単ですが、ノードは操作がさらにトラブルを展開されています。特定の選択アップだけでなく、より適している機能サービスを決定します。