مقدمه: چرا دیسک در لینوکس پر میشود؟
بسیاری از کاربران لینوکس چه دسکتاپ، چه 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/*
موارد رایج:
syslogauth.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 ها این موضوع حیاتی تر است، زیرا منابع محدود هستند و کوچکترین غفلت میتواند باعث از کار افتادن کامل سرویس شود. اگر وضعیت دیسک را جدی بگیرید، از بسیاری از بحران های ناگهانی جلوگیری خواهید کرد.