CephFSずGlusterFS

クラりドプラットフォヌム開発チヌムのむンフラストラクチャ゚ンゞニアずしお、ヘッダヌに瀺されおいるものを含め、倚くの分散ストレヌゞシステムで䜜業する機䌚がありたした。 圌らの長所ず短所を理解しおいるようで、これに぀いおの私の考えを共有したいず思いたす。 ぀たり、ハッシュ関数をより長く持っおいる人を芋おみたしょう。













免責事項このブログの前半で、GlusterFSに関する蚘事を芋るこずができたした。 これらの蚘事ずは䜕の関係もありたせん。 これは、クラりドのプロゞェクトチヌムの著者のブログであり、各メンバヌはそれぞれのストヌリヌを䌝えるこずができたす。 それらの蚘事の著者は私たちの運甚グルヌプの゚ンゞニアであり、圌は圌自身のタスクず経隓を共有しおいたす。 突然意芋の盞違が芋られる堎合は、これを考慮に入れおください。 この機䌚にこれらの蚘事の著者に敬意を衚したす







議論されるこず



GlusterFSずCephFSに基づいお構築できるファむルシステムに぀いお話したしょう。 これら2぀のシステムのアヌキテクチャに぀いお説明し、それらを異なる角床から芋おいきたす。最終的には、結論を出すリスクさえありたす。 RBDやRGWなどの他のCeph機胜は圱響を受けたせん。







甚語



蚘事をすべおの人が理解しやすいものにするために、䞡方のシステムの基本的な甚語を芋おみたしょう。







Cephの甚語







RADOS Reliable Autonomic Distributed Object Storeは自己完結型のオブゞェクトストレヌゞであり、Cephプロゞェクトの基瀎ずなっおいたす。

CephFS 、 RBD RADOSブロックデバむス、 RGW RADOSゲヌトりェむ-RADOSのさたざたなむンタヌフェヌスを゚ンドナヌザヌに提䟛するRADOSの高レベルガゞェット。

特に、CephFSはPOSIX準拠のファむルシステムむンタヌフェむスを提䟛したす。 実際、CephFSデヌタはRADOSに保存されたす。

OSD Object Storage Daemonは、RADOSクラスタヌ内の個別のディスク/オブゞェクトストレヌゞを提䟛するプロセスです。

RADOSプヌル プヌル-レプリケヌションポリシヌなどの共通のルヌルセットによっお結合されたいく぀かのOSD 。 デヌタ階局の芳点から芋るず、プヌルはオブゞェクトのディレクトリたたは個別のサブディレクトリなしのフラットな名前空間です。

PG Placement Group-PGの抂念に぀いおは、埌で詳しく説明するためにコンテキストで玹介したす。







RADOSはCephFSが構築される基盀であるため、よく説明したすが、これはCephFSに自動的に適甚されたす。







GlusterFSの甚語以䞋gl







ブリックは、RADOSの甚語でOSDの類䌌物である単䞀のディスクを提䟛するプロセスです。

ボリュヌム -ブリックが結合されるボリュヌム。 ボリュヌムはRADOSのプヌルに類䌌しおおり、ブリック間に特定の耇補トポロゞもありたす。







デヌタ配信



より明確にするために、䞡方のシステムで実装できる簡単な䟋を考えおみたしょう。







䟋ずしお䜿甚するセットアップ









どちらのシステムでも、通垞の操䜜には少なくずも3぀のサヌバヌが必芁です。 しかし、これは単なる蚘事の䞀䟋であるため、目をそらしたす。







glの堎合、これは3぀のレプリケヌショングルヌプで構成される分散耇補ボリュヌムになりたす。













各レプリケヌショングルヌプは、異なるサヌバヌ䞊の2぀のブリックです。

実際、3぀のRAID-1を組み合わせたボリュヌムが刀明したした。

マりントし、目的のファむルシステムを取埗しおファむルぞの曞き蟌みを開始するず、曞き蟌む各ファむルが党䜓ずしおこれらのレプリケヌショングルヌプのいずれかに分類されるこずがわかりたす。

これらの分散グルヌプ間でのファむルの分散は、本質的にハッシュ関数であるDHT Distributed Hash Tablesによっお凊理されたす埌で説明したす。







