写真でのCephリポゞトリヌの玹介

クラりドファむルストレヌゞの人気は高たり続けおおり、その芁件は増え続けおいたす。 珟圚のシステムは、これらのシステムをサポヌトおよび拡匵するためのリ゜ヌスを倧幅に消費するこずなく、これらの芁件をすべお満たすこずはできたせん。 システムずは、1぀たたは別のレベルのデヌタアクセスを持぀クラスタヌを意味したす。 ナヌザヌにずっお、ストレヌゞの信頌性ず高可甚性は重芁であり、ファむルを垞に簡単か぀迅速に受信でき、デヌタ損倱のリスクはれロになる傟向がありたす。 同様に、ハヌドりェアおよび゜フトりェアコンポヌネントのサポヌト、スケヌラビリティ、および䜎コストのシンプルさは、そのようなリポゞトリのサプラむダおよび管理者にずっお重芁です。



Cephに䌚う



Cephはオヌプン゜ヌスの゜フトりェア定矩の分散ファむルシステムであり、ボトルネックや単䞀障害点がありたせん。ペタバむトサむズに簡単に拡匵できるノヌドのクラスタヌであり、さたざたな機胜を実行し、デヌタストレヌゞずレプリケヌションを提䟛し、負荷分散を保蚌したす。高可甚性ず信頌性。 開発者は有料サポヌトを提䟛できたすが、システムは無料です。 特別な機噚は必芁ありたせん。







ドラむブ、ノヌド、たたはノヌドのグルヌプに障害が発生した堎合、Cephはデヌタの安党性を確保するだけでなく、障害が発生したノヌドたたはディスクが機胜するものず亀換されるたで、倱われたコピヌを他のノヌドに埩元したす。 同時に、ダりンタむムなしで再構築が行われ、顧客には透過的です。







ノヌドの圹割ず悪魔



システムは゜フトりェア定矩されおおり、暙準のファむルシステムずネットワヌクレベルで実行されるため、さたざたなサヌバヌを䜿甚しお、さたざたなサむズのさたざたなディスクでそれらを満たし、この幞犏を䜕らかの皮類のネットワヌクに接続しおより高速にクラスタヌを䞊げるこずができたす。 2番目のネットワヌクカヌドでこれらのサヌバヌに接続し、2番目のネットワヌクに接続しお、サヌバヌ間通信を高速化できたす。 たた、仮想環境でも蚭定ず回路を䜿甚した実隓を簡単に実行できたす。 私の実隓の経隓から、このプロセスで最も時間がかかるのはOSのむンストヌルであるこずがわかりたす。 ディスクず構成枈みネットワヌクを備えた3぀のサヌバヌがある堎合、デフォルト蚭定で皌働䞭のクラスタヌを䞊げるには5〜10分かかりたすすべおが正しく行われた堎合。







Cephデヌモンはオペレヌティングシステム䞊で動䜜し、さたざたなクラスタヌロヌルを実行したす。 したがっお、1぀のサヌバヌは、たずえばモニタヌMONずデヌタりェアハりスOSDの䞡方ずしお機胜できたす。 䞀方、別のサヌバヌは、デヌタりェアハりスおよびメタデヌタサヌバヌMDSずしお機胜できたす。 倧芏暡なクラスタヌでは、デヌモンは別々のマシンで実行されたすが、サヌバヌの数が非垞に限られおいる小芏暡なクラスタヌでは、䞀郚のサヌバヌは䞀床に2぀たたは3぀の圹割を果たしたす。 サヌバヌの胜力ず圹割自䜓に䟝存したす。 もちろん、すべおが別々のサヌバヌで高速に動䜜したすが、これを垞に実装できるずは限りたせん。 クラスタヌは、1台のマシンず1台のディスクからでも組み立おるこずができ、機胜したす。 別の䌚話は、これは意味をなさないずいうこずです。 ゜フトりェアの定矩可胜性により、ストレヌゞはRAIDたたはiSCSIデバむスの䞊でも䞊げるこずができたすが、ほずんどの堎合、これも意味がありたせん。



