آموزش جامع مدیریت فضای دیسک در لینوکس (اوبونتو)

مقدمه: چرا دیسک در لینوکس پر می‌شود؟

بسیاری از کاربران لینوکس چه دسکتاپ، چه VPS و چه سرورهای بزرگ تمرکز اصلی خود را روی نصب نرم‌افزار، امنیت یا راه‌اندازی سرویس‌ها می‌گذارند، اما از یکی از رایج‌ ترین مشکلات غافل می‌شوند: مدیریت فضای دیسک در لینوکس

پر شدن دیسک می‌تواند باعث مشکلات جدی شود:

  • از کار افتادن دیتابیس‌ها
  • توقف ثبت لاگ‌ها
  • اختلال در اجرای برنامه‌ها
  • و در سرورها و VPSها، حتی قطع کامل دسترسی SSH

در این مقاله یاد می‌گیریم چگونه با ابزارهای ساده و پیش‌فرض لینوکس اوبونتو، فضای دیسک را بررسی، تحلیل و مدیریت کنیم؛ به شکلی که هم برای کاربران عادی و هم مدیران سیستم کاربردی باشد.

گام ۱: بررسی وضعیت کلی دیسک با df

اولین قدم، داشتن یک دید کلی از پارتیشن‌ها و میزان فضای مصرف‌ شده است.

df -h

گزینه -h حجم‌ها را به‌صورت خوانا (MB و GB) نمایش می‌دهد.

در خروجی:

  • ستون Use% مهم‌ترین بخش است
  • اگر پارتیشنی مثل / یا /home بالای ۸۰٪ باشد، باید بررسی را آغاز کنید

برای مشاهده نوع فایل‌سیستم:

df -hT

این اطلاعات به‌خصوص برای مدیران سرور و VPS مهم است.

گام ۲: پیدا کردن پوشه‌های حجیم با du

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

sudo du -sh * | sort -h

توضیح:

  • -s مجموع حجم هر پوشه
  • -h نمایش خوانا
  • sort -h مرتب‌سازی از کوچک به بزرگ

در بسیاری از سیستم‌ها، مسیرهای زیر بیشترین مصرف را دارند:

  • /var
  • /home
  • /opt

مثال رایج:

