إخلاء الذاكرة المحفوظة للـ 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، الفرق في مساحة الذاكرة قبل وبعد التعديل على نظام نظيف كما يلي، يمكن رؤية الفرق الكبير بين 366MB و 562MB.
# قبل التعديل
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.1GB و 3.5GB.
# قبل التعديل
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 بتشغيل نواة Linux أخرى دون المرور بعملية تهيئة BIOS، مما يسمح للنظام بالانتقال بسرعة إلى نواة جديدة (تُعرف أيضًا بالنواة الملتقطة أو crashkernel) بعد الانهيار.
عندما يواجه النظام خطأً قاتلاً ويؤدي إلى خطأ النواة (kernel panic)، تقوم النواة الحالية (تُعرف أيضًا بالنواة الرئيسية) باستخدام kexec لتحميل نواة ملتقطة مُعدة مسبقًا، وتُحفظ حالة الذاكرة للنظام إلى موقع محدد، مثل قسم مخصص على القرص أو عبر الشبكة إلى جهاز آخر. يمكن استخدام ملف صورة الذاكرة المحفوظة هذا (vmcore أو ملف kdump) للتحليل اللاحق، لمساعدة المطورين أو مسؤولي النظام في تحديد سبب الانهيار.
لتفعيل وظيفة kdump، غالبًا ما يلزم حجز جزء من الذاكرة للنواة الملتقطة في إعدادات بدء التشغيل للنظام، بحيث حتى لو انهارت النواة الرئيسية، تبقى هذه الذاكرة غير متأثرة، مما يضمن قدرة النواة الملتقطة على العمل بشكل طبيعي وإكمال مهمة تصدير الذاكرة. يتضمن إعداد واستخدام kdump عادةً تعديل إعدادات برنامج التمهيد، وضبط معلمات النواة، وتعيين موقع تخزين مناسب لحفظ ملف vmcore.