Какая часть 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.

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

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

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

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

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

1 ответ

Решение

Распространенной основной причиной такой проблемы является проблема при монтировании файловых систем из-за повреждения файловой системы. Это становится довольно редким явлением, особенно для локальных, но ваш клиент не положил шансов на свою сторону, отключив ведение журнала 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, чтобы временно установить эти параметры.

Другие вопросы по тегам