الجزء الثاني من النسخ الاحتياطي: مراجعة واختبار أدوات النسخ الاحتياطي المستندة إلى rsync

الجزء الثاني من النسخ الاحتياطي: مراجعة واختبار أدوات النسخ الاحتياطي المستندة إلى rsync
تستمر هذه المذكرة

دورة النسخ الاحتياطي

  1. النسخ الاحتياطي ، الجزء 1: سبب الحاجة إلى النسخ الاحتياطي ، نظرة عامة على الأساليب والتقنيات
  2. الجزء الثاني من النسخ الاحتياطي: مراجعة واختبار أدوات النسخ الاحتياطي المستندة إلى rsync
  3. النسخ الاحتياطي الجزء 3: مراجعة واختبار الازدواجية ، الازدواجية ، ديجا دوب
  4. النسخ الاحتياطي الجزء 4: مراجعة واختبار zbackup ، restic ، borgbackup
  5. الجزء الخامس من النسخ الاحتياطي: اختبار باكولا وفايم النسخ الاحتياطي لنظام لينكس
  6. جزء النسخ الاحتياطي 6: مقارنة أدوات النسخ الاحتياطي
  7. جزء النسخ الاحتياطي 7: الاستنتاجات

كما كتبنا بالفعل في المقالة الأولى ، يوجد عدد كبير جدًا من برامج النسخ الاحتياطي القائمة على rsync.

من بين تلك الأكثر ملاءمة لظروفنا ، سأفكر في 3: rdiff-backup ، و rsnapshot ، والتجشؤ.

اختبار ملفات المجموعة

ستكون مجموعات ملفات الاختبار هي نفسها لجميع المرشحين ، بما في ذلك الأوراق المستقبلية.

المجموعة الأولى: 10 جيجا بايت من ملفات الوسائط ، وحوالي 50 ميجا بايت - الكود المصدري للموقع في php ، أحجام الملفات من بضعة كيلو بايت للكود المصدري ، إلى عشرات الميجابايت لملفات الوسائط. الهدف هو تقليد موقع بمحتوى ثابت.

المجموعة الثانية: تم الحصول عليها من أول دليل عند إعادة تسمية دليل فرعي بملفات وسائط بسعة 5 جيجابايت. الهدف هو دراسة سلوك نظام النسخ الاحتياطي عند إعادة تسمية دليل.

المجموعة الثالثة: تم الحصول عليها من الأولى عن طريق إزالة 3 جيجابايت من ملفات الوسائط وإضافة 3 جيجابايت جديدة من ملفات الوسائط. الهدف هو دراسة سلوك نظام النسخ الاحتياطي أثناء عملية تحديث الموقع النموذجية.

الحصول على النتائج

يتم إجراء أي نسخ احتياطي 3 مرات على الأقل ويكون مصحوبًا بمسح ذاكرة التخزين المؤقت لنظام الملفات باستخدام الأوامر sync и echo 3 > /proc/sys/vm/drop_caches على جانب خادم الاختبار وخادم تخزين النسخ الاحتياطي.

على الخادم الذي سيكون مصدر النسخ الاحتياطية ، يتم تثبيت برنامج مراقبة - netdata ، والذي سيتم استخدامه لتقييم الحمل على الخادم أثناء النسخ ، وهذا ضروري لتقييم الحمل على الخادم من خلال عملية النسخ الاحتياطي.

أعتقد أيضًا أن خادم تخزين النسخ الاحتياطي أبطأ من حيث المعالج من الخادم الرئيسي ، ولكنه يحتوي على أقراص أكثر اتساعًا مع سرعة كتابة عشوائية منخفضة نسبيًا - وهو الموقف الأكثر شيوعًا عند النسخ الاحتياطي ، ولكن بسبب حقيقة أن خادم النسخ الاحتياطي في طريقة جيدة يجب ألا تقوم بمهام أخرى ، باستثناء النسخ الاحتياطي ، لن أتتبع حملها باستخدام netdata.

أيضًا ، تم تغيير خوادمي ، حيث سأفحص أنظمة مختلفة للنسخ الاحتياطي.

الآن لديهم الخصائص التاليةمعالج

sysbench --threads=2 --time=30 --cpu-max-prime=20000 cpu run
sysbench 1.0.17 (using system LuaJIT 2.0.4)

Running the test with following options:
Number of threads: 2
Initializing random number generator from current time


Prime numbers limit: 20000

Initializing worker threads...

Threads started!

CPU speed:
    events per second:  1081.62

General statistics:
    total time:                          30.0013s
    total number of events:              32453

Latency (ms):
         min:                                    1.48
         avg:                                    1.85
         max:                                    9.84
         95th percentile:                        2.07
         sum:                                59973.40

