пятница, 13 ноября 2009 г.

Перезапуск сервиса в состоянии maintenance или degraded

Бывает так что при проблемах с питанием одновременно выключается и сервер и массив.
И если этим массивом является Sun-овский T3, то сервер успевает загрузиться быстрее, а файловые системы с массива не успевают смонтироваться.
В Solaris 10 с его Solaris Service Management Facility от
svc:/system/filesystem/local
зависят более четырёх десятков сервисов в том числе: sshd, samba, nfs, smtp и многие другие.
Очевидны два варианта решения этой проблемы: отключение зависимостей или перезапуск сервиса filesystem/local и, конечно, простейший - перезагрузка сервера.
Зависимостей много и отключать их в целом не очень разумно, особенно samb-у и nfs.
Для ручного перезапуска сервиса необходимо подключиться к консоли сервера (sshd так-же не работает).
Решением проблемы может служить следующий скрипт:
#!/usr/bin/sh

# STA The abbreviated state of the service instance

PATH=/usr/sbin:/usr/bin

COLUMN=STA

# MNT maintenance
# DGD degraded

FRMI=svc:/system/filesystem/local:default



STATUS=`svcs -H -o ${COLUMN} ${FRMI}`

if [ ${STATUS} = MNT ]
then
{
echo "Clearing ${FMRI} maintenance status"
svcadm clear ${FMRI}
}
elif [ ${STATUS} = DGD ]
then
{
echo "Clearing ${FMRI} degraded status"
svcadm clear ${FMRI}
}
fi


Выполнять его можно через cron, например, раз в минуту:
* * * * * /root/clear_local_fs


Аналогичная проблема при монтировании файловых систем nfs
svc:/network/nfs/client:default
В этом случае скрипт так же подходит. Необходимо лишь поменять значение FMRI.

Комментариев нет:

Что мне интересно - общие элементы Google Reader