hdd disk

Диск кончился? No space left on device!

Недавно заметил как вышел из строя известный сервис мониторинга steamcharts.com, спустя сутки в их твиттере появилась запись с объяснением произошедшего:

И в этот же месяц меня постигла такая же участь, но оказалось не всё так просто.

Всё работало вроде бы нормально, и сайт крутился без проблем и ошибок, но файлы по ftp почему-то не загружались, при попытке создать новый файл выдавало ошибку «No space left on device». Хотя диск при этом был занят всего на 25%.

Проверка №1

du -sh

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

Решение №1

find / \( -path /proc -prune -a -path /dev -prune \) -o -type f -size +100M -exec ls -s1 {} \;  2>/dev/null| sort -n -r | head -n 20

Этой командой мы найдём 20 самых больших файлов 100 Мбайт и более. Можем их удалить если они не нужны. Чтобы получить больший список измените последнюю цифру.

Проверка №2

lsof | grep deleted

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

Решение №2

reboot

Проверка №3

df -i

В linux есть общее ограничение на кол-во файлов для созданного раздела, если оно будет превышено, то диск будет считаться заполненным на 100% и никто не сможет создать новый файл, даже если реально занято всего 1% пространства. Этой командой вы проверите заполненность таблицы inodes.

Решение №3

find /var -print0 | xargs -0 dirname | uniq -c | sort -n -k 1 | tail -10

Просто удаляем ненужные файлы, чаще всего засираются папки вроде tmp сессиями от php или ваши собственные скрипты не удаляют временные файлы. Эта команда найдёт 10 папок с самым большим кол-вом файлов в директории /var.

Добавить комментарий:

Ваш адрес email не будет опубликован. Обязательные поля помечены *