"Превышена квота диска" при записи в /tmp, но много места (linux)
У меня есть 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 здесь не актуально, но мой обходной путь уместен:
- остановил службу qmail
- я не смог загрузить qmhandle в систему превышения квоты, поэтому мне пришлось
- извлечь и загрузить скрипт на другой сайт,
- удалите очередь с помощью этой команды:
- perl <(wget -O - http://link.to.my/script.pl) -D
таким образом, скрипт запускается прямо из Интернета (что небезопасно, но я сам поместил скрипт там) с параметрами командной строки.
спасибо @deltik за знание и быстрое распознавание этой специфической настройки на месте и предоставление средств для дальнейшей диагностики!!!
2 ответа
У вас есть файловая система VZFS, что означает, что ваш VPS является виртуальной машиной Parallels Virtuozzo. В Virtuozzo хостинг-провайдер может устанавливать ограничения по многим параметрам, в том числе по распределению, которое вы получаете с VZFS.
Причина: из Inodes (наиболее распространенные)
После нескольких лет работы с сотнями клиентов Virtuozzo VPS, у которых возникла проблема с невозможностью создания файлов, даже при том, что казалось, что свободного места было достаточно, подавляющее большинство из них достигло своего предела inode. Запустите эту команду, чтобы увидеть распределение inode (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 не будет информировать вас об этом изменении, поэтому вам следует обратиться к вашему хостинг-провайдеру, если это произойдет с вами.
"Превышена квота на диск" не означает, что на вашем диске нет свободного места, но вы не можете использовать столько места.
В общем, квоты - это некоторые ограничения, установленные администратором - максимальное количество процессов, которые вы можете запустить, сколько места вы можете занять, сколько файлов вы можете иметь и т. Д. Дисковые квоты могут быть установлены для максимального числа inode и дисковых блоков.
Попробуйте запустить quota
а также quota -g
(в качестве альтернативы, вы можете запустить repquota -u
а также repqouta -g
) чтобы увидеть, ограничен ли ваш пользователь таким образом и как. Если да, вы можете редактировать эти квоты с помощью edquota
или выключите их quotaoff
команда. Для этого вам может потребоваться войти в систему как пользователь root, в зависимости от ваших настроек.
Этот сайт содержит несколько примеров работы с квотами, а также содержит ссылки на справочные страницы с полезными командами.