وبلاگ نت‌آرامآموزش، تجربه و راهکارهای زیرساخت

دیسک سرور لینوکس پر شده؟ فضا را امن پیدا و آزاد کنید

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

انتشار:
توسط تیم فنی نت‌آرام
۵ دقیقه زمان مطالعه
۰ دیدگاه
محتوای تخصصی، ساده و کاربردی
هماهنگ با هویت حرفه‌ای نت‌آرام
بازگشت به لیست مقالات
تصویر شاخص مقاله دیسک سرور لینوکس پر شده؟ فضا را امن پیدا و آزاد کنید در وبلاگ نت‌آرام
محتوای آموزشی وبلاگ نت‌آرام
وقتی دیسک سرور پر می‌شود، سایت ممکن است نتواند فایل تازه بسازد، پایگاه داده خطا بدهد یا حتی ورود SSH سخت شود. پاک‌کردن اولین پوشهٔ بزرگی که می‌بینید راه خوبی نیست؛ شاید همان پوشه فایل‌های دیتابیس یا نسخهٔ یگانهٔ سایت باشد. اول اندازهٔ پارتیشن را می‌خوانیم، بعد پوشهٔ پر را پیدا می‌کنیم و فقط چیزی را پاک می‌کنیم که می‌شناسیم و دوباره ساخته می‌شود.

اول مطمئن شوید واقعاً کدام دیسک پر است

با SSH به سرور وصل شوید و این دستور را اجرا کنید:
کد / دستورdf -hT
ستون Use% درصد مصرف و ستون Mounted on نقطهٔ اتصال هر پارتیشن را نشان می‌دهد. اگر / نزدیک 100 درصد است، دیسک اصلی پر است. ممکن است /home یا /var پارتیشن جداگانه داشته باشد؛ در آن صورت باید همان پارتیشن را بررسی کنید. خروجی را ذخیره کنید تا بعد از پاک‌سازی بتوانید تغییر را مقایسه کنید. گزینهٔ -h اندازه را خواناتر نشان می‌دهد و -T نوع فایل‌سیستم را اضافه می‌کند.
حالا تعداد فایل‌های قابل استفاده را هم ببینید:
کد / دستورdf -i
اگر درصد فضای دیسک هنوز پایین است ولی IUse% برابر 100 شده، ممکن است تعداد زیادی فایل کوچک همهٔ inodeها را مصرف کرده باشند. در آن حالت پاک‌کردن یک فایل بزرگ فضا را آزاد می‌کند اما مشکل ساخت فایل‌های تازه را حل نمی‌کند. برای آشنایی با تفاوت این دو مورد، دستور df در راهنمای GNU را ببینید.

بزرگ‌ترین پوشه را پیدا کنید، بدون عبور به دیسک دیگر

این دستور حجم پوشه‌های اصلی را از همان فایل‌سیستم جمع می‌کند:
کد / دستورsudo du -xhd1 / 2>/dev/null | sort -h
گزینهٔ -x نمی‌گذارد محاسبه وارد دیسک‌های جدا یا فایل‌سیستم‌های دیگر شود؛ -d1 فقط یک سطح را نشان می‌دهد. خروجیِ آخر معمولاً پوشهٔ بزرگ‌تر را نشان می‌دهد. اگر /var بزرگ است، یک مرحله پایین‌تر بروید:
کد / دستورsudo du -xhd1 /var 2>/dev/null | sort -h
ممکن است این فرمان روی دیسک شلوغ چند دقیقه طول بکشد. چند بار هم‌زمان اجرا نکنید. اگر permission denied می‌بینید، sudo فقط برای کاربری است که اجازهٔ مدیر دارد؛ در VPS مدیریت‌نشده ممکن است داشته باشید، اما در هاست اشتراکی معمولاً ندارید. راهنمای دستور du در GNU گزینه‌های محدودکردن جست‌وجو به یک فایل‌سیستم را توضیح می‌دهد.

چه چیزهایی را معمولاً می‌توان آزاد کرد؟

