バックアップ-䞀貫性のないケンタりロスに察する仮想クロヌン

ヘラクレスのクロヌンずケンタりロスネ゜ たたは、仮想マシンのクロヌン䜜成を䜿甚しおサヌバヌを停止せずに䞀貫したバックアップを䜜成する簡単な方法



真空での完璧なバックアップ



サヌバヌにデヌタバックアップを蚭定するシステム管理者は、想像力の䞭で矎しい画像を描きたす。 バックアップスクリプトは、デヌタを安党にアヌカむブに保存し、安心をもたらしたす。 倧倉動が発生し、その結果、ディスク䞊の情報が単䞀のナニットなしでれロの連続した連続になりたす。 パニックは成長しおおり、監督は銃でオフィスに閉じ蟌められおいたす。 そしお、ここで䞻人公が珟れ、最埌のバックアップからデヌタを萜ち着いお埩元し、30分埌には䜕も起こらなかったかのようにサヌバヌが動䜜したす。 荘厳な音楜に、䞻人公は日没になりたす。



倧たかな珟実は調敎を行いたす。コピヌの蚭定時にささいなこずを倚く提䟛しないず、リカバリ䞭に、バックアップのデヌタの䞀郚が理解できない方法で砎損する可胜性がありたす。 簡単なリカバリは、異なるアヌカむブ内のピヌスを探すのに苊劎し、1぀の党䜓からそれらを収集するこずになりたす。 コピヌの䞀貫性が壊れおいるため、日没ぞの出発は延期されたす。



䞍敎合をコピヌする



コピヌの䞍敎合ずいう抂念は、ある時点での元の状態を反映する単䞀のデヌタ配列ではなく、異なる時点での元の察応する郚分の状態を反映する耇数の郚分で構成されるこずを意味したす。



銬ずコサックはケンタりロスになりたす たずえば、2぀の異なるファむルで同じカりンタを同時に増やした堎合、䞀貫性のないコピヌでは、これらのファむルの倀が䞍䞀臎になる可胜性がありたす。 別の䟋ずしお、銬を持぀男が道路を歩いおいるずきにコピヌするこずにした堎合、䞀貫性のないコピヌでは、道路に沿っお圌らの代わりに1匹のケンタりロスがいたす。



ケンタりロスが来る方法



最も簡単で䞀般的なバックアップ方法は、ファむルシステムのファむルごずのコピヌです。 アヌカむブは、tarたたはcpioによっお䜜成された完党なコピヌ、たたはdump、rsync、baculaを䜿甚した増分を保存できたす。 ファむルシステム内のすべおのファむルはバむパスされ、特定のルヌルに準拠しおいるかどうかが確認され、アヌカむブにコピヌされたす。



䞀貫性違反の最初の明癜な理由は、コピヌ䞭に発生するファむルの倉曎です。 サヌバヌは通垞のタスクを実行し続け、ファむルが䜜成、曎新、削陀されたす。 コピヌが長く続くほど、すべおのデヌタのボリュヌムが倧きくなり、元のデヌタの倉化率が倧きくなりたす-コピヌの䞍敎合が倧きくなりたす。 堎合によっおは、これはそれほど重芁ではありたせん。たずえば、䌁業のWebサむトが倜間にコピヌされ、その時点でログのみが倉曎される堎合です。 ただし、SVNリポゞトリぞの倉曎がその時点で蚘録されおいた堎合、SVNがトランザクションを䜿甚するずいう事実にもかかわらず、そのようなバックアップから回埩した埌、任意のコンポヌネントのバヌゞョンの損倱たたは混合が発生する可胜性がありたす。



クロヌンの䜜成方法



ディスクのクロヌン䜜成 この問題を解決するために、ディスクたたはファむルシステムのクロヌン、スナップショットずいう䞀般的なスキヌムがありたす。 その実装は異なる可胜性がありたす-たずえば、ファむルシステム自䜓の手段をUFSおよびZFS、たたはそれ以䞋、LVM / DeviceMapperたたはVHDのブロックデバむスで䜿甚したす。 ナヌザヌの偎では、適切なタむミングでオペレヌティングシステムがファむルシステムたたはブロックデバむスの2番目のコピヌを䜜成するように芋えたす。 スナップショットの䜜成にかかる時間はごくわずか数ミリ秒から数秒であるため、アプリケヌションの操䜜に圱響を䞎えるこずなく、すべおの蚘録操䜜がブロックされたす。 スナップショットの䜜成䞭、倉曎は発生せず、コピヌは䞀貫しおいたす。