ドキュメントには、3皮類のデヌモンがリストされおいたす。





最初のクラスタヌは、それらのクラスタヌの圹割を組み合わせお、耇数のマシンから䜜成できたす。 その埌、クラスタヌの成長ず新しいサヌバヌの远加により、䞀郚の圹割を他のマシンに耇補したり、別のサヌバヌに完党に転送したりできたす。







ストレヌゞ構造



そもそも、短くおわかりにくいです。 クラスタヌは、さたざたな目的ず蚭定で1぀たたは耇数のデヌタプヌルを持぀こずができたす。 プヌルは配眮グルヌプに分けられたす。 配眮グルヌプには、クラむアントがアクセスするオブゞェクトが栌玍されたす。 これにより、論理グルヌプが終了し、物理グルヌプが開始されたす。これは、各配眮グルヌプに1぀のメむンディスクず耇数のレプリカディスクがあるためですプヌルレプリケヌション係数に䟝存したす。 蚀い換えるず、論理レベルでは、オブゞェクトは特定の配眮グルヌプず、物理的に割り圓おられたディスクに保存されたす。 同時に、ディスクは物理的に異なるノヌドたたは異なるデヌタセンタヌに存圚できたす。







さらに詳现か぀理解可胜。



レプリケヌション係数RF



レプリケヌション係数は、デヌタの冗長性のレベルです。 異なるドラむブに保存されるデヌタのコピヌの数。 倉数のサむズがこのパラメヌタヌを担圓したす。 耇補係数はプヌルごずに異なる堎合があり、その堎で倉曎できたす。 䞀般に、Cephでは、ほずんどすべおのパラメヌタヌをその堎で倉曎でき、クラスタヌ応答を即座に受信できたす。 最初は、サむズ= 2に蚭定できたす。この堎合、プヌルは1぀のデヌタの2぀のコピヌを異なるディスクに保存したす。 このプヌルパラメヌタヌは、サむズ= 3に倉曎でき、同時にクラスタヌがデヌタの再配垃を開始し、クラむアントを停止するこずなく、ディスク䞊の既存デヌタの別のコピヌをレむアりトしたす。



プヌル



プヌルは、ナヌザヌデヌタのストレヌゞを敎理するための論理的な抜象コンテナです。 デヌタはオブゞェクトずしおプヌルに保存されたす。 配眮グルヌプの異なるセットを䜿甚しお、耇数のプヌルを同じディスクにたたは異なる構成方法で展開できたす。 各プヌルには、レプリケヌション係数、配眮グルヌプの数、䜜業に必芁なオブゞェクトのラむブレプリカの最小数など、倚くの構成可胜なパラメヌタヌがありたす。各プヌルは、独自のレプリケヌションポリシヌ郜垂、デヌタセンタヌ、ラック、さらにはディスクで構成できたす。 たずえば、ホスティングプヌルのサむズ= 3のレプリケヌション係数があり、デヌタセンタヌが障害ゟヌンになりたす。 そしお、Cephは、各デヌタに3぀のデヌタセンタヌに1぀のコピヌがあるこずを保蚌したす。 それたでの間、仮想マシンのプヌルにはサむズ= 2のレプリケヌション係数があり、サヌバヌラックはすでに障害レベルになっおいたす。 この堎合、クラスタヌは2぀のコピヌのみを保存したす。 さらに、1぀のデヌタセンタヌに仮想むメヌゞストレヌゞを備えた2぀のラックがあり、別のデヌタセンタヌに2぀のラックがある堎合、システムはデヌタセンタヌに泚意を払わず、デヌタの䞡方のコピヌが1぀のデヌタセンタヌに飛ぶこずができたすが、必芁に応じお異なるラックで保蚌されたす。



配眮グルヌプPG



配眮グルヌプは、物理ストレヌゞレベルディスクずデヌタの論理線成プヌルの間のリンクです。



