Как исправить ошибку ‘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 — данная файловая система не поддерживает файлы таких больших размеров.
Как узнать свободное место на диске Linux
В Windows для того чтобы получить представление о свободном месте на дисках компьютера достаточно открыть мой компьютер. Там в очень наглядном виде представлен список дисков и подробная информация сколько места доступно в нашей системе, сколько уже использовано и сколько осталось свободно.
В главном окне файловых менеджеров Linux нет такой возможности, так же как и нет разделения диски, по умолчанию просто открывается домашняя папка. В Linux все разделы диска подключаются к корневой файловой системе, в определенные подкаталоги. При доступе к файловой системе мы невидим никаких дисков, есть только корневая файловая система. При работе с ней возникает ощущение, что это одна файловая система, не разделенная на разделы. Это очень удобно, но по-началу может показаться непривычным. Управление разделами и их размером выполняется с помощью специальных утилит.
В этой инструкции мы рассмотрим несколько способов узнать свободное место на диске linux. Мы рассмотрим как консольные утилиты, так и утилиты с графическим интерфейсом.
Как узнать свободное место в GUI
Новичкам проще обращаться с графическим интерфейсом системы. С него и начнем.
sudo apt-get install gparted
Запускается программа из главного меню. Наберите в поиске gparted или выполните в терминале:
Приставка pexec означает, что будет утилита будет выполняться с правами суперпользователя, поэтому нужно будет ввести пароль. Вот так выглядит главное окно утилиты:
Как я говорил, в этой утилиты еще очень много возможностей, но они выходят за рамки этой статьи.
Узнать свободное место на диске Ubuntu/Gnome можно более простым способом, с помощью утилиты системный монитор. Откройте утилиту системный монитор с помощью Dash или главного меню:
Затем перейдите на вкладку файловые системы:
Здесь отображены все подключенные разделы, а также их размер и количество доступного пространства.
В KDE такая функция не поддерживается системным монитором. Но зато кое-какую информацию можно узнать в утилите информация о системе:
Также Dolphin, файловый менеджер KDE, позволяет отображать свободное пространство на текущем разделе в строке состояния. Для этого откройте Настроить Dolphin, Главное, Строка состояния и включите галочку Показывать сведения о свободном месте:
Вот так это будет выглядеть:
Такая же функция раньше была в Nautilus, но в новых версиях строка состояния в этом файловом менеджере отключена.
Еще один способ выполнить просмотр свободного места на диске linux, это воспользоваться утилитой baobab. Это стандартный дисковый анализатор в Ubuntu, утилита показывает не только занятое и свободное место, но и круговую диаграмму размера папок и файлов на диске, что позволяет очень быстро понять куда же делось место:
В KDE есть свой аналог, это fileslight, принцип работы такой же.
Чтобы проверить свободное место на диске linux можно использовать виджеты. Их довольно много, так что детально останавливаться на этом не будем.
Узнать свободное место в терминале
В Linux почти все действия можно сделать несколькими способами. Просмотр свободного места не исключение. Кроме, утилит с графическим интерфейсом есть несколько консольных утилит.
Утилита df, позволяет проанализировать свободное пространство на всех подключенных к системе разделах:
Как видите, кроме размера здесь отображается файловая система и точка монтирования.
Если хотите посмотреть только свободное место в определенном каталоге, его можно указать:
Так же само можно указать устройство:
Чтобы проанализировать какие файлы занимают больше всего пространства можно использовать утилиту du. Утилита выводит размер всех файлов в текущей или указанной директории, например:
Мы также можем отсортировать вывод, чтобы его было более удобно анализировать:
Выводы
Вот и все, теперь вы знаете как узнать свободное место на диске linux. Конечно, это еще далеко не все способы для решения этой задачи, но этого будет вполне достаточно. Если у вас остались вопросы или вы пользуетесь другим способом, опишите его в комментариях!
Какие файлы можно удалить при нехватке места на диске Linux
Бывают ситуации, когда место на диске закончилось полностью и нужно экстренно очистить диск и удалить файлы. Место на диске может закончится даже так, что
То есть бывают действительно критические ситуации — в этих условиях перестают нормально работать многие программы и службы. Поэтому задача становится следующей: срочно любой ценой освободить место на диске, чтобы можно было продолжить обслуживание системы и перейти ко второму этапу — поиску директорий и папок, которые привели к этой проблеме из-за того, что стали занимать слишком много места.
Предупрежу заранее: следующие команды хотя в основном и удаляют бесполезные файлы, после их выполнения могут потребоваться такие действия как:
Это означает, что НЕ копируйте бездумно команды — читайте пояснения к ним и оценивайте, насколько они безболезненны для вашей ситуации.
1. Удаление временных файлов
Файлы в папке /tmp/ будут удалены в любом случае при следующей перезагрузки системы. То есть с одной стороны их можно удалить достаточно безболезненно:
НО: может быть нарушена работа программ, которые запущены в настоящее время и которые сохранили какие-то данные в папку /tmp/.
2. Удаление файлов кэширования
В директории /var/cache/ много поддиректорий, которые можно удалить практически безболезненно (данные утеряны не будут, а программы создадут новые файлы кэширования). Эта директория вызывает особый интерес, поскольку на которых системах кэши разрастаются на гигабайты и десятки гигабайт. Иногда поиск проблемной директории в /var/cache/ может окончательно решить ситуацию с нехваткой места на диске.
Для удаления кэша шрифтов:
Для удаления кэша установочных пакетов (на Debian, Linux Mint, Ubuntu, Kali Linux и их производных):
Для удаления кэша установочных пакетов (на Arch Linux, BlackArch и их производных):
Удаление кэша справочных страниц:
Вы можете продолжить поиск больших кэшей применимо к программному обеспечению, установленному на вашей системе. Например, это могут быть кэши веб-сервера, прокси-сервера и т. д.
3. Удаление логов (журналов)
В этой папке (/var/log/) можно удалить практически все файлы, но старайтесь сохранить структуру папок, поскольку некоторые приложения после удаления здесь папки не в состоянии создать её второй раз…
На веб-серверах могут разрастись слишком сильно журналы веб-сервера.
Для удаления логов Apache на Debian, Linux Mint, Ubuntu, Kali Linux и их производных:
Для удаления логов Apache на Arch Linux, BlackArch и их производных:
Чтобы сервер начал создавать новые файлы журналов и записывать в них, нужно перезапустить службу веб-сервера.
В зависимости от интенсивности использования системы, накопленные журналы могут занимать гигабайты. В зависимости от системы файлы могут называться по-разному, более точный анализ рекомендуется выполнять с помощью утилиты ncdu:
4. Очистите корзину
Этот совет больше для настольных систем. Файлы, которые вы удалили в графическом интерфейсе рабочего стола, попадают в папку
/.local/share/Trash/files/, вы можете проанализировать их и при желании удалить (второй раз):
5. Удаление ненужных файлов исходного кода заголовков ядра
6. Удаление осиротевших пакетов
Осиротевшие пакеты — это те пакеты (программы), которые устанавливались в качестве зависимостей для других программ. Но по разным причинам они больше не нужны: или удалена программа, которая их использовала, или для той программы они перестали быть зависимостями после обновления программы.

