Inodes на BitrixVM кончаются раньше свободных гигабайтов
Если на BitrixVM гигабайты ещё свободны, а сайт не пишет файлы – смотрите inode (счётчик записей под файлы), кеш меню и параметры компонента, а не только рост диска.

В чате клиента — «сайт не обновляется», в логах мелькает «No space left on device». Открываете df -h: десятки свободных гигабайтов. Место в байтах ещё есть — закончились inodes, счётчик записей файловой системы под файлы и каталоги. Без отдельной проверки inode usage инцидент замечают уже по падению, а не по графику.
Свободные гигабайты не отменяют «No space left»

Число inode задаётся при создании файловой системы. Когда IUse% доходит до 100%, новые файлы и каталоги создать нельзя — даже если в df -h ещё видны свободные гигабайты. На форуме BitrixVM типичная жалоба: «свободно 20 ГБ», а записать или обновить на диск уже нельзя.
Базовая диагностика рядом с обычным диском:
- df -i — заполнение inode;
- часто вместе с df -h или df -hTi.
Расширение диска BitrixVA по официальным урокам оперирует df -Th / df -h и ростом раздела (LVM/XFS) — это про байты. Добавить гигабайты в гипервизоре само по себе не лечит лавину миллионов мелких файлов: плотность inode на уже созданной ФС от новых ГБ не меняется.
Откуда берётся лавина мелких файлов на Битрикс

Частый виновник на BitrixVM — кеш меню и другие мелкие файлы под bitrix/cache / managed cache. В community отмечают, что тема тянется много лет: чистили inodes и кеш — проблема возвращалась, пока не правили параметры компонента меню.
Официальная механика из урока «Проблемы при кешировании меню»: на каждую страницу — один файл кеша на каждый тип сквозного меню; при кеше по группам множитель ещё растёт. В примере вендора папка bitrix/managed_cache/MYSQL/menu доходила примерно до 1,9 GB при четырёх типах меню и большом числе страниц.
Параметры компонента bitrix:menu, которые стоит сверить с фактическими вызовами:
- CACHE_SELECTED_ITEMS Y/N — подмешивать ли URL в ключ кеша; при Y меню кешируется отдельно «для каждого раздела», и на большом сайте размер кеша меню может вызвать падение из‑за переполнения места на диске. С версии 23.300.0 default — N. На старых шаблонах и кастомных IncludeComponent параметр может всё ещё быть Y или вести себя по‑legacy.
- MENU_CACHE_USE_GROUPS / MENU_CACHE_USE_USERS — при Y в ключ попадают группы или user ID. В community помогали "CACHE_SELECTED_ITEMS" => "N" (замедлило рост) и "MENU_CACHE_USE_USERS" => "N" (после этого падения прекратились). Отключение меняет семантику учёта прав — на порталах со сложными ACL не выключать вслепую.
Смежный класс мелких файлов — сессии PHP при session.gc_* = 0 и почтовая очередь — в диагностике FirstVDS тоже встречается рядом с bitrix/cache. Фокус этой статьи — inode и кеш меню / managed_cache, не сессии и не Redis.
Что проверить до «почистить кеш и забыть»

Симптом простой: место в ГБ есть, а писать на диск уже нельзя. Сначала фиксируете inode, потом ищете каталоги с тысячами файлов и параметры меню — иначе очистка кеша станет ритуалом без эффекта.
- df -i (и при необходимости df -hTi) — есть ли свободные inode, а не только гигабайты.
- Settings → Scalability → Load charts (коробочный Bitrix24 / pool): в System — «Inode table usage»; в Disks — «Inode usage per persent» рядом с Disk usage. Мониторинг нужно включить в Global actions пула, иначе графики пустые. Пороги алерта в официальном уроке не заданы — смотрите usage, не выдуманный SLA.
- Каталоги с тысячами файлов: типично bitrix/cache, bitrix/managed_cache/…/menu; в howto FirstVDS эти пути прямо фигурируют в примерах.
- Фактические параметры вызовов bitrix:menu: CACHE_SELECTED_ITEMS, MENU_CACHE_USE_GROUPS, MENU_CACHE_USE_USERS.
Разрыв docs↔ops: в уроке по кешу меню вендор пишет, что огромное число файлов кеша «не проблема, если хватает места на диске», и больше акцентирует APC. На практике community BitrixVM ловит именно исчерпание inode при свободных гигабайтах. Метрика inode в Load charts уже есть — привычки смотреть только df -h часто нет.
Как снять симптомы и убрать корень
Снять давление по файлам. Настройки → System settings → Cache settings → Delete Cache Files: пункты Only outdated / All / Menu / All managed cache / HTML cache. Вручную чистить /bitrix/managed_cache/ вендор не рекомендует. Очистка снимает симптомы; без правки параметров меню файлы снова размножаются.
Уменьшить размножение ключей. Выставить "CACHE_SELECTED_ITEMS" => "N", если тип меню не переопределяется в подпапках: URL убирается из ключа, выбранный пункт считается после чтения кеша. При необходимости — пересмотреть MENU_CACHE_USE_USERS / группы с учётом ACL.
Не считать лекарством только рост диска. Новые гигабайты без пересоздания ФС или иной плотности inode не останавливают лавину кеша.
Держать inode в мониторинге. Рядом с Disk usage — Inode usage в Load charts и/или регулярный df -i, чтобы ловить рост до «No space left», а не после жалобы клиента.
Частые вопросы
Почему при свободных гигабайтах сайт пишет «No space left on device»?
Закончились inodes — записи файловой системы под файлы и каталоги, а не байты диска. При 100% IUse% новые файлы создать нельзя, даже если df -h ещё показывает свободное место; проверка — df -i.
Поможет ли добавить диск в гипервизоре BitrixVM?
Официальные уроки по расширению диска BitrixVA решают нехватку места в байтах (df -h / рост раздела). От лавины миллионов мелких файлов кеша это само по себе не лечит: число inode на уже созданной ФС от новых гигабайтов не растёт нужным образом.
Какие параметры меню уменьшают число файлов кеша?
В community на BitrixVM помогали "CACHE_SELECTED_ITEMS" => "N" (замедляет рост) и "MENU_CACHE_USE_USERS" => "N" (после этого падения прекращались). С версии 23.300.0 у CACHE_SELECTED_ITEMS default уже N; на старых шаблонах параметр может оставаться Y. Отключение кеша по пользователям и группам меняет учёт прав — проверять на сложных ACL.
Можно ли просто удалить каталог managed_cache вручную?
Вендор рекомендует очистку через админку: Delete Cache Files, в том числе пункт Menu / managed cache. Ручное удаление /bitrix/managed_cache/ не рекомендуется; очистка без правки параметров меню всё равно вернёт лавину файлов.
Где в Битрикс смотреть inode, а не только диск?
Settings → Scalability → Load charts: «Inode table usage» в System и «Inode usage per persent» в Disks рядом с Disk usage. Мониторинг нужно включить в Global actions пула — иначе графики пустые. Дополнительно на сервере — df -i.
Как BX Pulse помогает не пропустить inode-аварию
BX Pulse следит за доступностью и техническим состоянием проектов на 1С-Битрикс и помогает замечать сбои до обращения клиента — в том числе когда «диск ещё есть», а сайт уже не пишет файлы. Добавьте первый сайт и настройте уведомления: https://bx-monitor.ru/.


