التخزين المستمر: الذاكرة طويلة المدى في عصر الحاويات

نشرت: 2023-04-17

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

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

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

تتعمق هذه المقالة في التخزين المستمر من خلال استكشاف أنواعها وبنيتها وحالات استخدامها. كما يوفر عرضًا عمليًا يوضح الفرق بين تخزين وحدة التخزين وتخزين الحجم الثابت في Docker.

أنواع التخزين الدائم

هناك عدة أنواع من التخزين غير المتطاير ، بما في ذلك الأقراص الدوارة التقليدية (محركات الأقراص الثابتة أو محركات الأقراص الثابتة) ومحركات الأقراص ذات الحالة الصلبة (SSD) والتخزين المتصل بالشبكة (NAS) وشبكات منطقة التخزين (SAN).

  • محركات الأقراص الصلبة هي أجهزة تخزين بيانات كهروميكانيكية تقوم بتخزين واسترداد البيانات الرقمية باستخدام أقراص دوارة للوسائط المغناطيسية. تستخدم الأقراص رؤوسًا مغناطيسية على ذراع مشغل متحرك لقراءة البيانات وكتابتها.
  • تستخدم محركات الأقراص ذات الحالة الثابتة ، التي تسمى أحيانًا أجهزة تخزين أشباه الموصلات ، أو أجهزة الحالة الصلبة ، أو أقراص الحالة الصلبة ، تجميعات الدوائر المتكاملة لتخزين البيانات باستمرار ، وعادةً ما تستخدم أجهزة فلاش متصلة لا تحتوي على أجزاء متحركة. طبيعتها الثابتة تجعلها أسرع وأكثر موثوقية من محركات الأقراص الصلبة.
  • التخزين المتصل بالشبكة عبارة عن مجموعة من محركات الأقراص الثابتة أو محركات أقراص الحالة الصلبة أو كليهما ، متصلة عبر شبكة محلية باستخدام نظام ملفات مثل نظام ملفات التكنولوجيا الجديدة (NTFS) أو نظام الملفات الممتد الرابع (EXT4).
  • شبكات SAN هي أجهزة تخزين ذات سرعة عالية ومتصلة بالشبكة ، مثل مكتبات الأشرطة أو صفيفات الأقراص. يبدو اتصالهم بنظام التشغيل كتخزين محلي ولا يمكن الوصول إليه من خلال شبكة المنطقة المحلية (LAN).
حافظ على أمان بياناتك أثناء عمليات الإغلاق وإعادة التشغيل مع التخزين الدائم! إليك كيفية النقر للتغريد

هندسة التخزين الثابتة

هناك ثلاث طرق للتخزين المستمر ، ولكل منها حالات استخدام فريدة وقيود.

بنية الكائن الثابتة

يستخدم نهج البنية الثابتة للكائن رسم الخرائط العلائقية للكائن (ORM) لتخزين البيانات ككائنات في قاعدة بيانات علائقية أو قاعدة بيانات ذات قيمة مفتاح. يكون هذا الأسلوب مفيدًا عندما لا تحتوي البيانات على مخطط محدد ، حيث يتولى ORM تخزينها واسترجاعها.

منع العمارة المستمرة

تستخدم البنية الثابتة للحظر أجهزة تخزين على مستوى الكتلة ، والتي تكون مفيدة عند تخزين الملفات الكبيرة. هذا الأسلوب مفيد عند تخزين كميات كبيرة من البيانات ، حيث يمكنك استخدام كتل متعددة لزيادة سعة التخزين.

الهندسة المعمارية الثابتة Filestore

كما يوحي الاسم ، يستخدم نهج البنية الثابتة لملف الملف نظام ملفات لتخزين البيانات. تتضمن إحدى الطرق استخدام خوادم قواعد البيانات ، والتي توفر طريقة مركزية لتخزين البيانات. تستخدم حلول الاستضافة السحابية مثل Kinsta خوادم قواعد البيانات التي يمكن ربطها بسهولة بالتطبيقات وتوفر الثبات.

