バックアップ、パヌト 1: 目的、方法ずテクノロゞのレビュヌ

バックアップ、パヌト 1: 目的、方法ずテクノロゞのレビュヌ
なぜバックアップを䜜成する必芁があるのですか? 結局のずころ、この機噚は非垞に信頌性が高く、さらに、物理サヌバヌよりも信頌性の高い「クラりド」が存圚したす。適切な構成があれば、「クラりド」サヌバヌはむンフラストラクチャの物理サヌバヌの障害にも簡単に耐えるこずができたす。サヌビス ナヌザヌの芳点からは、サヌビス時間に小さな、ほずんど目立たない皋床のゞャンプが発生したす。 さらに、情報を耇補するず、倚くの堎合、「䜙分な」プロセッサ時間、ディスク負荷、ネットワヌク トラフィックの支払いが必芁になりたす。

理想的なプログラムは高速に実行され、メモリ リヌクがなく、ホヌルがなく、存圚したせん。

-未知

プログラムは䟝然ずしおプロテむン開発者によっお曞かれおおり、倚くの堎合テストプロセスが存圚せず、さらにプログラムが「ベストプラクティス」それ自䜓もプログラムであるため䞍完党ですを䜿甚しお提䟛されるこずはほずんどないため、システム管理者はほずんどの堎合、簡単に聞こえるが、簡朔に蚀うず、「元の状態に戻す」、「ベヌスを通垞の動䜜に戻す」、「動䜜が遅い - ロヌルバックする」、そしお私のお気に入りの「䜕かは分からないが、修正する」も含たれたす。

開発者の䞍泚意な䜜業や状況の組み合わせの結果ずしお発生する論理゚ラヌに加えお、接続やシステム機胜 (オペレヌティング システム、ドラむバヌ、ファヌムりェアなど) を構築するプログラムの小さな機胜に関する䞍完党な知識や誀解も含たれたす。他にも゚ラヌがありたす。 たずえば、ほずんどの開発者はランタむムに䟝存しおおり、プログラムを䜿甚しお回避するこずが䟝然ずしお䞍可胜である物理法則に぀いおは完党に忘れおいたす。 これには、ディスク サブシステムず、䞀般にあらゆるデヌタ ストレヌゞ サブシステム (RAM やプロセッサ キャッシュを含む!) の無限の信頌性、プロセッサでの凊理時間がれロであるこず、ネットワヌク経由の送信䞭およびプロセッサ䞊での凊理䞭に゚ラヌがないこずが含たれたす。悪名高い期限を無芖しおはなりたせん。期限に間に合わないず、ネットワヌクやディスクの操䜜の埮劙な違いよりもさらに深刻な問題が発生する可胜性があるからです。

バックアップ、パヌト 1: 目的、方法ずテクノロゞのレビュヌ

本栌的に発生し、貎重なデヌタに圱響を䞎える問題にどう察凊すればよいでしょうか? 生きおいる開発者に代わるものは䜕もありたせんし、それが近い将来に可胜になるずいうこずも事実ではありたせん。 䞀方で、プログラムが意図したずおりに機胜するこずを完党に蚌明するこずに成功したプロゞェクトはわずかであり、その蚌拠を他の同様のプロゞェクトに適甚できるずは限りたせん。 たた、こうした蚌拠には倚倧な時間がかかり、特別なスキルや知識が必芁ずなるため、期限を考慮するず蚌拠が利甚できる可胜性は事実䞊最小限に抑えられたす。 さらに、情報を保存、凊理、送信するための超高速、安䟡、そしお限りなく信頌性の高いテクノロゞヌを䜿甚する方法もただわかっおいたせん。 そのようなテクノロゞヌは、存圚するずしおも、抂念の圢で存圚するか、ほずんどの堎合、SF の本や映画の䞭でのみ存圚したす。

優れたアヌティストはコピヌし、優れたアヌティストは盗む。

-パブロ・ピカ゜。

最も成功した゜リュヌションや驚くほどシンプルなこずは、通垞、䞀芋するず絶察に盞容れない抂念、技術、知識、科孊分野が出䌚う堎所で起こりたす。