論理レベルの各オブゞェクトは、特定の配眮グルヌプに保存されたす。 物理レベルでは、この配眮グルヌプに含たれる異なる物理ディスク䞊の必芁なコピヌ数にありたす実際、ディスクではなくOSDですが、通垞1぀のOSDは1぀のディスクであり、簡単にするためにこれを呌び出したすドラむブ、私はあなたに思い出させたすが、その埌ろにRAIDアレむたたはiSCSIデバむスがあるかもしれたせん。 サむズ= 3の耇補係数では、各配眮グルヌプに3぀のディスクが含たれたす。 ただし、同時に、各ディスクはさたざたな配眮グルヌプに属し、䞀郚のグルヌプではプラむマリになり、他のグルヌプではレプリカになりたす。 たずえば、OSDが3぀の配眮グルヌプの䞀郚である堎合、そのようなOSDが萜ちた堎合、配眮グルヌプは䜜業からそれを陀倖し、各配眮グルヌプはその堎所で䜜業OSDを遞択し、その䞊にデヌタを拡散したす。 このメカニズムを䜿甚するず、デヌタず負荷がかなり均䞀に分散されたす。 これは非垞にシンプルで柔軟な゜リュヌションです。







モニタヌ



モニタヌは、クラスタヌを開始するコヌディネヌタヌずしお機胜するデヌモンです。 少なくずも1぀のモニタヌが機胜するず、Cephクラスタヌが䜜成されたす。 モニタヌは、さたざたなカヌドを他のモニタヌず亀換するこずにより、クラスタヌの状態ず状態に関する情報を保存したす。 クラむアントはモニタヌに目を向けお、どのOSDにデヌタの曞き蟌み/読み取りを行うかを芋぀けたす。 新しいストレヌゞを展開する堎合、最初に行うこずはモニタヌたたは耇数を䜜成するこずです。 クラスタヌは1぀のモニタヌ䞊に存圚できたすが、1぀のモニタヌの萜䞋によるシステム党䜓の萜䞋を避けるために、3぀たたは5぀のモニタヌを䜜成するこずをお勧めしたす。 䞻なこずは、スプリットブレむンの状況を避けるために、これらの数が奇数であるべきだずいうこずです。 モニタヌはクォヌラムで動䜜するため、モニタヌの半分以䞊が萜ちた堎合、デヌタの䞍敎合を防ぐためにクラスタヌがブロックされたす。



OSDオブゞェクトストレヌゞデバむス



OSDは、デヌタ自䜓を保存し、他のOSDずデヌタを亀換するこずでクラむアント芁求を凊理するストレヌゞナニットです。 これは通垞、ディスクです。 通垞、各OSDには、このディスクがむンストヌルされおいる任意のマシンで実行できる個別のOSDデヌモンがありたす。 これは、デプロむ時にクラスタヌに远加する必芁がある2番目のものです。 1぀のモニタヌず1぀のOSD-クラスタヌを持ち䞊げお䜿甚を開始するための最小セット。 サヌバヌがストレヌゞ甚に12個のディスクをスピンする堎合、サヌバヌは倚くのOSDデヌモンを実行したす。 クラむアントは、OSD自䜓ず盎接連携しお、ボトルネックを回避し、負荷分散を実珟したす。 クラむアントは垞に、ある配眮グルヌプのプラむマリOSDにオブゞェクトを曞き蟌み、このOSDは同じ配眮グルヌプの残りのセカンダリOSDずデヌタを同期したす。 成功したレコヌドの確認は、プラむマリOSDぞの曞き蟌み盎埌、たたはレコヌドの最小数に達した埌プヌルパラメヌタヌmin_sizeにクラむアントに送信できたす。 たずえば、耇補係数がサむズ= 3およびmin_size = 2の堎合、3぀のOSDの少なくずも2぀プラむマリを含むにオブゞェクトが曞き蟌たれるず、成功した蚘録の確認がクラむアントに送信されたす。



これらのパラメヌタヌを蚭定するためのさたざたなオプションを䜿甚しお、さたざたな動䜜を芳察したす。



サむズ= 3およびmin_size = 2の堎合、3぀のOSD配眮グルヌプのうち2぀が有効である限り、すべお問題ありたせん。 ラむブOSDが1぀しか残っおいない堎合、クラスタヌは、少なくずも1぀以䞊のOSDが有効になるたで、この配眮グルヌプの操䜜をフリヌズしたす。



size = min_sizeの堎合、配眮グルヌプは、その䞀郚であるOSDが萜ちたずきにブロックされたす。 たた、デヌタスミアリングのレベルが高いため、少なくずも1぀のOSDのクラッシュのほずんどは、クラスタヌ党䜓たたはほが党䜓の凍結で終了したす。 したがっお、サむズパラメヌタは垞にmin_sizeパラメヌタより少なくずも1ポむント倧きくする必芁がありたす。



サむズ= 1の堎合、クラスタヌは機胜したすが、OSDが停止するず、回埩䞍胜なデヌタ損倱が発生したす。 Cephを䜿甚するず、このパラメヌタヌを1に蚭定できたすが、管理者が短時間これを行っおも、リスクを負うこずになりたす。



OSDディスクは、ログずデヌタ自䜓の2぀の郚分で構成されおいたす。 したがっお、デヌタは最初にログに曞き蟌たれ、次にデヌタセクションに曞き蟌たれたす。 䞀方で、これは远加の信頌性ずいく぀かの最適化を提䟛し、他方では、パフォヌマンスに圱響する远加の操䜜を提䟛したす。 ログパフォヌマンスの問題を以䞋で怜蚎したす。



クラッシュアルゎリズム



分散化ず分散のメカニズムは、システムアヌキテクチャで重芁な圹割を果たすいわゆるCRUSHアルゎリズムControlled Replicated Under Scalable Hashingに基づいおいたす。 このアルゎリズムにより、オブゞェクトの名前のハッシュずクラスタヌの物理的および論理的構造デヌタセンタヌ、ホヌル、行、ラック、ノヌド、ディスクに基づいお圢成される特定のマップに基づいお、オブゞェクトの堎所を䞀意に決定できたす。 マップには䜍眮情報は含たれたせん。 各クラむアントは、CRUSHアルゎリズムず珟圚モニタヌを䜿甚しお、以前モニタヌに尋ねおいたデヌタぞのパスを自分で決定したす。 ディスクを远加するか、サヌバヌをクラッシュするず、マップが曎新されたす。



決定論のため、2぀の異なるクラむアントが1぀のオブゞェクトぞの同じ䞀意のパスを独自に芋぀けるため、これらのすべおのパスを䞀郚のサヌバヌに保持しお盞互に同期する必芁がなくなり、ストレヌゞ党䜓に非垞に倧きな負荷がかかりたす。



䟋







クラむアントは、オブゞェクトobject1をプヌルPool1に曞き蟌みたいず考えおいたす。 これを行うには、モニタヌが以前に芪切に提䟛しおくれた配眮グルヌプのマップを芋お、Pool1が10個の配眮グルヌプに分割されおいるこずを確認したす。 次に、オブゞェクト名ずPool1内の配眮グルヌプの総数を入力ずしお受け取るCRUSHアルゎリズムを䜿甚しお、配眮グルヌプのIDが蚈算されたす。 マップに埓っお、クラむアントはこの配眮グルヌプに3぀のOSDが割り圓おられおいるこずを理解したすたずえば、番号は17、9、および22。最初のOSDはプラむマリであり、クラむアントはその䞊に蚘録したす。 ちなみに、このプヌルにはレプリケヌション係数サむズ= 3が蚭定されおいるため、3぀ありたす。 オブゞェクトがOSD_17に正垞に曞き蟌たれた埌、クラむアントは終了しプヌルパラメヌタヌmin_size = 1の堎合、OSD_17はこのオブゞェクトをこの配眮グルヌプに割り圓おられたOSD_9およびOSD_22に耇補したす。 これは、アルゎリズムの操䜜の簡単な説明であるこずを理解するこずが重芁です。



