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

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

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

ساخت فایل Swap

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

[php]

sudo fallocate -l 4G /swap

[/php]

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

[php]

sudo chmod 600 /swap

[/php]

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

[php]

sudo mkswap /swap

[/php]

خروجی

[php]

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

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

[/php]

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

[php]

sudo swapon /swap

[/php]

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

[php]

sudo nano /etc/fstab

[/php]

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

[php]

/swap swap swap defaults 0 0

[/php]

بررسی فایل Swap

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

[php]

sudo swapon –show

[/php]

خروجی

[php]

NAME TYPE SIZE USED PRIO

/swap file 4G 0B -2

[/php]

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

[php]

sudo free -h

[/php]

خروجی

[php]

total used free shared buff/cache available

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

Swap: 4.0Gi 0B 4.0Gi

[/php]

تنظیمات Swappiness

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

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

[php]

cat /proc/sys/vm/swappiness

[/php]

خروجی

[php]

60

[/php]

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

[php]

sudo sysctl vm.swappiness=20

[/php]

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

[php]

vm.swappiness=20

[/php]

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

حذف حافظه Swap

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

[php]

sudo swapoff /swap

[/php]

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

[php]

/swap swap swap defaults 0 0

[/php]

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

[php]

sudo rm /swap

[/php]