عيادي طاهر | Add Swap Space In Ubuntu Linux إضافة مساحة تبديل على نظام Ubuntu 20.04

Add Swap Space In Ubuntu Linux إضافة مساحة تبديل على نظام Ubuntu 20.04

تاريخ النشر: 2022-03-31


يتم استخدام مساحة المبادلة (Swap space ) عندما يقرر نظام التشغيل الخاص بك أنه يحتاج إلى المزيد من الذاكرة الفعلية RAM (Random Access Memory ) للعمليات النشطة وأن حجم الذاكرة الفعلية المتاحة غير المستخدمة غير كافٍ. عند حدوث ذلك ، يتم نقل الصفحات غير النشطة(inactive pages) من الذاكرة الفعلية إلى مساحة المبادلة ، مما يؤدي إلى تحرير هذه الذاكرة الفعلية لاستخدامات أخرى. ستلاحظ أن وقت الوصول للمبادلة يكون أبطأ ، اعتمادًا على سرعة محرك الأقراص الثابتة (HDD أو SSD ) .

لا يجب أن تعتبر مساحة المبادلة بديلاً كاملاً للذاكرة الفعلية. يمكن أن تكون مساحة التبديل عبارة عن قسم مخصص للتبديل (swap partition) ، أو ملف مبادلة swap file ، أو مجموعة من أقسام المبادلة وملف (ملفات) المبادلة.

سنشرح في هذا المقال كيفية إضافة مساحة المبادلة على شكل ملف مبادلة على نظام تشغيل Ubuntu 20.04.

كم أحتاج من مساحة المبادلة؟

بشكل عام ، يعتمد حجم ملف المبادلة على مقدار ذاكرة الوصول العشوائي التي يمتلكها نظامك ، وماإذا كنت تود استعمال خاصية الإسبات أو لا.

تقوم ميزة الإسبات Hibernation بكتابة محتويات ذاكرة الوصول العشوائي إلى قسم المبادلة قبل إيقاف تشغيل الجهاز. لذلك ، يجب أن يكون قسم المبادلة على الأقل كبيرًا مثل حجم ذاكرة الوصول العشوائي. على الرغم من أن أحدث إصدارات Ubuntu لا تدعم وضع الإسبات OOTB (Out Of The Box ) ، يمكنك تفعيل نظامك للسماح بالإسبات. في كلا البديلين (PM-UTILS أو SYSTEMD)، يمكنك استخدام قسم مبادلة أو ملف مبادلة.

الجدول التالي يوضح أهم التوصيات التي يوصى باتباعها في اختيار الحجم الصحيح لملف المبادلة:

حجم ذاكرة الوصول العشوائي (GB) RAM من دون خاصية الإسبات مع تدعيم خاصية الإسبات القيمة القصوى لملف المبادلة
1 1 2 2
2 1 3 4
4 2 6 8
8 3 11 16
12 3 15 24
16 4 20 32
24 5 29 48
32 6 38 64
64 8 72 128

فحص نظام معلومات المبادلة

قبل أن نبدأ ، يمكننا التحقق مما إذا كان النظام به مساحة تبديل متاحة بالفعل. من الممكن أن يكون لديك ملفات مبادلة متعددة أو أقسام مبادلة ، ولكن عادة ما يكفي واحد.

يمكننا معرفة ما إذا كان النظام يحتوي على تبادل مهيأ عن طريق كتابة:


sudo swapon -show

إذا لم يقوم الأمر باسترداد أي نتائج ، فهذا يعني أن نظامك ليس به مساحة تبديل متاحة حاليًا.

يمكنك التحقق من عدم وجود مساحة تبديل نشطة باستخدام الأداة free:


free -h
              total        used        free      shared  buff/cache   available
Mem:           11Gi       2.3Gi       7.2Gi        74Mi       2.0Gi       9.0Gi
Swap:            0B          0B          0B

كما ترى في سطر Swap الخاص بالمخرجات ، لا يوجد مساحة تبديل نشطة على النظام.

إنشاء ملف المبادلة

لإضافة مساحة مبادلة على أكمل الخطوات أدناه :

أولاً ، قم بإنشاء ملف باسم swapfile على مستوى الجذر (/) بحجم 2G (عدل القيمة حسب احتياجك) والذي سيتم استخدامه كمساحة تبديل :


sudo fallocate -l 2G /swapfile

يمكن التحقق:


ls -lh /swapfile
  -rw-r--r-- 1 root root 2.0G Mar 31 22:12 /swapfile

اضبط أذونات ( permissions) الملف على القيمة 600 لمنع المستخدمين العاديين من كتابة وقراءة الملف:


sudo chmod 600 /swapfile

تحقق من تغيير الأذونات عن طريق كتابة الأمر:


