العودة إلى المدونة

إدارة التخزين مع لقطات دورية تلقائية

إدارة التخزين مع لقطات دورية تلقائية

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

بفضل ZFS، لن تستهلك اللقطات التلقائية سوى الفارق بين الحالة الحالية ومكان أخذ اللقطة. هذا يعني أنه إذا كان محرك الأقراص الأصلي بحجم 15 جيجابايت وتغير 1 ميجابايت فقط من البيانات بين اللقطة والحالة الحالية، فسيكون حجم اللقطة 1 ميجابايت. إذا كتبت ميجابايت آخر على القرص، فستكبر اللقطة بمقدار ميجابايت آخر.

جمال آخر في هذا النظام هو أنه يمكن ترقية (استنساخ) أي لقطة إلى محرك أقراص كامل. هذا يعني أنه يمكنك إنشاء نسخة مستقلة يمكن تركيبها على خادم، وربما على نظام تخزين مختلف تمامًا. على هذا النحو، يشكل هذا الأساس لاستراتيجية إدارة التخزين (اعتمادًا على عبء العمل لديك).

كلمة تحذير

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

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

إنشاء لقطات تلقائية

باستخدام مكتبة Python، فإن أتمتة اللقطات أمر بسيط حقًا. ومع ذلك، نظرًا لأننا بحاجة إلى تخزين CloudSigma بيانات الاعتماد على النظام الذي يقوم بتشغيل اللقطات، فإننا ننصحك بشدة بعدم الكشف عن بيانات اعتماد خدمة الإنتاج بشكل غير آمن. إذا كنت تريد تشغيل هذا على خادم سحابي على سبيل المثال، فيرجى التأكد من أنه محمي عن بقية البنية التحتية (مثل استخدام ميزة سياسات الشبكة لدينا) وأنه مغلق تمامًا.

بعد تثبيت مكتبة Python، يمكنك تنزيل البرنامج النصي وتشغيله على النحو التالي:

[bash light=”true”] $ wget https://raw.githubusercontent.com/cloudsigma/pycloudsigma/master/samples/snapshot.py
$ python snapshot.py drive-uuid my-snapshot
[/bash]

snapshot.py يأخذ وسيطتين:

  • معرف UUID لمحرك الأقراص الذي تريد أخذ لقطة له
  • اسم مألوف للقطة

بعد إنشاء لقطة يدويًا والتحقق من أنها تعمل (يمكنك رؤية ذلك ضمن قسم ‘snapshot’ في محرك الأقراص)، يمكننا الآن أتمتة ذلك.

الطريقة الأكثر ملاءمة ومعيارية لتشغيل مهمة كهذه هي عبر crontab (بافتراض أنك تستخدم نظام التشغيل Linux أو Mac OS X).

باستخدام نفس المستخدم الذي أنشأت به اللقطة أعلاه، قم بتشغيل:
[bash light=”true”] $ crontab -e
[/bash]

إذا كنت تريد أخذ لقطة كل ليلة في الساعة 1 صباحًا، فأضف السطر التالي:

ستلاحظ أيضًا أن البرنامج النصي سيقوم بالتسجيل في ملف باسم snapshot.log في الدليل الرئيسي للمستخدم الذي يقوم بتشغيل البرنامج النصي.

تطهير اللقطات تلقائيًا

نظرًا لأن حجم اللقطات يزداد بمرور الوقت، فمن المحتمل أن ترغب في حذف هذه اللقطات بعد فترة. لحل هذه المشكلة، قمنا بإنشاء برنامج نصي آخر يمكنه القيام بذلك نيابة عنك. يسمى البرنامج النصي snapshot_purge.py ويأخذ وسيطتين:

  • معرف UUID لمحرك الأقراص
  • عدد الأيام التي ترغب في الاحتفاظ بلقطاتها

على سبيل المثال، إذا كنت تريد الاحتفاظ بلقطات تعود لـ 30 يومًا، يمكنك ببساطة تشغيل:
[bash light=”true”] $ wget https://raw.githubusercontent.com/cloudsigma/pycloudsigma/master/samples/snapshot_purge.py
$ python snapshot_purge.py drive-uuid 30
[/bash]

يمكنك بالطبع أتمتة هذا أيضًا. على سبيل المثال، إذا أردنا تطهير اللقطات الأقدم من 30 يومًا، فيمكننا إضافة ما يلي إلى crontab الخاص بنا (والذي سيعمل في الساعة 1:30 صباحًا):

الخاتمة

هذا كل شيء يا رفاق. باستخدام هذين البرنامجين النصيين، ستتمكن من أتمتة لقطات محرك الأقراص لديك. إذا كنت بحاجة إلى أخذ لقطات لمحركات أقراص متعددة، فما عليك سوى إضافة المزيد من أسطر snapshot.py إلى crontab الخاص بك باستخدام معرفات UUID مختلفة.

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

إذا كانت لديك احتياجات أكثر تعقيدًا للاحتفاظ بالبيانات، فنأمل أن تتمكن من إعادة استخدام بعض الأكواد البرمجية في البرامج النصية أعلاه.

author

Viktor Petersson

المؤلف · CloudSigma

Preslav Dobrev هو مصمم إبداعي في CloudSigma، يركز على هوية أعمال متسقة باستخدام قنوات التسويق التقليدية والمبتكرة. هو بارع في دمج الرؤية الفنية مع التسويق الاستراتيجي لخلق سرد قصصي مؤثر للعلامة التجارية.

التعليقات

لا توجد تعليقات بعد. كن أول من يعلق.