「図」では、次のようになりたす。













最初のアヌキテクチャヌ機胜がすでに珟れおいるかのように









たずえば、Distributed-Striped-ReplicatedたたはDispersedErasure Codingなどの他のタむプのボリュヌムを䜿甚する堎合、1぀のグルヌプ内のデヌタ分散の仕組みのみが根本的に倉わりたす。 たた、DHTはファむルを完党にこれらのグルヌプに分解し、最終的にはすべお同じ問題が発生したす。 はい、ボリュヌムが1぀のグルヌプのみで構成される堎合、たたはほが同じサむズのすべおのファむルがある堎合、問題はありたせん。 しかし、さたざたなサむズのファむルを含む数癟テラバむトのデヌタの䞋にある通垞のシステムに぀いお話しおいるため、問題があるず考えおいたす。







では、CephFSを芋おみたしょう。 䞊蚘のRADOSが登堎したす。 RADOSでは、各ディスクは個別のプロセスOSDによっお提䟛されたす。 セットアップに基づいお、各サヌバヌに3぀ず぀、そのうち6぀だけを取埗したす。 次に、デヌタ甚のプヌルを䜜成し、このプヌルにPG番号ずデヌタ耇補係数を蚭定する必芁がありたすこの堎合は2。

8 PGのプヌルを䜜成したずしたしょう。 これらのPGは、OSD党䜓にほが均等に分散されたす。













PGは、倚数のオブゞェクトを結合する論理グルヌプであるこずを明確にするずきです。 レプリケヌションファクト2を蚭定したため、各PGは別のサヌバヌ䞊の他のOSDにレプリカを持っおいたすデフォルト。 たずえば、サヌバヌS1のOSD-1にあるPG1には、OSD-6のS2にツむンがありたす。 PGたたはレプリケヌション3の堎合はトリプルの各ペアには、蚘録されおいるPRIMARY PGがありたす。 たずえば、PG4のPRIMARYはS1にありたすが、PG3のPRIMARYはS2にありたす。







RADOSの仕組みがわかったので、次に新しいプヌルぞのファむルの曞き蟌みに進みたす。 RADOSは本栌的なストレヌゞですが、ファむルシステムずしおマりントしたり、ブロックデバむスずしお䜿甚したりするこずはできたせん。 デヌタを盎接曞き蟌むには、特別なナヌティリティたたはラむブラリを䜿甚する必芁がありたす。







䞊蚘の䟋ず同じ3぀のファむルを䜜成したす。













RADOSの堎合、すべおが䜕らかの圢でより耇雑になっおいたす、同意したす。







その埌、CRUSHスケヌラブルハッシュの䞋での制埡されたレプリケヌションがチェヌンに登堎したした。 CRUSHは、RADOSが䟝存するアルゎリズムです埌で説明したす。 この特定のケヌスでは、このアルゎリズムを䜿甚しお、どのPGにファむルを曞き蟌むかが決定されたす。 ここでCRUSHはglのDHTず同じ機胜を実行したす。 このPG䞊のファむルの擬䌌ランダム配垃の結果ずしお、より耇雑なスキヌムでのみglず同じ問題が発生したした。







しかし、私は1぀の重芁な点に぀いお意図的に黙っおいたした。 RADOSを玔粋な圢で䜿甚しおいる人はほずんどいたせん。 RADOSずの䟿利な䜜業のために、次のレむダヌが開発されたしたRBD、CephFS、RGW。







これらのすべおのトランスレヌタヌRADOSクラむアントは異なるクラむアントむンタヌフェむスを提䟛したすが、RADOSでの䜜業は䌌おいたす。 最も重芁な類䌌点は、それらを通過するすべおのデヌタが断片に分割され、個別のRADOSオブゞェクトずしおRADOSに入れられるこずです。 デフォルトでは、公匏クラむアントは入力ストリヌムを4MBに分割したす。 RBDの堎合、ボリュヌムの䜜成時にストラむプサむズを蚭定できたす。 CephFSの堎合、これはファむルの属性xattrであり、個々のファむルたたはすべおのカタログファむルのレベルで管理できたす。 RGWには察応するパラメヌタヌもありたす。







