يعد إضافة مساحة التبديل (swap space) إلى خادمك خيارًا ممتازًا للتعويض عن أخطاء نفاد الذاكرة. Linux يتيح للمستخدمين إضافة مساحة تبديل في نظامهم عندما تكون كمية ذاكرة الوصول العشوائي (RAM) في النظام ممتلئة. عند إنشاء قسم مساحة مخصص، ستسمح للذاكرة الفعلية بالعمل بسلاسة دون القلق كثيرًا بشأن انخفاض مساحة القرص.
نظرة عامة على التبديل (Swap)
مساحة التبديل (Swap space) في Linux هي جزء من الذاكرة الافتراضية المستخدمة عندما تنفد مساحة الذاكرة الفعلية. خاصة عند العمل مع برنامج أو تطبيق كبير حيث تظهر الحاجة إلى ذاكرة إضافية، فإن مساحة التبديل هي خيار مثالي للاحتفاظ بصفحات الذاكرة غير النشطة مؤقتًا. يتيح إنشاء مساحة تبديل للمستخدمين تخزين البيانات عند تشغيل برامج كبيرة وبالتالي يقلل من تعطل التطبيقات. هذا يعني أنه إذا كان النظام بحاجة إلى المزيد من موارد الذاكرة وكانت ذاكرة الوصول العشوائي (RAM) ممتلئة، فسيتم نقل جميع الصفحات غير النشطة في الذاكرة إلى مساحة التبديل وتكون البرامج قادرة على العمل دون انقطاع.
ما هي كمية مساحة التبديل (Swap) التي أحتاجها؟
تعتمد كمية مساحة التبديل على عدة عوامل. وتشمل هذه ذاكرة الوصول العشوائي (RAM) المتاحة، والحمل المفروض، وما إذا كان النظام مطلوبًا لدعم ميزة السبات (التعليق إلى القرص). راجع الجدول أدناه للتحقق من مساحة التبديل الموصى بها بناءً على المساحة المتوفرة في ذاكرة الوصول العشوائي (RAM):
|
الرقم التسلسلي |
مساحة RAM المتاحة |
مساحة التبديل الموصى بها |
|
1. |
1GB |
1GB |
|
2. |
2GB |
1GB |
|
3. |
3GB |
2GB |
|
4. |
4GB |
2GB |
|
5. |
5GB |
2GB |
|
6. |
6GB |
2GB |
|
7. |
8GB |
3GB |
في هذا البرنامج التعليمي، سنقوم بـ إرشادك عبر خطوات إضافة مساحة التبديل على Ubuntu 20.04. لنبدأ!
المتطلبات الأساسية
لمتابعة هذا البرنامج التعليمي، ستحتاج إلى:
- تثبيت Ubuntu على نظامك.
- غير جذري (Non-root) مستخدم تم إعداد حسابه مع امتيازات sudo في جهازك.
الخطوة 1: التحقق من معلومات التبديل (Swap)
يعتمد حجم مساحة التبديل على ذاكرة الوصول العشوائي (RAM) للنظام. لذلك، من الضروري التحقق من توفر مساحة التبديل في نظامك قبل إنشاء واحدة. اكتب الأمر أدناه للتحقق مما إذا كان النظام يحتوي على أي مساحة تبديل مهيأة:
|
1 |
$ sudo swapon --show |
يعني ظهور مخرجات أن هناك مساحة متاحة في نظامك لإنشاء مساحة تبديل. ومع ذلك، فإن عدم وجود مخرجات هو إشارة تشير إلى عدم وجود مساحة كافية لإضافة مساحة تبديل.
استخدم أداة free للتحقق من عدم وجود مساحة تبديل نشطة:
|
1 |
$ free -h |
سترى المخرجات كصف تبديل فارغ (null):
الخطوة 2: التحقق من توفر قسم القرص الصلب
على غرار التحقق من توفر النظام، دعنا الآن نتحقق من استخدام القرص الحالي للتأكد من أن لدينا مساحة كافية. استخدم الأمر df للتحقق من توفر قسم القرص الصلب:
|
1 |
df -h |
الجهاز الذي يحتوي على / في عمود Mounted on هو قرصنا الذي يحتوي على 11% مساحة فارغة. سترى المخرجات:
بعد التحقق من متطلبات النظام، دعنا ننتقل إلى الأمام وننشئ ملف تبديل على نظام الملفات لدينا.
Step 3: Create a Swap File
لإنشاء ملف تبديل على نظام الملفات لدينا، قم بتخصيص اسم ملف كـ swapfile في الدليل الجذري (root) (/) باستخدام برنامج fallocate. يعتمد تخصيص حجم الملف على احتياجاتك. لإبقاء البرنامج التعليمي بسيطًا وسهل الفهم، سنقوم بإنشاء ملف بحجم 1G وتخصيص 1G من ذاكرة الوصول العشوائي (RAM). استخدم الأمر sudo لإنشاء ملف تبديل:
|
1 |
sudo fallocate -l 1G /swapfile |
بعد ذلك، اكتب هذا الأمر للتحقق من المساحة المحجوزة:
|
1 |
$ ls -lh /swapfile |
الآن بعد أن أنشأنا مساحة تبديل في نظامنا، دعنا نقوم بتمكينها في الخطوة التالية.
الخطوة 4: تمكين ملف التبديل
بمجرد توفر الحجم الصحيح، دعنا نحوله إلى مساحة تبديل. لأسباب أمنية، من الأهمية بمكان جعل ملفنا متاحًا لمستخدمي الجذر (root) ومنع الوصول إليه من قبل المستخدمين العاديين. سنضيف قيودًا بحيث يمكن للمستخدمين الذين لديهم امتيازات root عرض الملف وقراءة محتوياته. استخدم أمر root التالي لجعل الملف متاحًا فقط لمستخدمي root :
|
1 |
sudo chmod 600 /swapfile |
ثم، استخدم الأمر ls للتحقق من التغييرات:
|
1 |
$ ls -lh /swapfile |
كما ترى، يمتلك مستخدم root فقط علامات القراءة والكتابة مُمكّنة:
بعد ذلك، قم بتمييز الملف كمساحة تبديل:
|
1 |
sudo mkswap /swapfile |
سترى المخرجات:
بعد ذلك، قم بتمكين ملف التبديل والسماح لنظامنا بالبدء في استخدامه:
|
1 |
sudo swapon /swapfile |
بعد ذلك، تحقق من توفر مساحة التبديل:
|
1 |
$ sudo swapon --show |
سترى المخرجات التالية:
كما فعلنا في الخطوة 1، سنتحقق من free المساحة المتاحة للأداة مرة أخرى:
|
1 |
free -h |
سترى المخرجات التالية:
تم إعداد مساحة التبديل الخاصة بنا بنجاح وسيبدأ نظام التشغيل لدينا في استخدامها حسب الضرورة. في الخطوة التالية، سنجعل ملف التبديل دائمًا.
الخطوة 5: جعل ملف التبديل دائمًا
بشكل افتراضي، لن يحتفظ الخادم بإعدادات التبديل تلقائيًا عند إعادة التشغيل. لتغيير الإعدادات الافتراضية وتجنب أي مشاكل، سنقوم بإضافة ملف التبديل إلى ملف /etc/fstab الخاص بنا. استخدم الأمر sudo لعمل نسخة احتياطية لملف /etc/fstab :
|
1 |
sudo cp /etc/fstab /etc/fstab.bak |
بعد ذلك، أضف معلومات ملف التبديل إلى نهاية ملف /etc/fstab عن طريق كتابة:
|
1 |
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab |
بعد ذلك، دعنا نراجع بعض الإعدادات ونجري تعديلات حتى نتمكن من ضبط مساحة التبديل الخاصة بنا.
الخطوة 6: تعديل إعدادات مساحة التبديل
في هذه الخطوة، سنقوم بتهيئة الإعدادات وإجراء بعض التعديلات. دعنا’ نضبط خاصية swappiness ونغير ضغط ذاكرة التخزين المؤقت.
-
ضبط خاصية Swappiness
إن معامل swappiness هو معامل نواة قابل للضبط. فهو يغير التوازن بين ترحيل ذاكرة وقت التشغيل ويتحكم في تبادل البيانات بين ترحيل البيانات من ذاكرة الوصول العشوائي (RAM) إلى مساحة التبديل. يتم التعبير عن هذه القيمة كنسبة مئوية، تتراوح من 0 إلى 100.
إن قيمة vm.swappiness لها تأثير مباشر على سلوك swappiness للنظام. فكلما ارتفعت قيمة vm.swappiness، زاد ترحيل النظام للبيانات والعكس صحيح. إذا كانت القيمة قريبة من الصفر، فلن تقوم النواة بترحيل البيانات مما قد يؤدي إلى انخفاض الأداء. إن السماح لنظامك بعدم الاعتماد كثيرًا على مساحة التبديل هو طريقة ممتازة لتحسين أدائه والحصول على استجابة قوية.
وبدلاً من ذلك، فإن قيمة vm.swappiness الأقرب إلى 100 تحاول وضع المزيد من البيانات في مساحة التبديل وتقليلها في الذاكرة الفعلية. وعلى عكس قيمة vm.swappiness المنخفضة إلى المتوسطة، فإن الترحيل العالي للنظام له تأثيرات غير مرغوب فيها للغاية عندما تكون هناك كميات كبيرة من البيانات التي يتم ترحيلها بنشاط من وإلى ذاكرة الوصول العشوائي (RAM).
تحقق من قيمة swappiness الحالية عن طريق كتابة:
|
1 |
cat /proc/sys/vm/swappiness |
سترى’ المخرجات التالية:
يمكنك أيضًا تعيين قيمة swappiness التي تختارها باستخدام الأمر sysctl. دعنا نضبط قيمة swappiness على 15 عن طريق كتابة:
|
1 |
sudo sysctl vm.swappiness = 15 |
سترى المخرجات التالية:
ستبقى الإعدادات كما هي حتى يتم إعادة تشغيل النظام. أضف السطر إلى ملف /etc/sysctl.conf الخاص بنا لتعيين القيمة تلقائيًا عند إعادة التشغيل:
|
1 |
sudo nano /etc/sysctl.conf |
يمكنك إضافة الكود التالي في الأسفل:
|
1 |
Vm.swappiness = 15 |
ثم احفظ الملف وأغلقه.
-
ضبط ضغط ذاكرة التخزين المؤقت
بعد ذلك، سنقوم بتعديل vfs_cache_pressure الذي سيهتم بمعلومات inode و dentry على حساب البيانات الأخرى. إعدادات vfs_cache_pressure هذه تتحكم أيضًا في ميل النواة لاستعادة الذاكرة المستخدمة لتخزين الدليل مؤقتًا. تصفح نظام ملفات proc مرة أخرى للتحقق من القيمة الحالية:
|
1 |
cat /proc/sys/vm/vfs_cache_pressure |
سترى المخرجات التالية:
بما أن التهيئة قد تمت بالفعل، سيقوم نظامنا بإزالة معلومات inode من ذاكرة التخزين المؤقت. دعنا’ نضبط sysctl vm.vfs_cache_pressure على إعداد أكثر استقرارًا مثل هذا:
|
1 |
sudo sysctl vm.vfs_cache_pressure = 60 |
سترى المخرجات التالية:
على غرار ما فعلناه في إعداد swappiness، يمكننا تغيير التهيئة هنا أيضًا:
|
1 |
sudo nano /etc/sysctl.conf |
في الأسفل، أدخل سطرًا يشير إلى القيمة الجديدة التي أنشأتها:
|
1 |
Vm.vfs_cache_pressure = 60 |
أخيرًا، احفظ الملف وأغلقه.
الخاتمة
يمكنك إضافة مساحة التبديل (swap space) كقسم تبديل مخصص، أو ملف تبديل، أو مزيج من الاثنين معاً. يمكنك إنشاء مساحة التبديل والاستفادة من مزاياها لتشغيل التطبيقات بسلاسة دون القلق كثيراً بشأن تحذيرات نفاد الذاكرة. في حين أن إنشاء مساحة التبديل يعد ميزة إضافية في الأنظمة ذات مساحة الذاكرة المحدودة، إلا أنه لا يجب معاملته كبديل لمزيد من مساحة الذاكرة العشوائية (RAM). تذكر أن مساحة التبديل تقع على القرص الصلب، وبالتالي قد تواجه وقت وصول بطيئاً نوعاً ما مقارنة بالذاكرة الفعلية.
إليك المزيد من البرامج التعليمية على مدونتنا التي ستساعدك على البدء في استخدام خوادم Ubuntu الخاصة بك:
- إعداد نقطة تثبيت NFS على Ubuntu 20.04
- تثبيت Nginx على Ubuntu 18.04
- تكوين جدار حماية باستخدام UFW على Ubuntu 18.04
حوسبة سعيدة!










التعليقات
لا توجد تعليقات بعد. كن أول من يعلق.