3 лучших способа исправить ошибку «Нет свободного места на устройстве» в Linux

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

Получение сообщения об ошибке «На устройстве не осталось места» мало что объясняет, особенно если ваш диск далеко не заполнен. Почему появляется это сообщение об ошибке? Почему вы не можете создавать новые файлы, хотя на диске достаточно места? И самое главное, как это исправить?

Давай выясним.

Действительно ли на вашем жестком диске достаточно места(Hard Drive Actually Have Enough Space) ?

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

Есть две системные команды Linux для получения информации о дисковом пространстве — du и df. Команда du оценивает использование дискового пространства, а команда df анализирует наличие свободного места на диске. Использование их в сочетании с sudo дает вам точный отчет о том, сколько места на самом деле доступно на диске.

  1. Начнем с команды du. Его вывод может быть довольно длинным и громоздким, поэтому мы будем использовать флаги -s и -h. -s обобщает результаты, а -h обеспечивает удобочитаемость. Итак, введите команду sudo du -sh /where/, указывающую на базовый каталог.

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

  1. Когда du завершит сканирование, он выведет простой список каталогов вместе с их размерами. Например, это результат применения команды du к обычному каталогу.

Теперь мы будем использовать df, чтобы узнать, сколько свободного места доступно. Команду df гораздо проще использовать, так как она показывает только смонтированные файловые системы и статистику их использования. И снова мы будем использовать флаг -h, чтобы сделать вывод понятным для человека.

судо дф -ч(sudo df -h )

Идея состоит в том, чтобы подсчитать результаты команд du и df. Любое несоответствие указывает на место на диске, которое не является свободно доступным, несмотря на то, что оно не используется какими-либо файлами или папками.

Почему Linux показывает(Does Linux Show) «Нет свободного(Space Left) места на устройстве»?

Если вы видите сообщение об ошибке «Нет свободного места на устройстве», несмотря на то, что на вашем диске достаточно свободного места, это не связано с аппаратным обеспечением. Выяснение точной причины ошибки может потребовать некоторого устранения неполадок.

  • Недавно удаленный файл. Наиболее распространенной причиной появления этой ошибки является недавно удаленный файл. Часто файл удаляется, когда процесс все еще использует его, сохраняя зарезервированное место, даже если файл уже исчез.
  • Недостаточно инодов(Enough Inodes) : Другой частой причиной является нехватка инодов(inodes) . Иноды — это индексные страницы файловой системы Unix , содержащие метаданные каждого файла в хранилище. Однако количество инодов не безгранично, и исчерпание инодов до того, как освободится место для хранения, может привести к ошибке «Нет свободного места на устройстве».
  • Неисправный жесткий(Hard) диск: тогда, конечно, существует вероятность того, что жесткий диск просто выходит из строя, и большая часть видимого свободного места занята поврежденными секторами. Поскольку системе не удается записать какие-либо файлы в эти места, она выдает ошибку.

Исправление 1: перезапуск процессов с использованием удаленных файлов(Using Deleted Files)

Наиболее вероятной причиной ошибки «Нет свободного места на устройстве» является процесс, все еще использующий удаленный файл. К счастью, исправить эту ошибку несложно. Вам просто нужно перезапустить процесс(restart the process) , чтобы освободить зарезервированное хранилище.

  1. Чтобы найти проблемный процесс, вам нужно использовать команды lsof и grep. Команда lsof предоставит вам список всех открытых файлов, используемых запущенными процессами, а grep может сузить выбор до тех, которые удалены. Итак, введите sudo lsof / | grep удален, где / — базовый каталог, а | конвейер для связывания вывода lsof с grep.

  1. Теперь вы можете перезапустить затронутый процесс с помощью команды sudo systemctl restart service_name, где имя службы — это имя службы, которая оказалась в поиске.

  1. Если таких процессов несколько или вы просто не хотите заморачиваться поиском конкретных служб, вы можете просто сбросить их все с помощью команды sudo systemctl daemon-reload. Это регенерирует все зависимости, принимая во внимание любые изменения в файловой системе.

После этого пространство для хранения, удерживаемое процессом, должно снова стать доступным, что позволит вам записывать файлы без каких-либо ошибок.

Исправление 2: проверьте индексные дескрипторы

Хотя каждый диск имеет большое количество инодов, оно конечно. И если ваша система замусорена невероятным количеством файлов, можно достичь этого предела до исчерпания емкости накопителя. Вот почему лучше иметь большие файлы, чем слишком много маленьких.

Вы можете легко проверить доступность индексных дескрипторов, используя флаг -i с командой df. Как это:

судо дф -я(sudo df -i )

Это четко покажет общее количество инодов, присутствующих в файловой системе, а также количество, используемое в настоящее время. Если в вашей системе не осталось свободных инодов, это является источником ошибки «Нет свободного места на устройстве».

Поскольку иноды создаются только при первом форматировании диска, невозможно создать больше инодов. Все, что вы можете сделать, это удалить все ненужные файлы, чтобы освободить индексные дескрипторы для будущих файлов.

Исправление 3: пометить плохие блоки

Повреждение данных(Data) — неизбежная судьба любого жесткого диска. В то время как новый диск не столкнется с этой проблемой, старые жесткие диски постепенно начнут выходить из строя.

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

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

Для этого вам необходимо загрузиться с Live CD , так как вы не можете выполнить проверку файловой системы(File System Check) на работающем диске. Как только вы это сделаете, просто используйте следующую команду:

sudo fsck -vcck /dev/sda

Это заменяет /dev/sda на путь к диску, который вы хотите восстановить. Это автоматически обнаружит все поврежденные блоки на диске и пометит их как непригодные для использования. Однако это не даст вам дополнительной емкости для хранения, поэтому будьте готовы очистить некоторые бесполезные файлы, чтобы освободить место на диске.

Как лучше всего исправить ошибку «Нет свободного места на устройстве»?

Обычной причиной появления ошибки «На устройстве не осталось места» в Ubuntu или любом другом дистрибутиве Linux является удаленный файл, который все еще используется запущенным процессом. Это резервирует хранилище, которое было занято файлом, предотвращая запись данных в это пространство другими операциями.

Устранить эту проблему также проще всего, так как все, что вам нужно сделать, это перезапустить рассматриваемый процесс. Однако другие причины ошибки решить не так просто.

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



About the author

Я инженер-программист с более чем 10-летним опытом работы на платформах Windows 11 и 10. Я сосредоточился на разработке и поддержке высококачественного программного обеспечения для Windows 7 и Windows 8. Я также работал над множеством других проектов, включая, помимо прочего, Chrome, Firefox, Xbox One и файлы.



Related posts