ここで、前の䟋で取り䞊げたRADOSプヌルの䞊にCephFSを積み重ねたずしたす。 珟圚、問題のシステムは完党に察等な立堎にあり、同䞀のファむルアクセスむンタヌフェむスを提䟛しおいたす。







テストファむルを新しいCephFSに曞き戻すず、OSD䞊でたったく異なる、ほが均䞀なデヌタの分垃が芋぀かりたす。 たずえば、2GBサむズのfile2は512個に分割され、異なるPGに分散され、その結果、異なるOSDにほが均䞀に分散されたす。これにより、䞊蚘のデヌタ分散の問題が実際に解決されたす。







この䟋では、8個のPGのみが䜿甚されおいたすが、1぀のOSDに最倧100個のPGを含めるこずをお勧めしたす。 たた、CephFSを機胜させるには2぀のプヌルが必芁であり、RADOSを機胜させるにはいく぀かのサヌビスデヌモンも必芁です。 すべおがそんなに単玔だずは思わないでください。本質から逞脱しないように、私は特に倚くを省略したす。







それで、今ではCephFSがもっず面癜そうですね。 しかし、私は別の重芁な点、今回はglに぀いお蚀及したせんでした。 Glには、ファむルをチャンクに分割し、それらのチャンクをDHTで実行するためのメカニズムもありたす。 いわゆるシャヌディングシャヌディング。







5分間の履歎







2016幎4月21日、Ceph開発チヌムは「Jewel」をリリヌスしたした。これは、CephFSが安定しおいるず芋なされる最初のCephリリヌスです。

CephFSに぀いお叫んでいたす。 そしお、3〜4幎前にそれを䜿甚するこずは、少なくずも疑わしい決定です。 私たちは他の゜リュヌションを探したしたが、䞊蚘のアヌキテクチャのglは良くありたせんでした。 しかし、CephFSよりもそれを信じおおり、リリヌスに備えおシャヌディングが行われるのを埅っおいたした。







そしお、ここはX日です。







2015幎6月4日-Glusterコミュニティは本日、GlusterFS 3.7オヌプン゜フトりェアデファむンドストレヌゞ゜フトりェアの䞀般提䟛を発衚したした。

3.7-glの最初のバヌゞョン。シャヌディングは実隓的な機䌚ずしお発衚されたした。 圌らは、CephFSが安定しおリリヌスされるほが1幎前に、衚地台に足を螏み入れたした...







したがっお、シャヌディングは意味したす。 glのすべおのものず同様に、スタック䞊のDHTトランスレヌタヌの䞊にある別のトランスレヌタヌトランスレヌタヌに実装されたす。 DHTはDHTよりも高いため、DHTは入力で既補のシャヌドを受け取り、それらを通垞のファむルずしおレプリケヌショングルヌプに分散したす。 シャヌディングは個々のボリュヌムレベルで有効になりたす。 砎片のサむズは、デフォルトで、Cephロヌションのように4MBに蚭定できたす。







最初のテストを実斜したずき、私は喜びたした glが今や䞀番のものであり、私たちは生きるこずだずみんなに蚀いたした シャヌディングを有効にするず、1぀のファむルの蚘録が異なるレプリケヌショングルヌプず䞊行しお行われたす。 「曞き蟌み時」圧瞮に続く解凍は、シャヌドレベルたで増分できたす。 ここでキャッシュシュヌティングが行われるず、すべおが正垞になり、ファむル党䜓ではなく個別のシャヌドがキャッシュに移動されたす。 䞀般的に、私は喜びたした、なぜなら 圌は非垞にクヌルなツヌルを手に入れたようです。







最初のバグ修正ず「プロダクションの準備完了」のステヌタスを埅぀ために残った。 しかし、すべおがそれほどバラ色ではないこずが刀明したした...シャヌディングに関連する重倧なバグのリストで蚘事を広げないために、次のバヌゞョンで時々発生したす、私は次の説明で最埌の「䞻芁な問題」ず蚀うこずができたす







断片化されたGlusterボリュヌムを拡匵するず、ファむルが砎損する可胜性がありたす。 通垞、シャヌドボリュヌムはVMむメヌゞに䜿甚されたす。そのようなボリュヌムが拡匵たたは瞮小される堎合぀たり、ブリックの远加/削陀ずリバランス、VMむメヌゞが砎損するずいうレポヌトがありたす。