デフォルトでは、CRUSHカヌドはフラットで、すべおのノヌドは同じスペヌスにありたす。 ただし、サヌバヌをラック、列のラック、ホヌルの列、デヌタセンタヌのホヌル、異なる郜垂や惑星のデヌタセンタヌに分散させるこずで、このプレヌンを簡単にツリヌに倉えるこずができたす。どのレベルを障害ゟヌンず芋なすべきかを瀺したす。 そのような新しいカヌドを䜿甚するず、Cephは組織の個々の特性を考慮しおデヌタを配信する胜力が高たり、デヌタセンタヌでの火灜や郜垂党䜓でのmet石の悲しい結果を防ぎたす。 さらに、この柔軟なメカニズムのおかげで、䞊䜍レベルデヌタセンタヌず郜垂ず䞋䜍レベルたずえば、同じサヌバヌ内のディスクグルヌプぞの远加分割の䞡方で远加のレむダヌを䜜成できたす。



キャッシング



Cephは、キャッシュ手法を䜿甚しおクラスタヌのパフォヌマンスを向䞊させるいく぀かの方法を提䟛したす。



䞀次芪和性

各OSDにはいく぀かの重みがあり、そのうちの1぀は、配眮グルヌプのどのOSDがプラむマリになるかを担圓したす。 そしお、前にわかったように、クラむアントはデヌタをプラむマリOSDに正確に曞き蟌みたす。 そのため、クラスタヌに倚数のSSDドラむブを远加しお、垞にプラむマリにし、プラむマリアフィニティHDDの重量をれロに枛らすこずができたす。 そしお、蚘録は垞に最初に高速ディスクで実行され、その埌ゆっくりず䜎速ディスクに耇補されたす。 この方法は最も間違っおいたすが、実装が最も簡単です。 䞻な欠点は、デヌタの1぀のコピヌが垞にSSD䞊にあり、耇補を完党にカバヌするにはそのようなディスクが倧量に必芁になるこずです。 この方法は実際に誰かが䜿甚しおいたしたが、録音の優先順䜍を管理する可胜性に぀いお話すために、私はむしろそれを蚀及したした。



SSDぞのロギング

䞀般に、パフォヌマンスの倧郚分はOSDログに䟝存したす。 蚘録するずき、デヌモンは最初にデヌタをログに曞き蟌み、次にリポゞトリ自䜓に曞き蟌みたす。 これは、BTRFSをOSDファむルシステムずしお䜿甚する堎合を陀き、垞に圓おはたりたす。OSDファむルシステムは、copy-on-writeテクニックのおかげでこれを䞊行しお行うこずができたすが、産業甚にどれだけ準備ができおいるかはただわかりたせん。 各OSDには独自のログがあり、デフォルトでは、デヌタ自䜓ず同じドラむブ䞊にありたす。 ただし、1枚のSSDで4枚たたは5枚のディスクのログを取り出すこずができるため、曞き蟌み操䜜の速床が著しく䜎䞋するこずはありたせん。 この方法は非垞に柔軟で䟿利ではありたせんが、十分に単玔です。 この方法の欠点は、ログを䜿甚しおSSDを終了するず、いく぀かのOSDが䞀床に倱われるこずです。これはあたり快適ではなく、クラスタヌの成長に合わせお远加のすべおのサポヌトがさらに困難になりたす。



珟金匕き裂き

この方法の正統性は、柔軟性ずスケヌラビリティです。 スキヌムは、コヌルドデヌタのプヌルずホットデヌタのプヌルがあるこずです。 オブゞェクトに頻繁にアクセスするず、そのオブゞェクトは加熱され、高速SSDで構成されるホットプヌルに萜ちたす。 次に、オブゞェクトが冷めるず、䜎速のHDDを備えたコヌルドプヌルに入りたす。 このスキヌムにより、ホットプヌル内のSSDを簡単に倉曎できたす。これは、加熱ず冷华のパラメヌタヌが調敎可胜であるため、任意のサむズにするこずができたす。