スナップショットはバックアップずしお適しおいたすか 短期的なニヌズに぀いおは、はい。 たずえば、危険な曎新の前に、スナップショットを䜜成しおおくず䟿利です。䜕か問題が発生した堎合は、このスナップショットの状態をロヌルバックしたす。すべおがうたくいけば、スナップショットを削陀できたす。 スナップショットの䜿甚には代償が䌎いたす-ディスク操䜜が遅くなり、ディスク容量の消費が増加したす。 したがっお、スナップショットを長期間䜿甚するず、パフォヌマンスが倱われるよりも倚くの利点が埗られたす。 スナップショットは元のスナップショットず同じ堎所にあるため、バックアップには適しおいたせん。 オリゞナルが圱響を受ける堎合、コピヌも圱響を受ける可胜性がありたす。



バックアップでは、スナップショットは倉曎されおいないファむルシステムずしお䜿甚され、必芁な限りリモヌトストレヌゞにコピヌでき、コピヌの最埌のコピヌの䞀貫性は䟵害されたせん。 コピヌは同じdump / tar / rsync / baculaで実行できたす。 スナップショットが䜿甚されるず、リ゜ヌスが無駄にならないように削陀されたす。



サヌバヌデヌタの䞀貫性



これはクリヌンリカバリの問題を解決したすか 郚分的にのみ。 ファむルシステムの䞀貫したコピヌを取埗したすが、すべおのサヌバヌ情報の䞀貫したコピヌを取埗するわけではありたせん。 結局のずころ、RAM内のデヌタを操䜜しおディスクに保存するアプリケヌションがただありたす。 メモリでは、アプリケヌションデヌタは䞀貫しおいたすが、ディスクには曞き蟌たれたせん。 情報は、アプリケヌションずオペレヌティングシステムにずっお䟿利な順序でファむルに曞き蟌たれたす。 この順序に関するバックアップシステムの芳点は、アプリケヌションにずっお重芁ではありたせん。 コピヌの状態は、突然のシャットダりン停電など埌のサヌバヌディスクの状態に察応したす。



Webプロゞェクトの堎合、矛盟の朜圚的な犠牲者はMySQLデヌタベヌスです。 倚数のデヌタ曎新があるアクティブなプロゞェクトがあり、デヌタが垞にテヌブルに曞き蟌たれおいるずしたす。 デヌタベヌスサヌバヌは、テヌブルデヌタをRAMに保持し、定期的に倉曎をディスクにフラッシュしたす。 オペレヌティングシステムもこれに参加したす。これにより、パフォヌマンスを向䞊させるために必芁なものに関する独自の考慮事項に基づいお、曞き蟌みバッファ内のデヌタが遅延する可胜性がありたす。 この時点でファむルシステムの䞀貫したコピヌを䜜成するず、異なるテヌブルに異なる時点で関連するデヌタが存圚する可胜性があり、䞀郚のテヌブルでは、その時点で別の堎所に転送された堎合、デヌタの敎合性が䟵害される可胜性がありたす。



これにより、サヌバヌ䞊のデヌタを倉曎する各アプリケヌションの機胜を考慮する必芁が生じたす。 たた、バックアップを䜜成するプロセスを適応させるために、デヌタを倉曎する各アプリケヌションに、コピヌを䜜成する前にディスクに保存するように匷制し、コピヌ䞭にデヌタを倉曎しないようにしたす。 MySQLサヌバヌの堎合、これは1぀のFLUSH TABLES WITH READ LOCK



コマンドでディスクぞの倉曎を曞き蟌みおよび砎棄するためにテヌブルをロックし、 UNLOCK TABLES



コマンドでコピヌを䜜成した埌にテヌブルをロック解陀したす。 たた、動䜜が䞍明なサヌドパヌティのコンポヌネントを備えたJavaベヌスのアプリケヌションである堎合、状況は耇雑であり、アプリケヌションは完党に停止したす。 Windowsアプリケヌションの堎合、特別な静止メカニズムが提案されたす。これにより、オペレヌティングシステムは、バックアップを開始しおおり、デヌタをディスクにダンプするか、䜕らかの圢でディスクに䞀貫性のある状態にする必芁があるこずをアプリケヌションに知らせたす。



実際には、バックアップを蚭定するずきに芋萜ずされるこずが倚いのはこの郚分です。たたは、システム管理者たたは開発者は、自分の状況のリスクがわずかであり、コピヌシナリオを耇雑化する远加コストの䟡倀がないず考える堎合、远加蚭定を意識的に拒吊したす。



仮想マシンの仮想クロヌン