2018幎1月20日、リリヌス3.13.2で終了したした...これが最埌ではないのでしょうか







いわば、これに関する私たちの蚘事の1぀に぀いおの解説です。







RedHatは、珟圚のRedHat Gluster Storage 3.4のドキュメントで、サポヌトしおいるシャヌディングケヌスはVMディスクのストレヌゞのみであるず述べおいたす。







シャヌディングには、サポヌトされおいるナヌスケヌスが1぀ありたす。RedHat Gluster StorageをRed Hat Enterprise Virtualizationのストレヌゞドメむンずしお提䟛するコンテキストで、ラむブ仮想マシンむメヌゞのストレヌゞを提䟛したす。 シャヌディングは、以前の実装よりも倧幅にパフォヌマンスが向䞊するため、このナヌスケヌスの芁件でもあるこずに泚意しおください。

なぜこのような制限があるのか​​はわかりたせんが、あなたは認めなければなりたせん、それは驚くべきこずです。







今、私はあなたのためにすべおをここに持っおいたす



どちらのシステムもハッシュ関数を䜿甚しお、ディスク党䜓に擬䌌ランダムにデヌタを分散したす。







RADOSの堎合、次のようになりたす。







PG = pool_id + "." + jenkins_hash(object_name) % pg_coun # eg pool id=5 => pg = 5.1f OSD = crush_hash_based_on_jenkins(PG) # eg pg=5.1f => OSD = 12
      
      





Glは、いわゆる敎合性ハッシュを䜿甚したす。 各ブリックは、「32ビットハッシュスペヌス内の範囲」を取埗したす。 ぀たり、すべおのブリックは、範囲や穎を亀差させるこずなく、線圢アドレスハッシュスペヌス党䜓を共有したす。 クラむアントは、ハッシュ関数を䜿甚しおファむル名を実行し、受信したハッシュがどのハッシュ範囲に入るかを決定したす。 したがっお、レンガが遞択されたす。 レプリケヌショングルヌプに耇数のブリックがある堎合、それらはすべお同じハッシュ範囲を持ちたす。 このようなもの













2぀のシステムの動䜜を特定の統䞀された論理圢匏にするず、次のようになりたす。







 file -> HASH -> placement_unit
      
      





RADOSの堎合のplacement_unitはPGであり、glの堎合は耇数のブリックの耇補グルヌプです。







そのため、ハッシュ関数なので、これはファむルを配垃、配垃し、突然、1぀のplacement_unitが他のよりも倚く䜿甚されおいるこずがわかりたす。 これがハッシュ分配システムの基本的な特城です。 そしお、デヌタの䞍均衡を解消するずいう非垞に䞀般的なタスクに盎面しおいたす。







Glは再構築できたすが、䞊蚘のハッシュ範囲を䜿甚したアヌキテクチャにより、奜きなだけ再構築を実行できたすが、ハッシュ範囲およびその結果ずしおのデヌタは揺れ動きたせん。 ハッシュ範囲を再配垃するための唯䞀の基準は、ボリュヌム容量の倉曎です。 そしお、1぀のオプションが残っおいたす-レンガを远加したす。 たた、レプリケヌションのあるボリュヌムに぀いお話しおいる堎合は、レプリケヌショングルヌプ党䜓、぀たりセットアップに2぀の新しいブリックを远加する必芁がありたす。 ボリュヌムを拡匵した埌、再構築を開始できたす。新しいグルヌプを考慮しおハッシュ範囲が再配垃され、デヌタが配垃されたす。 レプリケヌショングルヌプが削陀されるず、ハッシュ範囲が自動的に割り圓おられたす。







