Недостаточно свободного места linux

Как исправить ошибку ‘No Space Left on Device’ (на устройстве не осталось места) на Linux, когда свободное место на самом деле есть

На жёстком диске ещё есть место, но система Linux говорит, что места не осталось и любая операция, связанная с созданием файлов, завершается ошибкой с сообщением, что места на диске нет.

Эта ситуация выглядит странной и непонятной — что нужно сделать для очистки диска, если место и так есть?

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

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

Что делать, если закончилось место в Linux

Вполне возможно, что на диске действительно закончилось место, тогда вам рекомендуются следующие статьи:

Если же место на самом деле имеется, то продолжайте чтение.

Проверьте с du и df

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

Начнём с du. Укажем ей базовую директорию на диске у которого проблемы. Это руководство подразумевает, что проблемным диском является раздел с рутом.

Для обхода всего дерева директорий потребуется время.

Теперь попробуем с df:

Добавьте корень файловой системы (рут) и файловые системы, смонтированные под ним. Например, если у вас есть «/home» на отдельном диске, добавьте это к показанию для root. Количество занятого и свободного пространства должно получиться близко к тому, что нам показала программа du. Если это не так, это может указывать на то, что удалённые файлы используются процессами.

Главное, на что следует обратить внимание, чтобы вывод этих команд о занятом пространстве соответствовал друг другу и размеру диска. Если это не так, значит имеется проблема.

Возможные причины

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

Удаление файлов занятых процессом

Иногда файл будет удалён, но процесс все ещё использует его. Linux не освободит хранилище, связанное с файлом, пока процесс ещё запущен. Вам просто нужно найти процесс и перезапустить его.

Попробуйте найти процесс.

Если результатов нет, то попробуйте команду:

Читайте также:  Windows 10 для подписчиков

В списке должен присутствовать процесс, вызывающий проблему, затем просто перезапустите его:

Недостаточно Инод (Inode)

Для современных файловых систем Linux есть такое понятие как иноды (“inodes”) — это набор метаданных на файловой системе. Иноды отслеживают информацию о файлах. Многие файловые системы имеют фиксированное количество инод, поэтому очень возможно занять максимальное выделенное количество без заполнения самой файловой системы. Вы можете использовать для проверки команду df:

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

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

В первую очередь нужно локализовать папку, в которой возникла проблема.

Следующая команда выведет количество используемых инод каждой папкой, присутствующей в корне файловой системы:

