فایل Swap فضای اضافی نسبت به حافظه رم است که از طریق فضای دیسک سخت جانمایی می‌شود. در صورتی که حافظه رم به میزان کافی در دسترس نباشد، سیستم قدیمی‌ترین داده‌ها را به حافظه Swap انتقال می‌دهد و بنابراین فضا را برای اپلیکیشن‌های فعال خالی می‌کند.

درایوهای هارددیسک حتی آنهایی که به صورت solid-state هستند، سرعت پایین‌تری نسبت  به حافظه رم دارند. بنابراین، ضمن طراحی و استفاده از سیستم، جانمایی مقداری از رم با فضای مشخصی از Swap به عنوان پشتیبان ضروری خواهد بود. اندازه بهینه حافظه Swap برابر میزان رم است. در عین حال، گاهی اوقات می‌توان آن را تا ۲ برابر نیز درنظر گرفت.

سرورهای مجازی معمولاً عاری از فضای Swap هستند. در سرورهای  فیزیکی، این حافظه معمولاً به صورت اتوماتیک تنظیم می‌شود و در عین حال، می‌توان آن را بنابر مقاصدی خاص تغییر داد. در این آموزش قصد داریم که یک فایل Swap به اندازه ۴ گیگابایت ایجاد کنیم.

ساخت فایل Swap

ابتدا یک فایل ایجاد می‌کنیم و فضا را برای Swap به صورت “از پیش جانمایی” می‌کنیم.


sudo fallocate -l 4G /swap

ضمناً دسترسی را برای همه کاربران به جز روت به این فایل قطع می‌کنیم.


sudo chmod 600 /swap

تنظیم ناحیه Swap در فایل


sudo mkswap /swap

خروجی


Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)

no label, UUID=3c2ac0c0-3cc2-4571-b072-5f7d556acc88

با دستور زیر فایل Swap را فعال می‌کنیم.


sudo swapon /swap

برای فعالسازی آن پس از راه‌اندازی دوباره سیستم، فایل زیر را باز کنید.


sudo nano /etc/fstab

سپس خط زیر را در انتهای آن اضافه نمایید.


/swap swap swap defaults 0 0

بررسی فایل Swap

برای مشاهده اندازه و فضای مورد استفاده Swap کافی است که فرمان زیر را تایپ کنید.


sudo swapon --show

خروجی


NAME TYPE SIZE USED PRIO

/swap file 4G 0B -2

گزینه دون برای مشاهده حافظه رم و فایل Swap به کار می‌رود.


sudo free -h

خروجی


total used free shared buff/cache available

Mem: 1.9Gi 74Mi 1.8Gi 0.0Ki 115Mi 1.7Gi

Swap: 4.0Gi 0B 4.0Gi

تنظیمات Swappiness

Swappiness پارامتری است که به امکان می‌دهد سطح استفاده از Swap را در سیستم تنظیم کنید. مقادیر بالا از این پارامتر باعث می‌شود که عملکرد حافظه Swap نسبتاً فعال باشد و این در حالی است که مقادیر کمتر منجر به استفاده حداقلی از آن خواهد شد.

برای مشاهده مقدار کنونی این پارامتر داریم:


cat /proc/sys/vm/swappiness

خروجی


60

برای تنظیم مقدار نمونه ۲۰ به روش زیر عمل می‌کنیم. در عین حال، می‌توانید هر یک از اعداد بین صفر تا ۱۰۰ را وارد کنید.


sudo sysctl vm.swappiness=20

برای ذخیره این تنظیم پس از راه‌اندازی دوباره سیستم، فایل /etc/sysctl.conf را باز کنید و خط زیر را در آن قرار دهید.


vm.swappiness=20

حالا فایل را ذخیره کرده و ببندید.

حذف حافظه Swap

ابتدا Swap را غیرفعال کنید.


sudo swapoff /swap

سپس خط زیر را از فایل /etc/fstab بردارید.


/swap swap swap defaults 0 0

نهایتاً فایل را در فایل سیستمی  حذف کنید.


sudo rm /swap