RADOSには可胜性がありたす。 Cephの蚘事で 、PGの抂念に぀いお倚くの䞍満を述べたしたが、ここでは、もちろんglに比べお、銬に乗ったRADOSを取り䞊げたした。 各OSDには独自の重みがあり、通垞はディスクのサむズに基づいお蚭定されたす。 同様に、PGはOSDの重みに応じおOSDによっお配垃されたす。 すべお、OSDの重みを䞊䞋に倉曎するだけで、PGはデヌタずずもに他のOSDに移動し始めたす。 たた、各OSDには調敎重みが远加されおおり、1぀のサヌバヌのディスク間でデヌタのバランスを取るこずができたす。 これはすべお、クラッシュに固有のものです。 䞻な利点は、デヌタの䞍均衡を改善するためにプヌル容量を拡匵する必芁がないこずです。 たた、ディスクをグルヌプに远加する必芁はありたせん。OSDを1぀だけ远加でき、PGの䞀郚がそこに転送されたす。







はい、プヌルを䜜成するずきに十分なPGが䜜成されず、各PGのボリュヌムが非垞に倧きくなり、どこに移動しおも䞍均衡が続く可胜性がありたす。 この堎合、PGの数を増やすこずができ、それらはより小さなものに分割されたす。 はい、クラスタヌがデヌタでいっぱいの堎合、それは痛いですが、私たちの比范の䞻なこずは、そのような機䌚があるずいうこずです。 珟圚、PGの数の増加のみが蚱可されおおり、これにはさらに泚意する必芁がありたすが、Ceph-Nautilusの次のバヌゞョンでは、PGの数の削枛pgマヌゞがサポヌトされたす。







デヌタ耇補



テストプヌルずボリュヌムのレプリケヌション係数は2です。興味深いこずに、問題のシステムは異なるアプロヌチを䜿甚しおこの数のレプリカを実珟しおいたす。







RADOSの堎合、蚘録スキヌムは次のようになりたす。













クラむアントはクラスタヌ党䜓のトポロゞを認識し、CRUSHステップ0を䜿甚しお曞き蟌み甚の特定のPGを遞択し、OSD-0のPRIMARY PGに曞き蟌みステップ1、その埌OSD-0がデヌタをSECONDARY PGに同期的に耇補したすステップ2ステップ2の成功/倱敗、OSDはクラむアントぞの操䜜を確認/確認したせんステップ3。 2぀のOSD間のデヌタ耇補は、クラむアントに察しお透過的です。 OSDは通垞、デヌタ耇補のために別の「クラスタヌ」高速ネットワヌクを䜿甚できたす。







トリプルレプリケヌションが構成されおいる堎合、2぀のSECONDARYでPRIMARY OSDず同期しお実行され、クラむアントに察しお透過的です...たあ、その蚱容床が高いだけです。







Glの動䜜は異なりたす













クラむアントはボリュヌムのトポロゞを認識し、DHTを䜿甚しおステップ0目的のブリックを決定し、曞き蟌みたすステップ1。 すべおがシンプルで明確です。 ただし、ここでは、レプリケヌショングルヌプ内のすべおのブリックが同じハッシュ範囲を持っおいるこずを思い出しおください。 そしお、このマむナヌな機胜は䌑日党䜓を䜜りたす。 クラむアントは、適切なハッシュ範囲を持぀すべおのブリックに䞊行しお曞き蟌みたす。







この堎合、二重レプリケヌションでは、クラむアントは2぀の異なるブリックで䞊行しおデュアル蚘録を実行したす。 トリプルレプリケヌションでは、それぞれトリプルレコヌディングが実行され、1MBのデヌタがクラむアントからgl-serverの偎ぞのネットワヌクトラフィックの玄3MBに倉わりたす。 同意しお、システムの抂念は垂盎です。







このようなスキヌムでは、glクラむアントにより倚くの䜜業が割り圓おられ、その結果、圌はより倚くのCPUを必芁ずしたす。ネットワヌクに぀いおはすでに述べたした。







耇補は、AFPトランスレヌタヌ自動ファむル耇補によっお行われたす-同期耇補を実行するクラむアント偎のxlator。 レプリカのすべおのブリックぞの曞き蟌みを耇補したす→トランザクションモデルを䜿甚したす。







必芁に応じお、グルヌプ内のレプリカを同期修埩したす。たずえば、1぀のブリックが䞀時的に䜿甚できなくなった埌、glデヌモンは、クラむアントに透過的で、参加せずに組み蟌みAFPを䜿甚しおこれを独自に行いたす。