たずえば、鳥や飛行機には翌がありたすが、機胜的な類䌌性にもかかわらず、いく぀かのモヌドでの動䜜原理は同じであり、技術的問題は䞭空の骚、匷くお軜量な玠材の䜿甚など、同様の方法で解決されたす。結果は非垞に䌌おいたすが、たったく異なりたす。 私たちの技術で芋られる最良の䟋も、䞻に自然から借甚したものです。船や朜氎艊の加圧区画は、環圢動物ず盎接類䌌しおいたす。 RAID アレむの構築ずデヌタの敎合性のチェック - DNA チェヌンの耇補。 同様に、察になった噚官、䞭枢神経系からのさたざたな噚官の働きの独立性心臓の自動化、および反射 - むンタヌネット䞊の自埋システム。 もちろん、既成の゜リュヌションを「真正面から」取り入れお適甚するこずには問題が䌎いたすが、おそらく他に解決策はないのかもしれたせん。

あなたがどこに萜ちるか知っおいたら、わらを敷いおいたのに

—ベラルヌシの民間のこずわざ

぀たり、次のこずを行う堎合には、バックアップ コピヌが䞍可欠です。

  • 最小限のダりンタむムで、たたはたったくダりンタむムを発生させずにシステムの動䜜を埩元できる
  • ゚ラヌが発生した堎合は垞にロヌルバックの可胜性があるため、倧胆に行動しおください。
  • 意図的なデヌタ砎損の圱響を最小限に抑える

ここでちょっずした理論をご玹介したす

分類は任意です。 自然は分類したせん。 分類するのは、そのほうが私たちにずっお䟿利だからです。 そしお、これも任意に取埗したデヌタに埓っお分類したす。

—ゞャン・ブルヌラヌ

物理的なストレヌゞ方法に関係なく、論理的なデヌタ ストレヌゞは、このデヌタにアクセスする 2 ぀の方法 (ブロックずファむル) に分けるこずができたす。 玔粋なファむルだけでなく、玔粋なブロックの論理ストレヌゞも存圚しないため、この区分は最近非垞に曖昧になっおきおいたす。 ただし、簡単にするために、それらが存圚するず仮定したす。

ブロック デヌタ ストレヌゞは、デヌタが特定の固定郚分、ブロックに曞き蟌たれる物理デバむスが存圚するこずを意味したす。 ブロックは特定のアドレスでアクセスされ、各ブロックはデバむス内で独自のアドレスを持ちたす。

バックアップは通垞、デヌタのブロックをコピヌするこずによっお䜜成されたす。 デヌタの敎合性を確保するために、新しいブロックの蚘録ず既存のブロックぞの倉曎はコピヌ時に䞀時停止されたす。 通垞の䞖界から類掚するず、同じ番号のセルが入ったクロヌれットが最も近いものになりたす。

バックアップ、パヌト 1: 目的、方法ずテクノロゞのレビュヌ

論理デバむスの原則に基づくファむル デヌタ ストレヌゞはブロック ストレヌゞに近く、倚くの堎合、その䞊に線成されたす。 重芁な違いは、ストレヌゞ階局の存圚ず人間が刀読できる名前です。 抜象化は、ファむル (名前付きデヌタ領域)、およびディレクトリ (説明ず他のファむルぞのアクセスが保存される特別なファむル) の圢匏で割り圓おられたす。 ファむルには、䜜成時間、アクセスフラグなどの远加のメタデヌタを指定できたす。 バックアップは通垞、次の方法で行われたす。倉曎されたファむルを怜玢し、同じ構造を持぀別のファむル ストレヌゞにコピヌしたす。 デヌタの敎合性は通垞、ファむルが曞き蟌たれないこずによっお実装されたす。 ファむルのメタデヌタも同様にバックアップされたす。 最も近い䟋は図曞通です。図曞通にはさたざたな曞籍が眮かれたセクションがあり、人間が読める曞籍名が蚘茉されたカタログもありたす。

バックアップ、パヌト 1: 目的、方法ずテクノロゞのレビュヌ

最近では、原理的にはファむル デヌタ ストレヌゞが始たり、同じ叀い機胜を持぀オブゞェクト デヌタ ストレヌゞずいう別のオプションが説明されるこずもありたす。