Threads fairness:
    events (avg/stddev):           16226.5000/57.50
    execution time (avg/stddev):   29.9867/0.00

ذاكرة العمل ، القراءة ...

sysbench --threads=4 --time=30 --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=read memory run
sysbench 1.0.17 (using system LuaJIT 2.0.4)

Running the test with following options:
Number of threads: 4
Initializing random number generator from current time


Running memory speed test with the following options:
  block size: 1KiB
  total size: 102400MiB
  operation: read
  scope: global

Initializing worker threads...

Threads started!

Total operations: 104857600 (5837637.63 per second)

102400.00 MiB transferred (5700.82 MiB/sec)


General statistics:
    total time:                          17.9540s
    total number of events:              104857600

Latency (ms):
         min:                                    0.00
         avg:                                    0.00
         max:                                   66.08
         95th percentile:                        0.00
         sum:                                18544.64

Threads fairness:
    events (avg/stddev):           26214400.0000/0.00
    execution time (avg/stddev):   4.6362/0.12

... وتسجيل

sysbench --threads=4 --time=30 --memory-block-size=1K --memory-scope=global --memory-total-size=100G --memory-oper=write memory run
sysbench 1.0.17 (using system LuaJIT 2.0.4)

Running the test with following options:
Number of threads: 4
Initializing random number generator from current time


Running memory speed test with the following options:
  block size: 1KiB
  total size: 102400MiB
  operation: write
  scope: global

Initializing worker threads...

Threads started!

Total operations: 91414596 (3046752.56 per second)

89272.07 MiB transferred (2975.34 MiB/sec)


General statistics:
    total time:                          30.0019s
    total number of events:              91414596

Latency (ms):
         min:                                    0.00
         avg:                                    0.00
         max:                                 1022.90
         95th percentile:                        0.00
         sum:                                66430.91

Threads fairness:
    events (avg/stddev):           22853649.0000/945488.53
    execution time (avg/stddev):   16.6077/1.76

قرص على خادم مصدر البيانات

sysbench --threads=4 --file-test-mode=rndrw --time=60 --file-block-size=4K --file-total-size=1G fileio run
sysbench 1.0.17 (using system LuaJIT 2.0.4)

Running the test with following options:
Number of threads: 4
Initializing random number generator from current time


Extra file open flags: (none)
128 files, 8MiB each
1GiB total file size
Block size 4KiB
Number of IO requests: 0
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Initializing worker threads...

Threads started!


File operations:
    reads/s:                      4587.95
    writes/s:                     3058.66
    fsyncs/s:                     9795.73

Throughput:
    read, MiB/s:                  17.92
    written, MiB/s:               11.95

General statistics:
    total time:                          60.0241s
    total number of events:              1046492

Latency (ms):
         min:                                    0.00
         avg:                                    0.23
         max:                                   14.45
         95th percentile:                        0.94
         sum:                               238629.34

Threads fairness:
    events (avg/stddev):           261623.0000/1849.14
    execution time (avg/stddev):   59.6573/0.00

قرص على خادم تخزين النسخ الاحتياطي

sysbench --threads=4 --file-test-mode=rndrw --time=60 --file-block-size=4K --file-total-size=1G fileio run
sysbench 1.0.17 (using system LuaJIT 2.0.4)

Running the test with following options:
Number of threads: 4
Initializing random number generator from current time


Extra file open flags: (none)
128 files, 8MiB each
1GiB total file size
Block size 4KiB
Number of IO requests: 0
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Initializing worker threads...

Threads started!


File operations:
    reads/s:                      11.37
    writes/s:                     7.58
    fsyncs/s:                     29.99

Throughput:
    read, MiB/s:                  0.04
    written, MiB/s:               0.03

General statistics:
    total time:                          73.8868s
    total number of events:              3104

Latency (ms):
         min:                                    0.00
         avg:                                   78.57
         max:                                 3840.90
         95th percentile:                      297.92
         sum:                               243886.02

Threads fairness:
    events (avg/stddev):           776.0000/133.26
    execution time (avg/stddev):   60.9715/1.59

سرعة الشبكة بين الخوادم

