Закончились inodes как решить проблему
Inode (далее – инода) – это сокращение от «index node» – по-русски – индексный узел.
Математически он представляет собой описатель (дескриптор) файла и является базовым понятием, на котором основаны многие юниксные и линуксные файловые системы. Иноды подобны каталогу фундаментальной академической библиотеки, в котором находится информация, связывающая название-автор книг с их физическим местонахождением – комната хранилища, стеллаж, полка. Другими словами, иноды – это данные о данных или метаданные, как любят выражаться айтишники. Линуксная инода содержит достаточно много метаданных:
- размер файла
- идентификатор (ID) устройства, содержащего файл
- ID пользователя-владельца файла
- ID группы пользователей, к которой принадлежит владелец
- права доступа, присвоенные владельцу, группе и т.н. «другим»
- права чтения, модификации и исполнения для владельца, группы и других
- таймштампы моментов последнего доступа и изменения файла
- счётчик количества жёстких ссылок на файл (если он не нулевой, то файл невозможно удалить)
- указатели на блоки (кластеры) диска, в которых размещён файл
- имя папки или блочного устройства, где расположен файл
- размер блока файловой системы (ФС) раздела, в котором находится файл
- количество блоков, занимаемых файлом
Как это работает? Каждый раз, когда создается новый файл, ему предоставляется номер 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
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах