Ошибка no space left on device в Linux может возникать при использовании различных программ или сервисов. В графических программах данная ошибка может выводится во всплывающем сообщении, а для сервисов она обычно появляется в логах. Во всех случаях она означает одно. На разделе диска, куда программа собирается писать свои данные закончилось свободное место.
Избежать такой проблемы можно ещё на этапе планирования установки системы. Выделяйте под каталог /home отдельный раздел диска, тогда если вы займете всю память своими файлами, это не помешает работе системы. Также выделяйте больше 20 гигабайт под корневой раздел чтобы всем программам точно хватило места. Но что делать если такая проблема уже случилась? Давайте рассмотрим как освободить место на диске с Linux.
Первым дело надо понять на каком разделе у вас закончилась память. Для этого можно воспользоваться утилитой df. Она поставляется вместе с системой, поэтому никаких проблем с её запуском быть не должно:
df -h
На точки монтирования, начинающиеся со слова snap внимания можно не обращать. Команда отображает общее количество места на диске, занятое и доступное место, а также процент занятого места. В данном случае 100% занято для корневого раздела — /dev/sda5. Конечно, надо разобраться какая программа или файл заняла всё место и устранить эту проблему, но сначала надо вернуть систему в рабочее состояние. Для этого надо освободить немного места. Рассмотрим что можно сделать чтобы экстренно освободить немного памяти.
1. Отключить зарезервированное место для root
Обычно, у всех файловых систем семейства Ext, которые принято использовать чаще всего как для корневого, так и для домашнего раздела используется резервирование 5% памяти для пользователя root на случай если на диске закончится место. Вы можете эту память освободить и использовать. Для этого выполните:
sudo tune2fs -m 0 /dev/sda5
Здесь опция -m указывает процент зарезервированного места, а /dev/sda5 — это ваш диск, который надо настроить. После этого места должно стать больше.
2. Очистить кэш пакетного менеджера
Обычно, пакетный менеджер, будь то apt или yum хранит кэш пакетов, репозиториев и другие временные файлы на диске. Они некоторые из них ненужны, а некоторые нужны, но их можно скачать при необходимости. Если вам срочно надо дисковое пространство этот кэш можно почистить. Для очистки кэша apt выполните:
sudo apt clean
sudo apt autoclean
Для очистки кэша yum используйте команды:
yum clean all
3. Очистить кэш файловой системы
Вы могли удалить некоторые большие файлы, но память после этого так и не освободилась. Эта проблема актуальна для серверов, которые работают долгое время без перезагрузки. Чтобы полностью освободить память надо перезагрузить сервер. Просто перезагрузите его и места на диске станет больше.
4. Найти большие файлы
После выполнения всех перечисленных выше рекомендаций, у вас уже должно быть достаточно свободного места для установки специальных утилит очистки системы. Для начала вы можете попытаться найти самые большие файлы и если они не нужны — удалить их. Возможно какая-либо программа создала огромный лог файл, который занял всю память. Чтобы узнать что занимает место на диске Linux можно использовать утилиту ncdu:
sudo apt install ncdu
Она сканирует все файлы и отображает их по размеру:
Более подробно про поиск больших файлов читайте в отдельной статье.
5. Найти дубликаты файлов
С помощью утилиты BleachBit вы можете найти и удалить дубликаты файлов. Это тоже поможет сэкономить пространство на диске.
6. Удалите старые ядра
Ядро Linux довольно часто обновляется старые ядра остаются в каталоге /boot и занимают место. Если вы выделили под этот каталог отдельный раздел, то скоро это может стать проблемой и вы получите ошибку при обновлении, поскольку программа просто не сможет записать в этот каталог новое ядро. Решение простое — удалить старые версии ядер, которые больше не нужны.
Выводы
Теперь вы знаете почему возникает ошибка No space left on device, как её предотвратить и как исправить если с вами это уже произошло. Освободить место на диске с Linux не так уж сложно, но надо понять в чём была причина того, что всё место занято и исправить её, ведь на следующий раз не всё эти методы смогут помочь.
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
Об авторе
Основатель и администратор сайта losst.ru, увлекаюсь открытым программным обеспечением и операционной системой Linux. В качестве основной ОС сейчас использую Ubuntu. Кроме Linux, интересуюсь всем, что связано с информационными технологиями и современной наукой.
Итак, ваша система Linux сообщает вам, что у вас недостаточно места на жестком диске, но вы знаете, что на самом деле осталось много места. Почему? Это одна из немногих загадочных ошибок на Системы Linux Однако есть несколько решений этой проблемы.
Проверка Du и df
Прежде чем продолжить подробные действия, рекомендуется проверить, действительно ли осталось свободное место на диске. Хотя инструменты, включенные в Среда рабочего стола Собственные — в порядке, но лучше использовать встроенные через командную строку.
начать с Du . Укажите корневой каталог на диске, на котором возникла проблема. Это руководство должно быть внедренным.
sudo du -sh /
Чтобы все проверить, потребуется время. Теперь вы можете поэкспериментировать с df.
sudo df -h
Добавьте корень и файловую систему, которая в него включена. Например, если у вас есть «/ ГлавнаяНа отдельном диске добавляем с чтением для root. Общая сумма должна приближаться к тому, что вы использовали. Du . В противном случае это может означать, что удаленный файл используется процессом.
Конечно, основная проблема здесь заключается в том, приходят ли результаты этих команд от диска меньшего размера. А если это произойдет, то, очевидно, что-то не так.
Возможные причины
Здесь есть две основные причины. Если вы видите несоответствие между du و df Вы можете прокрутить вниз до первого варианта здесь. В противном случае начните со второго варианта.
Зарезервированный файл был удален процессом
Иногда файл удаляется, но процесс все еще использует его. Linux не будет публиковать том, связанный с файлом, во время выполнения процесса. Вам просто нужно найти процесс и перезапустить его.
Попробуйте найти процесс.
sudo lsof / | grep deleted
Должен быть указан процесс, вызывающий проблему, затем его следует перезапустить один раз.
sudo systemctl restart service_name
плохие блоки
Последняя распространенная проблема заключается в том, что блоки файловой системы могут быть плохими. Файловые системы Жесткий диск может быть поврежден или жесткий диск находится на последней стадии повреждения. Операционная система, скорее всего, посчитает эти блоки пригодными для использования, если они не помечены иначе. Лучший способ найти и научить эти блоки — использовать Fsck со знаком -c. Помните, что вы не можете использовать Fsck С той же файловой системой, которую вы тестируете. Возможно, вам понадобится live CD.
sudo fsck -vcck /dev/sda2
Очевидно, вам нужно заменить место на диске диском, который вы хотите проверить. Также имейте в виду, что это может занять много времени.
Надеюсь, одно из этих решений решит вашу проблему. Эту проблему не всегда легко диагностировать в каждом случае. Однако, если повезет, вы можете решить проблему и избавиться от нее, чтобы она была ваш жесткий диск Он снова работает как обычно.
Содержание
- Ошибка no space left on device в Linux
- Как исправить no space left on device
- 1. Отключить зарезервированное место для root
- 2. Очистить кэш пакетного менеджера
- 3. Очистить кэш файловой системы
- 4. Найти большие файлы
- 5. Найти дубликаты файлов
- 6. Удалите старые ядра
- Выводы
- Как исправить ошибку ‘No Space Left on Device’ (на устройстве не осталось места) на Linux, когда свободное место на самом деле есть
- Ошибка no space left on device в Linux
- Как исправить no space left on device
- 1. Отключить зарезервированное место для root
- 2. Очистить кэш пакетного менеджера
- 3. Очистить кэш файловой системы
- 4. Найти большие файлы
- 5. Найти дубликаты файлов
- 6. Удалите старые ядра
- Ошибка ‘No Space Left on Device’ на Linux
- Удаление файлов занятых процессом
- Недостаточно Инод (Inode)
- Плохие блоки
- Как исправить ошибку ‘No Space Left on Device’ (на устройстве не осталось места) на Linux, когда свободное место на самом деле есть
- Что делать, если закончилось место в Linux
- Проверьте с du и df
- Возможные причины
- Удаление файлов занятых процессом
- Недостаточно Инод (Inode)
- Плохие блоки
Ошибка no space left on device в Linux
Ошибка no space left on device в Linux может возникать при использовании различных программ или сервисов. В графических программах данная ошибка может выводится во всплывающем сообщении, а для сервисов она обычно появляется в логах. Во всех случаях она означает одно. На разделе диска, куда программа собирается писать свои данные закончилось свободное место.
Избежать такой проблемы можно ещё на этапе планирования установки системы. Выделяйте под каталог /home отдельный раздел диска, тогда если вы займете всю память своими файлами, это не помешает работе системы. Также выделяйте больше 20 гигабайт под корневой раздел чтобы всем программам точно хватило места. Но что делать если такая проблема уже случилась? Давайте рассмотрим как освободить место на диске с Linux.
Как исправить no space left on device
Первым дело надо понять на каком разделе у вас закончилась память. Для этого можно воспользоваться утилитой df. Она поставляется вместе с системой, поэтому никаких проблем с её запуском быть не должно:
1. Отключить зарезервированное место для root
Обычно, у всех файловых систем семейства Ext, которые принято использовать чаще всего как для корневого, так и для домашнего раздела используется резервирование 5% памяти для пользователя root на случай если на диске закончится место. Вы можете эту память освободить и использовать. Для этого выполните:
2. Очистить кэш пакетного менеджера
Обычно, пакетный менеджер, будь то apt или yum хранит кэш пакетов, репозиториев и другие временные файлы на диске. Они некоторые из них ненужны, а некоторые нужны, но их можно скачать при необходимости. Если вам срочно надо дисковое пространство этот кэш можно почистить. Для очистки кэша apt выполните:
sudo apt clean
sudo apt autoclean
Для очистки кэша yum используйте команды:
3. Очистить кэш файловой системы
Вы могли удалить некоторые большие файлы, но память после этого так и не освободилась. Эта проблема актуальна для серверов, которые работают долгое время без перезагрузки. Чтобы полностью освободить память надо перезагрузить сервер. Просто перезагрузите его и места на диске станет больше.
4. Найти большие файлы
sudo apt install ncdu
Она сканирует все файлы и отображает их по размеру:
Более подробно про поиск больших файлов читайте в отдельной статье.
5. Найти дубликаты файлов
С помощью утилиты BleachBit вы можете найти и удалить дубликаты файлов. Это тоже поможет сэкономить пространство на диске.
6. Удалите старые ядра
Выводы
Теперь вы знаете почему возникает ошибка No space left on device, как её предотвратить и как исправить если с вами это уже произошло. Освободить место на диске с Linux не так уж сложно, но надо понять в чём была причина того, что всё место занято и исправить её, ведь на следующий раз не всё эти методы смогут помочь.
Источник
Как исправить ошибку ‘No Space Left on Device’ (на устройстве не осталось места) на Linux, когда свободное место на самом деле есть
На жёстком диске ещё есть место, но система Linux говорит, что места не осталось и любая операция, связанная с созданием файлов, завершается ошибкой с сообщением, что места на диске нет.
Эта ситуация выглядит странной и непонятной — что нужно сделать для очистки диска, если место и так есть?
У меня такая проблема возникла на сервере в результате чего любые процессы, которые требуют создания файлов, сохранения временных файлов и даже файлов блокировки стали выдавать ошибки при запуске.
Подобная ситуация возникала на этом же сервере накануне и помогла очистка логов, очистка кэша установленных пакетов и удаление ненужных файлов. Но на следующей день ситуация повторилась, хотя места уже точно было достаточно — несколько свободных гигабайт места на диске.
Проверьте с du и df
Перед тем как начать искать проблему, давайте убедимся, что на диске действительно есть свободное место. Хотя инструменты с графическим интерфейсом хорошие, намного лучше использовать программы напрямую из командной строки.
Начнём с du. Укажем ей базовую директорию на диске у которого проблемы. Это руководство подразумевает, что проблемным диском является раздел с рутом.
Для обхода всего дерева директорий потребуется время.
Добавьте корень файловой системы (рут) и файловые системы, смонтированные под ним. Например, если у вас есть «/home» на отдельном диске, добавьте это к показанию для root. Количество занятого и свободного пространства должно получиться близко к тому, что нам показала программа du. Если это не так, это может указывать на то, что удалённые файлы используются процессами.
Главное, на что следует обратить внимание, чтобы вывод этих команд о занятом пространстве соответствовал друг другу и размеру диска. Если это не так, значит имеется проблема.
Возможны разные ситуации возникновения ошибки о том, что диск переполнен, когда на самом деле на нём ещё достаточно места. Если вы видите несоответствие между выводом команд du и df, то перейдите к первому варианту решения проблемы. В противном случае начните со второго.
Удаление файлов занятых процессом
Иногда файл будет удалён, но процесс все ещё использует его. Linux не освободит хранилище, связанное с файлом, пока процесс ещё запущен. Вам просто нужно найти процесс и перезапустить его.
Попробуйте найти процесс.
Если результатов нет, то попробуйте команду:
В списке должен присутствовать процесс, вызывающий проблему, затем просто перезапустите его:
Недостаточно Инод (Inode)
Сравните количество существующих инод с количеством занятых. Если больше нет свободных, к сожалению, вы не можете получить больше. Выход: удалите ненужные или устаревшие файлы для очистки инод.
В нормальных условиях, даже на системах интенсивно использующих постоянное хранилище, редко происходит потребление всех инод. Как правило, исчерпание inodes сигнализирует о другой проблеме. Обычно причиной является неконтролируемое создание огромного количество файлов из-за бага в системе или в программе.
В первую очередь нужно локализовать папку, в которой возникла проблема.
Следующая команда выведет количество используемых инод каждой папкой, присутствующей в корне файловой системы:
Ещё варианты команд, которые делают это же самое (по умолчанию они настроены проверять текущую папку — это можно изменить, для этого вместо точки впишите желаемую для проверки папку:
Когда найдена папка с наибольшим количеством инод, то проверьте её подпапки — для поиска проблемной. Продолжайте эти действия, пока не найдёте папку с огромным количеством нагенерированных файлов.
Например, использование первой команды для поиска по директории /src/:
Вариант для поиска по директории /var/cache/:
В разных ситуациях для пользователей проблемными папками оказывались:
В моём случае причиной проблемы оказалась папка /var/cache/fontconfig — в этой папке постоянно накапливаются новые файлы (я не знаю, насколько это нормально) и по итогу работы за 4 годы из-за этой папке закончились иноды.
Когда проблемная папка найдена, то нужно её очистить. Скорее всего все файлы в ней не нужны (оцените это исходя из вашей ситуации). Также весьма вероятно, что файлов там астрономическое количество и их обработка может затянуться на часы, поэтому самый быстрый вариант — удалить папку целиком, а затем создать её заново. Даже при таком подходе в моём случае удаление папки /var/cache/fontconfig заняло около 10-20 минут.
Это полностью разрешило мою проблему и снизило количество используемых инод со 100% до 13%:
Ещё одна распространённая проблема — это плохие блоки в файловой системе. Со временем из-за износа дисков, файловые системы повреждаются. Ваша операционная система, скорее всего, увидит эти блоки пригодными для использования, если они не помечены иным образом. Лучший способ найти и пометить эти блоки — использовать fsck с флагом -cc. Помните, что вы не можете использовать fsck из той же файловой системы, которую тестируете. Вам, вероятно, понадобится использовать Live CD.
Очевидно, замените /dev/sda2 на имя того диска и раздела, который вы хотите проверить. Кроме того, имейте в виду, что это, вероятно, займёт много времени.
Надеюсь, одно из этих решений решило вашу проблему. Эту проблему не всегда легко диагностировать в каждом случае. Однако, если повезёт, вы сможете устранить источник проблемы и продолжить пользоваться системой без её переустановки.
Кстати, сообщение “No space left on device” может возникнуть при попытке записать файл размером более 4GB на раздел с файловой системой FAT — данная файловая система не поддерживает файлы таких больших размеров.
Источник
Ошибка no space left on device в Linux
Ошибка no space left on device в Linux может возникать при использовании различных программ или сервисов. В графических программах данная ошибка может выводится во всплывающем сообщении, а для сервисов она обычно появляется в логах. Во всех случаях она означает одно. На разделе диска, куда программа собирается писать свои данные закончилось свободное место.
Избежать такой проблемы можно ещё на этапе планирования установки системы. Выделяйте под каталог /home отдельный раздел диска, тогда если вы займете всю память своими файлами, это не помешает работе системы. Также выделяйте больше 20 гигабайт под корневой раздел чтобы всем программам точно хватило места. Но что делать если такая проблема уже случилась? Давайте рассмотрим как освободить место на диске с Linux.
Как исправить no space left on device
Первым дело надо понять на каком разделе у вас закончилась память. Для этого можно воспользоваться утилитой df. Она поставляется вместе с системой, поэтому никаких проблем с её запуском быть не должно:
1. Отключить зарезервированное место для root
Обычно, у всех файловых систем семейства Ext, которые принято использовать чаще всего как для корневого, так и для домашнего раздела используется резервирование 5% памяти для пользователя root на случай если на диске закончится место. Вы можете эту память освободить и использовать. Для этого выполните:
2. Очистить кэш пакетного менеджера
Обычно, пакетный менеджер, будь то apt или yum хранит кэш пакетов, репозиториев и другие временные файлы на диске. Они некоторые из них ненужны, а некоторые нужны, но их можно скачать при необходимости. Если вам срочно надо дисковое пространство этот кэш можно почистить. Для очистки кэша apt выполните:
Для очистки кэша yum используйте команды:
3. Очистить кэш файловой системы
Вы могли удалить некоторые большие файлы, но память после этого так и не освободилась. Эта проблема актуальна для серверов, которые работают долгое время без перезагрузки. Чтобы полностью освободить память надо перезагрузить сервер. Просто перезагрузите его и места на диске станет больше.
4. Найти большие файлы
Она сканирует все файлы и отображает их по размеру:
Более подробно про поиск больших файлов читайте в отдельной статье.
5. Найти дубликаты файлов
С помощью утилиты BleachBit вы можете найти и удалить дубликаты файлов. Это тоже поможет сэкономить пространство на диске.
6. Удалите старые ядра
Источник
Ошибка ‘No Space Left on Device’ на Linux
Сегодня в статье рассмотрим примеры как можно исправить ошибку «No Space Left on Device» (на устройстве не осталось места) на вашем Linux дистрибутиве.
Если и у Вас не осталось свободного места и любая операция, связанная с созданием файлов, завершается ошибкой с сообщением, что места на диске нет. То вот вам несколько примеров, как можно устранить данную ошибку:
Есть два пути решения данной проблемы, но сперва нам надо узнать о наличии свободного места в системе. Для этого в терминале набираем следующее:
Из вывода нас интересует только две строчки:
Тут вывод показывает сколько места у нас осталось на основной системе «/«. Как видно что использовано всего 57% пространства.
Тут вывод показывает сколько места у нас осталось в директории «/home«, для данной директории мы выделили свое пространство на диске. Как видно что использовано всего 5% пространства.
И так вот мы и подобрались к решению самой проблемы. Напомню что у нас два пути по которому мы должны двигаться.
Первое — это если место закончилось, т.е. из вывода выше на всех примонтированных дисках у нас заполненность была 100%. То тут поможет только удаление ненужных файлов. Вот вам парочка статей о том, как освободить место на вашем диске в Linux.
Второе — это если место на диске есть, как и в моем случае, но система выдает вам данное предупреждение о нехватке места ‘No Space Left on Device’. В этом случае необходимо проделать ряд мероприятий по настройке и очистке системы.
Далее я разберу только второй вариант — это когда место на диске есть, но система все равно ругается о нехватке ресурсов. И так поехали!
Удаление файлов занятых процессом
В системе иногда так случается, что файл удалён, но процесс все ещё использует его. Linux не освободит хранилище, связанное с файлом, пока процесс ещё запущен. Вам просто нужно найти этот зловредный процесс и перезапустить/удалить его.
Давайте введем следующую команду и посмотрим на процессы:
Если результатов нет, то попробуйте команду:
В списке должен присутствовать процесс, вызывающий проблему, затем просто перезапустите его:
или остановите данный процесс:
Для примера я перезапустил процесс unattended:
Недостаточно Инод (Inode)
Для современных файловых систем Linux есть такое понятие как иноды.
inodes — это набор метаданных на файловой системе. Иноды отслеживают информацию о файлах. Многие файловые системы имеют фиксированное количество инод, поэтому очень возможно занять максимальное выделенное количество без заполнения самой файловой системы. Вы можете использовать для проверки команду df:
Сравните количество существующих инод с количеством занятых. Если больше нет свободных, то исправить данную проблему можно будет только если удалить устаревшие или ненужные файлы.
В нормальных условиях, даже на системах интенсивно использующих постоянное хранилище, редко происходит потребление всех инод. Как правило, исчерпание inodes сигнализирует о другой проблеме. Обычно причиной является неконтролируемое создание огромного количество файлов из-за бага в системе или в программе.
В первую очередь нужно локализовать папку, в которой возникла проблема.
Следующая команда выведет количество используемых инод каждой директории, присутствующей в корне файловой системы:
Когда будет найдена директория с наибольшим количеством инод, то можно будет уже работать с данной директории.
В разных ситуациях для пользователей проблемными директориями оказывались:
В /usr/src/ накапливалось слишком большое количество файлов, имеющих отношение к предыдущим ядрам. В /var/lib/php/sessions/ — бесконечные сессии phpMyAdmin. В /var/log/squid3/ и вообще в папке /var/log/ может накопиться огромное количество файлов с журналами от неправильно работающей программы или просто за много лет. В папке /var/cache/ может скопиться огромное количество файлов, имеющих отношение к кэшированию.
Когда проблемная директория найдена, то нужно её очистить. Скорее всего все файлы в ней не нужны, но надо конечно же понимать что удаляете. Также весьма вероятно, что файлов там астрономическое количество и их обработка может затянуться на часы, поэтому самый быстрый вариант — удалить директорию целиком, а затем создать её заново.
Плохие блоки
Ещё одна распространённая проблема — это плохие блоки в файловой системе. Со временем из-за износа дисков, файловые системы повреждаются. Ваша операционная система, скорее всего, увидит эти блоки пригодными для использования, если они не помечены иным образом. Лучший способ найти и пометить эти блоки — использовать fsck с флагом -cc. Помните, что вы не можете использовать fsck из той же файловой системы, которую тестируете. Вам, вероятно, понадобится использовать Live CD.
Надеюсь, одно из этих решений решило вашу проблему. Эту проблему не всегда легко диагностировать в каждом случае. Однако, если повезёт, вы сможете устранить источник проблемы и продолжить пользоваться системой без её переустановки.
Кстати, сообщение “No space left on device” может возникнуть при попытке записать файл размером более 4GB на раздел с файловой системой FAT — данная файловая система не поддерживает файлы таких больших размеров.
Если есть вопросы, то пишем в комментариях.
Также можете вступить в Телеграм канал, ВК или подписаться на Twitter. Ссылки в шапки страницы.
Заранее всем спасибо.
Источник
Как исправить ошибку ‘No Space Left on Device’ (на устройстве не осталось места) на Linux, когда свободное место на самом деле есть
На жёстком диске ещё есть место, но система Linux говорит, что места не осталось и любая операция, связанная с созданием файлов, завершается ошибкой с сообщением, что места на диске нет.
Эта ситуация выглядит странной и непонятной — что нужно сделать для очистки диска, если место и так есть?
У меня такая проблема возникла на сервере в результате чего любые процессы, которые требуют создания файлов, сохранения временных файлов и даже файлов блокировки стали выдавать ошибки при запуске.
Подобная ситуация возникала на этом же сервере накануне и помогла очистка логов, очистка кэша установленных пакетов и удаление ненужных файлов. Но на следующей день ситуация повторилась, хотя места уже точно было достаточно — несколько свободных гигабайт места на диске.
Что делать, если закончилось место в Linux
Вполне возможно, что на диске действительно закончилось место, тогда вам рекомендуются следующие статьи:
Если же место на самом деле имеется, то продолжайте чтение.
Проверьте с du и df
Перед тем как начать искать проблему, давайте убедимся, что на диске действительно есть свободное место. Хотя инструменты с графическим интерфейсом хорошие, намного лучше использовать программы напрямую из командной строки.
Начнём с du. Укажем ей базовую директорию на диске у которого проблемы. Это руководство подразумевает, что проблемным диском является раздел с рутом.
Для обхода всего дерева директорий потребуется время.
Теперь попробуем с df:
Добавьте корень файловой системы (рут) и файловые системы, смонтированные под ним. Например, если у вас есть «/home» на отдельном диске, добавьте это к показанию для root. Количество занятого и свободного пространства должно получиться близко к тому, что нам показала программа du. Если это не так, это может указывать на то, что удалённые файлы используются процессами.
Главное, на что следует обратить внимание, чтобы вывод этих команд о занятом пространстве соответствовал друг другу и размеру диска. Если это не так, значит имеется проблема.
Возможные причины
Возможны разные ситуации возникновения ошибки о том, что диск переполнен, когда на самом деле на нём ещё достаточно места. Если вы видите несоответствие между выводом команд du и df, то перейдите к первому варианту решения проблемы. В противном случае начните со второго.
Удаление файлов занятых процессом
Иногда файл будет удалён, но процесс все ещё использует его. Linux не освободит хранилище, связанное с файлом, пока процесс ещё запущен. Вам просто нужно найти процесс и перезапустить его.
Попробуйте найти процесс.
Если результатов нет, то попробуйте команду:
В списке должен присутствовать процесс, вызывающий проблему, затем просто перезапустите его:
Недостаточно Инод (Inode)
Сравните количество существующих инод с количеством занятых. Если больше нет свободных, к сожалению, вы не можете получить больше. Выход: удалите ненужные или устаревшие файлы для очистки инод.
В нормальных условиях, даже на системах интенсивно использующих постоянное хранилище, редко происходит потребление всех инод. Как правило, исчерпание inodes сигнализирует о другой проблеме. Обычно причиной является неконтролируемое создание огромного количество файлов из-за бага в системе или в программе.
В первую очередь нужно локализовать папку, в которой возникла проблема.
Следующая команда выведет количество используемых инод каждой папкой, присутствующей в корне файловой системы:
Ещё варианты команд, которые делают это же самое (по умолчанию они настроены проверять текущую папку — это можно изменить, для этого вместо точки впишите желаемую для проверки папку:
Когда найдена папка с наибольшим количеством инод, то проверьте её подпапки — для поиска проблемной. Продолжайте эти действия, пока не найдёте папку с огромным количеством нагенерированных файлов.
Например, использование первой команды для поиска по директории /src/:
Вариант для поиска по директории /var/cache/:
В разных ситуациях для пользователей проблемными папками оказывались:
В моём случае причиной проблемы оказалась папка /var/cache/fontconfig — в этой папке постоянно накапливаются новые файлы (я не знаю, насколько это нормально) и по итогу работы за 4 года из-за этой папки закончились иноды.
Когда проблемная папка найдена, то нужно её очистить. Скорее всего все файлы в ней не нужны (оцените это исходя из вашей ситуации). Также весьма вероятно, что файлов там астрономическое количество и их обработка может затянуться на часы, поэтому самый быстрый вариант — удалить папку целиком, а затем создать её заново. Даже при таком подходе в моём случае удаление папки /var/cache/fontconfig заняло около 10-20 минут.
Это полностью разрешило мою проблему и снизило количество используемых инод со 100% до 13%:
Плохие блоки
Ещё одна распространённая проблема — это плохие блоки в файловой системе. Со временем из-за износа дисков, файловые системы повреждаются. Ваша операционная система, скорее всего, увидит эти блоки пригодными для использования, если они не помечены иным образом. Лучший способ найти и пометить эти блоки — использовать fsck с флагом -cc. Помните, что вы не можете использовать fsck из той же файловой системы, которую тестируете. Вам, вероятно, понадобится использовать Live CD.
Очевидно, замените /dev/sda2 на имя того диска и раздела, который вы хотите проверить. Кроме того, имейте в виду, что это, вероятно, займёт много времени.
Надеюсь, одно из этих решений решило вашу проблему. Эту проблему не всегда легко диагностировать в каждом случае. Однако, если повезёт, вы сможете устранить источник проблемы и продолжить пользоваться системой без её переустановки.
Кстати, сообщение “No space left on device” может возникнуть при попытке записать файл размером более 4GB на раздел с файловой системой FAT — данная файловая система не поддерживает файлы таких больших размеров.
Источник
2015-02-20
4 минуты read (About 632 words)
Исправление ошибки “No space left on device: Couldn’t create accept lock (/etc/httpd/logs/accept.lock)”
Ошибка httpd
[Fri Feb 06 03:51:02 2015] [warn] pid file /etc/httpd/run/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Fri Feb 06 03:51:02 2015] [emerg] (28)No space left on device: Couldn't create accept lock (/etc/httpd/logs/accept.lock.12012) (5)
[Fri Feb 06 03:52:06 2015] [warn] pid file /etc/httpd/run/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Fri Feb 06 03:52:06 2015] [emerg] (28)No space left on device: Couldn't create accept lock (/etc/httpd/logs/accept.lock.12157) (5)
[Fri Feb 06 04:18:36 2015] [emerg] (28)No space left on device: Couldn't create accept lock (/etc/httpd/logs/accept.lock.14124) (5)
[Fri Feb 06 04:20:47 2015] [emerg] (28)No space left on device: Couldn't create accept lock (/etc/httpd/logs/accept.lock.14366) (5)
[Fri Feb 06 04:20:48 2015] [emerg] (28)No space left on device: Couldn't create accept lock (/etc/httpd/logs/accept.lock.14381) (5)
[Fri Feb 06 04:21:13 2015] [warn] pid file /etc/httpd/run/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
[Fri Feb 06 04:21:13 2015] [emerg] (28)No space left on device: Couldn't create accept lock (/etc/httpd/logs/accept.lock.14414) (5)
[Fri Feb 06 04:22:00 2015] [emerg] (28)No space left on device: Couldn't create accept lock (/etc/httpd/logs/accept.lock.14447) (5)
- Проверить доступное место на диске командой
df -h
- Проверить квоту
repquota /
- Произвести очистку открытых семафоров
Смотрим выделяемые семафоры
------ Массивы семафоров --------
ключ semid владелец права nsems
0x00000000 0 root 600 1
0x00000000 32769 root 600 1
0x000000a7 65538 root 600 1
0x00000000 622595 4294967295 600 1
0x00000000 1540100 4294967295 600 1
0x00000000 1572869 4294967295 600 1
0x7a010339 196614 zabbix 600 9
0x00000000 229383 4294967295 600 1
0x00000000 262152 4294967295 600 1
0x00000000 327689 4294967295 600 1
0x00000000 360458 4294967295 600 1
0x00000000 425995 4294967295 600 1
0x00000000 458764 4294967295 600 1
0x00000000 491533 4294967295 600 1
0x00000000 524302 4294967295 600 1
0x00000000 557071 4294967295 600 1
0x00000000 589840 4294967295 600 1
0x00000000 655377 4294967295 600 1
0x00000000 1048594 4294967295 600 1
0x00000000 720915 4294967295 600 1
0x00000000 753684 4294967295 600 1
0x00000000 819221 4294967295 600 1
0x00000000 851990 4294967295 600 1
0x00000000 917527 4294967295 600 1
0x00000000 950296 4294967295 600 1
0x00000000 983065 4294967295 600 1
0x00000000 1015834 4294967295 600 1
0x00000000 1081371 4294967295 600 1
0x00000000 4816924 4294967295 600 1
0x00000000 1146909 4294967295 600 1
0x00000000 1179678 4294967295 600 1
0x00000000 1212447 4294967295 600 1
0x00000000 1245216 4294967295 600 1
0x00000000 1277985 4294967295 600 1
0x00000000 1310754 4294967295 600 1
0x00000000 1376291 4294967295 600 1
0x00000000 1409060 4294967295 600 1
0x00000000 1474597 4294967295 600 1
0x00000000 1507366 4294967295 600 1
0x00000000 1638439 4294967295 600 1
0x00000000 1671208 4294967295 600 1
0x00000000 1703977 4294967295 600 1
0x00000000 1736746 4294967295 600 1
0x00000000 1802283 4294967295 600 1
0x00000000 1835052 4294967295 600 1
0x00000000 1900589 4294967295 600 1
0x00000000 1933358 4294967295 600 1
0x00000000 1966127 4294967295 600 1
0x00000000 1998896 4294967295 600 1
0x00000000 2031665 4294967295 600 1
0x00000000 2064434 4294967295 600 1
0x00000000 2097203 4294967295 600 1
0x00000000 2129972 4294967295 600 1
0x00000000 2162741 4294967295 600 1
0x00000000 2195510 4294967295 600 1
0x00000000 2228279 4294967295 600 1
0x00000000 2261048 4294967295 600 1
0x00000000 2293817 4294967295 600 1
0x00000000 2326586 4294967295 600 1
0x00000000 2359355 4294967295 600 1
0x00000000 2392124 4294967295 600 1
0x00000000 2457661 4294967295 600 1
0x00000000 2490430 4294967295 600 1
0x00000000 2555967 4294967295 600 1
0x00000000 2588736 4294967295 600 1
0x00000000 2621505 4294967295 600 1
0x00000000 2654274 4294967295 600 1
0x00000000 2687043 4294967295 600 1
0x00000000 2719812 4294967295 600 1
0x00000000 2752581 4294967295 600 1
0x00000000 2785350 4294967295 600 1
0x00000000 2818119 4294967295 600 1
0x00000000 2850888 4294967295 600 1
0x00000000 2883657 4294967295 600 1
0x00000000 2916426 4294967295 600 1
0x00000000 2949195 4294967295 600 1
0x00000000 2981964 4294967295 600 1
0x00000000 3014733 4294967295 600 1
0x00000000 3047502 4294967295 600 1
0x00000000 3145807 4294967295 600 1
0x00000000 3178576 4294967295 600 1
0x00000000 3211345 4294967295 600 1
0x00000000 3244114 4294967295 600 1
0x00000000 3276883 4294967295 600 1
0x00000000 3309652 4294967295 600 1
0x00000000 3342421 4294967295 600 1
0x00000000 3375190 4294967295 600 1
0x00000000 3407959 4294967295 600 1
0x00000000 3440728 4294967295 600 1
0x00000000 3473497 4294967295 600 1
0x00000000 3506266 4294967295 600 1
0x00000000 3539035 4294967295 600 1
0x00000000 3571804 4294967295 600 1
0x00000000 3604573 4294967295 600 1
0x00000000 3637342 4294967295 600 1
0x00000000 3670111 4294967295 600 1
0x00000000 3702880 4294967295 600 1
0x00000000 3735649 4294967295 600 1
0x00000000 3768418 4294967295 600 1
0x00000000 3801187 4294967295 600 1
0x00000000 3833956 4294967295 600 1
0x00000000 3866725 4294967295 600 1
0x00000000 3899494 4294967295 600 1
0x00000000 3932263 4294967295 600 1
0x00000000 3965032 4294967295 600 1
0x00000000 3997801 4294967295 600 1
0x00000000 4030570 4294967295 600 1
0x00000000 4063339 4294967295 600 1
0x00000000 4096108 4294967295 600 1
0x00000000 4849773 4294967295 600 1
0x00000000 4882542 4294967295 600 1
0x00000000 4194415 4294967295 600 1
0x00000000 4227184 4294967295 600 1
0x00000000 4292721 4294967295 600 1
0x00000000 4325490 4294967295 600 1
0x00000000 4358259 4294967295 600 1
0x00000000 4391028 4294967295 600 1
0x00000000 4423797 4294967295 600 1
0x00000000 4456566 4294967295 600 1
0x00000000 4522103 4294967295 600 1
0x00000000 4554872 4294967295 600 1
0x00000000 4587641 4294967295 600 1
0x00000000 4620410 4294967295 600 1
0x00000000 4653179 4294967295 600 1
0x00000000 4685948 4294967295 600 1
0x00000000 4718717 4294967295 600 1
0x00000000 4751486 4294967295 600 1
0x00000000 4784255 4294967295 600 1
Решение
Чистим семафоры
Увеличиваем количество выделяемых семафоров
kernel.msgmni = 1024
kernel.sem = 250 256000 32 1024
Перезагружаем sysctl
И перезапускаем сервис httpd
service httpd restart
Комментарии
Most of the time, Linux is pretty specific with its error messages. “This didn’t work – try installing this package.” However, there’s one in particular that really doesn’t help me very much: “No space left on device.” What causes that? I thought I had 2 TB of storage, how can it be full? Where do I start looking? Today, we’ll be walking you through all of that in our guide on how to fix the “No space left on device” error on Linux.
Before you go any further, it’s a good idea to check that there really is space left on the disk. While the tools in your desktop environment are good, it can be faster to use the direct ones from the command line.
If you’d like to use the tools in your desktop environment, they’ll give you easy-to-read representations of the information you can find with these tools. I’m using Fedora with GNOME, and the GNOME Disk Usage Analyzer tool shows me the following.
Begin with du
. Point it to the base directory on the drive that’s having the problem. Let’s assume it’s the partition with /
.
It’ll take some time to go through everything. Now, try with df
.
Add /
and the filesystems mounted under it. For example, if you have /home
on a separate drive, add that in with the reading for /
. The total should come out close to what you had with du
. If not, that might point toward a deleted file being used by a process.
Of course, the main concern here is whether or not the results of these commands come in under the size of the drive. If it did, there’s obviously something wrong.
No Space on Device Possible Causes
There are a couple of main causes here. If you saw a discrepancy between du
and df
, you can jump down to the first option here. Otherwise, start at the second one.
Deleted File Reserved by Process
Occasionally, a file will be deleted, but a process is still using it. Linux won’t release the storage associated with the file while the process is still running, but you can find the process and restart it.
Try to locate the process.
sudo lsof / | grep deleted
The problematic process should be listed. Just restart it.
sudo systemctl restart service_name
If it’s not immediately evident, do a full daemon reload.
sudo systemctl daemon-reload
Not Enough Inodes
There is a set of metadata on filesystems called “inodes.” Inodes track information about files. A lot of filesystems have a fixed amount of inodes, so it’s very possible to fill the max allocation of inodes without filling the filesystem itself. You can use df
to check.
Compare the inodes used with the total inodes. If there’s no more available, unfortunately, you can’t get more. Delete some useless or out-of-date files to clear up inodes.
Bad Blocks
The last common problem is bad filesystem blocks. Filesystems can become corrupt over time, and hard drives die. Your operating system will most likely see those blocks as usable unless they’re otherwise marked. The best way to find and mark those blocks is by using fsck
with the -cc
flag. Remember that you can’t use fsck
from the same filesystem that you’re testing, so you’ll probably need to use a live CD.
sudo fsck -vcck /dev/sda2
Obviously, replace the drive location with the drive that you want to check. You can find that by using the df
command from earlier. Also, keep in mind that this will probably take a long time, so be prepared to grab a coffee.
Hopefully, one of these solutions solved your problem. This issue isn’t exactly easy to diagnose in every instance. With any luck, though, you can get it cleared up and have your system working again normally.
If you’re looking for more Linux pointers, see our guide on how to set up Bluetooth in Linux. Or, for something a little different, see how to install Mac’s Safari browser in Linux. Enjoy!
John Perkins
John is a young technical professional with a passion for educating users on the best ways to use their technology. He holds technical certifications covering topics ranging from computer hardware to cybersecurity to Linux system administration.
Subscribe to our newsletter!
Our latest tutorials delivered straight to your inbox