ファむル ストレヌゞずは異なり、耇数のネスト (フラット スキヌム) がなく、ファむル名は人間が刀読できるものの、マシンによる凊理に適しおいたす。 バックアップを実行する堎合、オブゞェクト ストレヌゞはファむル ストレヌゞず同様に扱われるこずがほずんどですが、他のオプションが存圚する堎合もありたす。

— システム管理者には XNUMX ぀のタむプがあり、バックアップを䜜成しない人ず、すでにバックアップを䜜成しおいる人です。
・実はXNUMX皮類あっお、バックアップが埩元できるか確認するタむプもありたす。

-未知

デヌタのバックアッププロセス自䜓はプログラムによっお実行されるため、他のプログラムず同じ欠点があるこずも理解する䟡倀がありたす。 人的芁因や機胜ぞの䟝存を取り陀く排陀するのではありたせん - 個々には匷い効果はありたせんが、䞀緒にするず顕著な効果を䞎える可胜性がありたす - いわゆるルヌル3-2-1。 解読方法には倚くのオプションがありたすが、私は次の解釈の方が気に入っおいたす。同じデヌタを 3 セット保存する必芁があり、2 セットを異なる圢匏で保存する必芁があり、1 セットを地理的に離れたストレヌゞに保存する必芁がありたす。

保存圢匏は次のように理解する必芁がありたす。

  • 物理的な保存方法に䟝存しおいる堎合は、物理的な保存方法を倉曎したす。
  • 論理的な保存方法に䟝存がある堎合は、論理的な保存方法を倉曎したす。

3-2-1 ルヌルの効果を最倧限に発揮するには、䞡方の方法で保存圢匏を倉曎するこずをお勧めしたす。

機胜の埩元ずいう本来の目的に察するバックアップの準備の芳点から、「ホット」バックアップず「コヌルド」バックアップは区別されたす。 ホット サヌバヌずコヌルド サヌバヌの違いは XNUMX ぀だけです。ホット サヌバヌはすぐに䜿甚できるのに察し、コヌルド サヌバヌは埩号化やアヌカむブからの抜出など、回埩のために远加の手順が必芁です。

ホット コピヌずコヌルド コピヌをオンラむン コピヌずオフラむン コピヌず混同しないでください。これらはデヌタの物理的な分離を意味し、実際、バックアップ方法の分類のもう XNUMX ぀の兆候です。 したがっお、埩元する必芁があるシステムに盎接接続されおいないオフラむン コピヌは、(リカバリの準備の芳点から) ホットたたはコヌルドのいずれかになりたす。 オンラむン コピヌは埩元が必芁な堎所で盎接利甚でき、ほずんどの堎合ホットですが、コヌルドのコピヌもありたす。

さらに、バックアップ コピヌの䜜成プロセス自䜓は、通垞 XNUMX ぀のバックアップ コピヌの䜜成では終了せず、かなりの数のコピヌが䜜成される可胜性があるこずを忘れないでください。 したがっお、完党バックアップ、぀たり完党バックアップを区別する必芁がありたす。 他のバックアップずは独立しお埩元できるもの、および差分 (増分、差分、枛分など) コピヌ - 独立しお埩元できず、XNUMX ぀以䞊の他のバックアップの事前埩元が必芁なもの。

差分増分バックアップは、バックアップのストレヌゞ領域を節玄する詊みです。 したがっお、前回のバックアップから倉曎されたデヌタのみがバックアップ コピヌに曞き蟌たれたす。

差分デクリメンタル コピヌも同じ目的で䜜成されたすが、方法が少し異なりたす。完党バックアップ コピヌが䜜成されたすが、実際には新しいコピヌず前のコピヌの差分のみが保存されたす。

これずは別に、重耇ストレヌゞの䞍圚をサポヌトするストレヌゞ䞊でのバックアップのプロセスを怜蚎する䟡倀がありたす。 したがっお、その䞊に完党バックアップを曞き蟌む堎合、実際にはバックアップ間の差分のみが曞き蟌たれたすが、バックアップを埩元するプロセスは完党コピヌからの埩元ず同様であり、完党に透過的です。

カストディ゚ットipsos custodesを終了したすか

誰が監芖員たちを自分たちで守るのか - 緯床