Ещё варианты команд, которые делают это же самое (по умолчанию они настроены проверять текущую папку — это можно изменить, для этого вместо точки впишите желаемую для проверки папку:

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

Например, использование первой команды для поиска по директории /src/:

Вариант для поиска по директории /var/cache/:

В разных ситуациях для пользователей проблемными папками оказывались:

  • /var/lib/php/sessions/
  • /var/cache/fontconfig
  • /usr/src/
  • /var/cache/eaccelerator/
  • /var/log/squid3/

В /usr/src/ накапливалось слишком большое количество файлов, имеющих отношение к предыдущим ядрам. В /var/lib/php/sessions/ — бесконечные сессии phpMyAdmin. В /var/log/squid3/ и вообще в папке /var/log/ может накопиться огромное количество файлов с журналами от неправильно работающей программы или просто за много лет. В папке /var/cache/ может скопиться огромное количество файлов, имеющих отношение к кэшированию.

В моём случае причиной проблемы оказалась папка /var/cache/fontconfig — в этой папке постоянно накапливаются новые файлы (я не знаю, насколько это нормально) и по итогу работы за 4 года из-за этой папки закончились иноды.

Когда проблемная папка найдена, то нужно её очистить. Скорее всего все файлы в ней не нужны (оцените это исходя из вашей ситуации). Также весьма вероятно, что файлов там астрономическое количество и их обработка может затянуться на часы, поэтому самый быстрый вариант — удалить папку целиком, а затем создать её заново. Даже при таком подходе в моём случае удаление папки /var/cache/fontconfig заняло около 10-20 минут.

Это полностью разрешило мою проблему и снизило количество используемых инод со 100% до 13%:

Плохие блоки

Ещё одна распространённая проблема — это плохие блоки в файловой системе. Со временем из-за износа дисков, файловые системы повреждаются. Ваша операционная система, скорее всего, увидит эти блоки пригодными для использования, если они не помечены иным образом. Лучший способ найти и пометить эти блоки — использовать fsck с флагом -cc. Помните, что вы не можете использовать fsck из той же файловой системы, которую тестируете. Вам, вероятно, понадобится использовать Live CD.

Очевидно, замените /dev/sda2 на имя того диска и раздела, который вы хотите проверить. Кроме того, имейте в виду, что это, вероятно, займёт много времени.

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

Читайте также:  Командная строка windows параметры компьютера

Кстати, сообщение “No space left on device” может возникнуть при попытке записать файл размером более 4GB на раздел с файловой системой FAT — данная файловая система не поддерживает файлы таких больших размеров.

Источник

8 простых способов освободить место на Ubuntu и Linux Mint

Вот несколько способов очистки вашей системы, чтобы освободить место на Ubuntu и других дистрибутивах Linux на базе Ubuntu.

Со временем любая операционная система может стать загроможденной по мере добавления и удаления программ.

Если у вас есть TB-накопитель, вы можете не трудиться, чтобы очистить Ubuntu, чтобы сделать некоторое свободное дисковое пространство.

Но если ваш жесткий диск имеет ограниченное пространство, например, у меня есть 128-Гбайт SSD-ноутбук, освобождение дискового пространства становится необходимостью.

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

Но прежде, давайте посмотрим, как найти свободное пространство, оставшееся на Ubuntu.

Проверьте свободное место на Ubuntu

Это довольно легко сделать на Ubuntu.

Просто используйте утилиту анализатор использования диска.

Найдите его в меню и запустите инструмент.

Вы должны увидеть используемое место на диске и оставшееся свободное пространство:

Как только вы узнаете о состоянии свободного места на вашем диске, пришло время очистить вашу систему и сделать здесь еще больше свободного места.

Как освободить место на диске в Ubuntu и Linux Mint

Существует несколько способов очистки дискового пространства в Ubuntu и другой системе на основе Ubuntu.

Я обсуждал несколько трюков с командной строкой, а затем некоторые опции графического интерфейса.

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

Не то чтобы вы не могли их использовать, но лучше избегать, если вы не знаете, что делаете.

1. Избавьтесь от пакетов, которые больше не требуются. [Рекомендуется]

Если вы прочитали руководство по командам apt-get, возможно, вы столкнулись с опцией команды apt-get «autoremove».

Эта опция удаляет библиотеки и пакеты, которые были установлены автоматически для удовлетворения зависимостей установленного пакета.

Если этот пакет удален, эти автоматически установленные пакеты бесполезны в системе.

Он также удаляет старые ядра Linux, которые были установлены автоматически при обновлении системы.

Команда без проблем позволяет вам время от времени увеличивать свободное пространство в вашей системе Ubuntu:

sudo apt-get autoremove

Как вы можете видеть, эта команда освободит некоторое количество свободного места в вашей системе.

2. Очистка кеша APT в Ubuntu

Ubuntu использует APT (Advanced Package Tool) для установки, удаления и управления программным обеспечением в системе и при этом сохраняет кеш ранее загруженных и установленных пакетов даже после их удаления.

Система управления пакетами APT хранит кеш-файлы DEB в /var/cache/apt/archives.

Со временем этот кеш может вырасти до довольно большого размера и содержать много пакетов, которые вам не нужны.

Размер кеша можно увидеть с помощью следующей команды:

Теперь у вас есть два варианта обработки кеша.

Либо удалите только устаревшие пакеты, как те, которые заменены недавним обновлением, что делает их совершенно ненужными.

sudo apt-get autoclean

Или очистите кеш целиком (освобождает больше места на диске):

sudo apt-get clean

3. Очистите кеш thumbnail

Ubuntu автоматически создает миниатюру для просмотра в файловом менеджере.

Он хранит эти миниатюры в скрытом каталоге в вашей учетной записи пользователя по адресу

Со временем количество эскизов резко возрастет.

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

Читайте также:  Не отображается сетевой диск windows 10

Вы можете проверить размер кеша эскизов с помощью следующей команды:

Так что это хорошая практика, чтобы очистить кеш миниатюр каждые несколько месяцев или около того.

Самый быстрый способ – использовать терминал:

4. Удалите старые ядра Linux, которые были установлены вручную [для экспертов]

Команда, обсуждаемая в пункте 1, удаляет старое ядро Linux.

Но это не сработает, если вы вручную установили ядро в Ubuntu.

Но удаление старых неиспользуемых ядер Linux по-прежнему сэкономит вам много места.

Итак, если вы вручную установили ядро Linux, возможно, вы также можете вручную его удалить.

Список всех установленных ядер Linux:

sudo apt-get remove linux-image-VERSION

Моя рекомендация состоит в том, чтобы сохранить по крайней мере два или предпочтительно три ядра, включая последние.

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

5. Удалите потерянные пакеты [для экспертов]

Этот шаг лучше избегать, если вы новичок.

Я не поклонник этого метода, и я советую вам избежать этого.

Во-первых, давайте посмотрим, что такое orphaned пакет в Ubuntu.

Предположим, вы установили пакет ‘myprogram’.

Но этот пакет имеет зависимость от библиотеки mylib.

Эта библиотека обычно устанавливается автоматически с помощью «myprogram».

Когда вы удаляете ‘myprogram’, mylib может оставаться в системе.

Таким образом, mylib в этом случае становится сиротским пакетом.

Теперь команда, указанная в пункте 1, удаляет такие потерянные пакеты.

Но представьте себе случай, когда вы вручную установили mylib перед установкой myprogram.

Команда «apt autoremove» в этом случае не может удалить потерянный пакет.

И, следовательно, вам придется вручную удалить его.

Сначала вам нужно будет найти все потерянные пакеты, а затем удалить их.

К счастью, у нас есть инструмент GUI для этого: gtkorphan, графический интерфейс для deborphan.

Установите gtkorphan через терминал:

Чтобы удалить потерянные пакеты, найдите инструмент «Removed Orphaned Package tool» и запустите его, чтобы найти все потерянные пакеты в вашей системе:

Честно говоря, я не буду использовать этот вариант, если вам действительно не нужно каждый МБ свободного места.

6. Удаление ненужных приложений [Рекомендуется]

У всех нас есть несколько игр и / или приложений, которые мы вряд ли используем. Не верьте мне?

Зайдите и найдите установленное программное обеспечение в системе Ubuntu.

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

sudo apt-get remove package-name1 package-name2

7. Поиск и удаление дубликатов файлов

Иногда у вас могут быть дубликаты файлов в разных местах вашей системы.

Избавление от дубликатов, безусловно, освободит место и очистит вашу систему Ubuntu.

Для этой задачи можно использовать инструмент графического интерфейса, например, FSlint или инструмент командной строки, такой как FDUPES.

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

8. Использование GUI-инструментов для увеличения свободного места в Ubuntu

Мы увидели ряд параметров командной строки, чтобы сделать пространство в системе Linux, но я понимаю, если вы не хотите использовать команды.

Помнить о всех командах или использовать их по одному, возможно, вам не будет удобно.

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

Stacer – один из таких инструментов, который вы могли бы использовать.

Вы можете прочитать эту статью, чтобы узнать, как использовать Stacer в Ubuntu.

Источник

Оцените статью