興味深いこずに、ネむティブglクラむアントを介さずに、glに組み蟌たれたNFSサヌバヌを介しお䜜業を行う堎合、RADOSず同じ動䜜が埗られたす。 この堎合、AFPはglデヌモンで䜿甚され、クラむアントの介入なしにデヌタを耇補したす。 ただし、組み蟌みNFSはgl v4で保護されおいたす。この動䜜が必芁な堎合は、NFS-Ganeshaを䜿甚するこずをお勧めしたす。







ずころで、NFSずネむティブクラむアントを䜿甚するずきの動䜜が非垞に異なるため、たったく異なるパフォヌマンスむンゞケヌタヌを芋るこずができたす。







「ひざの䞊」だけに同じクラスタヌがありたすか



むンタヌネット䞊で、あらゆる皮類の膝蓋骚セットアップの議論をよく目にしたす。そこでは、手元にあるものからデヌタクラスタヌが構築されたす。 この堎合、RADOSベヌスの゜リュヌションにより、ドラむブを遞択する際の自由床が高たりたす。 RADOSでは、ほがすべおのサむズのドラむブを远加できたす。 各ディスクには通垞そのサむズに察応する重みがあり、デヌタはその重みにほが比䟋しおディスクに分散されたす。 glの堎合、耇補のあるボリュヌムには「別個のディスク」ずいう抂念はありたせん。 ディスクは、二重耇補ではペアで、䞉重ではトリプルで远加されたす。 1぀のレプリケヌショングルヌプに異なるサむズのディスクがある堎合は、グルヌプ内の最小のディスク䞊の堎所で実行され、倧きなディスクの容量を展開解陀したす。 このようなスキヌムでは、glは、1぀のレプリケヌショングルヌプの容量が、グルヌプ内の最小のディスクの容量に等しいず仮定したす。これは論理的です。 同時に、異なるサむズのディスク異なるサむズのグルヌプで構成されるレプリケヌショングルヌプを持぀こずができたす。 より倧きなグルヌプは、他のグルヌプに比べおより倧きなハッシュ範囲を受け取り、その結果、より倚くのデヌタを受け取るこずができたす。







5幎目はCephず暮らしおいたす。 同じボリュヌムのディスクから始めたしたが、より容量の倧きいディスクを導入したした。 Cephを䜿甚するず、アヌキテクチャ䞊の問題を発生させるこずなく、ディスクを取り倖しお、より倧きなディスクたたはわずかに小さなディスクず亀換できたす。 glでは、すべおがより耇雑になりたす-2 TBのディスクを取り出したした-同じものを入れおください。 さお、たたは党䜓ずしおグルヌプ党䜓を撀回するこずは、あたり良くありたせんが、同意したす。







フェむルオヌバヌ



すでに2぀の゜リュヌションのアヌキテクチャに少し粟通しおいるので、それをどのように掻甚するか、サヌビスを提䟛する際の機胜に぀いお説明するこずができたす。







s1のsdaが拒吊されたずしたす-よくあるこずです。







glの堎合









これは、耇数のRAID-1でシェルフを提䟛するようなものです。 はい、トリプルレプリケヌションでは、1぀のディスクに障害が発生した堎合、1぀のコピヌではなく2぀のコピヌが残りたすが、このアプロヌチには重倧な欠点がありたす。RADOSの良い䟋を瀺したす。







S1OSD-0でsdaが倱敗したずしたす-䞀般的なこず









RADOSのアヌキテクチャ䞊の利点は意味がないず思いたす。 ドラむブに障害が発生したこずを瀺す手玙を受け取ったずき、けいれんするこずはできたせん。 そしお、朝に仕事に来たら、すべおの行方䞍明のコピヌがすでに数十の他のOSDに、たたはその過皋で埩元されおいるこずを芋぀けおください。 数癟のPGが倚数のディスクに分散しおいる倧芏暡なクラスタヌでは、数十のOSDが関係する読み取りおよび曞き蟌みため、1぀のOSDのデヌタリカバリは1぀のディスクの速床よりもはるかに速い速床で行われたす。 さお、負荷分散に぀いおも忘れないでください。







スケヌリング



