Статьи

Чому немає вільного місця на пристрої в Linux

 

Зазначені помилки без зрозумілої причини є однією з найбільш роздратовуючих ситуацій, з якими користувачі доводяться стикатися. Хоча Linux зазвичай славиться своєю точністю у повідомленнях про помилки, іноді відбуваються ситуації, коли система допускає неточності.

Отримавши повідомлення про помилку «На пристрої не залишилося місця», користувачі залишаються з питаннями, особливо коли їхній диск ще далеко не заповнений. Що може бути причиною цієї помилки? Чому неможливо створити нові файли, хоча на диску є достатньо місця? І, головне, як це виправити?

Чи справді на вашому жорсткому диску достатньо місця?

Перш ніж починати поспішати шукати рішення, варто переконатися, що проблема справді існує. В такому разі, якщо місце на вашому диску дійсно закінчилося, немає приводу для паніки. Ви можете просто видалити непотрібні дані, щоб звільнити більше місця.

Linux надає дві системні команди для отримання інформації про дисковий простір — це du і df. Команда du вимірює використання дискового простору, тоді як команда df аналізує доступне вільне місце на диску. Використання цих команд разом з sudo надасть вам точний звіт про кількість доступного місця на диску.

Почнемо з команди du. Вивід цієї команди може бути досить великим і незручним, тому ми використовуватимемо параметри -s і -h. Параметр -s агрегує результати, а -h робить вивід більш читабельним. Отже, введіть команду sudo du -sh /, вказавши базовий каталог.

Не турбуйтеся про всі повідомлення про відмову в дозволі — це результат перегляду всіх підкаталогів системи. Залежно від розміру вашого диска, вам може довести залишити його активним протягом деякого часу, оскільки він рекурсивно сканує всі файли та папки.

Читай еще!  Идеи осенней фотосессии: 15 задумок для осуществления этой осенью

6439741396dd5.png

Коли du завершить сканування, він покаже простий список каталогів разом з їхніми розмірами. Наприклад, це може бути результатом використання команди du для стандартного каталогу.

6439742a0991a.png

Тепер ми переходимо до команди df, щоб дізнатися, скільки вільного місця залишилося. Команду df набагато простіше використовувати, оскільки вона показує лише змонтовані файлові системи і статистику їх використання. Знову ж таки, ми додаємо параметр -h, щоб зробити вивід більш зрозумілим для людини.

sudo df -h

6439743fe41d6.png

Ідея полягає в тому, щоб порівняти результати du і df. Будь-яке розходження вказує на те, що є місце на диску, яке не є доступним для користування, незважаючи на відсутність файлів або папок. Можливо все таки ваш жорсткий диск зламався для ноутбука і він потребує заміни.

Чому Linux показує «Немає вільного місця на пристрої»?

Якщо ви бачите це повідомлення про помилку, навіть коли на вашому диску є достатньо вільного місця, це не завжди пов’язано з апаратним забезпеченням. Виявлення точної причини цієї помилки може вимагати від вас додаткового аналізу та усунення несправностей.

Один із можливих варіантів — це недавно видалений файл. Найчастіше ця помилка виникає, коли файл було видалено, але процеси на вашій системі все ще користуються ним, утримуючи в резерві певне місце, навіть якщо файл фактично відсутній.

Інша можлива причина — це нестача інодів. Це індексні сторінки файлової системи Unix, що містять метадані кожного файлу в сховищі. Однак кількість інодів обмежена, і їх вичерпання може призвести до помилки «Немає вільного місця на пристрої».

Також важливо враховувати можливість пошкодження самого жорсткого диска. У цьому випадку частина видимого вільного місця може бути зайнята пошкодженими секторами. Оскільки система не може записувати файли в ці області, вона видає повідомлення про помилку.

Виправлення 1: перезапуск процесів із використанням видалених файлів

Спробою усунення помилки «Немає вільного місця на пристрої» може бути перезапуск процесів, які все ще використовують видалені файли. Це найбільш ймовірна причина цієї помилки. Для цього скористайтеся командами lsof та grep.