تعد بنية Filestore المستمرة مفيدة في التطبيقات التي تتطلب استردادًا متكررًا للملفات وعندما تحتاج إلى واجهة لإدارتها.

حالات استخدام التخزين المستمر

يناقش هذا القسم بعض حالات الاستخدام لكل نوع تخزين.

التخزين الثابت للكائن

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

منع التخزين الدائم

  • الحوسبة عالية الأداء (HPC) : بيئات HPC معالجة سريعة وفعالة لأحجام كبيرة من البيانات. يسمح التخزين الدائم للكتل لمجموعات HPC بتخزين واسترداد مجموعات البيانات الكبيرة ، مثل المحاكاة العلمية ونمذجة الطقس والتحليل المالي. غالبًا ما يُفضل التخزين الكتلي لـ HPC لأنه يوفر وصولاً عالي الأداء وزمن انتقال منخفض للبيانات ، ويسمح بعمليات الإدخال / الإخراج المتوازية (I / O) ، والتي يمكن أن تحسن أوقات المعالجة بشكل كبير.
  • تحرير الفيديو: تتطلب تطبيقات تحرير الفيديو وصولاً عالي الأداء وزمن وصول منخفض إلى ملفات الفيديو الكبيرة. يجب أن تستوعب أيضًا عددًا كبيرًا من عمليات الإدخال / الإخراج في الثانية وزمن انتقال منخفض لعرض ملفات الفيديو وتحريرها في الوقت الفعلي. يوفر التخزين الكتلي هذه الإمكانات ، مما يجعله حلاً مثاليًا لعمليات سير عمل تحرير الفيديو.
  • الألعاب: تتطلب تطبيقات الألعاب أيضًا أداءً عاليًا وزمن انتقال منخفضًا للوصول إلى أصول اللعبة وبيانات المشغل. يخزن التخزين الكتلي ويسترد كميات كبيرة من البيانات بسرعة ، مما يضمن تحميل بيئات اللعبة على الفور واستجابتها أثناء اللعب.

التخزين الثابت Filestore

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

التخزين الدائم في حاويات

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

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

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

الحجم مقابل الحجم الثابت

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

يعد تخزين وحدة التخزين الثابتة أو حوامل الربط طريقة لتخزين البيانات خارج نظام ملفات الحاوية. بهذه الطريقة ، لا تُفقد البيانات حتى عند حذف الحاوية. يظل ثابتًا حتى يتم حذفه يدويًا.

يوضح القسم التالي كلا نوعي الحجم مع أمثلة.

العرض التوضيحي للتخزين الدائم للحاوية

لقد أنشأنا تطبيق ويب صغيرًا لإظهار التخزين الدائم باستخدام حاويات Docker. يمكنك المتابعة عن طريق تثبيت Docker والحصول على الكود من مستودع GitHub هذا.

التطبيق عبارة عن نموذج أولي يحتوي على حقلين لإدخال المستخدم:

  • عنوان
  • نص الوثيقة
لقطة الشاشة: واجهة رسومية لنموذج ملاحظات التطبيق التجريبي.
واجهة المستخدم الرسومية للتطبيق التجريبي مع حقلي العنوان ونص المستند .

بمجرد حفظ إدخال المستخدم ، يمكنك الوصول إليه عن طريق فتح الملف في دليل الملاحظات بالاسم الوارد في حقل العنوان . الإدخال من حقل نص المستند هو محتوى الملف.

كيفية استخدام سعة التخزين

بمجرد تثبيت التطبيق على جهازك الخاص ، يمكنه استخدام تخزين وحدة التخزين كما هو موضح في Dockerfile .

لقطة الشاشة: محتويات ملف Docker ، بما في ذلك سمة VOLUME.
Dockerfile يوضح استخدام مساحة التخزين.

