انتقل إلى المحتوى الرئيسي
العودة إلى الفئة

إنشاء وضبط مساحة Swap: دليل شامل

ما هو swap في Linux، كيفية إنشاء ملف swap، ضبط swappiness، مراقبة استخدام swap وتحسين أداء الذاكرة على خادمك.

وقت القراءة: 9 دقيقة إدارة الخادم
swapذاكرة افتراضيةswappinesslinuxذاكرةأداءخادم

جدول المحتويات

إنشاء وضبط مساحة Swap: دليل شامل

مساحة Swap هي ذاكرة افتراضية على القرص يستخدمها نظام التشغيل عندما تمتلئ الذاكرة العشوائية (RAM). تمنع تعطل النظام تحت ضغط الذاكرة وتبقي التطبيقات تعمل. يغطي هذا الدليل إنشاء ملف swap وضبطه ومراقبته.

لا يحل Swap محل RAM؛ بل يعمل فقط كمخزن مؤقت للطوارئ. الاستخدام المرتفع المستمر لـ swap علامة على نقص RAM.

ما هو Swap ومتى يكون ضرورياً؟

يمكن إنشاء مساحة swap بطريقتين:

الطريقةالميزةالعيب
قسم swapأسرع قليلاًحجم ثابت
ملف swapمرن، قابل لتغيير الحجمأبطأ قليلاً

تُفضَّل ملفات swap على الأنظمة الحديثة لأن حجمها يمكن تغييره ديناميكياً.

متى يكون swap ضرورياً؟

  • RAM بحجم 2 جيجابايت أو أقل
  • تشغيل تطبيقات كثيفة الذاكرة
  • استخدام وضع الإسبات (Hibernate)
  • كمخزن مؤقت للأمان ضد ارتفاعات الذاكرة غير المتوقعة

التحقق من حالة Swap الحالية

hljs bash
# عرض استخدام swap
swapon --show

# ملخص الذاكرة وswap
free -h

# معلومات تفصيلية عن الذاكرة
cat /proc/meminfo | grep -i swap

# سرد مناطق swap
cat /proc/swaps

إنشاء ملف Swap

الخطوة 1: إنشاء ملف Swap

hljs bash
# إنشاء ملف swap بحجم 2 جيجابايت (طريقة dd)
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

# أو باستخدام fallocate (أسرع)
sudo fallocate -l 2G /swapfile

# التحقق من حجم الملف
ls -lh /swapfile

الخطوة 2: ضبط صلاحيات الأمان

hljs bash
# فقط root يمكنه القراءة/الكتابة
sudo chmod 600 /swapfile

# التحقق من الصلاحيات
ls -la /swapfile
# المخرجات: -rw------- 1 root root 2.0G ...

الخطوة 3: التهيئة كـ Swap

hljs bash
# تعليم الملف كمساحة swap
sudo mkswap /swapfile

الخطوة 4: تفعيل Swap

hljs bash
# تفعيل swap
sudo swapon /swapfile

# التحقق
swapon --show
free -h

الخطوة 5: جعله دائماً

أضف إلى /etc/fstab لتفعيل swap تلقائياً عند إعادة التشغيل:

hljs bash
# إضافة إلى /etc/fstab
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

# التحقق
cat /etc/fstab | grep swap

تغيير حجم Swap

لزيادة حجم ملف swap الموجود:

hljs bash
# تعطيل swap
sudo swapoff /swapfile

# إنشاء ملف جديد بحجم أكبر (4 جيجابايت)
sudo fallocate -l 4G /swapfile

# إعادة التهيئة
sudo mkswap /swapfile

# إعادة التفعيل
sudo swapon /swapfile

# التحقق
free -h

ضبط Swappiness

Swappiness قيمة بين 0-100 تحدد مدى عدوانية النواة في استخدام swap:

القيمةالسلوك
0استخدام swap بأقل قدر ممكن
10موصى به للخوادم
60الافتراضي في Linux
100استخدام swap بشكل عدواني
hljs bash
# عرض قيمة swappiness الحالية
cat /proc/sys/vm/swappiness

# تغيير مؤقت (يُعاد تعيينه عند إعادة التشغيل)
sudo sysctl vm.swappiness=10

# تغيير دائم
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf

# تطبيق التغييرات
sudo sysctl -p

يُنصح بـ swappiness=10 للخوادم. يقلل هذا من استخدام swap قبل نفاد RAM ويخفض I/O القرص.

مراقبة استخدام Swap

hljs bash
# حالة الذاكرة وswap الآنية
free -h

# مراقبة مستمرة (كل ثانيتين)
watch -n 2 free -h

# أي العمليات تستخدم swap؟
for file in /proc/*/status; do
  awk '/VmSwap|Name/{printf $2 " " $3 "\n"}' $file
done | sort -k 2 -n -r | head -10

# المراقبة بـ vmstat
vmstat 2 5

تعطيل Swap

hljs bash
# تعطيل مؤقت
sudo swapoff /swapfile

# إزالة دائمة
sudo swapoff /swapfile
sudo rm /swapfile
# أزل أيضاً سطر swap من /etc/fstab

قبل تعطيل swap، تأكد من وجود RAM حر كافٍ. وإلا قد يواجه النظام خطأ OOM (نفاد الذاكرة).

الخلاصة

مساحة Swap مهمة لاستقرار النظام، خاصةً على الخوادم ذات RAM المحدود. إنشاء ملف swap وتحسين قيمة swappiness ومراقبة استخدام swap بانتظام يحسّن إدارة الذاكرة في خادمك. لكن swap ليس حلاً دائماً لنقص RAM — إذا رأيت استخداماً مرتفعاً مستمراً لـ swap، فكّر في ترقية RAM.