sudo du -sh /var/* | sort -h

گام ۳: مدیریت آسان‌تر با ncdu

برای بررسی سریع، ابزار ncdu بسیار کاربردی است.

نصب ncdu در اوبونتو

sudo apt update
sudo apt install ncdu -y

اجرا ncdu

sudo ncdu /
#یا تعیین یک مسیر مشخص
sudo ncdu /var

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

گام ۴: بررسی لاگ‌ها (مهم‌ترین عامل پر شدن دیسک)

در لینوکس، لاگ‌ها معمولاً در مسیر /var/log ذخیره می‌شوند و اگر مدیریت نشوند، به‌سرعت دیسک را پر می‌کنند.

sudo du -sh /var/log/*

موارد رایج:

  • syslog
  • auth.log
  • لاگ‌های nginx / apache
  • لاگ‌های Docker

گام ۵: مدیریت خودکار لاگ‌ها با logrotate

ابزار logrotate به‌صورت پیش‌فرض برای کنترل حجم لاگ‌ها استفاده می‌شود.

بررسی تنظیمات:

ls /etc/logrotate.d/

مدیران سیستم باید مطمئن شوند که سرویس‌های مهم دارای تنظیم logrotate هستند، در غیر این صورت لاگ‌ها بدون محدودیت رشد می‌کنند.

گام ۶: فایل‌های حذف‌شده اما هنوز در حال استفاده

گاهی با وجود حذف فایل‌ها، فضای دیسک آزاد نمی‌شود. دلیل آن این است که یک process هنوز فایل را باز نگه داشته است.

بررسی:

sudo lsof | grep deleted

نکته: در این شرایط، معمولاً با restart کردن سرویس مورد نظر فضای دیسک آزاد می‌شود. به عنوان مثال وقتی یک فایل را حذف میکنید ورودی آن از دایرکتوری حذف می‌شود اما اگر یک پروسس هنوز آن فایل را باز نگه داشته باشد، کرنل اجازه نمی‌دهد فضای آن آزاد شود چون پروسس هنوز یک file descriptor (FD) فعال به آن فایل دارد. در اینجا تا زمانی که سرویس MySQL ریستارت نشود یا فایل را نبندد، فضای فایل حذف‌شده آزاد نمی‌شود پس باید آن را restart کرد.

sudo systemctl restart mysql

نکته: همچنین با ریستارت کردن سیستم‌عامل، تمام پروسس‌ها بسته می‌شوند و فضای فایل‌های حذف‌شده آزاد می‌شود اما این کار به دلایل زیر باید آخرین راه حل باشد:

  • ریستارت downtime ایجاد می‌کند
  • سرویس‌ها و کانتینرها از کار می‌افتند
  • ممکن است کاربران یا سایت‌ ها دچار اختلال شوند
    به همین دلیل معمولاً اول سرویس مربوطه را restart می‌ کنیم اما اگر مشکل از چند سرویس مختلف باشد ریستارت سیستم عامل میتواند یکی از گزینه های سریع باشد!

گام ۷: بررسی inode (فضا هست ولی فایل ساخته نمی‌شود)

گاهی فضای دیسک خالی است اما امکان ساخت فایل جدید وجود ندارد. این مشکل معمولاً به دلیل تمام شدن inode رخ می‌ دهد.

df -ih

این وضعیت اغلب به‌خاطر وجود تعداد بسیار زیاد فایل‌های کوچک ایجاد می‌شود.

نکات کاربردی در مورد inode

واقعیت این است که در اکثر مواقع این مشکل در سرور ها رخ می‌دهد، اما کاربران دسکتاپ هم کاملاً از آن مصون نیستند. در واقع، درک Inode برای یک مدیر سرور حیاتی و برای یک کاربر دسکتاپ یک دانستنی مفید است!

چرا در سرورها یک بحران است؟
در سرور (مخصوصاً VPS)، سرویس‌هایی اجرا می‌شوند که به صورت خودکار فایل می‌سازند:

سرویس‌های ایمیل: هر یک ایمیل، یک فایل کوچک است. سروری که اسپم بخورد، میلیون‌ ها فایل ریز می‌سازد و Inode را تمام می‌کند.

کش دیتابیس و سشن‌ها (Sessions): وب‌سایت‌هایی با ترافیک بالا اگر سیستم پاکسازی نداشته باشند، میلیون‌ها فایل سشن کوچک می‌سازند.

داکر (Docker): داکر برای هر لایه از کانتینر، تعداد زیادی فایل و لینک ایجاد می‌کند که به شدت مصرف اینود را بالا می‌برد.

نکات کاربردی برای کاربران دسکتاپ اوبونتو

پاک‌سازی کش بسته‌ها

sudo apt clean

حذف بسته‌های غیرضروری

sudo apt autoremove

بررسی حجم Snap ها

du -sh /var/lib/snapd

بخش ویژه: مدیریت فضای دیسک در VPS

مدیریت دیسک در VPS حساس‌تر از سرور اختصاصی است، زیرا:

  • فضای دیسک محدود است (مثلاً 20 یا 40 گیگ)
  • معمولاً همه‌چیز روی یک پارتیشن قرار دارد (معمولا در بیشتر مواقع)
  • پر شدن دیسک می‌تواند باعث down کامل VPS شود

نکات مهم مخصوص VPS

بررسی فضا قبل از آپدیت

قبل از اجرای آپدیت سیستم:

df -h /

اگر فضای آزاد کم است، ابتدا پاک‌سازی انجام دهید.

توجه ویژه به /var در VPS

در VPSها معمولاً این موارد باعث پر شدن /var می‌شوند:

  • لاگ‌ها
  • cache پکیج‌ها
  • دیتابیس‌ها
  • Docker images

بررسی دوره‌ای /var باید جزو روتین مدیر VPS باشد.

Snap؛ دام پنهان در VPS

Snap در اوبونتو نسخه‌های قدیمی را نگه می‌دارد.

بررسی:

snap list --all

کاهش نگه‌داری نسخه‌ها:

sudo snap set system refresh.retain=2

Docker و مصرف دیسک در VPS

Docker یکی از رایج‌ترین دلایل پر شدن ناگهانی دیسک در VPS است.

بررسی:

docker system df

پاک‌سازی امن:

docker system prune

دستور docker system prune به‌صورت پیش‌فرض کانتینرهای متوقف‌شده، شبکه‌های بلا استفاده، ایمیج‌های dangling و build cache را حذف می‌کند. این دستور ایمیج‌های دارای تگ و volumeها را حذف نمی‌کند، مگر اینکه صراحتاً از فلگ –volumes استفاده شود.

بکاپ‌ها را روی VPS نگه ندارید

بکاپ‌ های محلی، dump دیتابیس و archive های قدیمی می‌توانند به‌سرعت دیسک VPS را پر کنند. نگه‌داری بکاپ روی خود VPS فقط باید موقتی باشد.

*قبل از مدیریت دیسک، حتماً امنیت SSH سرور خود را چک کنید

جمع‌بندی

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

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