آموزشی لینوکس

دیسک VPS پر شده؛ چگونه بفهمیم چه چیزی فضای سرور را مصرف کرده است؟

راهنمای کامل پیدا کردن علت پر شدن فضای دیسک VPS و مدیریت آن

یکی از مشکلات رایج در مدیریت سرورهای VPS، پر شدن فضای دیسک است. زمانی که فضای ذخیره‌سازی سرور به پایان می‌رسد، ممکن است سرویس‌های مختلفی مانند وب‌سرور، دیتابیس، ایمیل یا حتی خود سیستم‌عامل با اختلال مواجه شوند. در بعضی موارد نیز سرور به‌طور ناگهانی خطاهایی مانند No space left on device نمایش می‌دهد.

اما سؤال اصلی این است: چگونه بفهمیم چه چیزی فضای VPS را مصرف کرده است؟ در این مقاله، مرحله‌به‌مرحله روش پیدا کردن فایل‌ها، پوشه‌ها، لاگ‌ها و سرویس‌هایی که بیشترین فضای دیسک را اشغال کرده‌اند بررسی می‌کنیم.

ابتدا میزان فضای خالی دیسک را بررسی کنید

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

df -h

خروجی معمولاً چیزی شبیه نمونه زیر است:

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        80G   76G  1.2G  99% /

مهم‌ترین ستون در این خروجی، ستون Use% است. در مثال بالا، پارتیشن اصلی سرور ۹۹ درصد پر شده و تنها حدود ۱.۲ گیگابایت فضای خالی باقی مانده است. اگر چند پارتیشن دارید، با همین دستور می‌توانید مشخص کنید مشکل مربوط به کدام پارتیشن است.

تفاوت df و du

دو دستور بسیار مهم برای بررسی فضای دیسک وجود دارد:

  • df میزان فضای استفاده‌شده در فایل‌سیستم را نشان می‌دهد.
  • du مشخص می‌کند فایل‌ها و پوشه‌ها چه مقدار فضا مصرف کرده‌اند.

بنابراین معمولاً ابتدا با df وضعیت کلی را بررسی می‌کنیم و سپس با du به دنبال عامل اصلی مصرف فضا می‌گردیم.

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

پس از مشخص شدن پارتیشن، باید ببینیم کدام پوشه باعث پر شدن دیسک شده است. برای بررسی پوشه‌های سطح اصلی سیستم، دستور زیر بسیار کاربردی است:

sudo du -xh --max-depth=1 / 2>/dev/null | sort -h

این دستور حجم تقریبی پوشه‌هایی مانند موارد زیر را نمایش می‌دهد:

1.5G    /home
3.2G    /opt
8.7G    /var
12G     /usr
30G     /

اگر در این خروجی مشاهده کردید که مثلاً /var حجم بسیار زیادی دارد، مرحله بعدی بررسی همین پوشه است.

🚀 سرور مجازی ایران با کیفیت و پشتیبانی واقعی

آیا از کندی سرور، قطعی‌های مکرر و پشتیبانی ضعیف خسته شده‌اید؟ ایرانیکا سرور با ارائه سرور مجازی ایران و VPS لینوکسی پرسرعت، پایداری بالا و پشتیبانی ۲۴/۷، تجربه‌ای متفاوت را برای شما رقم می‌زند.

همین حالا سرور مجازی خود را با بهترین قیمت و بالاترین کیفیت تهیه کنید و کسب‌وکار آنلاین خود را متحول سازید.

⚡ تحویل فوری | پشتیبانی ۲۴ ساعته | تضمین بازگشت وجه

بررسی دقیق‌تر پوشه /var

پوشه /var یکی از مهم‌ترین محل‌هایی است که ممکن است به مرور زمان حجم زیادی از دیسک را مصرف کند. در این مسیر معمولاً اطلاعات متغیری مانند موارد زیر قرار می‌گیرند:

  • لاگ‌های سیستم
  • لاگ وب‌سرور
  • فایل‌های کش
  • اطلاعات سرویس‌ها
  • دیتابیس‌ها
  • صف ایمیل
  • فایل‌های موقت

برای بررسی حجم زیرپوشه‌های /var:

sudo du -xh --max-depth=1 /var 2>/dev/null | sort -h

ممکن است مثلاً خروجی زیر را ببینید:

500M    /var/cache
2.1G    /var/log
18G     /var/lib
23G     /var

در این حالت مشخص است که /var/lib بخش بزرگی از فضای دیسک را مصرف کرده است.

اگر /var/log بزرگ بود چه کار کنیم؟

یکی از دلایل رایج پر شدن VPS، رشد بیش از حد فایل‌های لاگ است. برای بررسی آن:

sudo du -xh --max-depth=1 /var/log 2>/dev/null | sort -h

همچنین می‌توانید فایل‌های بزرگ لاگ را با دستور زیر پیدا کنید:

sudo find /var/log -type f -size +100M -exec ls -lh {} \;

ممکن است فایل‌هایی مانند موارد زیر حجم زیادی داشته باشند:

  • /var/log/syslog
  • /var/log/auth.log
  • /var/log/nginx/access.log
  • /var/log/nginx/error.log

در سرورهایی که ترافیک زیادی دارند، لاگ وب‌سرور می‌تواند در مدت کوتاهی بسیار بزرگ شود.

نکته مهم: قبل از حذف لاگ‌ها، بهتر است علت رشد آن‌ها را پیدا کنید. حذف کردن فایل لاگ بدون بررسی تنظیمات logrotate ممکن است باعث شود مشکل دوباره تکرار شود.

برای بررسی وضعیت لاگ‌روتیت:

sudo logrotate -d /etc/logrotate.conf

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

ls -lah /etc/logrotate.d/

پیدا کردن فایل‌های بسیار بزرگ

گاهی مشکل مربوط به یک پوشه نیست، بلکه یک یا چند فایل بسیار بزرگ باعث پر شدن دیسک شده‌اند. برای پیدا کردن فایل‌های بزرگ‌تر از ۱ گیگابایت:

sudo find / -type f -size +1G -exec ls -lh {} \; 2>/dev/null

اگر می‌خواهید فایل‌های بزرگ‌تر از ۵۰۰ مگابایت را پیدا کنید:

sudo find / -type f -size +500M -exec ls -lh {} \; 2>/dev/null

این روش برای پیدا کردن مواردی مانند فایل‌های Backup، لاگ‌های حجیم، Dump دیتابیس و فایل‌های موقت بسیار مفید است.

بررسی مصرف فضای Docker

اگر روی VPS از Docker استفاده می‌کنید، Docker یکی از مواردی است که باید حتماً بررسی شود. برای مشاهده میزان فضای مصرف‌شده:

docker system df

خروجی می‌تواند اطلاعاتی درباره مصرف فضای موارد زیر نمایش دهد: Images، Containers، Local Volumes و Build Cache. برای جزئیات بیشتر:

docker system df -v

گاهی اوقات Imageهای قدیمی، Containerهای متوقف‌شده یا Volumeهای بدون استفاده حجم زیادی از دیسک را اشغال می‌کنند.

احتیاط در پاک‌سازی Docker: دستورهایی مانند docker system prune می‌توانند اطلاعات بدون استفاده را حذف کنند. بنابراین قبل از اجرای دستورات پاک‌سازی، مطمئن شوید چیزی که حذف می‌شود مورد نیاز سرویس‌های فعلی نیست.

بررسی دیتابیس‌ها

اگر روی VPS از MySQL، MariaDB یا PostgreSQL استفاده می‌کنید، دیتابیس نیز می‌تواند یکی از عوامل اصلی مصرف فضای دیسک باشد. برای MySQL و MariaDB، معمولاً فایل‌های داده در مسیرهایی مانند زیر قرار دارند:

/var/lib/mysql

برای بررسی حجم آن:

sudo du -sh /var/lib/mysql

در PostgreSQL نیز می‌توانید مسیر داده را بررسی کنید. اگر حجم دیتابیس زیاد شده است، فقط حذف فایل‌های داخل پوشه دیتابیس راه‌حل مناسبی نیست. عملیات مربوط به دیتابیس باید از طریق ابزارها و دستورات خود دیتابیس انجام شود. همچنین Backupهای دیتابیس را نیز بررسی کنید؛ گاهی فایل‌های Dump قدیمی فضای زیادی اشغال می‌کنند.

بررسی Backupها

Backup یکی دیگر از دلایل متداول پر شدن فضای VPS است. ممکن است یک سیستم Backup به‌صورت روزانه یا هفتگی فایل‌هایی تولید کند، اما فایل‌های قدیمی هرگز حذف نشوند. برای پیدا کردن پوشه‌های حجیم:

sudo du -xh --max-depth=2 / 2>/dev/null | sort -h | tail -30