ls -lh /swapfile
  -rw-r--r-- 1 root root 2.0G Mar 31 22:12 /swapfile

يمكننا الآن تحديد الملف كمساحة مبادلة عن طريق كتابة:


sudo mkswap /swapfile

    Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
    no label, UUID=5d1c6830-cecf-4634-98d1-79e5f47eb858

قم بتنشيط ملف المبادلة عن طريق تشغيل الأمر التالي:


sudo swapon /swapfile

لجعل مساحة المبادلة مفعلة بشكل ثابت ونهائي ، افتح ملف etc/fstab/ :


sudo vim /etc/fstab

وقم بإضافة السطر التالي:


/swapfile swap swap defaults 0 0

أو مباشرة باستعمال الأمر التالي:


echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab

تحقق من أن المبادلة نشطة باستخدام إما swapon أو الأمر free ، كما هو موضح أدناه:


sudo swapon --show
    NAME      TYPE SIZE USED PRIO
    /swapfile file   2G   0B   -2


sudo free -h

                  total        used        free      shared  buff/cache   available
    Mem:           11Gi       4.3Gi       4.2Gi        86Mi       3.0Gi       6.9Gi
    Swap:         2.0Gi          0B       2.0Gi

ضبط نسبة استعمال المبادلة

المبادلة (Swappiness ) هي خاصية نواة لينوكس ( Linux kernel ) التي تحدد عدد المرات التي سيستخدم فيها النظام مساحة المبادلة. يمكن أن يكون لها قيمة بين 0 و 100. القيمة المنخفضة ستجعل النواة تحاول تجنب المبادلة كلما أمكن ذلك والإعتماد أكثر على ذاكرة الوصول العشوائي ، بينما القيمة الأعلى ستجعل النواة تستخدم مساحة المبادلة بشكل أكثر قوة وتخفيف الضغط قليلا على ذاكرة الوصول العشوائي .

في Ubuntu ، يتم تعيين المبادلة الافتراضية على القيمة 60. يمكنك التحقق من القيمة الحالية عن طريق كتابة الأمر التالي:


cat /proc/sys/vm/swappiness
   60

على الرغم من أن قيمة المبادلة 60 مناسبة لمعظم أنظمة Linux الموجهة للإستعمال الشخصي، فقد تحتاج إلى تعيين قيمة أقل لخوادم الإنتاج (production servers ) .

على سبيل المثال ، لتعيين قيمة المبادلة على 10 ، قم بتشغيل:


sudo sysctl vm.swappiness=10
    vm.swappiness = 10

لجعل هذه المعلمة ثابتة عبر عمليات إعادة التشغيل التمهيد ، قم بإلحاق السطر "vm.swappiness=10" بملف etc/sysctl.conf/ عن طريق الأمر التالي مباشرة :


echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf

تعتمد قيمة المبادلة المثلى على حجم عمل النظام ( system workload ) وكيفية استخدام الذاكرة. يجب عليك ضبط هذه المعلمة بزيادات صغيرة للعثور على القيمة المثلى.

مثال عملي:

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

Swap memory usage
إستعمال ذاكرة المبادلة عند الحاجة

كما نلاحظ أنه لم يتم استعمال الا حوالي 25% (GB 1 ) من مساحة المبادلة المحددة ب: 4 GB وهذا راجع أساسا الى ضبط نسبة استعمال ذاكرة المبادلة على القيمة الدنيا كما ذكرنا آنفا، ما جعل النواة تحاول تجنب المبادلة كلما أمكن

ونفس الأمر في حالة انتهاء الحمل على ذاكرة الوصول العشوائي، يتم تلقائيا تحرير ذاكرة المبادلة كما هو موضح في هذه الصورة:

Swap memory free
تحرير ذاكرة المبادلة عند الانتهاء

إزالة ملف المبادلة

لإلغاء تنشيط ملف المبادلة وحذفه ، يمكن اتباع الخطوات التالية:

أولاً ، قم بإلغاء تنشيط مساحة المبادلة:


sudo swapoff -v /swapfile
بعد ذلك ، قم بإزالة القيمة “swapfile swap swap defaults 0 0/” من الملف “etc/fstab/” .

sudo vim /etc/fstab

أو بإضافة رمز التجزئة (#) أول السطر لكي تصبح غير نافذة ابتداءا من التشغيل القادم:


#/swapfile swap swap defaults 0 0

أخيرًا ، قم بإزالة ملف swapfile باستخدام الأمر rm:


sudo rm /swapfile

خاتمة

وبهذا نكون أوضحنا في هذا المقال كيفية إنشاء ملف مبادلة وتنشيط وتكوين مساحة التبديل على نظام Ubuntu 20.04 .