> Что такое inodes и зачем за ними наблюдать (Node.js)

Уровень: junior · Роль: backend · Категория: Технические вопросы

Компании: Wildberries

Стек: Node.js

> Пример ответа

Inode (index node) - это структура данных в файловых системах Unix-подобных ОС, которая хранит метаданные о файле или директории, исключая его имя. Каждый файл имеет уникальный inode, содержащий информацию о правах доступа, владельце, размере, временных метках (создание, изменение, доступ) и указателях на блоки данных на диске. Имена файлов хранятся в директориях как пары «имя → inode».

Наблюдать за inodes важно для QA-инженера, особенно при тестировании Node.js-приложений, работающих с файловой системой (например, логирование, кэширование, загрузка файлов). Основные причины:

  1. Исчерпание inodes - лимит inodes в файловой системе фиксирован при форматировании. Если создано слишком много мелких файлов (например, временные файлы в /tmp или кэш npm), система может отказать в записи, даже если свободное место есть. Это приводит к ошибкам ENOSPC (No space left on device) в Node.js.

  2. Утечки файловых дескрипторов - в Node.js открытые файлы (через fs.open, потоки, сокеты) занимают inode. Если не закрывать их корректно, inode остаются занятыми, что может вызвать исчерпание лимита процессов.

  3. Производительность - операции с большим количеством файлов (например, чтение директории с миллионами записей) замедляются, так как ядро обрабатывает inode-таблицы. Это критично для приложений, интенсивно работающих с файлами.

Как наблюдать:

  • Команда df -i показывает использование inodes по разделам.

  • ls -i выводит inode-номера файлов.

  • В Node.js можно отслеживать через process.resourceUsage() или мониторинг файловых дескрипторов (например, lsof).

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью