Раздел помощи SpaceWeb

Переполнение inodes

24 июл, 2023

Inodes, или индексные дескрипторы ("описатели") - структуры данных в системах Unix, которые используются для хранения информации о файлах и каталогах. Дескрипторы - метаданные, то есть данные о данных.

Inodes содержит в себе полную информацию о файле:

  • размер
  • информацию о владельце
  • группу, к которой принадлежит файл
  • права доступа
  • счетчик жестких ссылок
  • место, где располагается содержимое файла
  • временные отметки (время последней модификации файла, последнее время доступа к файлу и т.д.)

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

Получить информацию о количестве использованных и занятых дескрипторов можно при подключении по SSH с помощью следующей команды:

df -hTi

Значения в выводе команды:

  • Inodes - объем доступного пространства для индексных дескрипторов;
  • IUsed - объем, занятый дескрипторами;
  • IFree - свободный объем;
  • IUse% - объем, занятый дескрипторами, в процентах.

Для устранения ошибок с недостатком свободных inodes необходимо удалить достаточное число файлов или каталоги с большим числом файлов.

Найти директории, содержащие в себе большое количество файлов, можно с помощью команды ниже:

echo "Detailed Inode usage for: $(pwd)" ; for d in `find -maxdepth 1 -type d |cut -d\/ -f2 |grep -xv . |sort`; do c=$(find $d |wc -l) ; printf "$c\t\t- $d\n" ; done ; printf "Total: \t\t$(find $(pwd) | wc -l)\n"

Удалить ненужные файлы и директории можно с помощью команды rm. Данную команду стоит использовать с осторожностью.