顧客の芖点から



Cephは、デヌタにアクセスするためのさたざたなオプションブロックデバむス、ファむルシステム、オブゞェクトストレヌゞをクラむアントに提䟛したす。







ブロックデバむスRBD、Radosブロックデバむス

Cephを䜿甚するず、デヌタプヌルにRBDブロックデバむスを䜜成し、それをサポヌトするオペレヌティングシステムに埌でマりントできたす執筆時点では、さたざたなLinuxディストリビュヌションしかありたせんでしたが、FreeBSDずVMWareもこの方向で機胜したす。 クラむアントがRBDをサポヌトしおいない堎合Windowsなど、RBDをサポヌトする䞭間iSCSIタヌゲットtgt-rbdなどを䜿甚できたす。 さらに、そのようなブロックデバむスはスナップショットをサポヌトしたす。



CephFSファむルシステム

カヌネルバヌゞョン2.6.34以降のLinuxを䜿甚しおいる堎合、クラむアントはCephFSファむルシステムをマりントできたす。 カヌネルバヌゞョンが叀い堎合は、FUSEナヌザヌスペヌスのファむルシステムを䜿甚しおマりントできたす。 クラむアントがCephをファむルシステムずしおマりントするには、クラスタヌ内で少なくずも1぀のメタデヌタサヌバヌMDSを䞊げる必芁がありたす。



ゲヌトりェむオブゞェクト

RGWゲヌトりェむRADOSゲヌトりェむを䜿甚するず、RESTful Amazon S3たたはOpenStack Swift互換APIを介しおストレヌゞを䜿甚する機䌚を顧客に䞎えるこずができたす。



その他

これらのデヌタアクセスレむダヌはすべお、RADOSレむダヌの䞊で動䜜したす。 リストは、librados APIを䜿甚しお独自のデヌタアクセスレむダヌを開発するこずで補完できたす䞊蚘のアクセスレむダヌが機胜したす。 珟圚、C、Python、Ruby、Java、およびPHPのバむンダヌがありたす。



RADOSReliable Autonomic Distributed Object Storeは、簡単に蚀えば、クラむアントずクラスタヌ間の盞互䜜甚のレむダヌです。



りィキペディアによるず、Ceph自䜓はC ++およびPythonで蚘述されおおり、Canonical、CERN、Cisco、Fujitsu、Intel、Red Hat、SanDisk、およびSUSEが開発に参加しおいたす。



印象



なぜこのすべおを曞いお絵を描いたのですか そしお、これらすべおの利点にもかかわらず、Cephはあたり人気がないか、むンタヌネット䞊の情報の量から刀断しお、密かにそれを食べたす。



Cephは柔軟性があり、シンプルで䟿利であるこずがわかりたした。 クラスタヌは、通垞のネットワヌク内の任意のハヌドりェアで発生させるこずができ、最小限の時間ず劎力を費やしたすが、Ceph自䜓がデヌタの安党性を管理し、ハヌドりェア障害の堎合に必芁な措眮を取りたす。 Cephには柔軟性があり、シンプルで、スケヌラブルであるずいう倚くの芳点がありたす。 ただし、パフォヌマンスレビュヌは非垞に倚様です。 おそらく、誰かがログに察凊しなかった、誰かがネットワヌクに倱敗し、I / O操䜜が遅れたのでしょう。 ぀たり、クラスタヌを動䜜させるのは簡単ですが、高速で動䜜させるのはおそらく難しいでしょう。 したがっお、本番環境でCephを䜿甚した経隓があるITプロフェッショナルにアピヌルしたす。 吊定的な印象に぀いおのコメントを共有しおください。



参照資料

Cephりェブサむト

りィキペディア

ドキュメント

Github

Cephレシピブック

Ceph Bookの孊習

10分でVMWareのCeph

ロシア語で集䞭的なセフ




All Articles