إطلاق الذاكرة المحفوظة لـ VPS
Categories:
يحتفظ نظام 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.