Щоб знайти проблемний процес, вам потрібно скористатися командами lsof і grep. Команда lsof надасть вам список усіх відкритих файлів, які використовуються запущеними процесами, а grep може звузити вибір до тих, які видалено. Отже, введіть sudo lsof / | grep deleted, де / — базовий каталог, а | — конвеєр для зв’язування виводу lsof з grep.

Читай еще!  Уборка после ремонта МСК

Тепер ви можете перезапустити зачеплений процес за допомогою команди sudo systemctl restart service_name, де ім’я служби — це ім’я служби, яка опинилася в пошуку.

Якщо таких процесів кілька або ви просто не хочете морочитися пошуком конкретних служб, ви можете просто скинути їх усі за допомогою команди sudo systemctl daemon-reload . Це регенерує всі залежності, беручи до уваги будь-які зміни у файловій системі.

Після цього простір для зберігання, що утримується процесом, повинен знову стати доступним, що дозволить вам записувати файли без будь-яких помилок.

Виправлення 2: перевірте індексні дескриптори

Хоча кожен диск має велику кількість інодів, це звичайно. І якщо ваша система засмічена неймовірною кількістю файлів, можна досягти цієї межі до вичерпання ємності накопичувача. Ось чому краще мати великі файли, ніж занадто багато маленьких.

Ви можете легко перевірити доступність індексних дескрипторів, використовуючи прапорець -i з командою df. Отже:

sudo df -i

Це чітко покаже загальну кількість наявних у файловій системі інодів, а також кількість, яка використовується в даний момент. Якщо у вашій системі не залишилося вільних інодів, це може бути причиною помилки «Немає вільного місця на пристрої».

Оскільки іноди створюються лише під час першого форматування диска, немає можливості створити більше інодів. Все, що ви можете зробити, це видалити всі непотрібні файли, щоб звільнити іноди для майбутніх файлів.

Виправлення 3: Позначте биті блоки

Пошкодження даних — неминуча доля будь-якого жорсткого диска. У той час як нові диски не стикаються з цією проблемою, старі жорсткі диски поступово починають «псуватися».

Це означає, що частини жорсткого диска стають непридатними для використання, хоча файлова система все ще вважає їх функціональними. Ці биті блоки помилково збільшують видимий обсяг вільного місця на диску, хоча насправді на них не можна записати жодного файлу. Це призводить до помилки «На пристрої немає вільного місця», оскільки операційна система намагається зберегти дані на цих ділянках, але не може.

Читай еще!  Родительство бескорыстно: так ли это на самом деле

Не існує реального способу виправити цю проблему, оскільки биті сектори є результатом фізичного зносу жорсткого диска. Єдине, що ви можете зробити, це позначити биті сектори так, щоб файлова система більше не посилалася на них.

Для цього потрібно завантажитися з Live CD, оскільки ви не можете виконати перевірку файлової системи на працюючому диску. Після цього скористайтеся наступною командою:

sudo fsck -vcck /dev/sda

Вона замінить /dev/sda на шлях до диска, який потрібно відремонтувати. Це автоматично виявить усі биті блоки на диску і позначить їх як непридатні для використання. Однак це не дасть вам додаткового місця на диску, тому будьте готові видалити деякі непотрібні файли, щоб звільнити місце на диску.

Як найкраще виправити помилку «Немає місця на пристрої»?

Зазвичай помилка «На пристрої немає вільного місця» в Ubuntu або будь-якому іншому дистрибутиві Linux з’являється через те, що видалений файл все ще використовується запущеним процесом. Це резервує місце, яке було зайняте файлом, не дозволяючи іншим операціям записувати дані у цей простір.

Виправити цю проблему також найпростіше, оскільки все, що вам потрібно зробити, це перезапустити відповідний процес. Інші причини помилки, однак, не так легко усунути.

Незалежно від того, чи є на вашому диску пошкоджені блоки даних, чи закінчилися іноди, прямого способу виправити ці проблеми не існує. Ви повинні видалити існуючі файли, щоб звільнити місце для запису нових даних.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *