Ошибки без четкой причины — самые неприятные проблемы, с которыми приходится иметь дело. И хотя Linux обычно очень конкретен в своих сообщениях об ошибках, это один из немногих случаев, когда он теряет смысл.
Появление сообщения «Ошибка «Нет места на устройстве»» мало что объясняет, особенно если ваш диск далеко не заполнен. Почему появляется это сообщение об ошибке? Почему вы не можете создавать новые файлы, хотя на диске достаточно места? И самое главное, как это исправить?
Давайте выясним.
Действительно ли на вашем жестком диске достаточно места?
Прежде чем броситься искать решение, для начала убедитесь, что проблема существует. В конце концов, если в вашей системе действительно закончилось дисковое пространство, не стоит паниковать. Вы можете просто удалить ненужные данные, чтобы освободить больше места.
Существует две системные команды Linux для получения информации о дисковом пространстве — du и df. Команда du оценивает использование дискового пространства, а команда df анализирует свободное место на диске. Использование их в сочетании с судо дает вам точный отчет о том, сколько места на самом деле доступно на диске.
Теперь мы воспользуемся df, чтобы узнать, сколько свободного места доступно. Команду df гораздо проще использовать, поскольку она показывает только смонтированные файловые системы и статистику их использования. И снова мы будем использовать флаг -h, чтобы сделать вывод понятным для человека.
sudo df -h .
Идея состоит в том, чтобы подсчитать результаты команд du и df. Любое несоответствие указывает на то, что дисковое пространство не является свободным, несмотря на то, что оно не используется никакими файлами или папками.
Почему Linux показывает «Нет места на устройстве»?
Если вы видите сообщение об ошибке «На устройстве не осталось места», несмотря на то, что на вашем диске достаточно свободного места, проблема не в оборудовании. Выяснение точной причины ошибки может потребовать некоторых усилий.
Исправление 1: перезапуск процессов с использованием удаленных файлов
Наиболее вероятной причиной ошибки «Нет места на устройстве» является процесс, все еще использующий удаленный файл. К счастью, исправить эту ошибку легко. Вам просто нужно перезапустить процесс, чтобы освободить зарезервированное пространство.
После этого пространство памяти, занимаемое процессом, должно снова стать доступным, что позволит вам записывать файлы без каких-либо ошибок.
Исправление 2: проверьте индексные дескрипторы
Хотя каждый диск имеет большое количество индексных дескрипторов, оно ограничено. А если ваша система завалена невероятным количеством файлов, то вполне возможно достичь этого предела до исчерпания емкости накопителя. Вот почему лучше иметь большие файлы, чем слишком много маленьких.
Вы можете легко проверить доступность индексных дескрипторов, используя флаг -i с командой df. Вот так:
sudo df -i
Это четко покажет общее количество индексных дескрипторов, присутствующих в файловой системе, а также количество используемых в настоящее время. Если в вашей системе не осталось свободных индексных дескрипторов, это является причиной ошибки «Нет места на устройстве».
Поскольку индексные дескрипторы создаются только при первом форматировании диска, создать дополнительные индексные дескрипторы невозможно. Все, что вы можете сделать, это удалить все ненужные файлы, чтобы освободить индексные дескрипторы для будущих файлов.
Исправление 3: отмечайте плохие блоки
Повреждение данных — неизбежная судьба любого жесткого диска. Хотя новый диск не столкнется с этой проблемой, старые жесткие диски постепенно начнут выходить из строя.
Это означает, что части жесткого диска становятся непригодными для использования, хотя файловая система все еще считает их работоспособными. Эти плохие блоки ошибочно увеличивают кажущееся свободное пространство на диске, хотя на самом деле в них невозможно записать файлы. Это приводит к ошибке «На устройстве не осталось места», поскольку операционная система пытается, но не может сохранить какие-либо данные в этих местах.
Реального способа решить эту проблему не существует, поскольку поврежденные сектора являются результатом физического износа жесткого диска. Единственное, что вы можете сделать, это пометить сбойные сектора, чтобы файловая система больше не ссылалась на них..
Для этого вам потребуется загрузиться с Живой компакт-диск, поскольку вы не сможете выполнить проверку файловой системы на работающем диске. Как только вы это сделаете, просто используйте следующую команду:
sudo fsck -vcck /dev/sda
При этом /dev/sda заменяется путем к диску, который вы хотите восстановить. Это автоматически обнаружит все поврежденные блоки на диске и отметит их как непригодные для использования. Однако это не даст вам дополнительного объема памяти, поэтому будьте готовы удалить некоторые ненужные файлы, чтобы освободить место на диске.
Как лучше всего исправить ошибку «На устройстве не осталось места»?
Обычной причиной появления ошибки «Нет места на устройстве» в Ubuntu или любом другом дистрибутиве Linux является удаленный файл, который все еще используется запущенным процессом. Это резервирует место, занимаемое файлом, и предотвращает запись данных в это пространство другими операциями.
Решить эту проблему также проще всего, поскольку все, что вам нужно сделать, это перезапустить соответствующий процесс. Однако другие причины ошибки устранить не так-то просто.
Если на вашем диске имеются поврежденные блоки данных или на нем закончились индексные дескрипторы, прямого способа решить эти проблемы не существует. Вы должны удалить существующие файлы, чтобы освободить место для записи новых данных.
.