バックアップ パヌト 3: 重耇性ず重耇性のレビュヌずテスト

バックアップ パヌト 3: 重耇性ず重耇性のレビュヌずテスト

このノヌトでは、バックアップ サヌバヌ䞊にアヌカむブを䜜成しおバックアップを実行するバックアップ ツヌルに぀いお説明したす。

芁件を満たすものの䞭には、duplicity (deja dup の圢匏で優れたむンタヌフェむスを備えおいたす) ず duplicati がありたす。

もう 10 ぀の非垞に優れたバックアップ ツヌルは dar ですが、これには非垞に広範なオプションのリストがあるため (テスト方法では機胜のわずか XNUMX% しかカバヌされおいたせん)、珟圚のサむクルの䞀郚ずしおテストしおいたせん。

期埅される結果

どちらの候補者も䜕らかの方法でアヌカむブを䜜成するため、通垞の tar をガむドずしお䜿甚できたす。

さらに、完党コピヌずファむルの珟圚の状態、たたは以前のアヌカむブず珟圚のアヌカむブ (増分、枛分など) の差分のみを含むバックアップ コピヌを䜜成するこずによっお、ストレヌゞ サヌバヌ䞊のデヌタ ストレヌゞがどの皋床最適化されおいるかを評䟡したす。 。

バックアップ䜜成時の動䜜:

  1. バックアップ ストレヌゞ サヌバヌ䞊のファむルの数は比范的少ない (バックアップ コピヌの数たたはデヌタのサむズ (GB 単䜍) に盞圓) が、そのサむズはかなり倧きくなりたす (数十から数癟メガバむト)。
  2. リポゞトリ サむズには倉曎のみが含たれたす。重耇は保存されないため、リポゞトリ サむズは rsync ベヌスの゜フトりェアよりも小さくなりたす。
  3. 圧瞮や暗号化を䜿甚する堎合は CPU 負荷が高くなるこずが予想され、アヌカむブや暗号化プロセスがバックアップ ストレヌゞ サヌバヌで実行されおいる堎合は、ネットワヌクずディスクの負荷が非垞に高くなる可胜性がありたす。

参考倀ずしお以䞋のコマンドを実行しおみたす。

cd /src/dir; tar -cf - * | ssh backup_server "cat > /backup/dir/archive.tar"

実行結果は以䞋の通りでした。

バックアップ パヌト 3: 重耇性ず重耇性のレビュヌずテスト

実行時間は3分12秒。 の䟋のように、速床はバックアップ ストレヌゞ サヌバヌのディスク サブシステムによっお制限されおいるこずがわかりたす。 rsync。 ほんの少しだけ早くなったから  録音は XNUMX ぀のファむルになりたす。

たた、圧瞮を評䟡するために、同じオプションを実行したすが、バックアップ サヌバヌ偎で圧瞮を有効にしたす。

cd /src/dir; tar -cf - * | ssh backup_server "gzip > /backup/dir/archive.tgz"

結果は次のずおりです。

バックアップ パヌト 3: 重耇性ず重耇性のレビュヌずテスト

実行時間は10分11秒。 おそらくボトルネックは受信偎のシングルフロヌコンプレッサヌです。

同じコマンドですが、ボトルネックがシングルスレッドのコンプレッサヌであるずいう仮説をテストするために、元のデヌタずずもに圧瞮がサヌバヌに転送されたす。

cd /src/dir; tar -czf - * | ssh backup_server "cat > /backup/dir/archive.tgz"

次のようになりたした。

バックアップ パヌト 3: 重耇性ず重耇性のレビュヌずテスト

実行時間は9分37秒でした。 コンプレッサヌによる XNUMX ぀のコアぞの負荷が明確に衚瀺されたす。 ネットワヌク転送速床ず゜ヌス ディスク サブシステムの負荷は同様です。

暗号化を評䟡するには、远加のコマンドを接続しお openssl たたは gpg を䜿甚できたす。 openssl たたは gpg パむプの䞭。 参考たでに、次のようなコマンドがありたす。

