VZFASTBOOT не работает [message #33777] |
Sun, 09 November 2008 17:28 |
Egenius
Messages: 21 Registered: September 2008
|
Junior Member |
|
|
Есть виртуалка с плеском, на которой настроены квоты на дисковое пространство. При нештатном отключении сервера, после запуска виртуалка очень долго стартует, т.к. происходит проверка квот.
В конфиге vz.conf параметр VZFASTBOOT=yes, но похоже он не действует.
Как отключить эту проверку и чем это может грозить ?
Спасибо !
[Updated on: Sun, 09 November 2008 17:29] Report message to a moderator
|
|
|
|
|
|
Re: VZFASTBOOT не работает [message #33806 is a reply to message #33804] |
Tue, 11 November 2008 17:04 |
maratrus
Messages: 1495 Registered: August 2007 Location: Moscow
|
Senior Member |
|
|
Этот кусок кода делает следующее:
- если $VZFASTBOOT и $DISK_QUOTA стоят в "yes"
смотрим в ядро на наличие quota статистики для данной VE,
- если ядро не имеет таковой для для нашей VE (vzquota stat вернула 6), смотрил "vzquota show", то есть информацию из quota файла (при аварийном выключение VE, quota файл может оказаться в неконсистентном состоянии, то есть по-прежнему думать, что quota для данной VE включена),
- если quota файл "плохой" и думает, что quota включена ( if $VZQUOTA show ${veid} 2>&1 | grep "vzquota : (warning) Quota is running" >/dev/null 2>&1; then)
- включает "по-тихому" квоту с опцией nocheck и в ядре и записывает данную VE в need_restart список.
- далее стартуем VE ( msg=`$VZCTL start ${veid} 2>&1`), таким образом, избежим проверки при старте (так как quota уже включена),
ну а потом (следующие строчки, которые вы здесь на написали) перестартовывают ve из списка need_restart, чтобы как-то синхронизировать quota информацию в ядре и в файле
это не то, что Вам нужно?
|
|
|
Re: VZFASTBOOT не работает [message #33819 is a reply to message #33806] |
Wed, 12 November 2008 19:04 |
Egenius
Messages: 21 Registered: September 2008
|
Junior Member |
|
|
Видимо как раз то, но дело в том что это не работает так как Вы описали.
Для полной ясности опишу то каким образом у меня запускается виртуалка. В конфите виртуалки прописано ONBOOT=no
При старте сервера, запускается только /etc/init.d/vz, а виртуальные машины запускаются отдельно, как одна из служб кластера. Для этого я создал скрипт следующего содержания и прописал его запуск в сервисах кластера.
cat /etc/init.d/vhost100
#!/bin/sh
#
# Source function library.
. /etc/rc.d/init.d/functions
prog="vhost100"
PATH=$PATH:/usr/bin:/usr/local/bin:
# By default it's all good
RETVAL=0
rc_done='..done'
rc_failed='..failed'
# Source function library.
DISTR=redhat
print_success()
{
if [ "$DISTR" = "redhat" ]; then
echo_success
else
echo -n "$rc_done"
fi
echo
}
print_failure()
{
echo -n "$1"
if [ "$DISTR" = "redhat" ]; then
failure $"$1"
else
echo -n "$rc_failed"
fi
echo
}
# See how we were called.
case "$1" in
start)
# Start daemon.
echo -n $"Starting $prog: "
vzctl start 100
RETVAL=$?
echo
if [ $RETVAL = 0 ]; then
touch /var/lock/subsys/vhost100
fi
print_success
;;
stop)
# Stop daemons.
echo -n $"Stopping $prog: "
vzctl stop 100
RETVAL=$?
echo
if [ $RETVAL = 0 ]; then
rm -f /var/lock/subsys/vhost100
fi
print_success
;;
restart)
$0 stop
sleep 3
$0 start
;;
status)
vzctl status 100
RETVAL=$?
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
RETVAL=1
;;
esac
exit $RETVAL
Подозреваю что именно в этом может быть причина, т.к. первоначально, запуская виртуалку сразу при старте скрипта vz, проверка квот не производилась. Но мне нужно запускать каждую виртуальную машину отдельно, т.к. на каждой из машин в кластере должна работать своя виртуалка. Что необходимо добавить в скрипт vhost100 чтобы он отрабатывал так-же как скрипт vz ?
Простите за глупые вопросы, но я не очень силён в скриптописании и мне нужна помощь.
Спасибо !
|
|
|
|
Re: VZFASTBOOT не работает [message #33843 is a reply to message #33826] |
Fri, 14 November 2008 03:48 |
Egenius
Messages: 21 Registered: September 2008
|
Junior Member |
|
|
Спасибо !
Попробую применить и отпишусь что из этого выйдет.
Кстати, может можно сделать проще ?
Поставить строчку
vzquota on 200 --nocheck >/dev/null 2>&1
перед строкой
vzctl start 200
Вот только нужно ли после этого делать ещё раз рестарт контейнера как это сделано в скрипте VZ ?
Пробуя и так и так на тестовой машине, разницы не увидел.
[Updated on: Sat, 15 November 2008 10:44] Report message to a moderator
|
|
|