حرف Z

الذاكرة المضغوطة (zram)

zram

آخر تحديث: 2026-10-08
مستوى الشرح اختر المستوى التقني المناسب لك

الشرح المبسط

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

الشرح التقني المتقدم

تعد وحدة الذاكرة المضغوطة (zram)، والتي كانت تعرف سابقاً باسم (compcache)، إحدى وحدات نواة لينكس (Kernel Module) التي تتيح إنشاء جهاز كتلة (Block Device) افتراضي داخل الذاكرة العشوائية (RAM). تقوم هذه التقنية بضغط صفحات الذاكرة (Memory Pages) في الوقت الفعلي عند كتابتها إلى هذا الجهاز الافتراضي، مما يرفع السعة الفعلية للذاكرة المتاحة ويقلل بشكل جذري من عمليات الإدخال والإخراج (I/O) البطيئة على أقراص التخزين.

آلية العمل والفرق بين zram و zswap

تعتمد فكرة العمل على اقتطاع جزء ديناميكي من الذاكرة العشوائية وتعيينه كمساحة تبديل (Swap Space) ذات أولوية قصوى:

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

الفرق الجوهري عن تقنية (zswap): تعمل تقنية zram كقرص تبديل مستقل تماماً داخل الذاكرة ولا تتطلب وجود قسم تبديل فعلي على قرص التخزين، بينما تعمل تقنية zswap كذاكرة تخزين مؤقت (Cache) أمام قرص التبديل الفعلي وتحتاج لوجوده حتماً لترحيل البيانات إليه عند الامتلاء.

إدارة وفحص zram عبر أداة zramctl

توفر حزمة أدوات النظام في لينكس أداة zramctl المخصصة لمراقبة حالة أجهزة الذاكرة المضغوطة ومعرفة نسبة الضغط الفعلي:

لعرض الأجهزة النشطة وحجم البيانات قبل وبعد الضغط:

zramctl --output NAME,ALGORITHM,DISKSIZE,DATA,COMPR,TOTAL

توضيح المخرجات التقنية للأمر:

- العمود DISKSIZE: يوضح الحجم الافتراضي الأقصى المسموح به للبيانات غير المضغوطة.

- العمود DATA: يشير إلى الحجم الأصلي للبيانات الموضوعة حالياً داخل zram قبل ضغطها.

- العمود COMPR: يعرض الحجم الفعلي للبيانات بعد ضغطها، وغالباً ما يحقق نسبة ضغط تتراوح بين 2:1 إلى 3:1.

- العمود TOTAL: يبين إجمالي استهلاك الذاكرة الفعلي شاملاً البيانات المضغوطة والبيانات الوصفية للنظام.

التفعيل اليدوي وإعداد الأولويات

لتفعيل وإعداد وحدة zram يدوياً بحجم 4 جيجابايت مع تحديد خوارزمية الضغط وتعيين أعلى أولوية تبديل:

أمر التنفيذ المتكامل:

sudo modprobe zram && sudo zramctl --find --size 4G --algorithm zstd && sudo mkswap /dev/zram0 && sudo swapon --priority 100 /dev/zram0

تحليل الخيارات والأوامر المستخدمة:

- الأمر modprobe zram: يقوم بتحميل الوحدة البرمجية داخل نواة النظام إذا لم تكن محملة مسبقاً.

- الخيار --algorithm zstd: يحدد خوارزمية الضغط، حيث توفر zstd أفضل توازن بين نسبة الضغط العالية واستهلاك المعالج (CPU)، بينما تفضل lz4 للأجهزة ذات المعالجات الضعيفة لسرعتها الفائقة.

- الخيار --priority 100: يمنح جهاز zram أولوية أعلى من أقراص التبديل التقليدية، مما يجبر النواة على استغلال الذاكرة المضغوطة بالكامل قبل اللجوء للقرص الصلب.

ملاحظة ختامية: الصورة الكبرى (نصيحة احترافية)

في التوزيعات الحديثة التي تعتمد على مدير النظام (systemd)، يفضل الاستغناء عن السكربتات اليدوية واستخدام أداة systemd-zram-generator الرسمية. ولتحقيق أقصى استفادة من وجود zram، ينصح بتعديل معامل قابلية التبديل (Swappiness) عبر تعيين القيمة vm.swappiness=180 و vm.page-cluster=0 في ملف إعدادات النواة /etc/sysctl.conf، مما يوجه النواة لاستغلال سرعة ضغط الذاكرة بكفاءة قصوى وإلغاء القراءة المسبقة غير الضرورية للذاكرة العشوائية.