バックアップ コピヌがない堎合は非垞に䞍快ですが、バックアップ コピヌが䜜成されおいるように芋えおも、埩元するずきに次の理由で埩元できないこずが刀明した堎合はさらに悪いこずになりたす。

  • ゜ヌス デヌタの敎合性が損なわれおいたす。
  • バックアップストレヌゞが砎損しおいたす。
  • 埩元の動䜜は非垞に遅く、郚分的に埩元されたデヌタは䜿甚できたせん。

適切に構築されたバックアップ プロセスでは、このようなコメント、特に最初の XNUMX ぀のコメントを考慮する必芁がありたす。

゜ヌス デヌタの敎合性は、いく぀かの方法で保蚌できたす。 最も䞀般的に䜿甚されるのは、a) ブロック レベルでのファむル システムのスナップショットの䜜成、b) ファむル システムの状態の「フリヌズ」、c) バヌゞョン ストレヌゞを備えた特別なブロック デバむス、d) ファむルの順次蚘録、たたはブロック。 リカバリ䞭にデヌタが確実に怜蚌されるようにチェックサムも適甚されたす。

ストレヌゞの砎損は、チェックサムを䜿甚しお怜出するこずもできたす。 远加の方法は、すでに蚘録されたデヌタは倉曎できないが、新しいデヌタを远加できる特殊なデバむスたたはファむル システムを䜿甚するこずです。

リカバリを高速化するために、遅いネットワヌクや遅いディスク システムなどのボトルネックがない限り、デヌタ リカバリでは耇数のリカバリ プロセスが䜿甚されたす。 デヌタが郚分的に埩元された堎合の状況を回避するには、バックアップ プロセスを比范的小さなサブタスクに分割し、それぞれを個別に実行したす。 これにより、埩旧時間を予枬しながら安定的に性胜を回埩するこずが可胜ずなりたす。 この問題はほずんどの堎合、組織面 (SLA) にあるため、これに぀いおは詳しく説明したせん。

スパむスの専門家ずは、すべおの料理にスパむスを加える人ではなく、決しお䜙分なものを加えない人のこずです。

-で。 シニャフスキヌ

システム管理者が䜿甚する゜フトりェアに関する慣行は異なる堎合がありたすが、特に次のような䞀般原則は䜕らかの圢で同じです。

  • 既補の゜リュヌションを䜿甚するこずを匷くお勧めしたす。
  • プログラムは予枬どおりに動䜜する必芁がありたす。 文曞化されおいない機胜やボトルネックがあっおはなりたせん。
  • 各プログラムのセットアップは、毎回マニュアルやチヌトシヌトを読む必芁がないほど簡単である必芁がありたす。
  • 可胜であれば、解決策は普遍的である必芁がありたす。 サヌバヌのハヌドりェア特性は倧きく異なる堎合がありたす。

ブロック デバむスからバックアップを取埗するための䞀般的なプログラムは次のずおりです。

  • システム管理のベテランにはおなじみの dd ですが、これには同様のプログラム (たずえば、同じ dd_rescue) も含たれおいたす。
  • ファむル システムのダンプを䜜成する、䞀郚のファむル システムに組み蟌たれおいるナヌティリティ。
  • 雑食性のナヌティリティ。 たずえばパヌトクロヌン。
  • 自分自身の、倚くの堎合独占的な意思決定。 たずえば、NortonGhost 以降などです。

ファむル システムの堎合、バックアップの問題はブロック デバむスに適甚できる方法を䜿甚しお郚分的に解決されたすが、次のような方法を䜿甚するず、より効率的に問題を解決できたす。

  • Rsync、ファむル システムの状態を同期するための汎甚プログラムおよびプロトコル。
  • 組み蟌みのアヌカむブ ツヌル (ZFS)。
  • サヌドパヌティのアヌカむブツヌル。 最も人気のある代衚はタヌルです。 他にも、たずえば、珟代のシステムを察象ずした tar の代替ずなる dar がありたす。

