"Дискова квота перевищена" під час запису в / tmp, але багато місця (linux)


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, що стосується системи Паралеля, як у моєму випадку.

df -i одразу ж дав недоцільну кількість вкладень: 18,446,744,069,620,218,961, що є божевільним для веб-сайту Wordpress.

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

виправлення qmail тут не доречне, але мій спосіб вирішення:

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

таким чином сценарій працює безпосередньо з Інтернету (що не є безпечною практикою, але я поставив сценарій там сам), з параметрами командного рядка.

дякую @deltik за те, що він знав і швидко розпізнав цю специфічну установку на місці та надав засоби для подальшої діагностики !!!


У Linux є налаштування розподілу дискових квот на основі користувачів або групи. Перевірте їх також 5 кроків до налаштування квот користувачів і групових дисків на UNIX / Linux
DavidPostill

1
Так vzfs(причина "віртуальної" файлової системи OpenVZ) може бути причиною. Я бачив багато постачальників OpenVZ, які продають неможливо дешеві сервери, але встановлюють на них неможливо дурні обмеження.
користувач1686

Якщо у вас є рішення, навіть якщо воно конкретно, будь ласка, опублікуйте його як відповідь. Ви завжди можете прийняти чужу відповідь.
Даніель Б

Відповіді:


15

У вас є файлова система VZFS, що означає, що ваш VPS є віртуальною машиною Parallels Virtuozzo. У Virtuozzo хостинг-провайдер може встановити обмеження для багатьох параметрів, включаючи, які розподіли ви отримаєте за допомогою VZFS.

Причина: Поза введення (найчастіше)

Після багатьох років роботи з сотнями клієнтів Virtuozzo VPS, у яких виникло питання про неможливість створення файлів, навіть незважаючи на те, що вільного місця виявилося достатньо, переважна більшість з них досягла межі їх введення. Виконайте цю команду, щоб побачити розподіл inode ( Inodes), використані inode ( IUsed), залишки inodes ( IFree) та відсоток використаних inodes ( IUse%):

df -i

Маючи 100% використання індексу, трапляється багато. Найпоширеніші причини мого досвіду:

  • Відмови від спаму
  • Вихідні спам-листи в черзі
  • Зберігається багато вхідних електронних листів
  • Деякі користувачі встановлюють свій збір сміття на сесії PHP ( session.gc_maxlifetime) понад сто років
  • Шлях занадто багато загальних файлів кешу
  • Об'єкт кеш увімкнено в плагіні WordPress W3 Total Cache
  • Журнал помилок Magento (для кожної помилки створюється новий файл)
  • Інші погано налаштовані або погано розроблені програми / сценарії, які створюють купу файлів і забувають їх видалити

Вирішення проблем

Якщо ви виявите, що у вас мало вмісту або не маєте внесків, але не знаєте, де більшість з них є, у мене є цей однофайлер Bash, який здійснює пошук у поточному каталозі та підраховує вставки на глибині папки 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 VPS, з якими я працював, мали проблеми з файловою системою, оскільки вони досягли інших обмежень. Ви можете побачити деякі (але не всі) обмеження за допомогою цієї команди:

cat /proc/user_beancounters

Вирішення проблем

Якщо failcntстовпець має значення більше 0 або heldзначення стовпця дорівнює відповідному limitзначенню, ви досягли межі.

Ви можете дізнатися, який параметр є у вікі OpenVZ тут . Параметр може бути "первинним", "вторинним" або "допоміжним".

Щоб отримати додаткову допомогу, зверніться до свого постачальника хостингу, якщо виявите, що не можете зменшити heldкількість лімітів, досягнутих вашим VPS.

Цю відповідь можна значно розширити залежно від того, які боби були помічені, оскільки різні межі, що досягаються, викликають різні симптоми.

Причина: Зниження ліміту після потрапляння

Стосовно /proc/user_beancountersабо df -i, іноді, системний адміністратор Virtuozzo може зменшити значення limitпараметра нижче heldзначення.