iperf3 -c backup
Connecting to host backup, port 5201
[  4] local x.x.x.x port 59402 connected to y.y.y.y port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec   419 MBytes  3.52 Gbits/sec  810    182 KBytes
[  4]   1.00-2.00   sec   393 MBytes  3.30 Gbits/sec  810    228 KBytes
[  4]   2.00-3.00   sec   378 MBytes  3.17 Gbits/sec  810    197 KBytes
[  4]   3.00-4.00   sec   380 MBytes  3.19 Gbits/sec  855    198 KBytes
[  4]   4.00-5.00   sec   375 MBytes  3.15 Gbits/sec  810    182 KBytes
[  4]   5.00-6.00   sec   379 MBytes  3.17 Gbits/sec  765    228 KBytes
[  4]   6.00-7.00   sec   376 MBytes  3.15 Gbits/sec  810    180 KBytes
[  4]   7.00-8.00   sec   379 MBytes  3.18 Gbits/sec  765    253 KBytes
[  4]   8.00-9.00   sec   380 MBytes  3.19 Gbits/sec  810    239 KBytes
[  4]   9.00-10.00  sec   411 MBytes  3.44 Gbits/sec  855    184 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  3.78 GBytes  3.25 Gbits/sec  8100             sender
[  4]   0.00-10.00  sec  3.78 GBytes  3.25 Gbits/sec                  receiver

منهجية الاختبار

  1. يتم إعداد نظام الملفات مع مجموعة الاختبار الأولى على خادم الاختبار ، ويتم تهيئة المستودع على خادم تخزين النسخ الاحتياطي ، إذا لزم الأمر.
    تبدأ عملية النسخ الاحتياطي ويتم قياس وقتها.
  2. يتم ترحيل الملفات إلى مجموعة الاختبار الثانية على خادم الاختبار. تبدأ عملية النسخ الاحتياطي ويتم قياس وقتها.
  3. يجري ترحيل خادم الاختبار إلى مجموعة الاختبار الثالثة. تبدأ عملية النسخ الاحتياطي ويتم قياس وقتها.
  4. تم قبول حالة الاختبار الثالثة المستلمة باعتبارها الأولى الجديدة ؛ تتكرر الخطوات 1-3 مرتين أخريين.
  5. يتم إدخال البيانات في جدول محوري ، ويتم إضافة الرسوم البيانية من البيانات الصافية.
  6. يتم إنشاء تقرير لطريقة نسخ احتياطي معينة.

نتائج متوقعة

نظرًا لأن جميع المرشحين الثلاثة يعتمدون على نفس التكنولوجيا (rsync) ، فمن المتوقع أن تكون النتائج قريبة من rsync العادي ، بما في ذلك جميع مزاياها ، وهي:

  1. سيتم الاحتفاظ بالملفات الموجودة في المستودع "كما هي".
  2. سيزداد حجم المستودع فقط بما في ذلك الفرق بين النسخ الاحتياطية.
  3. سيكون هناك حمل كبير نسبيًا على الشبكة أثناء نقل البيانات ، بالإضافة إلى حمل صغير على المعالج.

سيتم استخدام اختبار تشغيل rsync العادي كمعيار ، نتائجها

هؤلاء همالجزء الثاني من النسخ الاحتياطي: مراجعة واختبار أدوات النسخ الاحتياطي المستندة إلى rsync

كان الاختناق في خادم التخزين الاحتياطي في شكل قرص مستند إلى محرك الأقراص الثابتة ، والذي يمكن رؤيته بوضوح في الرسوم البيانية على شكل المنشار.

تم نسخ البيانات في 4 دقائق و 15 ثانية.

اختبار النسخ الاحتياطي rdiff

المرشح الأول هو rdiff-backup ، وهو برنامج نصي بيثون يقوم بعمل نسخة احتياطية من دليل إلى آخر. في هذه الحالة ، يتم تخزين النسخة الاحتياطية الحالية "كما هي" ، ويتم إضافة النسخ الاحتياطية التي تم إجراؤها مسبقًا بشكل متزايد إلى دليل فرعي خاص ، وبالتالي يتم حفظ المساحة.

سوف نتحقق من الوضع النموذجي للتشغيل ، أي يبدأ العميل عملية النسخ الاحتياطي من تلقاء نفسه ، وعلى جانب الخادم للنسخ الاحتياطي ، يتم إطلاق عملية تتلقى البيانات.

دعنا نلقي نظرة ، ما هو قادر عليه في ظروفنا.

الجزء الثاني من النسخ الاحتياطي: مراجعة واختبار أدوات النسخ الاحتياطي المستندة إلى rsync

وقت تشغيل كل تشغيل اختباري:

البداية الأولى
الشوط الثاني
الإطلاق الثالث

المجموعة الأولى
16m32s
16m26s
16m19s

المجموعة الثانية
2h5m
2h10m
2h8m

المجموعة الثالثة
2h9m
2h10m
2h10m

يتفاعل Rdiff-backup بشكل مؤلم للغاية مع أي تغيير كبير في البيانات ، كما أنه لا يستخدم الشبكة بشكل كامل.

rsnapshot اختبار

