У вас есть файловая система VZFS, что означает, что ваш VPS является виртуальной машиной Parallels Virtuozzo. В Virtuozzo хостинг-провайдер может устанавливать ограничения по многим параметрам, включая то, какие выделения вы получаете с VZFS.
Причина: из Inodes (наиболее распространенные)
После нескольких лет работы с сотнями клиентов Virtuozzo VPS, которые сталкивались с проблемой невозможности создания файлов, несмотря на то, что свободного места оказалось достаточно, подавляющее большинство из них достигло предела числа узлов. Выполните эту команду , чтобы увидеть распределение индексных дескрипторов Inodes
дескрипторы используются IUsed
остальные дескрипторы IFree
и процент инодов используются IUse%
df -i
100% -ное использование inode происходит очень часто. Общие причины в моем опыте:
- Спам по электронной почте
- Исходящие спам-сообщения в очереди
- Сохранено много входящих писем
- Некоторые пользователи устанавливают свою сборку мусора в сеансе PHP (
session.gc_maxlifetime
) более чем на сто лет
- Слишком много общих файлов кэша
- Кэш объектов включен в плагине WordPress W3 Total Cache
- Журнал ошибок Magento (для каждой ошибки создается новый файл)
- Другие плохо настроенные или плохо разработанные программы / скрипты, которые создают кучу файлов и забывают удалить их
Поиск проблемы
Если вы обнаружите, что у вас мало или не хватает inode, но вы не знаете, где находится большинство из них, у меня есть одна строчка Bash, которая ищет текущий каталог и подсчитывает inode с глубиной папки 1:
for i in $(find $(pwd) -maxdepth 1 -type d | sort); do echo -e "$(find "$i" | wc -l)\t: $(readlink -f "$i")"; done | sort -nr
Вы можете продолжать изменять текущий рабочий каталог, начиная с /
пока не найдете виновника, использующего выделение вашего inode.
объяснение
Ваш VPS находится в файловой системе VZFS, которая является частью Parallels Virtuozzo (не OpenVZ, который похож и основан на той же технологии, но OpenVZ не будет использовать VZFS).
Благодаря тому, что Virtuozzo хранит файлы в VZFS, иноды часто ограничены в большей степени, чем в других файловых системах, таких как ext4 или XFS. Хост отслеживает все эти файлы, и хостинг-провайдеру было бы полезно не допустить, чтобы один VPS занимал сотни миллионов инодов. В результате хостинг-провайдер может установить низкий предел инодов, например, 1 000 000 инодов.
После многих лет работы с сотнями клиентов, которые исчерпали свое распределение inode в Virtuozzo, эти "таинственные" проблемы с дисковыми квотами меня больше не удивляют.
Причина: другие ограничения Virtuozzo
У очень небольшого процента клиентов Virtuozzo VPS, с которыми я работал, были проблемы с файловой системой, потому что они выходили за другие пределы. Вы можете увидеть некоторые (но не все) ограничения с помощью этой команды:
cat /proc/user_beancounters
Поиск проблемы
Если столбец failcnt
имеет значения больше 0 или held
значение столбца равно соответствующее limit
значение, вы попали предел.
Вы можете посмотреть, что каждый параметр есть в вики OpenVZ здесь. Параметр может быть "первичным", "вторичным" или "вспомогательным".
Вы должны обратиться к вашему хостинг - провайдеру для получения дополнительной помощи , если вы обнаружите , что вы не можете уменьшить held
количество для лимита , что ваш VPS достиг.
Этот ответ может быть значительно расширен в зависимости от того, какие бобы были превышены, так как разные пределы вызывают разные симптомы.
Причина: лимит (ы) уменьшился после удара
Что касается /proc/user_beancounters
или df -i
, иногда системный администратор Virtuozzo может уменьшить limit
параметра ниже held
значения.
Например, если исходное ограничение параметра diskinodes
составляло 1 500 000, и вы достигли этого предела, то кто-то из вашего хостинг-провайдера установит ограничение вашего инода на 1 000 000, вы увидите странный отчет об инодах из df -i
который не имеет смысла.
С вашей стороны вы можете увидеть неоправданно большое число, например, 18,446,744,069,620,218,961.
Я считаю, что это провокационное поведение со стороны хостинг-провайдера, особенно если они не сообщают вам, потому что необычные ценности, которые вы видите, противоречат знаниям суперпользователей, которые не имеют опыта работы с Virtuozzo/OpenVZ, что приводит к вводящим в заблуждение совет (пример, другой пример).
Поиск проблемы
Свяжитесь с вашим хостинг-провайдером. Покажите им, что вы нашли, и работайте с ними, чтобы ваши бобы были ниже предела.
Если они откажутся вам помочь, откажитесь от своего хостинг-провайдера и найдите другого, который не использует виртуализацию Virtuozzo/OpenVZ. На виртуализацию KVM, виртуализацию VMware, виртуализацию Xen или серверы с открытым исходным кодом будет распространяться гораздо меньше ограничений, чем в Virtuozzo/OpenVZ.
объяснение
Возможно, ваш хостинг-провайдер проводил аудит или отвечал на предупреждение и обнаружил, что ваш VPS использовал слишком много определенного ресурса (почти всегда ограничение inode, которое является параметром diskinodes
на их конце).
Неопытный администратор Virtuozzo в хостинг-провайдере считает, что он может решить эту проблему, уменьшив ограничение до уровня, который ниже фактического использования ресурсов. В случае inode у вас может быть более низкое распределение, например, 1 000 000, даже если фактическое текущее использование может быть выше, например, 1 500 000.
Администратор Virtuozzo в своей панели управления будет видеть ваше фактическое использование и новый лимит, но вы увидите фальшивые числа, которые, возможно, очень неоправданно высоки из-за способа виртуализации Virtuozzo.
Нерадивый администратор Virtuozzo не сообщит вам об этом изменении, поэтому вам следует обратиться к вашему хостинг-провайдеру, если это произойдет с вами.