محتوای آموزشی وبلاگ نتآرام
ممکن است سرور هنوز چند گیگابایت فضای خالی نشان دهد، اما برنامه نتواند فایل تازه بسازد. یکی از علتها تمام شدن inode است؛ هر فایل و پوشه برای نگهداری اطلاعاتش به یک شناسه نیاز دارد. این آموزش روی حالتی تمرکز میکند که تعداد زیاد فایلهای گزارش یا همان لاگ، سهم زیادی از inode را مصرف کردهاند. برای توضیح کلی این خطا، راهنمای پر شدن inode را هم ببینید.
اول مطمئن شوید مشکل از inode است
در ترمینال سرور دستور زیر را اجرا کنید:
کد / دستورdf -i
در ستون
IUse% درصد مصرف هر فایلسیستم را میبینید. اگر مثلاً فایلسیستم مربوط به پوشه گزارشها نزدیک ۱۰۰ درصد است، ابتدا مسیر دقیق آن را مشخص کنید. در کنار آن، df -h را اجرا کنید تا مصرف حجم را جداگانه ببینید. پر بودن حجم و پر بودن inode دو مسئله متفاوتاند.پوشه پرجمعیت را پیدا کنید
برای دیدن تعداد ورودیهای مستقیم در پوشههای معمول لاگ، این دستور را اجرا کنید:
کد / دستورsudo find /var/log -xdev -mindepth 1 -maxdepth 2 -type f -printf '%h\n' | sort | uniq -c | sort -nr | head -20
عدد سمت چپ تعداد فایلهایی است که در همان عمق پیدا شدهاند. این شمارش زیرشاخههای عمیقتر یا دیگر فایلسیستمها را پوشش نمیدهد. اگر فایلها بسیار زیاد باشند دستور زمان میبرد. خروجی را فقط روی سروری اجرا کنید که مدیریت آن را بر عهده دارید؛ در هاست اشتراکی گزارش را از پشتیبانی بخواهید.
پس از پیدا کردن پوشه مشکوک، نمونه نام و تاریخ فایلها را ببینید. نام سرویس و الگوی زمان ایجاد کمک میکند بفهمید آیا برنامه در هر درخواست فایل تازه میسازد یا روند چرخش گزارشها درست کار نمیکند. گزارشها ممکن است اطلاعات حساس داشته باشند؛ متن کامل آنها را عمومی منتشر نکنید.
قبل از حذف، منشأ فایل را مشخص کنید
فایل فعال یک سرویس را بدون شناخت حذف نکنید. بعضی برنامهها همچنان فایل حذفشده را باز نگه میدارند و تا زمان بستن آن، فضای مصرفی آزاد نمیشود. همچنین گزارشها ممکن است برای پیگیری خطا یا الزامات نگهداری لازم باشند. از تنظیمات و گزارشهایی که باید نگه دارید نسخه پشتیبان تهیه کنید و مسئول سرویس را از تصمیم مطلع کنید.
به جای پاک کردن همه محتویات
کد / دستور/var/log، سیاست نگهداری همان سرویس را بررسی کنید. اگر از logrotate استفاده میکند، فایل تنظیم مربوط را پیدا کنید و نخست آزمایش بدون اعمال تغییر انجام دهید:sudo logrotate -d /etc/logrotate.conf
خروجی حالت آزمایشی را بخوانید؛ اجرا نشدن چرخش، مسیر اشتباه یا خطای مجوز را با توجه به تنظیم همان سیستم برطرف کنید. مقدار نگهداری مناسب به نیاز شما و سیاست سازمان بستگی دارد. چرخش اجباری و حذف آرشیوها میتواند شواهد لازم را از بین ببرد.
بعد از پیدا کردن پوشه چه کار کنیم؟
فرض کنید دستور شمارش نشان میدهد زیرپوشه یک برنامه تعداد زیادی فایل دارد. در پیکربندی همان برنامه گزینه تعداد فایل یا مدت نگهداری گزارش را پیدا کنید و ابتدا مقدار فعلی را یادداشت کنید. یک تغییر کوچک مطابق راهنمای همان برنامه در محیط آزمایشی انجام دهید؛ بعد از اجرای چرخه بعدی، تعداد فایل همان پوشه و نتیجه
df -i را دوباره ببینید. اگر سیاست نگهداری یا فایلهای فعال را نمیشناسید، نام پوشه، تعداد، بازه ایجاد و نتیجه logrotate -d را به مدیر سرویس بدهید و بخواهید قانون چرخش همان برنامه را اصلاح کند.بعد از اصلاح نتیجه را بسنجید
دوباره
df -i را اجرا کنید و چند ساعت بعد سرعت رشد فایلها را بررسی کنید. اگر تعداد دوباره سریع بالا میرود، باید برنامه تولیدکننده یا خطای تکراری آن را رفع کنید؛ خالی کردن فایلها به تنهایی علت را درمان نمیکند.برچسبها:
اشتراکگذاری:
لینکدینتلگرامایکس
مقاله قبلی
مقاله قبلی وجود ندارد.
مقاله بعدی
دامنه شرکت به نام چه کسی ثبت شده است؟
۸ آبان ۱۴۰۵دیدگاهها (۰)
دیدگاههای تاییدشده و پاسخهای تیم نتآرام