المرشح الثاني ، rsnapshot ، هو برنامج نصي بيرل الذي يعتبر دعم الروابط الصلبة مطلبه الرئيسي للتشغيل الفعال. هذا يوفر مساحة على القرص. في هذه الحالة ، ستشير الملفات التي لم تتغير منذ النسخ الاحتياطي السابق إلى الملف الأصلي باستخدام الروابط الثابتة.

ينعكس منطق عملية النسخ الاحتياطي أيضًا: "يتجول" الخادم بنشاط حول عملائه ويجمع البيانات.

نتائج الإختبار

تبين ما يليالجزء الثاني من النسخ الاحتياطي: مراجعة واختبار أدوات النسخ الاحتياطي المستندة إلى rsync

البداية الأولى
الشوط الثاني
الإطلاق الثالث

المجموعة الأولى
4m22s
4m19s
4m16s

المجموعة الثانية
2m6s
2m10s
2m6s

المجموعة الثالثة
1m18s
1m10s
1m10s

عملت بسرعة كبيرة جدًا وأسرع بكثير من النسخ الاحتياطي rdiff وقريبة جدًا من rsync النقي.

اختبار التجشؤ

هناك خيار آخر وهو تنفيذ لغة C أعلى librsync - burp ، به بنية خادم عميل بما في ذلك ترخيص العميل ، بالإضافة إلى واجهة ويب (غير مضمنة في الحزمة الأساسية). ميزة أخرى مثيرة للاهتمام هي النسخ الاحتياطي غير الاسترداد للعملاء.

دعونا نلقي نظرة علىإنتاجية.

الجزء الثاني من النسخ الاحتياطي: مراجعة واختبار أدوات النسخ الاحتياطي المستندة إلى rsync

البداية الأولى
الشوط الثاني
الإطلاق الثالث

المجموعة الأولى
11m21s
11m10s
10m56s

المجموعة الثانية
5m37s
5m40s
5m35s

المجموعة الثالثة
3m33s
3m24s
3m40s

عملت مرتين أبطأ من rsnapshot ، ولكن أيضًا بسرعة كافية ، وبالتأكيد أسرع من rdiff-backup. الرسوم البيانية عبارة عن مسننة صغيرة - يعتمد الأداء مرة أخرى على النظام الفرعي للقرص لخادم تخزين النسخ الاحتياطي ، على الرغم من أن هذا ليس واضحًا كما هو الحال مع rsnapshot.

النتائج

كان حجم المستودعات لجميع المرشحين متماثلًا تقريبًا ، أي النمو الأول إلى 10 غيغابايت ، ثم النمو إلى 15 غيغابايت ، ثم النمو إلى 18 غيغابايت ، وما إلى ذلك ، ويرجع ذلك إلى خصوصية rsync. وتجدر الإشارة أيضًا إلى أن جميع المرشحين أحادي الخيط (حمل المعالج حوالي 50٪ على جهاز ثنائي النواة). قدم جميع المرشحين الثلاثة القدرة على استعادة آخر نسخة احتياطية "كما هي" ، أي أنه كان من الممكن استعادة الملفات دون استخدام أي برامج تابعة لجهات خارجية ، بما في ذلك تلك المستخدمة لإنشاء المستودعات. هذا هو أيضًا "إرث الأجداد" لـ rsync.

النتائج

كلما كان نظام النسخ الاحتياطي أكثر تعقيدًا وخياراته المختلفة ، كان يعمل بشكل أبطأ ، ولكن بالنسبة للمشاريع التي لا تتطلب الكثير من المتطلبات ، فإن أيًا منها ، باستثناء ربما rdiff-backup ، سيفي بالغرض.

إعلان

تستمر هذه المذكرة في دورة النسخ الاحتياطي

النسخ الاحتياطي ، الجزء 1: سبب الحاجة إلى النسخ الاحتياطي ، نظرة عامة على الأساليب والتقنيات
الجزء الثاني من النسخ الاحتياطي: مراجعة واختبار أدوات النسخ الاحتياطي المستندة إلى rsync
النسخ الاحتياطي الجزء 3: مراجعة واختبار الازدواجية ، الازدواجية ، ديجا دوب
النسخ الاحتياطي الجزء 4: مراجعة واختبار zbackup ، restic ، borgbackup
الجزء الخامس من النسخ الاحتياطي: اختبار باكولا وفايم النسخ الاحتياطي لنظام لينكس
جزء النسخ الاحتياطي 6: مقارنة أدوات النسخ الاحتياطي
جزء النسخ الاحتياطي 7: الاستنتاجات

مؤلف النشر: بافل ديمكوفيتش

المصدر: www.habr.com

إضافة تعليق