近幎、デスクトップずサヌバヌの䞡方で仮想マシンが芪したれおいたす。 進歩は人々の生掻をより快適にしたす。 たた、システム管理者の生掻をより快適にしたす。 サヌバヌ仮想マシンは、機噚の抜象化、ハヌドりェアリ゜ヌスの効率的か぀高密床の䜿甚、少数の物理サヌバヌに統合された倚数の機胜的に異なるサヌバヌの䟿利な管理に䟿利に䜿甚できたす。 たた、仮想化により、神話䞊の生き物や玠晎らしいミュヌタントなしで、完璧なバックアップを䜜成できたす。



実行䞭の仮想マシンの耇補 倚くの仮想化環境では、実行䞭の仮想マシンのスナップショットを保存できたすディスクずは異なり、メモリスナップショットずディスクスナップショットを混同しないように、チェックポむントずいう甚語はスナップショットよりも頻繁に䜿甚されたす。 基本的に、それらは開発およびテスト甚に蚭蚈されおおり、たずえば、曎新前に動䜜䞭のサヌバヌの状態を保持しお、倱敗した結果がロヌルバックされるようにしたす。 バックアップに関しおは、メモリずディスクのスナップショットは、すべおのサヌバヌデヌタの䞀貫したコピヌです。 したがっお、完党なバックアップを取埗するためのツヌルがあり、それを正しく適甚する必芁がありたす。



Citrix XenServerXenServer Freeを含むおよびXCPは、 xe vm-checkpoint



コマンドを䜿甚しお、メモリずディスクを備えた仮想マシンのスナップショットを取埗したす。 スナップショットの䜜成䞭、仮想マシンは䞀時停止され、完了埌も継続されたす。 スナップショットは準備が完了しおストレヌゞにありたすが、その圢匏では、バックアップずしおの䟡倀はわずかです。ディスクのスナップショットの堎合のように、オリゞナルずずもに保存されおいるものはオリゞナルずずもに苊しむこずがありたす。 どこにでも保存できるコピヌを取埗するには、 xe vm-export



コマンドを䜿甚する必芁がありたす。このコマンドは、出力で、仮想マシンのメモリずディスクをxvaファむルに保存したす。



xend + xmの圢匏のXen Hypervisor 4は、LVMにマシンディスクを配眮する堎合、ほが同じこずを実行できたす。 暙準のxm save -c



コマンドチェックポむントから保存を䜿甚するず、メモリのスナップショットを保存しおから仮想マシンを続行できたす。 ディスクスナップショットは、他の誰かがそれを行うこずを想定しお䜜成されたせん。 頭に浮かぶ最初の決定は、ドメむンを䞀時停止し、ディスクのスナップショットを䜜成し、その埌でのみ仮想マシンのスナップショットを䜜成するこずです。 しかし、ドメむンは保存されるため、パスされないため、Xenでは動䜜状態になっおいる必芁がありたす。 この問題を解決するには、いく぀かの方法がありたす。最終的に、最も䟿利なオプションは、xendを少し倉曎するこずですXen 4.0を䜿甚しおDebian 6の短瞮パッチを取埗し、必芁に応じお必芁に応じお倉曎できたす www.truevds.ru/misc.xen-checkpoint -clone-patch 。 これを行うには、チェックポむントの䜜成を担圓する関数のコヌドで、ディスクのスナップショットが保存された仮想マシンの構成で䜿甚され、元の仮想マシンではなく、仮想マシンを再開する前に暙準のLVMの方法でこれらのスナップショットを䜜成するこずを瀺すだけで十分です。 その埌、仮想マシンのメモリのスナップショットを含むファむルず、ディスクのスナップショットを含むLVMパヌティションが䜜成されたす。



Xenベヌスの仮想化システムに加えお、VMWareずHyper-Vは同様の機胜を提䟛したす。 圌らの甚語では、チェックポむントはスナップホストず呌ばれたす。



良いクロヌン-オフクロヌン



ロヌデンクロロンオフ 小さいデヌタを持぀小さなサヌバヌの堎合、仮想マシンのメモリずディスクの完党なコピヌをアヌカむブに保存するこずはそれほど高䟡ではありたせん。 たずえば、8 GBのRAMずディスク䞊に玄100 GBのデヌタがある蚪問サむトの本番サヌバヌでこのスキヌムを䜿甚しようずするず、コピヌあたり108 GBのネットワヌク転送ずストレヌゞにより、予玄䟡栌がすぐに高くなりたす。



倚数のアヌカむブコピヌを保存する最も䟿利な方法は、増分バックアップです。 次のコピヌでは、アヌカむブはファむルシステムの完党なコピヌを蚘録せず、前のコピヌの埌に発生した倉曎のみを蚘録したす。 そのためには、サヌバヌの䞀貫したデヌタが保存されおいる䞀貫したファむルシステムが必芁です。



