«Превышена квота диска» при записи в / tmp, но много места (linux)

16807
Berry Tsakala

У меня есть 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 за знание и быстрое распознавание этой специфической настройки на месте и предоставление средств для дальнейшей диагностики !!!

9
Linux имеет настройки выделения дисковых квот для пользователей или групп. Проверьте их также [5 шагов по настройке дисковой квоты для пользователей и групп в UNIX / Linux] (http://www.thegeekstuff.com/2010/07/disk-quota/) DavidPostill 9 лет назад 0
Да, `vzfs` (виртуальная файловая система OpenVZ) может быть причиной. Я видел много провайдеров OpenVZ, которые продают невероятно дешевые серверы, но устанавливают невероятно глупые ограничения для них. grawity 9 лет назад 1
Если у вас есть решение, даже если оно конкретное, опубликуйте его как ответ. Вы всегда можете принять чужой ответ. Daniel B 9 лет назад 0

2 ответа на вопрос

15
Deltik

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

я не знаю, является ли 18,446,744,069,620,218,961 приемлемым количеством инодов для сайта, на котором работает WordPress ... Berry Tsakala 9 лет назад 0
@BerryTsakala: это число используемых инодов или общее число инодов, поддерживаемых файловой системой? Если бы вы могли предоставить полный вывод команды, мы были бы уверены. Исходя из того, что вы написали до сих пор, кажется, что ваш хост не имеет установленного предела inode, что означает, что я был бы неправ. У меня будет обновленный ответ для вас, который исследует пределы Virtuozzo дальше. Deltik 9 лет назад 0
@BerryTsakala: Мне только что пришло в голову, что ваш хозяин может делать что-то зловещее и надеяться, что вы не заметите. Я обновлю свой ответ в ближайшее время с деталями. Deltik 9 лет назад 0
благодарю вас! я уже начал удалять лишние файлы. Я также обнаружил, что спаммер злоупотребляет системой, и электронная почта заполняет очередь qmail. Berry Tsakala 9 лет назад 0
Кстати, индекс не суммирует: df -i в 100 триллионов раз превышает сумму, возвращаемую командой find ... Знаете ли вы, как найти эту дискретность? Berry Tsakala 9 лет назад 0
Круто, @BerryTsakala. Спасибо, что сообщили нам, что это было! Я рад, что смог помочь. Как объяснено в моем ответе, фиктивный подсчет `df -i` может быть вызван администратором Virtuozzo, понижающим значение лимита` diskinodes`. Deltik 9 лет назад 0
Спасибо, GoDaddy предлагает (на нижнем уровне) «выделенные» (виртуальные) серверы с 512 ГБ дискового пространства, но только 655 36060 инодами. Их более высокие предложения хорошо подходят для туберкулеза, хотя вопрос о том, предоставляют ли они вам больше инодов, - это совсем другой вопрос. Orwellophile 9 лет назад 0
Это ужасно, @Orwellophile! Deltik 9 лет назад 0
Онлайн поддержка говорит: «Сейчас я работаю с нашими администраторами, чтобы увеличить ваши inode» Orwellophile 9 лет назад 0
Они увеличили его до 9 800 000. (В 15 раз больше предыдущего). Извините, если это ужасно не по теме, но они огромный провайдер, и название компании поможет в поиске. Orwellophile 9 лет назад 0
4
Adalee

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

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

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

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

Похожие вопросы