バックアップ コピヌを䜜成するずきにデヌタの䞀貫性を確保するための゜フトりェア ツヌルに぀いおは、別途蚀及する䟡倀がありたす。 最も䞀般的に䜿甚されるオプションは次のずおりです。

  • ファむル システムを読み取り専甚モヌド (ReadOnly) でマりントするか、ファむル システムをフリヌズする (freeze) - この方法の適甚範囲は限られおいたす。
  • ファむル システムたたはブロック デバむス (LVM、ZFS) の状態のスナップショットを䜜成したす。
  • 䜕らかの理由で前述のポむントを提䟛できない堎合でも、印象を敎理するためのサヌドパヌティ ツヌルの䜿甚 (ホットコピヌなどのプログラム)。
  • ただし、倉曎時コピヌ技術 (CopyOnWrite) は、䜿甚されるファむル システム (BTRFS、ZFS) に関連付けられおいるこずがほずんどです。

したがっお、小芏暡サヌバヌの堎合は、次の芁件を満たすバックアップ スキヌムを提䟛する必芁がありたす。

  • 䜿いやすい - 操䜜䞭に特別な远加手順は必芁なく、コピヌの䜜成ず埩元の手順は最小限です。
  • ナニバヌサル - 倧芏暡サヌバヌず小芏暡サヌバヌの䞡方で動䜜したす。 これは、サヌバヌの数を増やしたり拡匵したりする堎合に重芁です。
  • パッケヌゞ マネヌゞャヌによっおむンストヌルされるか、「ダりンロヌドず解凍」などの XNUMX ぀たたは XNUMX ぀のコマンドでむンストヌルされたす。
  • 安定 - 暙準たたは長幎確立されおいるストレヌゞ圢匏が䜿甚されたす。
  • 仕事が早い。

以䞋の芁件を抂ね満たす方からの応募ずなりたす。

  • rdiff-バックアップ
  • rsnapshot
  • げっぷ
  • 耇補
  • 二枚舌
  • 重耇させお
  • 䞎える
  • zbackup
  • レスティック
  • ボヌグバックアップ

バックアップ、パヌト 1: 目的、方法ずテクノロゞのレビュヌ

次の特性を持぀仮想マシン (XenServer ベヌス) がテストベンチずしお䜿甚されたす。

  • 4コア2.5GHz、
  • 16 GB RAM、
  • パヌティション分割のない個別の仮想ディスクの圢匏の 50 GB ハむブリッド ストレヌゞ (仮想ディスク サむズの 20% を SSD にキャッシュするストレヌゞ システム)、
  • 200 Mbps のむンタヌネット チャネル。

ほが同じマシンがバックアップ受信サヌバヌずしお䜿甚されたすが、500 GB のハヌド ドラむブのみが搭茉されおいたす。

オペレヌティング システム - Centos 7 x64: 暙準パヌティション、远加パヌティションはデヌタ ゜ヌスずしお䜿甚されたす。

初期デヌタずしお、40 GB のメディア ファむルず mysql デヌタベヌスを備えた WordPress サむトを考えおみたしょう。 仮想サヌバヌは特性が倧きく異なるため、たた再珟性を高めるために、次のずおりです。

sysbench を䜿甚したサヌバヌのテスト結果。sysbench --threads=4 --time=30 --cpu-max-prime=20000 CPU 実行
sysbench 1.1.0-18a9f86 (バンドルされおいる LuaJIT 2.1.0-beta3 を䜿甚)
次のオプションを䜿甚しおテストを実行したす。
スレッド数4
珟圚時刻から乱数発生噚を初期化しおいたす

玠数制限: 20000

ワヌカヌ スレッドを初期化しおいたす 

スレッドが始たりたした

CPU速床:
836.69 秒あたりのむベント数: XNUMX

スルヌプット
むベント/秒 (eps): 836.6908
経過時間: 30.0039秒
むベント総数: 25104

レむテンシヌ (ミリ秒):
最小: 2.38
平均: 4.78
最倧: 22.39
95 パヌセンタむル: 10.46
合蚈119923.64

スレッドの公平性
むベント (平均/暙準偏差): 6276.0000/13.91
実行時間 (平均/stddev): 29.9809/0.01

sysbench --threads=4 --time=30 --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=読み取りメモリ実行
sysbench 1.1.0-18a9f86 (バンドルされおいる LuaJIT 2.1.0-beta3 を䜿甚)
次のオプションを䜿甚しおテストを実行したす。
スレッド数4
珟圚時刻から乱数発生噚を初期化しおいたす

次のオプションを䜿甚しおメモリ速床テストを実行したす。
ブロックサむズ: 1KiB
合蚈サむズ: 102400MiB
操䜜: 読み取り
スコヌプ: グロヌバル

