شاید با خودتون فکر کنید: چرا ممکنه بخوام swap را بعد از نصب لینوکس اضافه کنم؟
مگه همیشه موقع نصب، فضای مناسب را در نظر نمیگیرم؟
در پاسخ باید بگم که بعضی وقتا ممکنه فراموش کنیم یا گاهی اوقات وقتی از یک ارایه دهنده خدمات مثل دیجیتالاوشن VPS میخریم، میبینیم که فضای swap در نظر نگرفتن.
فضای swap در تعریف خودمونی جایی هست که هر وقت ram پر میشه و قابل استفاده نیست، سیستمعامل از این فضا استفاده میکنه تا بتونه به کار خودش ادامه بده، در غیر این صورت ممکنه crash کنه و این برای یه سرور لینوکسی فاجعه هست. این مکانیزم توی سیستمعاملهای Unix Like با نام swap شناخته میشه و توی ویندوز با نام Page File.
به جز مورد بالا، سیستمعامل در صورتی که برنامهای برای مدت طولانی در حال اجرا باشه ولی از حافظه ram استفاده نکنه، برای افزایش سرعت و فراهم کردن منابع برای دیگر برنامهها، حافظه مربوط به اون برنامه را به swap انتقال میده پس در صورتی که بخواید سرورتون بار زیاد تحمل کنه و روشن بمونه وجود swap نقش حیاتی داره.
اگر نیاز دارید swap بسازید یا فضای swap برای سرور فعلی، مناسب نیست و به فضای بیشتری احتیاج دارید، دو راه وجود داره:
۱. فایل swap: این فایل میتونه روی هر مسیر از سرور شما باشه مثلا روی یک فلش که به سیستم متصل میکنید یا هر جای هارد.
این فایل را معمولا با fallocate یا dd میسازیم.
۲. پارتیشن swap: پارتیشنی هست که روی سرور شما مانت شده یا از کل پارتیشن موجود روی فلش شما مثل dev/sdb1/ استفاده میکنیم.
ابتدا نیاز داریم فایلی بسازیم که داخلش مقادیر ۰ وجود داشته باشه یا به عبارتی فایل خالی با حجم مورد نیاز مثلا ۱ گیگابایت.
dd if=/dev/zero of=/swap bs=1G count=1
یا با کمک fallocate
fallocate -l 1G /swap
حالا Permission فایل ساخته شده را به ۶۰۰ تغییر میدیم که اجازه دسترسی را ازبقیه یوزرها بگیریم.
chmod 600 /swap
فایل آماده شده و میتونیم به فضای swap تبدیلش کنیم.
mkswap /swap
و فعالش میکنیم
swapon /swap
حالا نیاز داریم که فایل رو به صورت همیشگی به سیستمعامل اضافه کنیم تا بعد از ریبوت شدن هم فعال بمونه.
برای این کار خط زیر رو به فایل etc/fstab/ اضافه میکنیم.
/swap none swap sw 0 0
حالا با free -h یا htop میتونیم ببینیم که swap به سرور اضافه شده.
اگر یک استوریج (به هر شکلی مثل فلش یا هارد یا…) به سرورتون اضافه کردین و میخواهید از اون استوریج به عنوان swap استفاده کنید، اول باید با دستور fdisk -l اسم دیوایس را پیدا کنید، مطمعن بشید که اسم درست را انتخاب کردین چون قراره تمام اطلاعات روی این دیوایس از بین بره.
اول نیاز دارید که یک پارتیشن بسازید.
— در صورتی که پارتیشن قبلا ساخته شده، میتونید به مرحله بعد برید
مثلا در صورتی که device name مورد نظر شما dev/sdb1/ هست میتونید پارتیشن را با سایز مورد نظر به وسیله parted یا fdisk بسازید.
حالا که پارتیشن ساخته شد، مثل مرحله قبل ادامه میدیم:
mkswap /dev/sdbX
X تو این مرحله شماره پارتیشنی هست که روی بلاک دیوایس دوم (sdb) ساختید یا از قبل وجود داشته.
swapon /dev/sdb1
حالا که swap ساخته و روشن شد، با اضافه کردنش به فایل etc/fstab/ به صورت پایدار در میاریم که بعد از ریبوت شدن کارایی داشته باشه.
/dev/sdb1 swap swap defaults 0 0