Сегодня в статье рассмотрим примеры как можно исправить ошибку «No Space Left on Device» (на устройстве не осталось места) на вашем Linux дистрибутиве.
Если и у Вас не осталось свободного места и любая операция, связанная с созданием файлов, завершается ошибкой с сообщением, что места на диске нет. То вот вам несколько примеров, как можно устранить данную ошибку:
Есть два пути решения данной проблемы, но сперва нам надо узнать о наличии свободного места в системе. Для этого в терминале набираем следующее:
sudo df -h
Файловая система Размер Использовано Дост Использовано% Cмонтировано в
udev 1,7G 0 1,7G 0% /dev
tmpfs 337M 2,6M 334M 1% /run
/dev/sda1 20G 11G 8,1G 57% /
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 673M 172M 502M 26% /dev/shm
/dev/sda2 90G 3,7G 82G 5% /home
cgroup 12K 0 12K 0% /sys/fs/cgroup
tmpfs 337M 4,0K 337M 1% /run/user/118
tmpfs 337M 24K 337M 1% /run/user/1000
Из вывода нас интересует только две строчки:
/dev/sda1 20G 11G 8,1G 57% /
Тут вывод показывает сколько места у нас осталось на основной системе «/«. Как видно что использовано всего 57% пространства.
/dev/sda2 90G 3,7G 82G 5% /home
Тут вывод показывает сколько места у нас осталось в директории «/home«, для данной директории мы выделили свое пространство на диске. Как видно что использовано всего 5% пространства.
И так вот мы и подобрались к решению самой проблемы. Напомню что у нас два пути по которому мы должны двигаться.
Первое — это если место закончилось, т.е. из вывода выше на всех примонтированных дисках у нас заполненность была 100%. То тут поможет только удаление ненужных файлов. Вот вам парочка статей о том, как освободить место на вашем диске в Linux.
- Какие файлы можно удалить при нехватке места на диске Linux (скоро ожидается)
- Программа ncdu. Как узнать, какие файлы и директории занимают наибольшее место на диске (скоро ожидается)
Второе — это если место на диске есть, как и в моем случае, но система выдает вам данное предупреждение о нехватке места ‘No Space Left on Device’. В этом случае необходимо проделать ряд мероприятий по настройке и очистке системы.
Далее я разберу только второй вариант — это когда место на диске есть, но система все равно ругается о нехватке ресурсов. И так поехали!
Удаление файлов занятых процессом
В системе иногда так случается, что файл удалён, но процесс все ещё использует его. Linux не освободит хранилище, связанное с файлом, пока процесс ещё запущен. Вам просто нужно найти этот зловредный процесс и перезапустить/удалить его.
Давайте введем следующую команду и посмотрим на процессы:
sudo lsof / | grep deleted
Если результатов нет, то попробуйте команду:
sudo lsof / | grep -i del
В списке должен присутствовать процесс, вызывающий проблему, затем просто перезапустите его:
sudo systemctl restart Имя_Службы
или остановите данный процесс:
sudo systemctl stop Имя_Службы
Для примера я перезапустил процесс unattended:
sudo systemctl restart unattended-upgrades.service
И systemd-journal:
sudo systemctl restart systemd-journald.service
Недостаточно Инод (Inode)
Для современных файловых систем Linux есть такое понятие как иноды.
inodes — это набор метаданных на файловой системе. Иноды отслеживают информацию о файлах. Многие файловые системы имеют фиксированное количество инод, поэтому очень возможно занять максимальное выделенное количество без заполнения самой файловой системы. Вы можете использовать для проверки команду df:
sudo df -i /
Файл.система Iнодов IИспользовано IСвободно IИспользовано% Cмонтировано в
/dev/sda1 327680 119991 207689 37% /
Сравните количество существующих инод с количеством занятых. Если больше нет свободных, то исправить данную проблему можно будет только если удалить устаревшие или ненужные файлы.
В нормальных условиях, даже на системах интенсивно использующих постоянное хранилище, редко происходит потребление всех инод. Как правило, исчерпание inodes сигнализирует о другой проблеме. Обычно причиной является неконтролируемое создание огромного количество файлов из-за бага в системе или в программе.
В первую очередь нужно локализовать папку, в которой возникла проблема.
Следующая команда выведет количество используемых инод каждой директории, присутствующей в корне файловой системы:
sudo find / -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n
Когда будет найдена директория с наибольшим количеством инод, то можно будет уже работать с данной директории.
В разных ситуациях для пользователей проблемными директориями оказывались:
- /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/ может скопиться огромное количество файлов, имеющих отношение к кэшированию.
Когда проблемная директория найдена, то нужно её очистить. Скорее всего все файлы в ней не нужны, но надо конечно же понимать что удаляете. Также весьма вероятно, что файлов там астрономическое количество и их обработка может затянуться на часы, поэтому самый быстрый вариант — удалить директорию целиком, а затем создать её заново.
Плохие блоки
Ещё одна распространённая проблема — это плохие блоки в файловой системе. Со временем из-за износа дисков, файловые системы повреждаются. Ваша операционная система, скорее всего, увидит эти блоки пригодными для использования, если они не помечены иным образом. Лучший способ найти и пометить эти блоки — использовать fsck с флагом -cc. Помните, что вы не можете использовать fsck из той же файловой системы, которую тестируете. Вам, вероятно, понадобится использовать Live CD.
sudo fsck -vcck /dev/sda1
- замените /dev/sda1 на имя того диска и раздела, который вы хотите проверить. Кроме того, имейте в виду, что это, вероятно, займёт много времени.
Надеюсь, одно из этих решений решило вашу проблему. Эту проблему не всегда легко диагностировать в каждом случае. Однако, если повезёт, вы сможете устранить источник проблемы и продолжить пользоваться системой без её переустановки.
Кстати, сообщение “No space left on device” может возникнуть при попытке записать файл размером более 4GB на раздел с файловой системой FAT — данная файловая система не поддерживает файлы таких больших размеров.
[endtxt]
RSS
- Тест скорости дисков в Linux
- Как запустить команду в фоне в Linux
- Ошибка несоответствие размеров GPT PMBR
- nginx: [warn] protocol options redefined
- Как включить поддержку linux в windows 11