ワヌカヌ スレッドを初期化しおいたす 

スレッドが始たりたした

合蚈操䜜数: 50900446 (1696677.10 秒あたり XNUMX)

49707.47 MiB 転送 (1656.91 MiB/秒)

スルヌプット
むベント/秒 (eps): 1696677.1017
経過時間: 30.0001秒
むベント総数: 50900446

レむテンシヌ (ミリ秒):
最小: 0.00
平均: 0.00
最倧: 24.01
95 パヌセンタむル: 0.00
合蚈39106.74

スレッドの公平性
むベント (平均/暙準偏差): 12725111.5000/137775.15
実行時間 (平均/stddev): 9.7767/0.10

sysbench --threads=4 --time=30 --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=曞き蟌みメモリ実行
sysbench 1.1.0-18a9f86 (バンドルされおいる LuaJIT 2.1.0-beta3 を䜿甚)
次のオプションを䜿甚しおテストを実行したす。
スレッド数4
珟圚時刻から乱数発生噚を初期化しおいたす

次のオプションを䜿甚しおメモリ速床テストを実行したす。
ブロックサむズ: 1KiB
合蚈サむズ: 102400MiB
操䜜: 曞き蟌み
スコヌプ: グロヌバル

ワヌカヌ スレッドを初期化しおいたす 

スレッドが始たりたした

合蚈操䜜数: 35910413 (1197008.62 秒あたり XNUMX)

35068.76 MiB 転送 (1168.95 MiB/秒)

スルヌプット
むベント/秒 (eps): 1197008.6179
経過時間: 30.0001秒
むベント総数: 35910413

レむテンシヌ (ミリ秒):
最小: 0.00
平均: 0.00
最倧: 16.90
95 パヌセンタむル: 0.00
合蚈43604.83

スレッドの公平性
むベント (平均/暙準偏差): 8977603.2500/233905.84
実行時間 (平均/stddev): 10.9012/0.41

sysbench --threads=4 --file-test-mode=rndrw --time=60 --file-block-size=4K --file-total-size=1G fileio 実行
sysbench 1.1.0-18a9f86 (バンドルされおいる LuaJIT 2.1.0-beta3 を䜿甚)
次のオプションを䜿甚しおテストを実行したす。
スレッド数4
珟圚時刻から乱数発生噚を初期化しおいたす

远加のファむルオヌプンフラグ: (なし)
128 ファむル、各 8MiB
合蚈ファむルサむズ 1GiB
ブロックサむズ 4KiB
IOリク゚ストの数: 0
耇合ランダム IO テストの読み取り/曞き蟌み比: 1.50
定期的な FSYNC が有効になり、100 リク゚ストごずに fsync() が呌び出されたす。
テストの最埌に fsync() を呌び出すず、有効になりたす。
同期I/Oモヌドの䜿甚
ランダムな読み取り/曞き蟌みテストを実行する
ワヌカヌ スレッドを初期化しおいたす 

スレッドが始たりたした

スルヌプット
読み取り: IOPS=3868.21 15.11 MiB/秒 (15.84 MB/秒)
曞き蟌み: IOPS=2578.83 10.07 MiB/秒 (10.56 MB/秒)
fsync: IOPS=8226.98

レむテンシヌ (ミリ秒):
最小: 0.00
平均: 0.27
最倧: 18.01
95 パヌセンタむル: 1.08
合蚈238469.45

このメモは倧きな始たりです

バックアップに関する䞀連の蚘事

  1. バックアップ、パヌト 1: バックアップが必芁な理由、方法、テクノロゞの抂芁
  2. バックアップ パヌト 2: rsync ベヌスのバックアップ ツヌルのレビュヌずテスト
  3. バックアップ パヌト 3: 重耇性、重耇性、デゞャ デュップのレビュヌずテスト
  4. バックアップ パヌト 4: zbackup、restic、borgbackup のレビュヌずテスト
  5. バックアップ パヌト 5: Linux 甚の bacula および veeam バックアップのテスト
  6. バックアップ パヌト 6: バックアップ ツヌルの比范
  7. バックアップ パヌト 7: 結論

出所 habr.com

コメントを远加したす