OpenVZ Forum


Home » International » Russian » VZFASTBOOT не работает
VZFASTBOOT не работает [message #33777] Sun, 09 November 2008 17:28 Go to next message
Egenius is currently offline  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 #33778 is a reply to message #33777] Sun, 09 November 2008 18:59 Go to previous messageGo to next message
kir is currently offline  kir
Messages: 1645
Registered: August 2005
Location: Moscow, Russia
Senior Member

Почитайте скрипт /etc/init.d/vz, там вроде всё не сверхсложно…

Kir Kolyshkin
http://static.openvz.org/userbars/openvz-developer.png
Re: VZFASTBOOT не работает [message #33781 is a reply to message #33778] Mon, 10 November 2008 05:15 Go to previous messageGo to next message
Egenius is currently offline  Egenius
Messages: 21
Registered: September 2008
Junior Member
Не знаю что именно вы имели в виду, но в стартовом скрипте нашёл только вот эти строки относяшиеся к квотам.

if [ "x${VZFASTBOOT}" = "xyes" -a "x${DISK_QUOTA}" = "xyes" ];
then
$VZQUOTA stat ${veid} >/dev/null 2>&1
if [ $? -eq 6 ]; then
if $VZQUOTA show ${veid} 2>&1 | grep "vzquota : (warning) Quota is running" >/dev/null 2>&1; then
$VZQUOTA on ${veid} --nocheck >/dev/null 2>&1
need_restart="${need_restart} ${veid}"
fi
fi
fi
msg=`$VZCTL start ${veid} 2>&1`
print_result "$msg"

Re: VZFASTBOOT не работает [message #33804 is a reply to message #33777] Tue, 11 November 2008 14:09 Go to previous messageGo to next message
Egenius is currently offline  Egenius
Messages: 21
Registered: September 2008
Junior Member
Так кто-нибудь может просветить меня что нужно сделать чтобы при старте виртуальной машины не проверялись квоты ?
Спасибо !
Re: VZFASTBOOT не работает [message #33806 is a reply to message #33804] Tue, 11 November 2008 17:04 Go to previous messageGo to next message
maratrus is currently offline  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 Go to previous messageGo to next message
Egenius is currently offline  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 #33826 is a reply to message #33819] Thu, 13 November 2008 09:00 Go to previous messageGo to next message
maratrus is currently offline  maratrus
Messages: 1495
Registered: August 2007
Location: Moscow
Senior Member
Если хотим ту же логику, нужно сделать то же самое Smile :

#!/bin/sh
#
# Source function library.
VZCONF=/etc/vz/vz.conf

[ -f ${VZCONF} ] || exit 0
. ${VZCONF}

VZQUOTA=/usr/sbin/vzquota
VZCTL=/usr/sbin/vzctl

# далее следует Ваш код ....

start)
# Start daemon.
need_restart=""
echo -n $"Starting $prog: "
if [ "x${VZFASTBOOT}" = "xyes" -a "x${DISK_QUOTA}" = "xyes" ];
then
      $VZQUOTA stat 100 >/dev/null 2>&1
      if [ $? -eq 6 ]; then
          if $VZQUOTA show 100 2>&1 | grep "vzquota : (warning) Quota is running" >/dev/null 2>&1; then
              $VZQUOTA on 100 --nocheck >/dev/null 2>&1
              need_restart="yes"
          fi
       fi
fi
if [ "x${need_restart}" != "xyes" ];
then
   $VZCTL start 100
   RETVAL=$?
   echo
   if [ $RETVAL = 0 ]; then
     touch /var/lock/subsys/vhost100
     print_success
   fi
else
   $VZCTL start 100
   sleep 3
   $VZCTL stop 100
   $VZCTL start 100
   RETVAL=$?
   echo
   if [ $RETVAL = 0 ]; then
     touch /var/lock/subsys/vhost100
     print_success
   fi
fi

# далее следует опять ваш код ...


Этот набросок не очень хорош, но если хотите, вы его можете допилить.
Re: VZFASTBOOT не работает [message #33843 is a reply to message #33826] Fri, 14 November 2008 03:48 Go to previous message
Egenius is currently offline  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

Previous Topic: Сетевая проблема
Next Topic: Слишком большие kmemsize
Goto Forum:
  


Current Time: Sat Apr 27 15:53:24 GMT 2024

Total time taken to generate the page: 0.02442 seconds