كيفية إنشاء ملف Swap على Linux

أضف مساحة تبديل إلى كمبيوتر يعمل بنظام Linux، أو قم بزيادة مساحة التبديل الموجودة بالفعل، دون العبث بالأقسام. سنوضح لك الطريقة السهلة لتخصيص مساحة التبديل الخاصة بك.




مبادلة الملفات مقابل مبادلة الأقسام

هناك العديد من السيناريوهات التي قد ترغب فيها في زيادة مساحة المبادلة الحالية أو إضافة مساحة جديدة إلى جهاز الكمبيوتر الذي يعمل بنظام Linux.

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

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


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

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

قبل أن نتعمق في: Btrfs وSSDs

هناك نقطتان نود مناقشتهما بسرعة.

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


منذ نواة 5.0، أنت يمكن أن يكون لديك ملفات مبادلة في أنظمة ملفات Btrfs إذا تم إعدادها بالمتطلبات التالية:

  • لا توجد ملفات نسخ عند الكتابة (NOCOW).
  • إنهم ليسوا مضغوطين.
  • لا يركبون على محركات أقراص صلبة مختلفة.

سيستخدم معظم القراء نظام الملفات ext4 الافتراضي، لذا لن يشكل هذا الأمر مصدر قلق بالنسبة لهم.

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

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


التحقق من مساحة المبادلة الموجودة

انظر قبل أن تقفز. دعنا نتحقق من مساحة المبادلة المتاحة على جهاز الكمبيوتر الخاص بك. يمكنك القيام بذلك بطريقتين، وسنستخدم كليهما. free سيعرض الأمر الذاكرة المستخدمة والذاكرة الحرة. سيؤدي الخيار -h (قابل للقراءة من قبل الإنسان) إلى free لاستخدام وحدات حساسة عند عرض قيم الذاكرة.

free -h

fre -h في نافذة المحطة الطرفية

الناتج من free يظهر أنه لا يوجد مساحة تبديل مُهيأة على هذا الجهاز.

لا تتم مناقشة المبادلة مطلقًا دون ظهور ذاكرة الوصول العشوائي وذاكرة الوصول العشوائي المجانية. لذا، يجدر بالذكر أن ذاكرة الوصول العشوائي المجانية تُقدَّر بـ 237 ميجابايت. لا تخلط بين ذلك وإجمالي ذاكرة الوصول العشوائي المتاحة للاستخدام. يتم توفير هذه القيمة من خلال الرقم “المتاح”، وهو 881 ميجابايت.


يستخدم لينكس ذاكرة الوصول العشوائي المجانية لأغراضه الخاصة، مثل تخزين الملفات ومخازن النواة. إن حجم ذاكرة الوصول العشوائي المخصصة لذلك هو رقم “buff/cache”، والذي يبلغ 871 ميجابايت. ولكن هذه الذاكرة لا تزال تعتبر – ويتم احتسابها – “متاحة”. يمكن التخلص من محتويات ذاكرة الوصول العشوائي “buf/cache” على الفور واستخدامها بواسطة أي تطبيق يحتاج إلى بعض الذاكرة.

هناك طريقة أخرى للتحقق مما إذا كانت مساحة المبادلة متاحة وهي استخدام swapon الأمر. --show الخيار لا يصنع أي شيء تغييرات على المبادلة على جهاز الكمبيوتر الخاص بك.إنه يوفر الإحصائيات فقط.

swapon --show

swapon --عرض في نافذة المحطة الطرفية

إذا لم يكن هناك إخراج من هذا الأمر، فهذا يعني أنه لم يتم تكوين أي مبادلة.

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


ما هو مقدار مساحة المبادلة التي أحتاجها؟

كانت الإجابة التقليدية هي “ضعف كمية ذاكرة الوصول العشوائي التي لديك”. ولكن هذه الإجابة جاءت عندما كانت أجهزة الكمبيوتر تستخدم ذاكرة وصول عشوائي محدودة للغاية. ومع انخفاض تكلفة ذاكرة الوصول العشوائي، وزيادة استهلاك البرامج والألعاب للذاكرة، تم تعديل مواصفات أجهزة الكمبيوتر وفقًا لذلك. لم تعد أجهزة الكمبيوتر المنزلية التي تحتوي على ذاكرة وصول عشوائي بسعة 32 جيجابايت نادرة في الوقت الحاضر. ولن تتمكن من تخصيص 64 جيجابايت من مساحة القرص الصلب لاستبدال المساحة إذا كان لديك ذاكرة وصول عشوائي بسعة 32 جيجابايت. وهذا أمر مفرط بكل وضوح.

