دیسک و Swap در VPS و بهینه سازی آن

پیکربندی دیسک و Swap بهینه در VPS

اگر یک VPS با رم محدود دارید، سرعت واقعی تان را پیکربندی دیسک و Swap در VPS تعیین می کند؛ همان جایی که برنامه ها در ترافیک I/O گیر می کنند یا نرم و روان می دوند. در این مقاله اسپاد سرور، از تصمیم های کوچک اما اثرگذار می گوییم: از فایل سیستم و گزینه های mount تا اندازه ی Swap، zram، و ریزتنظیمات کرنل. نتیجه؟ تاخیر کمتر، پایداری بیشتر، و مصرف هوشمندانه ی منابع.

ایجاد swap در لینوکس

ایجاد Swap در لینوکس به معنای اختصاص فضایی از دیسک برای استفاده به عنوان حافظه مجازی است. وقتی رم (RAM) سیستم پر می شود، هسته لینوکس داده های غیرفعال را به فضای Swap منتقل می کند تا حافظه فیزیکی برای پردازش های فعال آزاد بماند. این فضا می تواند به صورت یک پارتیشن مستقل یا یک فایل Swap ساخته شود. گرچه استفاده از Swap سرعتی کمتر از RAM دارد، اما برای جلوگیری از کرش شدن برنامه ها و بهبود پایداری سیستم در شرایط بار سنگین بسیار ضروری است.

مراحل ایجاد Swap در لینوکس به صورت مختصر

  1. ساخت فایل Swap (مثلا ۲ گیگ):

sudo fallocate -l 2G /swapfile

۲. تنظیم سطح دسترسی:

sudo chmod 600 /swapfile

۳. ایجاد Swap روی فایل:

sudo mkswap /swapfile

۴. فعال ‌سازی Swap:

sudo swapon /swapfile

۵. دائمی کردن (اضافه به /etc/fstab):

/swapfile none swap sw 0 0

مراحل ساخت پارتیشن Swap در لینوکس

پارتیشن جدید روی دیسک بسازید (با ابزارهایی مثل fdisk یا parted) و نوع آن را Linux swap قرار بدهید.

  1. فرمت پارتیشن به Swap:

sudo mkswap /dev/sdXn

(به‌جای sdXn نام پارتیشن جدید رو بگذارید. مثل /dev/sdb2).

۲. فعال ‌سازی پارتیشن:

sudo swapon /dev/sdXn

۳. دائمی کردن (افزودن به /etc/fstab):

/dev/sdXn none swap sw 0 0

تفاوت آن با فایل Swap این است که این روش مستقیم روی دیسک اجرا می شود. و برای سرورهای پرمصرف یا نیاز به Swap پایدار، بیشتر توصیه می شود.

۱) انتخاب فایل سیستم و گزینه های Mount برای دیسک و Swap در VPS

برای اکثر سرور مجازی ها، ext4 انتخابی امن و کاربردی است؛ XFS برای حجم های بزرگ و فایل های درشت (بکاپ/مدیا) عالی عمل می‌کند. صرفا انتخاب FS کافی نیست؛ گزینه‌های mount هم مهم اند:

  • noatime را فعال کنید تا هر خواندن، زمان دسترسی فایل را به روز نکند.
  • روی SSD/NVMe از TRIM استفاده کنید؛ به‌جای discard همیشگی، زمان بندی دوره ای بهتر است:
    systemctl enable --now fstrim.timer
    
  • نمونه ی fstab برای روت ext4:
    UUID=...  /  ext4  defaults,noatime  0 1
    
  • اگر بار کاریتان بیشتر ترتیبی است تا تصادفی (streaming/backup)، اندازه‌ی readahead را کمی بالا ببرید:
    blockdev --getra /dev/vda
    blockdev --setra 256 /dev/vda
    

نکته: در VPS ها حتی در سرور مجازی پیشرفته ، کنترل مستقیم scheduler همیشه ممکن نیست، اما اگر NVMe واقعی دارید، بررسی کنید:

cat /sys/block/nvme0n1/queue/scheduler
برای NVMe معمولا 'none' مناسب است.

۲) طرح پارتیشن و LVM؛ انعطاف + امنیت دیسک و Swap در VPS

اگر ارائه دهنده اجازه می دهد، از LVM استفاده کنید تا بعدا بتوانید منطقی و بی دردسر حجم ها را بزرگ/کوچک کنید. برای سرویس هایی مثل دیتابیس یا لاگ های حجیم:

  • /var/log را جدا کنید تا پر شدن لاگ، سیستم را از کار نیندازد.
  • دیتای دیتابیس را روی یک LV مجزا بگذارید تا مانیتورینگ و رشد حجم ساده تر شود.

در بسیاری از ایمیج های ابری فقط یک پارتیشن روت دارید؛ همان هم خوب است، اما با LVM و جداسازی مسیرهای حساس، ریسک های عملیاتی کاهش می یابد.

اگر نیاز به راهنمایی برای خرید هاست اقتصادی و دامنه و سرور مجازی  دارید، متخصصان با تجربه اسپاد سرور آماده خدمت به شما هستند. برای تماس با ما، روی “تماس با اسپاد سرور” کلیک کنید.

دیسک و Swap در VPS

دیسک و Swap در VPS

۳) Swap: چقدر، کجا و چگونه؟