الآن ، تقوم ببناء الصورة وتشغيل الحاوية. للقيام بذلك ، قم بتنفيذ الأوامر التالية.

 docker build -t feedback-node:volumes . docker run -d -p 3000:80 --name feedback-app feedback-node:volumes
لقطة الشاشة: تعرض نافذة Terminal نتائج أمر docker build مع تخزين وحدة التخزين.
بناء التطبيق مع تخزين وحدة التخزين.
لقطة الشاشة: نافذة المحطة الطرفية بعد تنفيذ أمر docker run مع وحدة التخزين.
يُظهر تشغيل الحاوية أنها تدير مساحة تخزين.

بمجرد تشغيل التطبيق ، انتقل إلى localhost: 3000 لإرسال التعليقات.

لقطة الشاشة: إرسال الملاحظات عبر الواجهة الرسومية للتطبيق التجريبي.
تقديم التغذية الراجعة للتطبيق.

انقر فوق حفظ وانتقل إلى المضيف المحلي: 3000 / feedback / test.txt لمعرفة ما إذا تم تخزين الإدخال بنجاح أم لا.

لقطة الشاشة: متصفح مفتوح مع ملف test.txt المقدم.
تم تأكيد ردود الفعل الناجحة.

قم بإزالة الحاوية وإعادة تشغيلها لمعرفة ما إذا كان الإدخال مستمرًا.

 docker stop feedback-app docker start feedback-app

إذا قمت الآن بزيارة نفس عنوان URL ، فسترى أن التعليقات لا تزال موجودة. ولكن ماذا يحدث إذا قمت بإزالة الحاوية وإعادة تشغيلها؟

 docker stop feedback-app docker rm feedback-app docker run -d -p 3000:80 --name feedback-app feedback-node:volumes

بمجرد إعادة التشغيل ، إذا عدت إلى عنوان URL هذا ، فإنه لم يعد موجودًا لأن البيانات فقدت عند إزالة الحاوية. تستمر بيانات الحجم فقط عند إيقاف الحاوية ، وليس عند إزالتها.

لقطة الشاشة: أبلغ المتصفح عن إخفاق في فتح ملف test.txt.
تم فقد بيانات التعليقات.

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

 docker stop feedback-app docker rm feedback-app docker rmi feedback-node:volumes

كيفية استخدام سعة التخزين الثابتة

قبل اختبار ذلك ، يجب عليك إزالة سمة VOLUME من Dockerfile وإعادة إنشاء الصورة.

لقطة الشاشة: تم تحرير Dockerfile لإزالة سمة VOLUME.
تم تحديث Dockerfile لإزالة سمة VOLUME.
 docker build -t feedback-node:volumes . docker run -d -p 3000:80 --name feedback-app -v feedback:/app/feedback feedback-node:volumes

كما ترى ، في الأمر الثاني ، يمكنك استخدام العلامة -v لتحديد الحجم الثابت خارج الحاوية ، والذي يستمر حتى عند إزالة الحاوية.

مثل الخطوة السابقة ، حاول إضافة التعليقات والوصول إليها بمجرد إيقاف الحاوية وإزالتها وإعادة تشغيلها.

لقطة الشاشة: إدخال نص في نموذج ملاحظات التطبيق التجريبي.
إضافة ملاحظات جديدة لاختبار المثابرة.
 docker stop feedback-app docker rm feedback-app docker run -d -p 3000:80 --name feedback-app -v feedback:/app/feedback feedback-node:volumes

كما ترى ، حتى بعد إيقاف الحاوية وإزالتها ، يمكن الوصول إلى البيانات وتظل كذلك.

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

ملخص

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

يتم تخزين وحدات التخزين داخل نظام ملفات الحاوية ، بينما يمكن الوصول إلى حوامل الربط مباشرة على الجهاز المضيف.

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

وإذا كنت تستخدم Docker لتطوير تطبيقات الويب الخاصة بك ، فستجد أنه من السهل تكوين عمليات نشر Dockerfile مع خدمة استضافة التطبيقات من Kinsta.