به دنبال مسیرهایی مانند موارد زیر باشید:

  • /backup
  • /backups
  • /home/*/backup
  • /var/backups

اگر Backupها عامل اصلی هستند، بهتر است به‌جای حذف تصادفی آن‌ها، سیاست نگهداری مشخصی تعریف کنید؛ مثلاً نگهداری تعداد مشخصی از نسخه‌های روزانه و هفتگی.

پیدا کردن فایل‌های حذف‌شده اما هنوز در حال استفاده

یکی از موارد جالب در لینوکس این است که گاهی یک فایل حذف شده، اما یک پردازش هنوز آن فایل را باز نگه داشته است. در چنین شرایطی ممکن است df -h نشان دهد فضای زیادی مصرف شده، اما با du نتوانید همان میزان مصرف را پیدا کنید. برای بررسی این وضعیت:

sudo lsof +L1

یا:

sudo lsof | grep deleted

ممکن است خروجی چیزی شبیه این باشد:

nginx   1234   ...   /var/log/nginx/access.log (deleted)

یعنی فایل حذف شده، اما پردازش هنوز آن را باز نگه داشته است. در چنین شرایطی معمولاً باید سرویس مربوطه را به‌صورت صحیح Reload یا Restart کرد تا فایل بازشده آزاد شود.

استفاده از ابزارهای تعاملی برای پیدا کردن فایل‌های حجیم

اگر می‌خواهید بررسی دیسک راحت‌تر و سریع‌تر انجام شود، ابزارهایی مانند ncdu بسیار کاربردی هستند. در سیستم‌های مبتنی بر Debian یا Ubuntu:

sudo apt install ncdu

سپس:

sudo ncdu /

در سیستم‌های مبتنی بر RHEL یا CentOS ممکن است بتوانید آن را با مدیر بسته سیستم نصب کنید. مزیت ncdu این است که حجم پوشه‌ها را به شکل تعاملی نمایش می‌دهد و می‌توانید وارد پوشه‌های مختلف شوید تا سریعاً متوجه شوید فضای دیسک کجا مصرف شده است.

اگر دیسک ۱۰۰ درصد پر شده باشد چه کنیم؟

وقتی دیسک کاملاً پر شود، ممکن است حتی بعضی دستورات و سرویس‌ها نیز با مشکل مواجه شوند. در چنین شرایطی ابتدا باید مقدار کمی فضا آزاد کنیم تا بتوانیم بررسی‌های دقیق‌تر را انجام دهیم. یکی از مواردی که معمولاً ارزش بررسی دارد Cache سیستم است. برای سیستم‌های Debian/Ubuntu:

sudo apt clean

اما این دستور را فقط در صورتی اجرا کنید که بدانید Cache بسته‌ها نیازی برای شما ندارد. همچنین می‌توانید فایل‌های موقت را بررسی کنید:

sudo du -sh /tmp

نکته مهم: در زمان پر بودن دیسک، نباید به‌صورت تصادفی فایل‌ها را حذف کنید. حذف فایل‌های سیستمی یا فایل‌های دیتابیس می‌تواند باعث از کار افتادن سرویس یا حتی آسیب به اطلاعات شود.

چرا df و du گاهی اعداد متفاوتی نشان می‌دهند؟

یکی از سؤالات رایج مدیران سرور این است که چرا مثلاً df -h می‌گوید ۸۰ گیگابایت استفاده شده، اما مجموع خروجی du فقط ۶۰ گیگابایت است. یکی از دلایل مهم این اختلاف، فایل‌های حذف‌شده‌ای است که هنوز توسط یک پردازش باز هستند. برای بررسی:

sudo lsof +L1

موارد دیگری مانند فایل‌سیستم‌های Mount شده، Reservationهای فایل‌سیستم و تفاوت نوع محاسبه فضا نیز می‌توانند باعث اختلاف شوند. بنابراین اگر اختلاف قابل توجهی بین df و du مشاهده کردید، آن را نادیده نگیرید.

یک روش سریع برای عیب‌یابی

اگر بخواهیم یک مسیر ساده و عملی برای پیدا کردن علت پر شدن VPS داشته باشیم، می‌توانیم این مراحل را دنبال کنیم:

  1. مرحله اول: بررسی وضعیت دیسک
    df -h
  2. مرحله دوم: پیدا کردن پوشه‌های حجیم
    sudo du -xh --max-depth=1 / 2>/dev/null | sort -h
  3. مرحله سوم: ورود به پوشه حجیم. مثلاً اگر /var بزرگ بود:
    sudo du -xh --max-depth=1 /var 2>/dev/null | sort -h
  4. مرحله چهارم: پیدا کردن فایل‌های بسیار بزرگ
    sudo find / -type f -size +1G -exec ls -lh {} \; 2>/dev/null
  5. مرحله پنجم: بررسی فایل‌های حذف‌شده
    sudo lsof +L1
  6. مرحله ششم: بررسی Docker در صورت استفاده
    docker system df

با همین چند دستور، در بسیاری از موارد می‌توان علت اصلی پر شدن دیسک را پیدا کرد.

چه چیزهایی معمولاً باعث پر شدن دیسک VPS می‌شوند؟

به‌طور کلی، عوامل زیر از رایج‌ترین دلایل هستند:

  • لاگ‌های بسیار بزرگ
  • Backupهای قدیمی
  • فایل‌های Dump دیتابیس
  • رشد دیتابیس
  • Docker Images و Volumes
  • Cache سرویس‌ها
  • فایل‌های موقت
  • فایل‌های آپلودی کاربران
  • فایل‌های حذف‌شده اما همچنان باز
  • تنظیم نبودن Log Rotation

بنابراین صرفاً افزایش حجم دیسک همیشه بهترین راه‌حل نیست. اگر علت اصلی شناسایی نشود، ممکن است چند هفته یا چند ماه بعد دوباره همان مشکل تکرار شود.

چگونه از پر شدن دوباره دیسک جلوگیری کنیم؟

بعد از پیدا کردن علت مشکل، بهتر است برای جلوگیری از تکرار آن چند اقدام انجام دهید.

  1. مانیتورینگ فضای دیسک: می‌توانید برای فضای دیسک هشدار تعریف کنید تا مثلاً زمانی که مصرف به ۸۰ یا ۹۰ درصد رسید، اطلاع‌رسانی انجام شود.
  2. تنظیم Log Rotation: برای لاگ‌ها محدودیت حجم و مدت نگهداری تعیین کنید تا فایل‌های قدیمی بی‌نهایت رشد نکنند.
  3. مدیریت Backup: Backupها باید دارای سیاست مشخص برای نگهداری و حذف نسخه‌های قدیمی باشند.
  4. بررسی دوره‌ای Docker: در سرورهای Docker، حجم Imageها، Containerها، Volumeها و Build Cache را به‌صورت دوره‌ای بررسی کنید.
  5. بررسی رشد دیتابیس: اگر دیتابیس به‌سرعت رشد می‌کند، باید مشخص شود چه داده‌هایی باعث این رشد شده‌اند و آیا سیاست آرشیو یا حذف داده‌های قدیمی مورد نیاز است یا خیر.

🔧 مشکل دیسک VPS خود را دارید؟ ما رایگان بررسی می‌کنیم!

اگر همچنان با مشکل پر شدن فضای دیسک سرور خود مواجه هستید و نمی‌دانید چه کاری انجام دهید، نگران نباشید. تیم فنی ایرانیکا سرور آماده است تا مشکل شما را به‌صورت رایگان بررسی کند و راه‌حل مناسب را ارائه دهد.


📩 ثبت درخواست بررسی و رفع مشکل

پاسخگویی سریع | بررسی تخصصی | راه‌حل قطعی

جمع‌بندی

پر شدن دیسک VPS معمولاً یک علامت است و قبل از افزایش حجم دیسک باید مشخص شود چه چیزی باعث مصرف فضای ذخیره‌سازی شده است. برای شروع، دستور df -h و سپس sudo du -xh --max-depth=1 / 2>/dev/null | sort -h به شما کمک می‌کنند محل اصلی مصرف فضا را پیدا کنید.

پس از آن می‌توانید پوشه‌های حجیم مانند /var، /var/log، /var/lib، محل Backupها و دیتابیس‌ها را بررسی کنید. اگر بین خروجی df و du اختلاف قابل توجهی وجود داشت، بررسی فایل‌های حذف‌شده با sudo lsof +L1 نیز بسیار مهم است.

در نهایت، بهترین راهکار فقط خالی کردن فضای دیسک نیست؛ بلکه باید علت رشد مصرف را پیدا کرده و با مانیتورینگ، Log Rotation، مدیریت Backup و بررسی دوره‌ای دیسک، از تکرار مشکل جلوگیری کرد.

💾 به یک سرور مجازی قدرتمند و پایدار نیاز دارید؟

با سرور مجازی ایران و VPS لینوکسی ایرانیکا سرور، دیگر نگران پر شدن دیسک و کندی سرور نباشید. پلن‌های متنوع با فضای ذخیره‌سازی بالا، پشتیبانی ۲۴/۷ و قیمت‌های رقابتی.

🎯 چالش آموزشی
مباحثی که در این مقاله یاد گرفتید را در عمل پیاده‌سازی کنید و نتیجه را با ما به اشتراک بگذارید.
شروع چالش

💬 دیدگاه‌ها 0

هنوز دیدگاهی ثبت نشده است. اولین نفری باشید که نظر می‌دهید!

✍️ دیدگاه خود را بنویسید