Swap — فضای تعویض حافظه
آشنایی با swap، اندازه مناسب، ساخت پارتیشن یا فایل swap و تنظیم swappiness.
Swap چیست؟
Swap فضایی روی دیسک است که هنگام پر شدن RAM برای نگهداری موقت دادههای کماستفاده بهکار میرود. هنگامی که سیستم به RAM بیشتری نیاز دارد، صفحاتی را که مدتها به آنها دسترسی نشده به swap میفرستد و RAM را برای پردازشهای فعال آزاد میکند.
Swap دو شکل دارد: پارتیشن swap (یک پارتیشن اختصاصی) یا فایل swap (یک فایل روی فایل سیستم ریشه).
Swap امروزه ضروری است؟
با RAM زیاد (مثلاً ۳۲ گیگابایت یا بیشتر) شاید فکر کنید swap دیگر نیازی نیست؛ با این حال، swap همچنان برای hibernation، جلوگیری از خطای OOM (Out of Memory) و حفظ پایداری سیستم در اوج مصرف مفید است.
پارتیشن swap یا فایل swap؟
| ویژگی | پارتیشن swap | فایل swap |
|---|---|---|
| سرعت | کمی سریعتر | تقریباً مشابه (روی SSD) |
| انعطافپذیری | ثابت، نیاز به پارتیشنبندی | قابل تغییر اندازه |
| پشتیبانی hibernation | بله | بله (با پیکربندی صحیح) |
| استفاده از دیسک | اختصاصی | روی فایل سیستم ریشه |
| مناسب برای | نصب تازه | اضافهکردن بعدی |
توصیه Gentoo
در نصب تازه Gentoo، یک پارتیشن swap اختصاصی بسازید. اگر بعداً نیاز به swap بیشتری داشتید، میتوانید یک فایل swap هم اضافه کنید.
اندازه مناسب swap
اندازه swap به مقدار RAM و کاربرد سیستم بستگی دارد:
| مقدار RAM | swap توصیهشده (دسکتاپ) | swap توصیهشده (سرور) |
|---|---|---|
| کمتر از ۲GB | ۲ برابر RAM | ۲ برابر RAM |
| ۲ تا ۸GB | برابر با RAM | ۱.۵ برابر RAM |
| ۸ تا ۳۲GB | نصف RAM | برابر با RAM |
| ۳۲ تا ۶۴GB | ۸GB | نصف RAM |
| بیشتر از ۶۴GB | ۸GB | ۴ تا ۸GB |
اگر میخواهید از hibernation استفاده کنید، swap باید حداقل برابر با RAM باشد.
ساخت پارتیشن swap
# ساخت پارتیشن swap با fdisk
fdisk /dev/sda
# در محیط fdisk:
# n → p → 2 → Enter → +8G → ساخت پارتیشن
# t → 2 → 82 → تغییر نوع به swap
# w → ذخیره و خروج
# ساخت فایل swap روی پارتیشن
mkswap /dev/sda2
# خروجی:
# Setting up swapspace version 1, size = 8 GiB (8589934592 bytes)
# no label, UUID=a1b2c3d4-...
# فعالکردن swap
swapon /dev/sda2
# بررسی
swapon --show
# خروجی:
# NAME TYPE SIZE USED PRIO
# /dev/sda2 partition 8G 0B -2ساخت فایل swap
اگر پارتیشن swap ندارید، میتوانید فایل swap بسازید:
# ساخت فایل ۴ گیگابایتی
fallocate -l 4G /swapfile
# یا با dd (کندتر اما قابلاعتمادتر روی برخی فایل سیستمها)
dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress
# تنظیم مجوزها (مهم!)
chmod 600 /swapfile
# ساخت swap روی فایل
mkswap /swapfile
# فعالکردن
swapon /swapfile
# تأیید
swapon --showفایل swap روی Btrfs
روی فایل سیستم Btrfs، fallocate و dd بهطور مستقیم کار نمیکنند. باید از دستور btrfs filesystem mkswapfile استفاده کنید.
افزودن به fstab
برای فعالشدن خودکار swap در هر بوت، آن را به فایل /etc/fstab اضافه کنید:
# /etc/fstab — پارتیشن swap
/dev/sda2 none swap sw 0 0
# یا با UUID (توصیه میشود)
UUID=a1b2c3d4-... none swap sw 0 0
# یا فایل swap
/swapfile none swap sw 0 0برای دریافت UUID:
blkid /dev/sda2
# خروجی:
# /dev/sda2: UUID="a1b2c3d4-5e6f-..." TYPE="swap" PARTLABEL="swap"تنظیم swappiness
پارامتر vm.swappiness در هسته کنترل میکند که سیستم چه میزان از swap استفاده کند. بازهٔ مقدار این پارامتر ۰ تا ۱۰۰ است:
0— فقط در صورت اضطرار از swap استفاده کن60— پیشفرض لینوکس (متعادل)100— استفاده تهاجمی از swap
# مشاهده مقدار فعلی
cat /proc/sys/vm/swappiness
# خروجی رایج:
# 60
# تنظیم موقت به ۱۰
sysctl vm.swappiness=10
# تنظیم دائمی
echo "vm.swappiness=10" >> /etc/sysctl.d/99-swappiness.conf
sysctl --load=/etc/sysctl.d/99-swappiness.confswappiness مناسب برای دسکتاپ
برای دسکتاپ با RAM کافی مقدار 10 توصیه میشود؛ به این ترتیب از کندی ناشی از swap بیمورد جلوگیری میکند. برای سرور، مقدار پیشفرض 60 معمولاً مناسب است.
اولویت swap
اگر چند swap دارید، میتوانید اولویت تعیین کنید تا سیستم از swap با اولویت بالاتر استفاده کند:
# /etc/fstab
/dev/sda2 none swap sw,pri=10 0 0
/swapfile none swap sw,pri=5 0 0خطاهای رایج
۱. خطای swapon failed: Device or resource busy
swapon: /dev/sda2: swapon failed: Device or resource busyدلیل: swap از قبل فعال شده است. راهحل:
# ابتدا غیرفعال کنید
swapoff /dev/sda2
# سپس دوباره فعال کنید
swapon /dev/sda2۲. عدم فعالشدن swap بعد از ریبوت
دلیل: ورودی swap در /etc/fstab وجود ندارد یا UUID اشتباه است. راهحل:
# دریافت UUID صحیح
blkid /dev/sda2
# اصلاح fstab
nano /etc/fstab۳. کندی سیستم بهدلیل swap تهاجمی
اگر سیستم کند شده و هارد/SSD مدام درگیر است، swappiness را کاهش دهید:
sysctl vm.swappiness=10خلاصه و مرحله بعد
Swap برای پایداری سیستم، پشتیبانی از hibernation و مدیریت اوج مصرف RAM ضروری است. انتخاب پارتیشن یا فایل swap به نیاز شما بستگی دارد، اما در نصب تازه Gentoo، پارتیشن swap توصیه میشود.
برای تنظیم کامل سیستم پارتیشنبندی، آموزش UEFI را ببینید. برای بهینهسازی عملکرد سیستم، به آموزش Performance (بهزودی) مراجعه کنید.
این صفحه در تاریخ ۱ تیر ۱۴۰۵ بهروزرسانی شده است.