На Debian, Linux Mint, Ubuntu, Kali Linux и их производных удалить ненужные пакеты можно следующим образом:

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

7. Очистка журналов systemd
Со временем, в некоторых системах логи системы начинают занимать гигабайты на жёстком диске. Просмотреть журналы и освободить место вы можете с помощью команды journalctl, подробности смотрите в статье «Как использовать journalctl для просмотра системных логов Linux».
Чтобы увидеть, сколько место занимают журналы, выполните:
Чтобы удалить все записи, оставив только записей на 100 мегабайт, выполните:
Либо для удаления всех записей в системном журнале, старше одной недели:
8. Файлы в директории /lost+found
В папку /lost+found сохраняются файлы, которые были найдены после проверки файловой системы диска. Обычно такие проверки выполняются после внезапной перезагрузки системы или в случае признаков проблем с диском.
Найденные файлы обычно повреждены. Их цель — сохранить данные, которые в случае исправления ошибок на файловой системе были бы совсем утеряны.
Папка /lost+found может быть пустой (если не было проблем с диском). В случае если там есть файлы, то вы можете их просмотреть и, при желании, удалить.
9. Очистка PHP сессий
Иногда веб-приложений из-за бага могут создать бесчисленное количество сессий. Проверьте директорию /var/lib/php/sessions/ на предмет слишком большого количества файлов.
(БОНУС) 10. Проанализируйте файлы Docker
Не удаляйте бездумно файлы Docker. Я привожу пример этой директории только по той причине, что она привлекла моё внимание из-за просто фантасмагоричного размера — и это при том, что я Docker’ом фактически не пользуюсь — буквально несколько раз попробовал, чтобы увидеть, что это такое.
Самой большой папкой является /var/lib/docker/overlay2/. Для анализа занимаемого места на диске выполните:
Заключение
Итак, мы рассмотрели, какие файлы можно удалить из Linux практически без потери информации. Кроме рассмотренных директорий, которые можно очистить как на удалённой системе с веб-сервером, так и на домашнем компьютере, пользователям с графическим рабочим столом следует обратить внимание на такие директории как:
/Downloads (ваши скаченные файлы)
Их НЕ нужно удалять, но стоит проанализировать. Например, вы можете выяснить, что веб-браузер на вашем компьютере имеет кэш в несколько гигабайт и что вы можете их освободить (рекомендуется делать средствами веб-браузера, а не удалять файлы напрямую).
Если я пропустил какие-то директории с файлами, которые можно безболезненно удалить, то пишите их в комментариях!
5 простых способов освободить место на жестком диске в Ubuntu
Давайте представим, что у вас не хватает места на жестком диске — что вы предпримете?
В отличие от Windows, где есть встроенные инструменты для дефрагментации и очистки диска, в Ubuntu все не так очевидно.
Что делать, если вы уже очистили корзину и удалили все завалявшиеся.ISO образы? Как раздобыть еще места на диске?
В этой статье вы узнаете 5 супер простых (и в некоторых случаях жутко очевидных) способов вернуть себе захламленные гигабайты памяти.
1. Почистите кэш APT (и делайте это регулярно)
Звучит очевидно, но возможно вы этого еще не делали.
По умолчанию Ubuntu хранит все обновления и скачки в кэше, просто на случай,если они вам снова понадобятся.
Это полезно, если вы часто устанавливаете и удаляете программы или у вас плохой интернет.
Но обратная сторона медали состоит в том, что кэш apt может быстро заполнить несколько сотен мегабайт. Эта команда помогает узнать сколько именно:
Чтобы почистить кэш apt просто выполните следующую команду.
Эта команда удалит ВСЕ пакеты, хранящиеся в apt кэше, вне зависимости от давности и важности. Если у вас медленное, пропадающее или плохое интернет соединение, возможно стоит пропустить этот шаг.
2. Удалите старые ядра (если они больше не нужны)
А к этому шагу нужно подходить с осторожностью.
Иметь несколько ядер для загрузки может быть удобно, особенно если вы вдруг заметите, что что-то не так с самым свежим.
Если вы не любитель постоянных свежайших обновлений, то в хранении ядер нет большой необходимости.
В Ubuntu старые ядра удаляются одной простой командой:
3. Удалите программы и игры, которыми никогда не пользуетесь (и не лгите себе!)
Наверняка у вас найдется множество программ, которыми вы никогда не пользуетесь. Возможно, вы установили их после прочтения крутого отзыва, рекламы или просто для решения одной давней задачи.
Стандартные программы, которые обычно удаляют это веб браузеры (вы собираетесь пользоваться Opera, Epiphany, Midori или Min?), музыкальные проигрыватели (их может быть целая куча) и игры, которые казались крутыми в магазине Steam, но оказали тухлыми.
Не обманывайте себя словами «а вдруг пригодится». Прелесть программ в том, что они от вас не убегут. Особенно в Linux, где от установленного приложения вас отделяет всего одна команда в терминале.
Чтобы удалить конкретное приложение, выполните:
sudo apt-get remove package-name1 package-name2
Чтобы удалить ненужные пакеты и зависимости (потому вы удалили другие пакеты или заменили новыми версиями), выполните:
sudo apt-get autoremove
4. Используйте системный календарь, вроде BleachBit
Описание, как чистить систему может занять в 10 раз больше времени, чем если бы вы читали про каждое приложение, кэш, логи и процессы.
BleachBit экономит вам время. Он напоминает CCleaner, только для Linux. Программа может удалить практически все и всегда, но пользоваться нужно с умом.
Она может очистить кэш больше 70 популярных приложений (в том числе и браузеров); подчищает старые файлы, историю браузера; и чистит ненужные логи.
Вы можете установить BleachBit в Ubuntu 16.04 LTS прямо из центра ПО Ubuntu. Запустите и отметьте части, которые хотите почистить. Нажмите «предпросмотр» и получите оценку того, как много места освободится, затем нажмите «очистить», чтобы удалить.
5. Оставайтесь обновленным
Самый очевидный пункт из этого списка, это слушать рекомендации людей. В отличие от Windows, где с каждым обновлением появляется все больше мороки, пакеты обновлений Linux чаще освобождают место, чем занимают его.
Вывод
Главное запомнить 2 основных пункта из этого списка: первый и последний.
Куда то пропало место на жестком диске
Я правильно понимаю что Avail показывает оставшееся место?
В корневом файле запускал проверку размера папок с сортировкой, чтобы самые толстые оказывались вверху:
lsof | grep deleted
интересный ты тип
или объяснить, что 1000 > 1?
Это всё? Маловато будет, там всего на 635Мб
скопировал всё что выдало
Перезапусти zabbix, mysql, apache
кто нибудь напишите болезному ещё раз про ncdu
Может еще и иксы на сервер накатить?
остается сделать reboot, fsck и всё вобщем-то
Дурак ты, анон. Твой любимый ncdu просто не нужен.
А давно ncdu требует иксы? Может я что-то пропустил?
С тех пор как школоло не могут в du.
Ну ты еще топ вместо htop предложи юзать. Удобство важнее понтов.
У тебя может быть в каком-нибудь каталоге лежат файлы и поверх него смонтирована фс.
В корневом файле запускал проверку размера папок с сортировкой
ps же. И понты тут не при чем. top иногда слишком дорого запускать.
Плюсую, пара тем уже была, где в конце концов так оно и оказалось.
У вас OpenVZ и simfs? Такое бывает, обращайтесь к хостеру.
top иногда слишком дорого запускать.
-b :Batch-mode operation
Starts top in ‘Batch’ mode, which could be useful for sending >output from top to other programs or to a file.
но куда тебе, недоумку, открыть man, не так ли?
Сначала сам в ман залезь, родной. 1G не заметить это совсем надо имбецилом быть.
От топа в батче пользы как от козла молока.
ты настолько тугой, что даже жалко. зачем нужно показывать суммарный размер /, и ещё пытаться его сортировать относительно самого себя?
ты не можешь связно ответить ни на один вопрос, только кукарекать выборкой «козла молока», «школоло», «не нужен». с человеком ли я имею дело
Если баш и настройки по-умолчанию, то не покажет файлы начинающиеся с точки, которые лежат в корне.
Папка с логами весит 32 гигабайта, это вообще законно? Серверу месяца 4. Если для меня нет ничего важного в тех логах я могу полностью почистить всё из этой папки? или что то нужно оставить?
Тугой тут только ты. Нет чтобы просто уменьшить threshold и посмотреть, продолжаешь ударную газификацию.
файлы начинающиеся с точки, которые лежат в корне.
Держите извращенца. Конечно, не покажет — а они там есть?
как же ты раньше du запускал, что /var был ★★★★★ ( 21.07.14 22:45:19 )
Ты logrotate ставил?
Ну так чего ты хотел? Поставь, настрой, в логи ж день-деньской гадит кто ни попадя. Пыхокод с ошибками и варнингами в том числе, кстати.
папку log можно полностью всю почистить? или есть лог файлы которые нужны каким то службам для работы?
Ты сначала logrotate поставь, он всё пожмёт, потом будешь думать, надо чистить или не надо. Логи однородные и очень хорошо жмутся.
По-нормальному они не должны ничем использоваться, так что можно и удалять. Но на практике удаление файлов, в которые кто-то пишет, может аукнуться, так что службы предварительно лучше остановить, а после вообще ребут сделать.
Держите извращенца. Конечно, не покажет — а они там есть?
Они там могут быть. Мы же не знаем что там у ОПа. Может он cat /dev/zero > /.thereisnothing сделал.
Папка с логами весит 32 гигабайта, это вообще законно?
Это вообще по дефолту. Уровень информативности надо было настраивать, а не предьявы тут кидать.
Ну тогда он ССЗБ, о чём может быть речь? =)

























