9

У меня есть VPS. Управляется с помощью пресловутых параллелей plesk.

сегодня я начал видеть сообщения (сначала через wordpress, но также и из командной строки), говорящие: "Превышена квота диска".

user@machine:~$ echo aaa > /tmp/aaa
-bash: /tmp/aaa: Disk quota exceeded

но на машине много места и только 1 раздел.

user@machine:~$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/vzfs             100G   24G   77G  24% /

Я удалил все файлы из /tmp /*, но все же.

Я ничего не знаю о "vzfs", может быть, это виновник?

Что могло пойти не так? и как можно это исправить?

Решение!

(если вы НЕ используете Parallels Plesk, см. ответ @ Adalee)

Смотрите решение @deltik, относящееся к системе Parallel, как и в моем случае.

df -i немедленно дал смешное количество inode: 18,446,744,069,620,218,961, что безумие для сайта WordPress.

Я также исследовал и обнаружил, что очередь qmail полна inode (она полна попыток некоторых хакеров использовать мою машину для рассылки спама и ответов об ошибках)

исправление qmail здесь не актуально, но мой обходной путь уместен:

  1. остановил службу qmail
  2. я не смог загрузить qmhandle в систему превышения квоты, поэтому мне пришлось
  3. извлечь и загрузить скрипт на другой сайт,
  4. удалите очередь с помощью этой команды:
  5. perl <(wget -O - http://link.to.my/script.pl) -D

таким образом, скрипт запускается прямо из Интернета (что небезопасно, но я сам поместил скрипт там) с параметрами командной строки.

спасибо @deltik за знание и быстрое распознавание этой специфической настройки на месте и предоставление средств для дальнейшей диагностики !!!

2 ответа2

15

У вас есть файловая система 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 не сообщит вам об этом изменении, поэтому вам следует обратиться к вашему хостинг-провайдеру, если это произойдет с вами.

4

"Превышена квота на диск" не означает, что на вашем диске нет свободного места, но вы не можете использовать столько места.

В общем, квоты - это некоторые ограничения, установленные администратором - максимальное количество процессов, которые вы можете запустить, сколько места вы можете занять, сколько файлов вы можете иметь и т.д. Дисковые квоты могут быть установлены для максимального числа inode и дисковых блоков.

Попробуйте запустить quota и quota -g (альтернативно, вы можете запустить repquota -u и repqouta -g), чтобы узнать, ограничены ли ваш пользователь таким и каким-либо образом. Если да, вы можете изменить эти квоты с помощью edquota или отключить их с помощью команды quotaoff . Для этого вам может потребоваться войти в систему как пользователь root, в зависимости от ваших настроек.

Этот сайт содержит несколько примеров работы с квотами, а также содержит ссылки на справочные страницы с полезными командами.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .