فایل 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