Способы оплаты Abuse

Значение дисковых квот не соответствует фактическому. Все возможные причины

  • Главная
  • База знаний
  • Значение дисковых квот не соответствует фактическому. Все возможные причины
07.11.2025, 19:30

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

Почему возникает проблема с дисковыми квотами

Есть всего две распространенные и очевидные причины, почему появляется данная проблема:

  • изменилась точка монтирования раздела;
  • квоты были определены некорректно при установке.

Решить эту ситуацию можно соответствующим способом - привести значение дисковых квот (фактическое) к значению, указанному в панели управления ISPManager 6. Для этого вы можете использовать один из скриптов, которые будут указаны ниже. А перед этим также можно сделать следующее:

  1. Проверить логи ISPManager. Часто в логах скрывается информация, которая дает понимание, почему возникает несоответствие дисковых квот. 
  2. Отлючите quotasync. Вы можете отключить эту функцию, добавив опцию DisableQuotasync в файл конфигурации ispmgr.conf. После чего перезапустите панель управления командой killall core
  3. Проверьте статус SELinux. Для этого используйте команду getenforce. Просто отключите его на время и проверьте результат.

Это дополнительные действия на случай, если нижеприведенные способы не способны решить проблему.

Используем скрипт

Вариант скрипта выбирается в зависимости от используемой панелью СУБД. 

Первое, что нужно сделать - проверить тип СУБД с помощью следующей команды:

mysql ispmgr

Если подключение к базе данных состоялось, значит, используется именно MySQL. Вывод ошибки «Unknown database 'ispmgr'» укажет на использование SQLite3.

ВАЖНО: перед исполнением скрипта проверьте соответствие пароля администратора СУБД в файле по пути /root/.my.cnf. В случае его отличия от фактического проблема сохранится. Также вы должны его запускать под правами администратора

Вам нужно скопировать скрипт, сохранить его в файле на сервере и выполнить команду:

chmod +x ROAD_TO_FILE/SCRIPT_NAME

Сам скрипт запускается командой:

sh ROAD_TO_FILE/SCRIPT_NAME

Используемый скрипт для MySQL

#!/bin/bash
mysql ispmgr -e "select users.name, userprops.value from users inner join userprops on id=userprops.users where userprops.name='limit_quota' AND value>0;" > test.txt
i=`wc -l test.txt | awk '{print $1}'` ;

for (( count=2; count<=$i; count++ ))
  do
	echo "$count";
	pd="$count""p";
	echo "$pd";
	let "in=`cat test.txt | awk '{print $2}' | sed -n "$pd"`*1024/8";
	setquota -g `cat test.txt | awk '{print $1}' | sed -n "$pd"` `cat test.txt | awk '{print $2}' | sed -n "$pd"`M `cat test.txt | awk '{print $2}' | sed -n "$pd"`M $in $in /;
  done
rm -rf test.txt

Используемый скрипт для SQLite3

#!/bin/bash
sqlite3 /usr/local/mgr5/etc/ispmgr.db "select users.name, userprops.value from users inner join userprops on id=userprops.users where userprops.name='limit_quota' AND value>0;" > test.txt
i=`wc -l test.txt | awk '{print $1}'` ;

for (( count=1; count<=$i; count++ ))
 do
 echo "$count";
 pd="$count""p";
 echo "$pd";
 let "in=`cat test.txt | awk -F "|" '{print $2}' | sed -n "$pd"`*1024/8";
 setquota -g `cat test.txt | awk -F "|" '{print $1}' | sed -n "$pd"` `cat test.txt | awk -F "|" '{print $2}' | sed -n "$pd"`M `cat test.txt | awk -F "|" '{print $2}' | sed -n "$pd"`M $in $in /;
 done
#rm -rf test.txt

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