Назад | Перейти на главную страницу

Какая часть SMF может выйти из строя при резком отключении питания?

На одном из сайтов моих клиентов местный парень выключил их локальный сервер Solaris 10 x86, отключил источники питания, переместил его, и теперь он не запускается должным образом. Он загружается, а затем отображает приглашение, которое позволяет вам войти в систему. Это похоже на однопользовательский этап (или эквивалент).

Вникнув в это, я думаю, что SMF не позволяет системе стать многопользовательской. SMF генерировал кучу ошибок в autofs, после некоторого обмана я заставил его вместо этого генерировать ошибки в inetd и nfs / client. Все это говорит мне о том, что проблема в каком-то файле состояния SMF или базе данных, которую нужно исправить / удалить / воссоздать или что-то в этом роде, но я не знаю, в чем проблема.

Под «генерацией ошибок» я подразумеваю, что каждую секунду я получаю сообщение на консоли с надписью «Время выхода метода или службы истекло. Убийственный контракт <#>. " Это затрудняет взаимодействие с компьютером.

При выполнении svcs –xv служба отображается как «включена», в состоянии «отключена», причина - «Метод запуска запущен». Использование svcadm в службе ничего не дает, кроме подтверждения того, что служба не находится в состоянии обслуживания.

Журналы в / lib / svc / log / $ SERVICE просто сообщают вам, что этот цикл происходит один раз в секунду. Журналы в / etc / svc / volatile / $ SERVICE подтверждают, что при загрузке служба пытается запустить и немедленно останавливается, больше никаких записей. Обратите внимание, что системный журнал не запускается, потому что системный журнал зависит от autofs, поэтому у меня нет syslog или dmesg.

Поиск в Google всех этих терминов заканчивается тем, что говорит мне, как отлаживать / исправлять либо autofs, либо nfs / client, либо inetd, либо rpc / gss (это была зависимость, которую SMF использовал в качестве предлога для предотвращения «запуска» nfs / client, как он утверждал что rpc / gss был «undefined», что неверно, поскольку все это работало. Я повторно включил его с помощью inetadm, но inetd по-прежнему не запускается должным образом). Но я думаю, что проблема в SMF в целом, а не в отдельных сервисах.

Выполнение restore_repository в «manifest_import» ничего не делает для улучшения или даже заметного изменения ситуации. Я не использовал резервную копию загрузки, потому что последняя загрузка была бесполезной.

Я сказал заказчику, что, поскольку каталоги с ценными данными находятся в отдельной файловой системе (которая fsck такая же чистая, что и не повреждена), мы можем просто переустановить solaris 10 в разделе /. Но это похоже на ужасное оконное решение для этой проблемы.

Так. Есть идеи, какая часть сломана и как ее исправить?

Обновление 1: Я должен, наверное, упомянуть, что в этой системе есть две файловые системы, / и / export. И fsck очищает, и правильно монтирует.

Распространенной основной причиной такой проблемы является проблема при монтировании файловых систем из-за повреждения файловой системы. Это становится довольно редким явлением, особенно для локальных, но ваш заказчик не стал рисковать, отключив ведение журнала ufs (что позволяет избежать большинства повреждений файловой системы, вызванных внезапным отключением питания) и не используя ZFS (что не могут быть испорчены изначально по дизайну).

Вы можете включить подробный запуск smf, отредактировав /boot/grub/menu.lst. Точный способ зависит от вашей версии Solaris и обновления, но обычно это делается путем замены console=graphics по console=text -v -m verbose в строке загрузки ядра.

Если вы хотите начать в однопользовательском режиме, используйте console=text -v -m verbose,milestone=single-user.

Чтобы включить режим отладки smf, используйте console=text -v -m debug

Обратите внимание, что вы можете использовать режим редактирования grub, чтобы временно установить эти параметры.