Swap دشمن شما نیست؛ کمربند ایمنی است. اندازه‌ی RAM×۲ دیگر نسخه ی عمومی خوبی نیست. راهنمای عملی سواپ در بهینه سازی دیسک و Swap در VPS:

  • RAM ≤ 2GB: حداقل ۱–2GB Swap (برای امنیت در اوج مصرف).
  • RAM 4–8GB: حدود ۱–2GB کافی است.
  • RAM ≥ 16GB: ۲–4GB برای خطاهای لبه ای و نگه داشتن کش ها.

روی SSD/NVMe، swapfile انعطاف پذیرتر از پارتیشن است و روی ext4/XFS به خوبی کار می کند.

ایجاد swapfile پیشنهادی 2GB:

fallocate -l 2G /swapfile || dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile  swap  swap  defaults,pri=10  0  0' >> /etc/fstab

نکته: در بعضی محیط های container یا OpenVZ، Swap را هاست کنترل می کند و داخل VPS قادر به افزودن آن نیستید.

۴) zram: هوشمندانه تر از دیسک

اگر در دیسک و Swap در VPS رم کم است و I/O دیسک گلوگاه می شود، zram (فشرده سازی حافظه ی در حال استفاده به‌عنوان swap) معمولا بهتر از ضربه زدن به SSD است؛ تاخیر کمتر، نوشتن کمتر روی دیسک. روی توزیع های Debian/Ubuntu لینوکس:

apt update && apt install -y zram-tools
# سپس /etc/default/zramswap را تنظیم کنید، مثلا:
# ALGO=zstd
# PERCENT=50
systemctl enable --now zramswap

ترکیب مقدار کم swapfile + zram غالبا تعادل خوبی بین کارایی و پایداری ایجاد می‌کند.

دیسک و Swap در VPS

دیسک و Swap در VPS

۵) ریزتنظیمات کرنل برای Swap و کش | بهینه سازی دیسک و Swap در VPS

دو کلید پرکاربرد:

  • swappiness: تمایل کرنل به swap کردن. برای سرورهای وب/اپ با SSD: ۱۰ تا ۲۰.
    sysctl -w vm.swappiness=15
    echo 'vm.swappiness=15' > /etc/sysctl.d/99-swap-tuning.conf
    
  • vfs_cache_pressure: تعادل بین نگهداری کش inode/dentry و آزادسازی آن. مقدار ۵۰–۱۰۰ را تست کنید؛ ۵۰ کش بیشتر نگه می دارد (به نفع سرعت فایل سیستم)، ۱۰۰ حالت پیش فرض است.
    sysctl -w vm.vfs_cache_pressure=80
    echo 'vm.vfs_cache_pressure=80' > /etc/sysctl.d/99-fs-cache.conf
    

اگر بار نوشتن سنگینی دارید، پارامترهای dirty (مثل vm.dirty_background_ratio) هم قابل تنظیم اند، اما بدون مانیتورینگ دقیق، تغییرشان را توصیه نمی کنیم.

۶) مانیتورینگ دیسک و Swap در VPS : حدس نزنید، اندازه بگیرید

قبل از هر تغییر و بعد از آن، شاخص ها را بسنجید:

  • iostat -xz 1: درصد اشغال دیسک و زمان انتظار.
  • iotop: کدام پردازش ها I/O می خورند.
  • vmstat 1: swap in/out و صف های اجرا.
  • sar / dstat: روندهای تاریخی.

اگر می بینید si/so در vmstat بالا می رود یا await در iostat جهش دارد، رم/Swap/دیسک یا الگوی دسترسیتان نیاز به بازنگری دارد.

۷) چند الگوی عملی برای سناریوهای رایج دیسک و Swap در VPS

  • VPS وردپرسی ۲–۴GB RAM روی SSD
    ext4 + noatime، swapfile ۱–2GB، zram 25–۵۰% رم، vm.swappiness=15، fstrim.timer فعال. اگر php-fpm و mysqld کنار هم اند، مانیتورینگ iostat/iotop ضروری است.
  • سرویس دانلود/بکاپ
    XFS، readahead بالاتر (مثلا ۲۵۶–۵۱۲)، جدا کردن مسیر دیتا با LVM، و فضای Swap حداقلی (۱–۲GB) کافی است.
  • VPS دیتابیس سبک
    ext4 یا XFS، جداسازی دیتای DB روی LV، noatime، Swap 2GB برای شرایط خاص، swappiness پایین (۱۰–۱۵)، و توجه ویژه به مانیتورینگ latency دیسک.

۸) چک لیست بهینه سازی دیسک و Swap در VPS

  • فایل سیستم مناسب (ext4/XFS) + noatime
  • فعال سازی fstrim.timer برای SSD/NVMe
  • طراحی منطقی پارتیشن/LVM برای مسیرهای حساس
  • swapfile کوچک اما کافی + اولویت مناسب (pri)
  • zram برای رم های کم یا بار burst
  • vm.swappiness حدود ۱۰–۲۰ و vfs_cache_pressure بهینه
  • سنجش قبل/بعد با iostat، iotop، vmstat

این تغییرات کوچک، مثل پیچ گوشتی های دقیق در جعبه ابزار شما هستند: شاید ساده به نظر برسند، اما یک به یک که درست تنظیم شوند، VPS شما در شلوغ ترین ساعات هم خونسرد و قابل اعتماد می ماند.

arman

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *