У вас есть файловая система VZFS, что означает, что ваш VPS является виртуальной машиной Parallels Virtuozzo. В Virtuozzo хостинг-провайдер может устанавливать ограничения по многим параметрам, в том числе по распределению, которое вы получаете с VZFS.
Причина: из Inodes (чаще всего)
После нескольких лет работы с сотнями клиентов Virtuozzo VPS, у которых возникла проблема с невозможностью создания файлов, даже несмотря на то, что свободного места оказалось достаточно, подавляющее большинство из них достигло предела своих инодов. Запустите эту команду, чтобы увидеть распределение inode ( Inodes
), используемые inode ( IUsed
), оставшиеся inode ( IFree
) и процент используемых inode ( 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 не сообщит вам об этом изменении, поэтому вам следует обратиться к вашему хостинг-провайдеру, если это произойдет с вами.