إن مقدار المبادلة الذي تحتاجه هو بمثابة موضوع مثير للجدل، ويمكن مقارنته بـ “أي محرر هو الأفضل”. إحدى المناقشات الأكثر منطقية التي رأيناها حول هذا الموضوع هي في الأسئلة الشائعة حول مبادلة أوبونتوإنها طريقة مختصرة وبديهية (على الرغم من أنهم، مثل العديد من الأشخاص، لا يفهمون بشكل صحيح كيفية عمل swappiness على Linux). يوجد جدول مفيد يوضح مقدار مساحة swap الموصى بها لكمية ذاكرة الوصول العشوائي (RAM) الموجودة في نظامك، وما إذا كنت تقوم بتعطيل جهاز الكمبيوتر الخاص بك أم لا.


والخبر السار هو أنه لا يهم حقًا القيمة التي تختارها. يمكننا دائمًا إزالة ملف المبادلة واستبداله بملف أكبر أو أصغر. أو يمكنك ببساطة إضافة ملف مبادلة آخر.

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

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

لا ينبغي عليك استخدام fallocate يأمر لإنشاء ملف المبادلة الخاص بك. هذا من صفحة الدليل لـ swapon:

The swap file implementation in the kernel expects to be able to write to
the file directly, without the assistance of the file system.
This is a problem on files with holes or on copy-on-write files on file
systems like Btrfs. Commands like cp(1) or truncate(1) create files with
holes. These files will be rejected by swapon.
Preallocated files created by fallocate(1) may be interpreted as files
with holes too depending of the filesystem. Preallocated swap files are
supported on XFS since Linux 4.18.
The most portable solution to create a swap file is to use dd(1) and /dev/zero.

لذا، على الرغم من fallocate أسرع، سوف نستخدم dd ل إنشاء ملف المبادلة. الجهاز المستخدم في البحث في هذه المقالة يحتوي على ذاكرة وصول عشوائي (RAM) بحجم 2 جيجابايت. سنقوم بإنشاء ملف مبادلة بحجم 1 جيجابايت.

الخيارات هي:


  • لو:ملف الإدخال. في هذا المثال، نستخدم /dev/zero والتي سوف توفر تدفقًا من صفر بايت.
  • ل:ملف الإخراج. سنقوم بإنشاء ملف في الدليل الجذر، يسمى swapfile.
  • بسس:حجم الكتلة بالبايتات. يحدد هذا عدد البايتات التي يجب قراءتها من ملف الإدخال والكتابة إلى ملف الإخراج في المرة الواحدة.
  • عدد:كم عدد الكتل التي يجب قراءتها وكتابتها. اضرب هذا الرقم في bs القيمة للحصول على حجم الملف.

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576 في نافذة المحطة الطرفية

يتم توفير بعض الإحصائيات عند إنشاء الملف.

الناتج من sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576 في نافذة المحطة الطرفية


يمكننا رؤية عدد الكتل (السجلات) التي تمت كتابتها في الملف، وحجم الملف، والوقت المستغرق لإنشاء الملف، ومعدل نقل البيانات الفعال.

استخدم ls الأمر لرؤية الملف في الدليل الجذر:

ls /

ls / في نافذة المحطة الطرفية

تحضير ملف المبادلة

نحن بحاجة الى إعداد ملف المبادلة مع mkswap الأمر قبل أن نتمكن من استخدامه. لا نحتاج إلى توفير أي معلمات mkswap بخلاف المسار واسم الملف:

sudo mkswap /swapfile

sudo mkswap /swapfile في نافذة المحطة الطرفية


تم تجهيز الملف للاستخدام كملف مبادلة. لاحظ التحذير بشأن أذونات الملف. سنحتاج إلى تغييرها بحيث يكون المستخدم الجذر هو الوحيد الذي يمكنه القراءة والكتابة إلى ملف المبادلة.

استخدام ملف المبادلة

الأذونات الافتراضية ليبرالية للغاية، لذا نحتاج إلى تقييدها حتى يتمكن الجذر فقط من استخدام ملف المبادلة. استخدم chmod لتغيير أذونات الملف:

sudo chmod 600 /swapfile

sudo chmod 600 /swapfile في نافذة المحطة الطرفية

يؤدي هذا إلى إزالة جميع الأذونات من أعضاء مجموعة الملفات والآخرين، ولكنه يسمح لمالك الملف، الجذر، بقراءة الملف والكتابة إليه.

نحن بحاجة إلى استخدام swapon أمر لإعلام Linux بوجود ملف مبادلة جديد متاح للاستخدام. نحتاج فقط إلى توفير المسار واسم الملف:


