خطاهای بدون دلیل واضح، آزاردهنده ترین مشکلاتی هستند که باید با آنها برخورد کرد. و در حالی که لینوکس معمولاً در پیام های خطای خود خاص است، این یکی از معدود مواردی است که توپ را رها می کند.
دریافت خطای «هیچ مکان در دستگاه باقی نمانده» توضیح چندانی نمی دهد، به خصوص اگر درایو شما پر شده باشد. چرا این پیغام خطا نمایش داده می شود؟ چرا با وجود فضای کافی روی دیسک نمی توانید فایل های جدیدی ایجاد کنید؟ و مهمتر از همه، چگونه آن را برطرف می کنید؟
بیایید بفهمیم.
آیا هارد دیسک شما واقعاً فضای کافی دارد؟
قبل از اینکه برای یافتن راه حل عجله کنید، برای شروع مطمئن شوید که مشکلی وجود دارد. پس از همه، اگر فضای دیسک واقعاً روی سیستم شما تمام شده است، نیازی به وحشت نیست. فقط می توانید داده های غیر ضروری را حذف کنید تا فضای بیشتری آزاد کنید.
دو دستور سیستم لینوکس برای دریافت اطلاعات در مورد فضای دیسک وجود دارد - du و df. دستور du میزان استفاده از فضای دیسک را تخمین می زند، در حالی که دستور df فضای خالی موجود روی دیسک را تجزیه و تحلیل می کند. استفاده از آنها همراه با سودو گزارش دقیقی از میزان فضای موجود بر روی دیسک به شما می دهد.
اکنون از df استفاده می کنیم تا ببینیم چقدر فضای خالی در دسترس است. استفاده از دستور df بسیار ساده تر است زیرا فقط فایل سیستم های نصب شده و آمار استفاده از آنها را نشان می دهد. یک بار دیگر، از پرچم -h برای خوانا کردن خروجی توسط انسان استفاده خواهیم کرد.
sudo df -h .
ایده این است که نتایج دستورات du و df را محاسبه کنید. هر گونه اختلاف به فضای دیسکی اشاره دارد که با وجود اینکه توسط هیچ فایل یا پوشه ای استفاده نمی شود، آزادانه در دسترس نیست.
چرا لینوکس "فضای باقی نمانده در دستگاه" را نشان می دهد؟
اگر با وجود فضای خالی کافی روی دیسک خود، پیام خطای «هیچ فضای خالی در دستگاه باقی نمانده» را میبینید، مقصر این سختافزار نیست. پی بردن به علت دقیق خطا ممکن است کمی به عیب یابی نیاز داشته باشد.
رفع 1: راه اندازی مجدد فرآیندها با استفاده از فایل های حذف شده
محتملترین علت خطای «هیچ فضایی در دستگاه باقی نمانده»، فرآیندی است که همچنان از یک فایل حذف شده استفاده میکند. خوشبختانه، رفع این خطا آسان است. برای آزاد کردن فضای ذخیره شده، فقط باید فرآیند را مجدداً راه اندازی کنید را انجام دهید.
پس از این، فضای ذخیرهسازی که توسط این فرآیند نگهداری میشود باید دوباره در دسترس باشد و به شما امکان میدهد فایلها را بدون هیچ گونه خطا بنویسید.
رفع 2: Inodes را بررسی کنید
در حالی که هر درایو دارای تعداد زیادی inode است، محدود است. و اگر سیستم شما پر از تعداد باورنکردنی فایل است، ممکن است قبل از اتمام ظرفیت ذخیره سازی درایو به این حد برسید. به همین دلیل است که بهتر است به جای فایل های کوچک زیاد، فایل های بزرگ داشته باشید.
با استفاده از پرچم -i با دستور df می توانید به راحتی در دسترس بودن inode ها را بررسی کنید. مانند این:
sudo df -i
این به وضوح تعداد کل اینودهای موجود در فایل سیستم را به همراه مقداری که در حال حاضر استفاده می شود، نشان می دهد. اگر هیچ inode رایگان در سیستم شما باقی نمانده است، این منبع خطای "No space left on device" است.
از آنجایی که اینودها تنها با قالببندی اولیه درایو ایجاد میشوند، راهی برای تولید inodeهای بیشتر وجود ندارد. تنها کاری که میتوانید انجام دهید این است که فایلهای غیرضروری را حذف کنید تا inode برای فایلهای آینده آزاد شود.
رفع 3: علامت گذاری بلوک های بد
فساد داده ها سرنوشت اجتناب ناپذیر هر دیسک سخت است. در حالی که یک درایو جدید با این مشکل مواجه نخواهد شد، هارد دیسک های قدیمی به تدریج شروع به "بد" شدن می کنند.
این بدان معناست که بخشهایی از هارد دیسک غیرقابل استفاده میشوند، حتی اگر سیستم فایل هنوز آنها را کاربردی میداند. این بلوک های بد به طور کاذب فضای آزاد ظاهری درایو را افزایش می دهند، در حالی که در حقیقت هیچ فایلی نمی تواند برای آنها نوشته شود. این منجر به خطای «هیچ فضایی در دستگاه باقی نمانده» میشود، زیرا سیستم عامل سعی میکند اطلاعاتی را در این مکانها ذخیره کند.
هیچ راه واقعی برای رفع این مشکل وجود ندارد، زیرا بخش های بد در نتیجه فرسودگی فیزیکی هارد دیسک هستند. تنها کاری که می توانید انجام دهید این است که بخش های بد را علامت گذاری کنید تا دیگر توسط سیستم فایل به آنها ارجاع داده نشود..
برای انجام این کار، باید از سی دی زنده بوت شوید، زیرا نمیتوانید فایل سیستم را در یک درایو در حال اجرا انجام دهید. پس از انجام این کار، فقط از دستور زیر استفاده کنید:
sudo fsck -vcck /dev/sda
این مسیر /dev/sda را با مسیر درایوی که می خواهید تعمیر کنید جایگزین می کند. این به طور خودکار تمام بلوک های خراب درایو را شناسایی می کند و آنها را غیرقابل استفاده علامت گذاری می کند. با این حال، ظرفیت ذخیره سازی اضافی به شما نمی دهد، بنابراین آماده باشید که برخی از فایل های بی فایده را برای آزاد کردن فضای درایو پاک کنید.
بهترین راه برای رفع خطای "No Space Left on Device" چیست؟
دلیل معمول برای مشاهده خطای "No space left on device" در اوبونتو یا هر توزیع لینوکس دیگر، یک فایل حذف شده است که هنوز توسط یک فرآیند در حال اجرا استفاده می شود. این ذخیرهسازی را که فایل اشغال کرده بود، ذخیره میکند و از نوشتن دادهها در آن فضا توسط سایر عملیات جلوگیری میکند.
رفع این مشکل نیز سادهترین راه است، زیرا تنها کاری که باید انجام دهید این است که فرآیند مورد نظر را مجدداً راهاندازی کنید. با این حال، دلایل دیگر خطا به راحتی قابل حل نیستند.
چه درایو شما گرفتار بلوکهای داده بد باشد یا inode تمام شده باشد، هیچ راه مستقیمی برای رفع این مشکلات وجود ندارد. شما باید فایل های موجود را حذف کنید تا فضا برای نوشتن داده های جدید ایجاد شود.
.