Топ-3 способа исправить ошибку «На устройстве не осталось места» в Linux


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

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

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

Действительно ли на вашем жестком диске достаточно места?

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

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

  1. Начнем с команды du. Его вывод может быть довольно длинным и громоздким, поэтому мы будем использовать флаги -s и -h. -s суммирует результаты, а -h обеспечивает удобочитаемость. Поэтому введите команду sudo du -sh /, где /указывает на базовый каталог.
    1. Не беспокойтесь обо всех сообщениях об отказе в разрешении — именно так они сканируют все подкаталоги системы. В зависимости от размера диска вам, возможно, придется оставить его включенным на некоторое время, поскольку он все выполняет рекурсивно.
      1. Когда du завершит сканирование, он выведет простой список каталогов с указанием их размеров. Например, это вывод команды du, примененной к обычному каталогу.
      2. Теперь мы воспользуемся df, чтобы узнать, сколько свободного места доступно. Команду df гораздо проще использовать, поскольку она показывает только смонтированные файловые системы и статистику их использования. И снова мы будем использовать флаг -h, чтобы сделать вывод понятным для человека.

        sudo df -h .

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

        Почему Linux показывает «Нет места на устройстве»?

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

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

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

          1. Чтобы найти проблемный процесс, вам нужно использовать команды lsof и grep. Команда lsof предоставит вам список всех открытых файлов, используемых запущенными процессами, а grep может сузить выбор до тех, которые удалены. Итак, введите sudo lsof / | grep удален, где / — базовый каталог, а | канал для связи вывода lsof с grep.
            1. Теперь вы можете перезапустить затронутый процесс с помощью команды sudo systemctl restart service_name, где имя службы — это имя службы, которая появилась при поиске.
            2. .
              1. Если таких процессов несколько или вы просто не хотите заморачиваться с поиском конкретных служб, вы можете просто сбросить их все с помощью команды sudo systemctl daemon-reload. При этом восстанавливаются все зависимости с учетом любых изменений в файловой системе.
              2. После этого пространство памяти, занимаемое процессом, должно снова стать доступным, что позволит вам записывать файлы без каких-либо ошибок.

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

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

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

                sudo df -i

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

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

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

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

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

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

                Для этого вам потребуется загрузиться с Живой компакт-диск, поскольку вы не сможете выполнить проверку файловой системы на работающем диске. Как только вы это сделаете, просто используйте следующую команду:

                sudo fsck -vcck /dev/sda

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

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

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

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

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

                .

                Похожие сообщения:


                30.08.2022