چگونه خطای کامل دیسک را در سرور لینوکس حل کنیم؟
راهنمای پیدا کردن فایلهای حجیم، تمیز کردن ایمن لاگها و آزاد کردن فضا در سرور.
یکی از رایج ترین مشکلات سرورهای لینوکس پر شدن کامل دیسک است. وقتی دیسک پر می شود، وب سایت ها نمی توانند فایل بنویسند، سرویس های پایگاه داده ممکن است از کار بیفتند، سرورهای بازی ممکن است گزارش ها را ضبط نکنند، و برخی از سرویس ها ممکن است اصلاً شروع به کار نکنند.
این خطا معمولاً با علائم زیر تشخیص داده می شود:
- آپلود نشدن فایل ها در سرور
- خاموش شدن یا خطای سرویس پایگاه داده
- خطای «هیچ فضایی در دستگاه باقی نمانده» در پانل ظاهر می شود
- سرور بازی خاموش می شود زیرا نمی تواند وارد سیستم شود.
- 500 خطا یا صفحه خالی در وب سایت ها رخ می دهد
1. بررسی استفاده از دیسک
ابتدا بررسی کنید که کدام پارتیشن دیسک روی سرور پر است.
df -h
به خصوص اینجا استفاده از% منطقه در نظر گرفته شده است. اگر یک بخش 90٪ یا بالاتر باشد، به این معنی است که خطر شروع شده است. اگر 100٪ پر باشد، سرویس ها قادر به نوشتن فایل نیستند.
2. پوشه هایی را پیدا کنید که بیشترین فضا را اشغال می کنند
هنگامی که دیسک پر است، مشکل معمولاً لاگ ها، پشتیبان گیری یا فایل های کش است که در یک پوشه جمع شده اند. پوشه های بزرگ را از دایرکتوری ریشه شروع کنید.
du -h --max-depth=1 / 2>/dev/null | sort -h
این دستور نشان می دهد که دایرکتوری های خانه چقدر فضای اشغال می کنند. معمولا دایرکتوری های زیر بررسی می شوند:
- /var/log - گزارش سیستم و خدمات
- /خانه - فایل های کاربر و وب سایت
- /پشتیبان گیری - فایل های پشتیبان قدیمی
- /tmp - فایل های موقت
- /var/lib/mysql - فایل های پایگاه داده MySQL/MariaDB
3. لیست فایل های بزرگ
گاهی اوقات یک فایل log می تواند تا 10 گیگابایت یا بیشتر افزایش یابد. برای یافتن فایل های حجیم می توانید از این دستور استفاده کنید:
find / -type f -size +500M -exec ls -lh {} \; 2>/dev/nullاین دستور فایل های بیش از 500 مگابایت را لیست می کند. فایل های به دست آمده را به دقت بررسی کنید. به خصوص ورود، .قدیمی، .gz، .باک و فایل های پشتیبان قدیمی بررسی شوند.
4. تمیز کردن ایمن از فایل های ورود
حذف مستقیم فایل log یک سرویس در حال اجرا گاهی اوقات نتیجه مورد انتظار را نمی دهد. زیرا سرویس می تواند همچنان فایل را باز نگه دارد. بنابراین، امن ترین روش برای تمیز کردن فایل های لاگ بزرگ، خالی کردن فایل است.
truncate -s 0 /var/log/dosya_adi.log
مثال:
truncate -s 0 /var/log/syslog truncate -s 0 /var/log/messages truncate -s 0 /var/log/nginx/error.log
5. Package Cache Cleaning
در سیستمهای مبتنی بر اوبونتو و دبیان، فایلهای کش بسته ممکن است در طول زمان فضای دیسک را اشغال کنند.
apt clean apt autoremove -y
در سیستمهای CentOS، AlmaLinux یا Rocky Linux:
yum clean all dnf clean all
6. بررسی نسخه های پشتیبان قدیمی
فایل هایی که بیشترین فضا را در سرورهای هاست و بازی اشغال می کنند معمولا بک آپ های قدیمی هستند. به خصوص اگر سیستم پشتیبان گیری خودکار وجود داشته باشد، ممکن است هر روز بک آپ های جدید گرفته شود و بک آپ های قدیمی حذف نشوند.
find /backup -type f -mtime +7 -name "*.tar.gz" -ls
این دستور بک آپ های قدیمی تر از 7 روز را لیست می کند. برای حذف پس از اطمینان:
find /backup -type f -mtime +7 -name "*.tar.gz" -delete
7. با تنظیمات Logrotate از بارگذاری مجدد جلوگیری کنید
حتی اگر دیسک تمیز شود، اگر علت آن اصلاح نشود، پس از چند روز دوباره همان مشکل پیش می آید. برای این کار باید پیکربندی logrotate بررسی شود.
nano /etc/logrotate.conf
مثال منطق لوگورات ساده:
/var/log/*.log {
daily
rotate 7
compress
missingok
notifempty
}این تنظیم روزانه فایلهای گزارش را برمیگرداند، آنها را به مدت 7 روز نگه میدارد و گزارشهای قدیمی را فشرده میکند.
اشتباهات رایج
- حذف فایل های سیستم بدون اینکه بدانیم کدام فایل است
- حذف فایل لاگ در حال اجرا و راه اندازی مجدد سرویس
- نگهداری بک آپ های قدیمی برای مدت نامحدود
- به هیچ وجه تنظیمات logrotate را بررسی نمی کنید
- تا زمانی که دیسک 100% پر نشده است، مداخله نکنید
سوالات متداول
چرا سرور با پر شدن دیسک خطا می دهد؟
زیرا سرویس ها نمی توانند گزارش ها، کش ها، فایل های موقت یا پایگاه داده بنویسند. هنگامی که عملیات نوشتن با شکست مواجه می شود، ممکن است سرویس ها خاموش شوند.
بهتر است فایل لاگ را پاک کنیم یا خالی کنیم؟
به جای حذف کامل فایل لاگ در سرویس های در حال اجرا کوتاه کردن با استفاده از آن تخلیه امن تر است.
من دیسک را تمیز کردم اما فضا آزاد نشد، چرا؟
ممکن است فایل حذف شده همچنان توسط یک سرویس در حال اجرا باز نگه داشته شود. ممکن است نیاز به راه اندازی مجدد سرویس مربوطه باشد.
توصیه های عملکرد و امنیت
- استفاده از دیسک را به طور منظم نظارت کنید.
- پشتیبانگیریها را روی یک دیسک جداگانه یا منطقه پشتیبانگیری از راه دور ذخیره کنید.
- بدون استفاده از logrotate یک سرویس را برای مدت طولانی در حال اجرا رها نکنید.
- هنگامی که دیسک به سطح 85٪ رسید، اقدامات احتیاطی را انجام دهید.
- گزارش های اشکال زدایی را دائماً در سرورهای بازی باز نگذارید.
این مقاله به طور ویژه برای PvPServer تهیه شده است.