No space left on device - но место есть.

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
Ответить
No space left on device - но место есть.
Cannot create temporary directory /tmp No space left on device
На диск ничего записать нельзя, но df -h
говорит что место еще очень много.
РЕШЕНИЕ: Вам поможет команда df -ih и у вас закончились индексных дескрипторов (inodes)

Цитата

Концепция inode является фундаментальной частью *NIX , а также других ОС. По своей сути смысл inode является очень простым для понимания — это всего лишь метаданные о данных. То есть, он хранит полезную информацию о данных, хранящихся на диске. Такой информацией является, например, идентификатор владельца файла, идентификатор его группы-владельца, права доступа к файлу, а также различные временные штампы. Таким образом, когда вы используете, например, команду 'ls', она извлекает информацию о метаданных файлов и каталогов из их индексных дескрипторов.

Некоторые файловые системы, например Ext3, создают все индексные дескрипторы в момент создания файловой системы. Такой подход может быть не совсем удачным, поскольку вы не сможете создавать новые файлы в случае, если все доступные inode будут использованы, даже если на диске достаточно места. Чтобы избежать подобных ограничений, можно использовать файловые системы вроде Ext4 и XFS, которые создают индексные дескрипторы по мере необходимости.

При создании ФC количество инодов определяется параметром -i команды mkfs. Чем больше это число, тем меньше инод создаётся вместе с ФС. Если создавать ФС с параметром -O largefile, то это будет равносильно заданию -i 1048576, т.е. 1 шт./Мб. А уменьшать -i можно вплоть до размера блока, который обычно составляет 4 кб.

Увидеть метаданные директория или файла можно командой stat. Например:

stat /home

Увидеть номера инод файлов текущего директория можно командой

ls -i

Посмотреть, как распределились иноды в вашей системе (сколько использовано и сколько свободно) можно командой

df -hTi

После df -ih  на нужном разделе ищете где скопление кучи файлов

for i in /*; do echo $i; sudo find $i | wc -l; done
Потом вместо /* подставил путь с наибольшим количеством:

for i in /var/*; do echo $i; find $i | wc -l; done
И так до последней точки.

Очень часто это огромное количество файлов сессий в /usr/lib/php5/ -- в настройках php не был включен GC для сессий (session.gc_probability). Для начала включил GC, а потом минут на 20 запустил команду для чистки старых сессий:

find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete

От том как удалить через rm: Argument list too long
Страницы: 1
Ответить
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)
Форма ответов
 
Текст сообщения*
:) ;) :D 8) :( :| :cry: :evil: :o :oops: :{} :?: :!: :idea:
Защита от автоматических сообщений. Введите символы, изображенные на этой картинке в поле ввода &quote;Код подтверждения&quote;.