Наприклад, якщо початковий ліміт diskinodesпараметра становив 1 500 000, і ви досягли ліміту, то хтось у вашого постачальника хостингу встановить ваш ліміт inode до 1 000 000, ви побачите химерний звіт про введення df -iцього сенсу.

Зрештою, ви могли побачити нерозумно велику кількість, наприклад 18,446,744,069,620,218,961 .

Я вважаю це зловісною поведінкою постачальника хостингу, особливо якщо вони не повідомляють вас, оскільки незвичайні значення, які ви бачите, суперечать знанням супер користувачів, які не мають досвіду роботи з Virtuozzo / OpenVZ, що призводить до введення в оману порада ( приклад , інший приклад ).

Вирішення проблем

Зверніться до свого постачальника хостингу. Покажіть їм, що ви знайшли, і попрацюйте з ними, щоб ваші затримані боби були нижче межі.

Якщо вони відмовляться вам допомогти, відмовтеся від свого постачальника хостінгу і знайдіть іншого, який не використовує віртуалізацію Virtuozzo / OpenVZ. Віртуалізація KVM, віртуалізація VMware, віртуалізація Xen або голі металеві сервери підлягають набагато меншим обмеженням, ніж Virtuozzo / OpenVZ.

Пояснення

Ваш хостинг-провайдер, можливо, проводив аудит або відповідав на попередження і виявив, що ваш VPS використовує занадто багато певного ресурсу (майже завжди обмеження введення, що є diskinodesпараметром на їх кінці).

Недосвідчений адміністратор Virtuozzo від постачальника послуг хостингу вважає, що вони можуть вирішити проблему, зменшивши ліміт на щось нижче, ніж фактичне використання ресурсів. У випадку з індексами у вас може бути нижчий розмір, наприклад, 1 000 000, навіть якщо фактичне поточне використання може бути більшим, наприклад, 1 500 000.

Адміністратор Virtuozzo на їх панелі керування побачить ваше фактичне використання та новий ліміт, але ви побачите фіктивне число, яке, можливо, дуже необґрунтовано велике через спосіб віртуалізації Virtuozzo.

Недбалий адміністратор Virtuozzo не повідомив би вас про цю зміну, тому вам слід звернутися до свого постачальника хостингу, якщо це трапиться з вами.


я не знаю, чи 18,446,744,069,620,218,961 є прийнятною кількістю вводів для сайту, на якому працює wordpress ...
Беррі Цакала

@BerryTsakala: Це чисельність використаних входів чи загальна кількість входів, які підтримує файлова система? Якщо ви могли б забезпечити повний вихід команди, ми могли б бути впевнені. Виходячи з того, що ви писали до цього часу, схоже, що у вашого хоста не встановлено обмеження вхідного рівня, а це означає, що я помиляюся. У мене буде оновлена ​​відповідь для вас, яка досліджує обмеження Virtuozzo далі.
Делтік

@BerryTsakala: Мені просто спало на думку, що твій господар може робити щось зловісне і сподіваюся, що ти цього не помітиш. Невдовзі оновлю свою відповідь деталями.
Делтік

Дякую тобі! я вже почав видаляти зайві файли. Я також виявив, що спамер зловживає системою, і електронна пошта заповнює чергу qmail.
Беррі Цакала

До речі, inode не підсумовує: df -i в 100 трильйонів разів більший за суму, повернуту за допомогою команди find .... Чи знаєте ви, як знайти розсуд?
Беррі Цакала

4

"Дискова квота перевищена" не означає, що на вашому диску немає вільного місця, але вам заборонено використовувати стільки місця.

Загалом, квоти - це деякі обмеження, встановлені адміністратором - максимальна кількість процесів, які ви можете запустити, скільки місця ви можете зайняти, скільки файлів у вас може бути і т. Д. Дискові квоти можуть бути встановлені для максимальної кількості вкладень і блоків дисків.

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

Цей сайт охоплює кілька прикладів роботи з квотами, а також містить посилання на сторінки вручну на корисні команди.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.