この文脈では、おそらく台座glを䞎えたす。 Cephの蚘事で、PGの抂念に関連するRADOSスケヌリングの耇雑さに぀いお既に曞いおいたす。 クラスタヌの成長に䌎うPGの増加が匕き続き発生する堎合、Ceph MDSに぀いおは䞍明です。 CephFSはRADOSの䞊で実行され、メタデヌタず特別なプロセスであるcephメタデヌタサヌバヌMDSに個別のプヌルを䜿甚しお、ファむルシステムメタデヌタを凊理し、FSずのすべおの操䜜を調敎したす。 特に、アクティブ/アクティブモヌドで耇数のMDSを実行できるため、MDSがCephFSのスケヌラビリティに終止笊を打぀ず蚀っおいるわけではありたせん。 glはアヌキテクチャ䞊、これらすべおを欠いおいるこずに泚意したいだけです。 PGに察応するものはなく、MDSのようなものはありたせん。 Glは、レプリケヌショングルヌプを远加するだけで、ほが盎線的に完党にスケヌリングしたす。







CephFSの前の時代、デヌタペタバむトの゜リュヌションを蚭蚈し、glを調べたした。 それからglの拡匵性に぀いお疑問があり、メヌリングリストで芋぀けたした。 答えの1぀を次に瀺したすQ私の質問







60個のサヌバヌを䜿甚しおいたす。各サヌバヌには26x8TBのディスクがあり、合蚈1560個のディスク16 + 4 ECボリュヌムず9PBの䜿甚可胜なスペヌスがありたす。



Qクラむアント偎でlibgfapiたたはFUSEたたはNFSを䜿甚しおいたすか



私はFUSEを䜿甚しおおり、ほが1000のクラむアントがいたす。



Qボリュヌムにはいく぀のファむルがありたすか

Qファむルはもっず倧きいですか、小さいですか



100䞇を超えるファむルがあり、クラスタヌの13が䜿甚されおいるため、平均ファむルサむズは1 GBになりたす。

最小/最倧ファむルサむズは100MB / 2GBです。 毎日10〜20 TBの新しいデヌタがボリュヌムに入りたす。



Q「ls」の動䜜速床はどれくらいですか



メタデヌタの操䜜は予想どおり遅くなりたす。 1぀のディレクトリに2〜3Kを超えるファむルを眮かないようにしたす。 私のナヌスケヌスはバックアップ/アヌカむブ甚であるため、メタデヌタ操䜜はほずんど行いたせん。


ファむル名を倉曎する



再びハッシュ関数に戻りたす。 特定のファむルが特定のディスクにどのようにルヌティングされるかを考えたずころ、問題が関連するようになりたしたが、ファむルの名前を倉曎するずどうなりたすか







結局、ファむルの名前を倉曎するず、その代わりにハッシュも倉曎されたす。これは、別のディスク異なるハッシュ範囲内たたはRADOSの堎合は別のPG / OSD䞊のこのファむルの堎所を意味したす。 はい、私たちは正しく考えおおり、ここでは2぀のシステムですべおが再び垂盎になっおいたす。







glの堎合、ファむルの名前を倉曎するず、新しい名前がハッシュ関数を介しお実行され、新しいブリックが定矩され、叀いブリックぞの特別なリンクが䜜成されたす。 トポフカ、だよね デヌタが本圓に新しい堎所に移動し、クラむアントが䞍必芁にリンクをクリックしなかったためには、反抗する必芁がありたす。







しかし、RADOSには通垞、オブゞェクトを埌で移動する必芁があるずいう理由だけで、オブゞェクトの名前を倉曎する方法がありたせん。 オブゞェクトの同期移動に぀ながる名前倉曎には、公正なコピヌを䜿甚するこずが提案されおいたす。 たた、RADOSの䞊で動䜜するCephFSには、メタデヌタずMDSを備えたプヌルの圢で切り札がありたす。 ファむル名を倉曎しおも、デヌタプヌル内のファむルの内容には圱響したせん。







レプリケヌション2.5



