Содержание

Закончились inodes как решить проблему

Inode (далее – инода) – это сокращение от «index node» – по-русски – индексный узел.

Математически он представляет собой описатель (дескриптор) файла и является базовым понятием, на котором основаны многие юниксные и линуксные файловые системы. Иноды подобны каталогу фундаментальной академической библиотеки, в котором находится информация, связывающая название-автор книг с их физическим местонахождением – комната хранилища, стеллаж, полка. Другими словами, иноды – это данные о данных или метаданные, как любят выражаться айтишники. Линуксная инода содержит достаточно много метаданных:

Как это работает? Каждый раз, когда создается новый файл, ему предоставляется номер inode и имя, после чего он сохраняется в виде уникальных записей в директории. Здесь важно помнить, что одним из способов исчерпания свободного места на файловой системе является именно использование всех Inodes. Это значит, что даже при наличии свободного места на диске, вы все равно не сможете создать новый файл. Когда все Inodes в вашей системе используются, это может привести к внезапной остановке системы. Может возникнуть ситуация, что у одного пользователя слишком много файлов, но сервер начинает плохо работать для всех. Поэтому и вводится ограничение на количество инодов для различных тарифов хостинга.

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

stat /home

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

ls -i

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

df -hTi

Читайте также:

Что может произойти с инодами?

Количество inodes на диске статическое. Это означает, что если у вас много файлов, то иноды могут закончиться раньше, чем закончится дисковое пространство. Как только закончится файловая система, все новые файлы и папки будут отклонены. До этого времени никаких негативных последствий не будет. Когда inodes будет использовано на 100%, вы начнете замечать:

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

Закончились inodes как решить проблему?

Прежде чем что то делать, нужно убедиться что проблема с inodes. Воспользуйтесь командой df:

# df -i
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/hda2            121896960  227651 121669309    1% /
/dev/hda1              26104      44   26060    1% /boot
tmpfs                  64417       1   64416    1% /dev/shm

Значения IUsed, IFree, IUse% дадут вам понимание, в какой файловой системе (разделе) у вас проблема.

Потом нужно посмотреть, в какой папке больше всего вложенных элементов (файлов и папок), а потом вывести их списком, список отсортировать в возрастающем порядке, используйте вот такой конвейер:

find . -mindepth 2 | awk -F/ '{ print $2"/" }' | sort | uniq -c | sort -n | tail -10

mindepth 2 или 3 потому, что достаточно просмотреть/посчитать файлы в папках 2/3 уровней вложенности.

Что делать если закончились inode на VPS

Свободное место (df -h) на диске есть, но ничего не работает. Как правило, проблема эта возникает на VPS.

Сниппет на GitHub

# ls -d1 ~/www/* | while read i; do echo -en "$i\t"; find "$i" -name "*" | wc -l; done;

Также на github есть bash скрипт с названием inodes

# wget -O ~/bin/inodes https://raw.smyl.es/inodes/master/inodes
# chmod +x ~/bin/inodes