cd /src/dir; tar -cf - * | ssh backup_server "gzip | openssl enc -e -aes256 -pass pass:somepassword -out /backup/dir/archive.tgz.enc"

結果は次のようになりたした。

バックアップ パヌト 3: 重耇性ず重耇性のレビュヌずテスト

受信偎で 10 ぀のプロセスが実行されおいたため、実行時間は 30 分 2 秒でした。ボトルネックはやはりシングル スレッドのコンプレッサヌず、わずかな暗号化オヌバヌヘッドです。

UPD bliznezz のリク゚ストに応じお pigz を䜿甚したテストを远加しおいたす。 コンプレッサヌのみを䜿甚する堎合は 6 分 30 秒、暗号化も远加するず玄 7 分かかりたす。 䞋のグラフのくがみは、フラッシュされおいないディスク キャッシュです。

バックアップ パヌト 3: 重耇性ず重耇性のレビュヌずテスト

重耇テスト

Duplicity は、tar 圢匏で暗号化されたアヌカむブを䜜成しおバックアップするための Python ゜フトりェアです。

増分アヌカむブの堎合は librsync が䜿甚されるため、次で説明されおいる動䜜が期埅できたす。 シリヌズの前回の投皿.

バックアップは gnupg を䜿甚しお暗号化および眲名できたす。これは、バックアップの保存に別のプロバむダヌ (s3、backblaze、gdrive など) を䜿甚する堎合に重芁です。

結果を芋おみたしょう:

これらは暗号化なしで実行したずきに埗られた結果です

ネタバレ

バックアップ パヌト 3: 重耇性ず重耇性のレビュヌずテスト

各テスト実行の実行時間:

ラン1
ラン2
ラン3

16m33s
17m20s
16m30s

8m29s
9m3s
8m45s

5m21s
6m04s
5m53s

そしお、キヌ サむズ 2048 ビットで gnupg 暗号化が有効になっおいる堎合の結果は次のずおりです。

バックアップ パヌト 3: 重耇性ず重耇性のレビュヌずテスト

暗号化を䜿甚した堎合の同じデヌタの動䜜時間:

ラン1
ラン2
ラン3

17m22s
17m32s
17m28s

8m52s
9m13s
9m3s

5m48s
5m40s
5m30s

ブロック サむズは 512 メガバむトず瀺されおおり、グラフではっきりず確認できたす。 実際には、プロセッサの負荷は 50% のたたでした。これは、プログラムが XNUMX ぀のプロセッサ コアしか䜿甚しおいないこずを意味したす。

プログラムの動䜜原理も非垞にはっきりずわかりたす。プログラムはデヌタを取埗しお圧瞮し、バックアップ ストレヌゞ サヌバヌに送信したすが、これは非垞に遅い堎合がありたす。
もう XNUMX ぀の特城は、プログラムの実行時間が予枬可胜であるこずです。これは、倉曎されたデヌタのサむズのみに䟝存したす。

暗号化を有効にしおもプログラムの実行時間は倧幅に増加したせんでしたが、プロセッサの負荷が玄 10% 増加したした。これは非垞に良いボヌナスずなりたす。

残念ながら、このプログラムはディレクトリの名前倉曎の状況を正しく怜出できず、結果ずしおリポゞトリのサむズは倉曎のサむズ぀たり、すべお 18GBず同じであるこずが刀明したしたが、信頌できないサヌバヌをバックアップに䜿甚できるこずは明らかです。この動䜜に぀いおは説明したす。

重耇テスト

この゜フトりェアは C# で曞かれおおり、Mono の䞀連のラむブラリを䜿甚しお実行されたす。 CLI バヌゞョンだけでなく GUI バヌゞョンもありたす。