sudo swapon /swapfile

sudo swapon /swapfile في نافذة المحطة الطرفية

ملف المبادلة نشط الآن.

إضافة ملف Swap إلى fstab

للتأكد من أن ملف المبادلة الخاص بك متاح بعد إعادة التشغيل، أضفه إلى /etc/fstab يمكنك استخدام أي محرر نصوص تفضله، ولكننا سنعرض العملية باستخدام محرر النصوص الرسومي Gedit.

sudo gedit /etc/fstab

sudo gedt /etc/fstab في نافذة طرفية

السطر الذي نحتاج إلى إضافته إلى أسفل الملف هو:

/swapfile none swap sw 0 0


/etc/fstab مع إبراز إدخال ملف المبادلة

الحقول هي:

  • نظام الملفات:المسار واسم ملف المبادلة.
  • نقطة التثبيت:الملف لم يتم تثبيته مثل نظام الملفات، لذا فإن الإدخال هو “لا شيء”.
  • يكتب:هذا هو “المبادلة”.
  • خيارات:في وقت التمهيد swapon -a سيتم استدعاء (بدء تشغيل جميع الأجهزة المحددة كمبادلة) من أحد نصوص التمهيد. يخبر هذا الخيار Linux بمعاملة هذا الإدخال كمورد مبادلة يجب أن يقع تحت سيطرة ذلك swapon -a الأمر. من الشائع أن نرى استخدام “الإعدادات الافتراضية” هنا لأن هناك اعتقادًا خاطئًا بين بعض مستخدمي Linux بأن هذا الحقل يتم تجاهله. وكما سنرى، فإن هذا ليس هو الحال. لذا فمن المنطقي استخدام الخيار الصحيح.
  • أحمق:يمكن ضبط هذا على الصفر. وهو غير ذي صلة في هذه الحالة.
  • يمر:يمكن ضبط هذا على الصفر. وهو غير ذي صلة في هذه الحالة.


احفظ التغييرات وأغلق المحرر.

التحقق من استخدام المبادلة

لمعرفة ما إذا كانت مساحة المبادلة الخاصة بك قيد الاستخدام، استخدم swapon الأمر مع --show خيار:

swapon --show

swapon --عرض في نافذة المحطة الطرفية

الأعمدة هي:

  • اسم:اسم قسم المبادلة أو ملف المبادلة.
  • يكتب:نوع جهاز المبادلة.
  • مقاس:حجم مورد المبادلة.
  • مستخدم:كمية مساحة المبادلة المستخدمة.
  • بريو:أولوية مساحة المبادلة هذه.

أولوية مساحة المبادلة

يتم تخصيص أولوية لكل مساحة مبادلة. إذا لم تقم بتوفير أولوية، فسيتم تخصيص أولوية تلقائيًا. الأولويات المخصصة تلقائيًا تكون سلبية دائمًا. يتراوح نطاق الأولويات التي يمكن تخصيصها يدويًا من 0 إلى 32767. يتم استخدام موارد المبادلة ذات الأولويات الأعلى أولاً.


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

لتعيين الأولوية، أضف pri= خيار (الأولوية) لـ /etc/fstab الإدخال. قم بتعديل السطر الذي أضفته إلى /etc/fstab لتبدو مثل هذا:

/swapfile none swap sw,pri=10 0 0

وهذا يعني إضافة pri=10 إلى حقل الخيارات، مفصولاً عن “sw” بفاصلة. لا تترك أي مسافات بين “sw” والفاصلة و”pri=10″. أعد تشغيل الكمبيوتر واستخدم swapon --show يأمر:

swapon -- show

swapon -- عرض في نافذة المحطة الطرفية


تم رفع أولوية مساحة المبادلة هذه إلى 10. وهو دليل إيجابي على أن حقل الخيارات في /etc/fstab لا يتم تجاهل الإدخال.

تبديل المساحة أصبح سهلاً

من خلال الشرح والتوضيح، يمكننا إنشاء ملف مبادلة جديد بسهولة وسرعة كما يلي:

sudo dd if=/dev/zero of=/swapfile2 bs=1024 count=104857

sudo mkswap /swapfile2

sudo chmod 600 /swapfile2

sudo swapon /swapfile2

ولنتأكد من نجاح الأمر:

swapon --show

sudo dd if=/dev/zero /of=/swapfile2 bs=1024 count=104857 في نافذة المحطة الطرفية

إذا كنت تريد أن تجعل هذا الانخفاض دائمًا، فاجعله في /etc/fstab ملف.

بوم. لقد تم إنجاز المهمة.


أضف تعليق