إطلاق الذاكرة المحفوظة لـ VPS

يحتفظ نظام Linux افتراضيًا بمساحة ذاكرة معينة لـkdump، ويمكن ضبط حجم هذه الذاكرة من خلال معلمةcrashkernel، وعادةً لا يسبب مطورو التطبيقات عادةً انهيار نواة النظام، ويمكن إصدار هذه الذاكرة من خلال تعديل ملف/etc/default/grub.

إذا لم تكن بحاجة إلىkdump، فيمكنك ضبط معلمةcrashkernel إلى0M-1G:0M,1G-4G:0M,4G-128G:0M,128G-:512M، وبهذه الطريقة يمكنك إطلاق مساحة ذاكرة معينة.

طريقة العرض: cat /etc/default/grub

القيمة الافتراضية كما يلي:

GRUB_CMDLINE_LINUX=" vga=792 console=tty0 console=ttyS0,115200n8 net.ifnames=0 noibrs nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295 iommu=pt crashkernel=0M-1G:0M,1G-4G:192M,4G-128G:384M,128G-:512M crash_kexec_post_notifiers=1"

شرح حقلcrashkernel، معناه أن主机 ذي ذاكرة0-1Gيحجز0Mمن الذاكرة، و主机 ذي ذاكرة1-4Gيحجز192Mمن الذاكرة، و主机 ذي ذاكرة4-128Gيحجز384Mمن الذاكرة، و主机 ذي ذاكرة128Gفأكثر يحجز512Mمن الذاكرة.

يتم تصنيف主机 ذي ذاكرة 1G إلى الفئة1-4G، ويحجز192MBمن الذاكرة لـ kdump. ويتم تصنيف主机 ذي ذاكرة 4G إلى الفئة4-128G، ويحجز384MBمن الذاكرة لـ kdump.

طريقة التعديل: sudo sed -i 's/crashkernel=0M-1G:0M,1G-4G:192M,4G-128G:384M,128G-:512M/crashkernel=0M-1G:0M,1G-4G:0M,4G-128G:0M,128G-:512M/' /etc/default/grub

يصبح نافذًا بعد إعادة التشغيل: sudo update-grub && sudo reboot

بأخذ VPS 2C1G الذي يستخدمه غالبًا المتعلمون الجدد كمثال، الفرق بين مساحة الذاكرة قبل وبعد التعديل لنظام نظيف كما هو موضح أدناه، ويمكن ملاحظة أن الفرق بين 366 ميجابايت و 562 ميجابايت كبير إلى حد ما.

# قبل التعديل
root@iZj6c0otki9ho421eewyczZ:~# free
               total        used        free      shared  buff/cache   available
Mem:          707180      340772      123400        2624      358872      366408
Swap:              0           0           0

# بعد التعديل
root@iZj6c0otki9ho421eewyczZ:~# free
               total        used        free      shared  buff/cache   available
Mem:          903788      341656      451380        2616      251032      562132
Swap:              0           0           0

مساحة الذاكرة لـ VPS 2C4G قبل وبعد التعديل كما يلي، والفرق بين 3.1 جيجابايت و 3.5 جيجابايت.

# قبل التعديل
root@iZj6c1prxn78ilvd2inku1Z:~# free
               total        used        free      shared  buff/cache   available
Mem:         3512696      377672     2870944        1260      415116     3135024
Swap:              0           0           0

# بعد التعديل
root@iZj6c1prxn78ilvd2inku1Z:~# free
               total        used        free      shared  buff/cache   available
Mem:         3905912      374468     3408304        1252      270508     3531444
Swap:              0           0           0

مزيد من المعلومات حول kdump

Kdump هو آلية تصدير تحطم نواة النظام، وتستخدم لالتقاط حالة الذاكرة للنظام عند تحطم نواة النظام في Linux. تعتمد على تقنية kexec، وتمكن kexec من تحميل نواة Linux أخرى دون المرور بعملية تهيئة BIOS، مما يسمح للنظام بالانتقال بسرعة إلى نواة جديدة (تُسمى أيضًا نواة الإمساك أو crashkernel) بعد التحطم.

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

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