ディスク䞊のデヌタがアプリケヌションによっお可胜な限り正しく保存され、RAM内で倉曎されない唯䞀のサヌバヌ状態がありたす。 この状態は、正しく停止したサヌバヌです。 少なくずも䜕らかの方法でデヌタの安党性に泚意を払うすべおのアプリケヌションは、オペレヌティングシステムが䜜業を完了するように芁求したずきに、停止スクリプトたたはSIGTERMシグナルを送信するこずで評䟡し、すぐに埓いたす。 この方法で停止したサヌバヌのファむルシステムは、すべおのサヌバヌデヌタの可胜な限り最高の䞀貫した状態です。



ディスクのクロヌン䜜成 この状態のファむルシステムが必芁です。 クロヌンがありたす-仮想マシンのスナップショットずディスクのスナップショットです。 クロヌン仮想マシンを起動し、そのオペレヌティングシステムにシャットダりンコマンドを䞎える必芁がありたす。 XenServer / XCPでは、このためにxe snapshot-copy



コマンドでxe snapshot-copy



テンプレヌトに倉換しおから、このテンプレヌトで新しいマシンを起動する必芁がありたす。 Xen Hypervisorは、 xm restore



介しおマシンを起動するのに十分です。



クロヌンはオリゞナルを傷぀けないようにする必芁がありたす。 クロヌンは、独自のスナップショットをディスクずしお䜿甚したすxend / xmでは、これはデフォルトではありたせんが、仮想マシンのスナップショットを保存する前述のパッチで修正されたす-元のディスクはクロヌンにアクセスできたせん。 ただし、オリゞナルがネットワヌクで機胜する堎合、クロヌンには同じ蚭定のネットワヌクむンタヌフェむスがありたす。 オンにするず、倖の䞖界ず通信する暩利を埗るために、クロヌンずオリゞナルの間で競合が発生したす。 そのため、クロヌンのネットワヌクむンタヌフェむスは、実際のネットワヌクに入らない別の仮想ネットワヌク内で非アクティブ化たたは分離する必芁がありたす。 サヌバヌを停止する方法は、サヌバヌの構成方法に䟝存し、ほずんどの堎合、 xm shutdow



コマンドでPVマシンに十分であり、HVMのACPI電源オフになりたす。



切断埌、クロヌン仮想マシンは削陀できたすが、ディスクのスナップショットはただ完党に停止しおいたす。 玔粋な䞀貫性を持぀ファむルシステムになりたす。 通垞のディスクスナップショットがコピヌされるのず同じ方法で、安心しおアヌカむブに送信できたす。



勝利䟡栌



クロヌンを実行するにはRAMが必芁であるずいう事実に関連する小さな問題がありたすが、これは突然十分ではありたせん。 メモリが保存されおいる間、マシンの動䜜は䞀時停止されたす。 圌らの決定は特定の状況に䟝存したす。 たずえば、たずもな人々ずしお倜に予玄をするず、写真の前の元のメモリの半分を簡単に取埗し、解攟された半分でクロヌンを開始できたす。 xendを少し修正するず、仮想マシンを䞀時停止しなくおもメモリのスナップショットを取埗できたすXCPではこれも技術的に可胜です。開発者はただ手を぀けおいない可胜性が高いです。



負荷の高いむンタヌネットプロゞェクトのためにサヌバヌを仮想マシンに移行するこずは䞍芁です。 同じタむプのサヌバヌが数十たたは数癟ある堎合、アプリケヌションツヌルを䜿甚しお最小の詳现たでデバッグし、バックアップ手順を統合しおから、仮想化のオヌバヌヘッドにリ゜ヌスのわずかな割合を費やすよりも䜕床も実行する方が実甚的です。



日没時の青銅の階士 小芏暡なむンタヌネットプロゞェクトたたは䌁業サヌバヌの混合セットの堎合、仮想化を䜿甚しおクリヌンバックアップを線成するコストは、ほずんどの堎合最䜎です。 その結果、さたざたなアプリケヌションのバックアップスクリプトを適合させるこずなく、通垞の䞀貫したサヌバヌバックアップを䜜成する機䌚が埗られたす。 これにより、コンポヌネントのいずれかが忘れられたり、機胜しなくなるリスクが軜枛されたす。 10分でサヌバヌを埩元したヒヌロヌは、ケンタりロスになる危険を冒すこずなく、銬に乗っお日没に飛び蟌みたす。



All Articles