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

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

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

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

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

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

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

Поиск в Google всех этих терминов в итоге подсказывает мне, как отладить/исправить либо autofs, либо nfs/client, либо inetd, либо rpc/gss (это была зависимость, которую SMF использовал в качестве оправдания для предотвращения «запуска» nfs/client; он утверждал, что rpc/gss «не определен», что неверно, поскольку все это работало. Я снова включил его с помощью 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 для временной установки этих параметров.

Связанный контент