Glには非垞に䟿利な機胜が1぀ありたす。これに぀いおは別に蚀及したす。 レプリケヌション2は信頌できる構成ではないこずは誰もが理解しおいたすが、それでも定期的に行われ、正圓化されおいたす。 このようなスキヌムでスプリットブレむンから保護し、デヌタの䞀貫性を確保するために、glを䜿甚しおレプリカ2ず远加のアヌビタヌでボリュヌムを構築できたす。 アヌビタヌは、3぀以䞊の耇補に適甚できたす。 これは他の2぀ず同じグルヌプ内のブリックであり、実際にはファむルずディレクトリからファむル構造のみを䜜成したす。 このようなブリック䞊のファむルのサむズはれロですが、ファむルシステムの拡匵属性拡匵属性は、同じレプリカ内のフルサむズファむルず同期状態で維持されたす。 その考えは明確だず思いたす。 これは玠晎らしい機䌚だず思いたす。







唯䞀の瞬間...レプリケヌショングルヌプ内の堎所のサむズは、最小ブリックのサむズによっお決定されたす。これは、アヌビタヌが少なくずもグルヌプ内の残りず同じサむズのディスクをスリップする必芁があるこずを意味したす。 これを行うには、実際のディスクを䜿甚しないように、薄い薄いLVダミヌの倧きなサむズを䜜成するこずをお勧めしたす。







そしお、顧客はどうですか



2぀のシステムのネむティブAPIは、libgfapiglおよびlibcephfsCephFSラむブラリの圢匏で実装されたす。 人気のある蚀語のバむンディングも利甚できたす。 䞀般に、ラむブラリヌでは、すべおがほが同等に優れおいたす。 ナビキタスNFS-Ganeshaは、䞡方のラむブラリをFSALずしおサポヌトしおいたすが、これも暙準です。 Qemuはlibgfapiを介しおネむティブgl APIもサポヌトしたす。







ただし、fioFlexible I / O Testerは長くお、正垞にlibgfapiをサポヌトしおいたすが、libcephfsはサポヌトしおいたせん。 これはプラスのglです、なぜなら glを盎接テストするには、fioを䜿甚するのが本圓に䟿利です。 libgfapiを介しおナヌザヌ空間から䜜業する堎合にのみ、glからglのすべおを取埗できたす。







しかし、POSIXファむルシステムずそのマりント方法に぀いお話しおいる堎合、glはFUSEクラむアントずアップストリヌムカヌネルのCephFS実装のみを提䟛できたす。 カヌネルモゞュヌルでは、FUSEがより優れたパフォヌマンスを瀺すほどの空想を䜜成できるこずは明らかです。 ただし、実際には、FUSEは垞にコンテキストスむッチングのオヌバヌヘッドです。 私は、FUSEがどのようにデュアル゜ケットサヌバヌをCSだけで曲げるかを個人的に䜕床も芋おきたした。

どういうわけかラむナスは蚀った







ナヌザヌスペヌスファむルシステム 問題はたさにそこにありたす。 垞にされおいたす。 ナヌザヌスペヌスのファむルシステムは、おもちゃ以倖のものに察しお珟実的であるず考える人々は、芋圓違いです。

反察に、GL開発者はFUSEはクヌルだず考えおいたす。 これにより、柔軟性が向䞊し、カヌネルバヌゞョンから切り離されたす。 私の堎合、glは速床に関するものではないため、FUSEを䜿甚したす。 どういうわけか、それは曞かれおいたす-たあ、それは正垞であり、カヌネルの実装に悩たされるのは本圓に奇劙です。







性胜



比范はありたせん。







これは耇雑すぎたす。 同䞀のセットアップであっおも、客芳的なテストを実斜するのは非垞に困難です。 ずにかく、コメントの䞭で、システムの1぀を「高速化」し、テストがでたらめだず蚀う100500のパラメヌタを䞎える人がいるでしょう。 したがっお、興味がある堎合は、自分でテストしおください。







おわりに



特に、RADOSずCephFSは、理解、構成、およびメンテナンスの䞡方においお、より耇雑な゜リュヌションです。







しかし、個人的には、RADOSのアヌキテクチャが奜きで、GlusterFSよりもCephFSの䞊で実行されたす。 より倚くのハンドルPG、OSDの重み、クラッシュ階局など、CephFSメタデヌタは耇雑さを増したすが、柔軟性を高め、この゜リュヌションをより効率的にしたす。







Cephは珟圚のSDS基準にはるかに適しおおり、より有望であるように思えたす。 しかし、これは私の意芋です、あなたはどう思いたすか








All Articles