Dubrowsky
Хроники одного дупла
Блогово  →  WebDev  → 

Linux: закончились inode

12 Апреля 2012 года

Я недавно рассказывал, как на моем сервачке закончилось место и как я с этим боролся. А тут смотрю - вроде все те же симптомы, хотя вроде все почистил совсем недавно!

 

Ну, я ж тупой... поковырялся, то-се, ничего не выходит. Что делать - написал в саппорт. Кстати, саппорт у fastvds отменный - отвечают быстро и по делу, хвалю.

Ответили: милый друг Николай, у вас закончились иноды, ща исправим! Ну, и исправили. Я тем временем погуглил в яндексе, что это вообще значит и как с этим бороться в случае чего.

1. Что это значит

inode - оно же index node, оно же индексный дескриптор - это такая структура в никсовых файловых системах, где собственно хранится инфа о файлах, где что лежит, с какими правами, какого типа и т.д. Под них отводится какое-то количество свободного места (типа 1%), если это место заканчивается - мы не можем создавать новые файлы, хотя место на диске есть.

2. Почему такое происходит

На практике, насколько я понял, главная причина - слишком большое количество файлов, как правило это означает, что где-то скапливается мусор. В случае с веб-сервером "мусором" оказываются файлы сессий, если они создаются бездумно и вовремя не чистятся.

3. Как посмотреть

Диагностировать проблему оказалось довольно просто - командой "df -i" в консоли. Она показывает для каждой ФС сколько inodes доступно, сколько использовано, сколько осталось и сколько это будет в процентах.

4. Как бороться

Во-первых, видимо, таки чистить файлы сессий. Я еще не смотрел, что там настроили админы из fastvps, но подозреваю, что это какой-то шелл-скрипт из 10 строчек в кроне. В срочном режиме это решается ручной чисткой директории с сессиями при помощи команды "rf -rm", но есть тонкость. Если попытаться сделать

rm -rf /var/www/tmp/sess_*

под маску может попасть слишком много файлов, и оно будет ругаться в духе  "too much arguments". В этом случае я удалял частями тупым перебором - sess_0*, sess_1*, sess_a*, sess_b* и т.д. :) Наверное это можно сделать как-то изящнее одной командой или скриптом. Но когда паника и ничего не работает - не до изяществ :)

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

Вот так вот, век живи - век учись :)

Меня часто спрашивают: нужна ли хипстеру машина в лизинг, особенно грузовая? Если честно, я не могу представить типичного хипстера верхом на какой-нибудь огромной Scania. Но  в нашем обществе потребления возможно все!

Камменты

Vovan07.08.2012, 11:52#
tmpwatch Вам в помощ в этом деле и забудьте про "sess_0*, sess_1*, sess_a*, sess_b*"
Дуброн самый09.08.2012, 18:04#
Vovan, спасибо, это крутая штука, буду знать =) Хотя в том случае я порешал проблему довольно тупо, засунув данные сессий в БД.
Sergey Antipov26.12.2012, 14:37#
Вам на заметку как удалить много файлов не перегружая память, как это сделает rm -rf по маске.
perl -e 'chdir "/path/to/dir/" or die; opendir D, "."; while ($n = readdir D) { unlink $n }'

После opendir D идет маска файлов.

Написать коммент: памятка постеру

 

Крутые посты wtf??? →

27.06.2012 · 37 камментов · рейтинг 11.39
15.02.2013 · 24 каммента · рейтинг 9.74
28.04.2008 · 44 каммента · рейтинг 9.42
23.01.2013 · 20 камментов · рейтинг 8.83
28.03.2008 · 23 каммента · рейтинг 6.78

Последне камменты

16.02.2018  CrazyMiheyКак изменить оболочку (shell) по умолчанию для пользователя Linux: Ну и сколько Страждущих ломанулись подбирать Парол...
28.01.2018  Привет Ера Связь: 04acw1pf8fwgmqhpfp22t6398o4zszhe3x9lj7luwizkodzt7...
26.01.2018  JasonСвязной.Банк закрыл возможность пополнения WebMoney: Hello Здравствуйте. Сервис продвижения в социальны...
24.01.2018  Annaтам же: Hi Здравствуйте. Сервис продвижения в социальных с...
14.12.2017  БраузерНовый Яндекс.Браузер - браузер "Yandex" (отзыв / обзор): Я предпочитаю использовать яндекс браузер

Статсы