وحدات التخزين
قرص يعمّر أطول من النسخة. من أين يأتي، وما ينجو منه، وكيف تتصفّحه وتأخذ منه نسخًا احتياطية.
كل ما تكتبه نسخة عاملة في نظام ملفاتها الخاص يضيع عند إعادة تشغيل تلك النسخة. وحدة التخزين مجلّد يُحتفظ به.
في ISOGrid لا تنشئ وحدات التخزين يدويًا. إنها تأتي مع ما تنشره. تشرح هذه الصفحة من أين تأتي، وما تنجو منه كل واحدة، وما تستطيع فعله بها.
وحدة تخزين أم مخزن
وحدة التخزين مجلّد. استخدمها لبرنامج يتوقّع ملفات على القرص ولا تستطيع تغييره: نظام إدارة محتوى له مجلّد للملفات المرفوعة، أو أداة تقرأ إضافاتها من مسار.
المخزن يُوصَل إليه عبر الشبكة بـ S3، من أي عدد من التطبيقات، ومن أي مكان. استخدمه حين تكتب الشيفرة بنفسك. وهو المكان الأفضل لملفات تخدمها عدّة نسخ، ولملفات يجب أن تكون قابلة للوصول من خارج التطبيق. انظر تخزين الكائنات.
أمّا الصفوف فمكانها قاعدة بيانات، لا هذا ولا ذاك.
من أين تأتي وحدة التخزين
قرص التطبيق يأتي مع حجمه. بعض أنواع المثيلات تتضمّن قرصًا، معروضًا بـ GB إلى
جانب CPU والذاكرة. اختر واحدًا منها فيحصل التطبيق على مجلّد واحد، مركَّب على
/data. هذه هي الطريقة الوحيدة للحصول عليه. لا تستطيع إضافة ثانٍ، ولا اختيار
المسار، ولا تُنشأ volumes المذكورة في ملف stack أو compose. والاستيراد يخبرك
بذلك بدل أن يُسقطها بصمت.
ملفات الحلّ الجاهز تأتي مع الحلّ. WordPress و Odoo و n8n وبقيّة الحلول الجاهزة تحفظ ملفاتك أنت على وحدة تخزين تُنشأ معها: السمات، والإضافات، والملفات المرفوعة، والوحدات الإضافية، ومسارات العمل.
قواعد البيانات والخدمات المُدارة تحفظ بياناتها على القرص أيضًا، لكن ذلك القرص للمحرّك، وليس لك أن تفتحه. وهو غير مُدرج في القائمة.
ما تنجو منه
قرص التطبيق يُحتفظ به حين يُعاد تشغيل التطبيق، أو يُعاد نشره، أو يتغيّر عدد نسخه، أو ينتقل إلى جهاز آخر. وكل نسخة من التطبيق ترى المجلّد نفسه.
ومع ذلك ثلاثة حدود:
- لا شيء يحكّم بين النسخ. نسختان تكتبان الملف نفسه في اللحظة نفسها ستُتلفانه. وملف قاعدة بيانات مضمَّنة على قرص مشترك يحتاج إلى نسخة واحدة بالضبط.
- القرص محفوظ في مكان واحد في المنطقة وليس له نسخ متماثلة. النسخ الإضافية تحمي التطبيق، لا ملفاته. وما دام التخزين غير متاح، لا يستطيع التطبيق قراءتها.
- الحجم حدّ صارم. حين يمتلئ القرص، تفشل الكتابة.
الانتقال إلى نوع مثيل بقرص أكبر يكبّره عند النشر التالي ويحتفظ بما فيه. وهو لا يصغر: لا تنقل تطبيقًا يحمل ملفات إلى نوع مثيل بقرص أصغر.
يُجهَّز تخزين التطبيقات لكل منطقة على حدة. وحيث لم تحصل عليه المنطقة بعد، يُنشر
التطبيق مع ذلك، دون القرص، ويقول سجلّ النشر ذلك. اقرأ ذلك السطر قبل أن تأتمن
/data على أي شيء.
ملفات الحلّ الجاهز تقيم على الجهاز الذي أُنشئ عليه الحلّ، ويبقى الحلّ على ذلك الجهاز. يُحتفظ بها عند إعادة التشغيل، وعند الإيقاف ثم التشغيل، وعند تغيير الحجم، وعند إعادة النشر. إن توقّف ذلك الجهاز، توقّف الحلّ حتى يعود.
النظر إلى الداخل
صفحة وحدات التخزين تسرد الوحدات التي تستخدمها تطبيقاتك العاملة، مع التطبيق والمسار الذي رُكّبت عليه كل واحدة. وصفحة التطبيق نفسه تعرض الشيء ذاته لذلك التطبيق، وللحلّ الجاهز عرض لملفاته.
التصفّح للقراءة فقط. تستطيع سرد المجلّدات وفتح الملفات. ولا تستطيع الرفع ولا التعديل ولا إعادة التسمية ولا الحذف، لا في وحدة التحكّم ولا عبر الـ API. غيّر الملفات عبر التطبيق نفسه.
ما الذي تتوقّعه:
- لا يُسرد إلا ما يعمل. التطبيق المتوقّف ليست له نسخة يُقرأ منها.
- يُعرض الملف حتى أوّل 512 KB منه، والمجلّد حتى أوّل 1000 عنصر فيه. وتقول الصفحة متى توقّفت قبل النهاية.
- الملف غير النصّي يُعرض كمعاينة تقريبية، لا كمحتواه.
- في الحلّ الجاهز، لا تُعرض إلا ملفاتك أنت. بيانات المحرّك محفوظة في مكان آخر ولا يمكن الوصول إليها بتسميتها.
النسخ الاحتياطية
يمكن أخذ نسخ احتياطية من ملفات الحلّ الجاهز من عرض النسخ الاحتياطية فيه. النسخة الاحتياطية نسخة من المجلّد كلّه، تؤخذ إلى مكان آخر. وهي غير مفعّلة افتراضيًا.
- عند الطلب. «انسخ الآن» يأخذ نسخة واحدة ولا يبدأ أي جدولة.
- وفق جدول. كل ساعة، أو كل يوم، أو كل أسبوع، أو كل شهر. في كل ما عدا الجدولة بالساعة تختار الساعة، بتوقيت UTC. والنسخة الشهرية تُضبط حتى اليوم 28 على الأكثر، كي تعمل في فبراير أيضًا.
- تُحفظ ثلاثة أيام على الأكثر. هذا سقف، لا قيمة افتراضية تستطيع رفعها. نسخة من مجلّد كامل شبكة أمان من إضافة سيّئة أو حذف خاطئ، لا أرشيف. نزّل النسخة التي تريد الاحتفاظ بها مدّة أطول.
- إيقاف الجدولة لا يحذف شيئًا. النسخ المأخوذة من قبل تبقى حتى تنتهي مدّتها.
النسخة الاحتياطية تنسخ ذلك المجلّد ولا شيء غيره. وقاعدة البيانات التي يستخدمها الحلّ ليست جزءًا منها.
النسخة المأخوذة والحلّ يعمل قد تصحبها ملاحظة بأن ملفات تغيّرت أثناء قراءتها. تبقى صالحة للاستخدام، لكنها لحظة مشوّشة قليلًا لا لحظة دقيقة.
الاستعادة مُتلِفة. يُفرَّغ المجلّد وتوضع النسخة مكانه. كل ما كُتب منذ أُخذت تلك النسخة يضيع. أوقف الحلّ أولًا: تُرفض الاستعادة ما دام يعمل، لأن الاستعادة تحت موقع يعمل تتركه نصفه على النسخة ونصفه على ما كان موجودًا.
أمّا قرص التطبيق، فلا تعرض وحدة التحكّم له إلا التصفّح. إن كانت ملفاته مهمّة، فاحتفظ بنسخة ثانية منها في مكان يكتب إليه تطبيقك، كمخزن مثلًا.
الحذف
لا يوجد حذف مستقلّ لوحدة التخزين. إنها تذهب مع ما يملكها.
حذف التطبيق يحذف قرصه وكل ملف عليه. أمّا إعادة النشر أو إعادة التشغيل أو تغيير عدد النسخ فلا تفعل ذلك أبدًا.
حذف الحلّ الجاهز يحذف ملفاته وقاعدة بياناته. لا تراجع عن ذلك.
نزّل أي نسخة احتياطية تريد الاحتفاظ بها قبل أن تحذف. ولا تعوّل على نسخ تعمّر أطول ممّا أُخذت منه.
حالات حدّية يحسن معرفتها قبل أن تصادفها
صفحة وحدات التخزين فارغة. لا شيء له وحدة تخزين يعمل الآن. شغّل التطبيق وانظر مجدّدًا.
صورة تعلن وحدة تخزين خاصة بها. تظهر في القائمة ما دام التطبيق يعمل، لكنها تخصّ نسخة واحدة ولا يُحتفظ بها: النسخة الجديدة تبدأ بوحدة فارغة. لا يُحتفظ إلا بالقرص الذي يأتي مع نوع المثيل.
صفّ معلَّم على أنه تركيب ربط (bind mount). هو مسار على الجهاز لا وحدة تخزين. يُسرد ولا يمكن فتحه.
كتب التطبيق ملفًا ولا تجده. كُتب خارج /data، في نظام الملفات الخاص
بالنسخة، وذهب معها.
ماذا تقرأ بعد ذلك
- تخزين الكائنات لملفات مشتركة عبر S3.
- نشر تطبيق
- حين تسوء الأمور