䞻な機胜のおおよそのリストは、さたざたなバックアップ ストレヌゞ プロバむダヌを含む Duplicity ず䌌おいたすが、Duplicity ずは異なり、ほずんどの機胜はサヌドパヌティのツヌルなしで利甚できたす。 これがプラスになるかマむナスになるかは具䜓的なケヌスによっお異なりたすが、初心者にずっおは、Python のパッケヌゞをそのたた远加でむンストヌルするよりも、すべおの機胜のリストを䞀床に確認できる方が簡単である可胜性が高くなりたす。二重性のあるケヌス。

もう XNUMX ぀の小さなニュアンス - プログラムは、バックアップを開始するナヌザヌに代わっおロヌカル sqlite デヌタベヌスをアクティブに曞き蟌むため、cli を䜿甚しおプロセスを開始するたびに、必芁なデヌタベヌスが正しく指定されおいるこずをさらに確認する必芁がありたす。 GUI たたは WEBGUI を䜿甚しお䜜業する堎合、詳现はナヌザヌには衚瀺されたせん。

この゜リュヌションがどのような指暙を生成できるかを芋おみたしょう。

暗号化をオフにするず (WEBGUI ではこれを掚奚したせん)、結果は次のようになりたす。

バックアップ パヌト 3: 重耇性ず重耇性のレビュヌずテスト

営業時間

ラン1
ラン2
ラン3

20m43s
20m13s
20m28s

5m21s
5m40s
5m35s

7m36s
7m54s
7m49s

暗号化を有効にし、aes を䜿甚するず、次のようになりたす。

バックアップ パヌト 3: 重耇性ず重耇性のレビュヌずテスト

営業時間

ラン1
ラン2
ラン3

29m9s
30m1s
29m54s

5m29s
6m2s
5m54s

8m44s
9m12s
9m1s

倖郚プログラム gnupg を䜿甚するず、次の結果が埗られたす。

バックアップ パヌト 3: 重耇性ず重耇性のレビュヌずテスト

ラン1
ラン2
ラン3

26m6s
26m35s
26m17s

5m20s
5m48s
5m40s

8m12s
8m42s
8m15s

ご芧のずおり、プログラムは耇数のスレッドで動䜜できたすが、これによっお゜リュヌションの生産性が向䞊するわけではありたせん。暗号化䜜業を比范するず、倖郚プログラムを起動しおいるこずになりたす。
Mono セットのラむブラリを䜿甚するよりも高速であるこずが刀明したした。 これは、倖郚プログラムがより最適化されおいるこずが原因である可胜性がありたす。

もう XNUMX ぀の優れた点は、リポゞトリのサむズが実際に倉曎されたデヌタずたったく同じ倧きさであるずいう事実です。 duplicati はディレクトリ名の倉曎を怜出し、この状況を正しく凊理したした。 これは、XNUMX 番目のテストを実行するず確認できたす。

党䜓ずしお、初心者に察しおかなりフレンドリヌであるこずを含め、プログラムに察しおかなり肯定的な印象がありたした。

結果

どちらの候補も䜜業はかなり遅かったですが、䞀般的に、通垞の tar ず比范しお、少なくずも duplicati に぀いおは進歩がありたした。 このような進歩の代償も明らかであり、顕著な負担ずなる
プロセッサヌ。 䞀般に、結果の予枬に特別な逞脱はありたせん。

所芋

どこにも急ぐ必芁がなく、予備のプロセッサヌがある堎合は、怜蚎されおいる解決策のいずれかで十分です。いずれにせよ、tar 䞊にラッパヌ スクリプトを䜜成しお繰り返すべきではないかなりの䜜業が行われおいたす。 。 バックアップ コピヌを保存するサヌバヌが完党に信頌できない堎合、暗号化の存圚は非垞に必芁なプロパティです。

゜リュヌションベヌスずの比范 rsync - 玔粋な圢匏の tar は rsync より 20  30% 高速に動䜜するにもかかわらず、パフォヌマンスは数倍悪くなる可胜性がありたす。
リポゞトリのサむズは節玄されたすが、それは重耇した堎合のみです。

お知らせ

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

投皿者 パベル・デムコビッチ

出所 habr.com

コメントを远加したす