اگر توزیع شما Debian یا Ubuntu است، بسته‌های دانلودشدهٔ قدیمی را می‌توانید با sudo apt clean از حافظهٔ موقت بسته‌ها پاک کنید. این دستور بسته‌های نصب‌شده را حذف نمی‌کند، اما نسخه‌های دانلودشده برای نصب دوباره در دسترس محلی نخواهند بود. پیش از اجرا، مطمئن شوید دستور را روی همان سرور درست می‌زنید و دسترسی مدیر دارید.
لاگ‌های systemd را فقط پس از دانستن سیاست نگهداری بررسی کنید:
کد / دستورsudo journalctl --disk-usage
اگر لاگ‌های بایگانی‌شده فضای زیادی گرفته‌اند و نگهداری طولانی‌مدت لازم نیست، مدیر سرور می‌تواند با هماهنگی سیاست ثبت رخداد، مثلاً نگهداری 14 روز را انتخاب کند:
کد / دستورsudo journalctl --vacuum-time=14d
این کار لاگ‌های قدیمی بایگانی‌شده را حذف می‌کند و ممکن است شواهد رخدادهای قدیمی را از بین ببرد؛ در سرور کاری یا حساس، بدون اجازهٔ مسئول نگهداری لاگ انجامش ندهید. راهنمای رسمی journalctl توضیح می‌دهد پاک‌سازی چه اثری دارد.
کش را هم فقط از ابزار سازندهٔ خودش پاک کنید: کش اپلیکیشن، CDN، یا تصویرهای مشتق‌شده ممکن است دوباره ساخته شوند. قبل از پاک‌کردن، مسیر و مالک پوشه را بررسی کنید. اگر سرویس گزارش یا اپلیکیشن فایل‌های موقت دارد، همان برنامه باید روش پاک‌سازی را مشخص کند؛ حذف مستقیم در زمانی که برنامه در حال نوشتن است می‌تواند دادهٔ ناقص بسازد.

این مسیرها را با دستور rm پاک نکنید

به‌صورت تصادفی فایل‌های /var/lib/mysql، /var/lib/postgresql، /var/lib/docker/volumes، /home یا پوشهٔ سایت را حذف نکنید. این مسیرها می‌توانند پایگاه داده، فایل آپلودشده یا دادهٔ دائمی برنامه را نگه دارند. همچنین دستورهایی مانند rm -rf /var/log/* همهٔ شواهد و گاهی فایل‌هایی را پاک می‌کنند که برنامه هنوز به آن‌ها وابسته است. اگر مطمئن نیستید یک فایل چیست، حذفش نکنید؛ نام و مسیرش را به مدیر سرور بدهید.
اگر فایل log بزرگ است، اول ببینید چه برنامه‌ای آن را می‌نویسد و تنظیم logrotate برایش وجود دارد یا نه. گاهی پاک‌کردن فایل بازشده فضا را آزاد نمی‌کند تا برنامه آن را ببندد؛ ابزار lsof +L1 می‌تواند فایل‌های حذف‌شده‌ای را که هنوز باز هستند نشان دهد. در این وضعیت راه امن، چرخاندن لاگ و راه‌اندازی مجدد همان سرویس با برنامهٔ نگهداری است، نه خاموش‌کردن ناگهانی همهٔ سرویس‌ها.

بعد از آزادشدن فضا، علت برگشت را رفع کنید

دوباره df -hT و df -i را اجرا کنید. سپس لاگ خطا، نوشتن یک فایل آزمایشی در پوشهٔ برنامه و بازشدن یک صفحهٔ سایت را امتحان کنید. اگر ظرف چند ساعت فضا دوباره پر می‌شود، پاک‌سازی فقط زمان خریده است؛ اندازه و سرعت رشد لاگ، بکاپ، آپلود یا فایل موقت را ثبت کنید. برای پایگاه داده یا فایل‌های کاربر نسخهٔ پشتیبان بگیرید و ریشهٔ رشد را با مسئول سرویس پیدا کنید.
وقتی فایل‌های ضروری رشد کرده‌اند، راه درست ممکن است افزایش دیسک یا انتقال داده باشد؛ این کار باید با نسخهٔ پشتیبان و بررسی پارتیشن‌ها انجام شود. اگر VPS شما همزمان با پرشدن دیسک کند شده، اندازهٔ دیسک را با مصرف واقعی مقایسه کنید؛ مقالهٔ انتخاب CPU، RAM و دیسک VPS دربارهٔ برنامه‌ریزی ظرفیت کمک می‌کند. پاک‌سازی را پس از ثبت اندازهٔ قبل و بعد تمام کنید تا معلوم باشد چه چیزی واقعاً فضا را پس داده است.
اشتراک‌گذاری:
لینکدینتلگرامایکس

دیدگاه‌ها (۰)

دیدگاه‌های تاییدشده و پاسخ‌های تیم نت‌آرام