Что делать в неожиданных ситуациях

В некоторых случаях системному администратору приходится сталкиваться с проблемами восстановления после полной катастрофы системы, например, если забыт пароль пользователя root или уничтожена файловая система. Наилучший совет, который можно дать в этой ситуации — не паниковать. Все люди делают ошибки, в том числе и самые глупые. Путь ошибок — лучший, хотя и трудный, путь к мастерству системного администрирования.

Первый шаг к устранению любой проблемы — установить причину проблемы. Прежде, чем писать в списки рассылки или обращаться в службу поддержки, надо посмотреть на проблему в целом, проанализировать, как и какие части системы работают. Может обнаружиться, что самостоятельно устранять неисправности в действительности не так сложно. Кроме того, это путь к самообразованию и росту мастерства.

Только изредка случается, что систему приходится заново устанавливать полностью «с нуля». Многие неопытные пользователи, случайно удалив какой-либо важный системный файл, тут же берутся за переустановку системы. Такой путь нельзя приветствовать. Прежде, чем прибегать к таким радикальным мерам, нужно исследовать проблему и попросить о помощи. Во многих случаях возможно устранить неполадки с помощью режима восстановления, доступного при загрузке в аварийном режиме с установочного диска дистрибутива или при помощи загрузочной дискеты, созданной при установке системы.

Аварийная загрузка

Во всех случаях серьёзного нарушения работы в процессе загрузки рекомендуется тщательно проанализировать сообщения, сделать соответствующие выводы и загрузить систему с другого носителя, после чего попытаться вылечить систему. Наилучший кандидат для этого — загрузочный (например, дистрибутивный) CD в режиме Rescueспасатель»). В этом режиме обычно доступен минимальный вариант Linux, не использующий жёстких дисков компьютера (файловая система размещается в памяти) и со всеми утилитами, необходимыми для устраниния неисправностей. В ALT Linux спасатель даже пытается монтировать работоспособные файловые системы пострадавшего компьютера, но, конечно, не использует их для записи.

Кроме загрузочного CD, можно воспользоваться загрузочной дискетой, которая создаётся при установке Linux. Дискета имеет гораздо меньший объём, поэтому её задача скромнее: хранить ядро и набор драйверов, с которыми ваш компьютер в состоянии нормально загружаться. После загрузки с дискеты вам может протребоваться смонтировать корневую файловую систему (если она работоспособна), или всё тот же спасатель.

Сбои в работе системных служб

Если в процессе загрузки системы неожиданно появляются ошибки (например, системные службы выводят диагностику FAILED), это говорит о нештатной ситуации в работе Linux. Использовать в штатном режиме (пользоваться WWW-сервером, сетевыми дисками, терминальным доступом и т. п.) такую машину нельзя до тех пор, пока вы не исправите ошибки или не убедитесь, что неработающая служба не влияет на поведение других частей системы.

Первым делом следует изучить сообщения, выводимые при загрузке на первую виртуальную консоль (доступна по Alt-F1 или Ctrl-Alt-F1). Делать это стоит в процессе загрузки, покуда более ранние сообщения об ошибках не вытеснены другими. Содержимое консоли можно пролистывать с помощью Shift-PageUp и Shift-PageDown. Диагностику ядра, которая выводится раньше всех, можно посмотреть и после загрузки — с помощью команды dmesg.

Дело в том, что далеко не всякая ошибка фатальна для ситемы. Нередко случается, что барахлит отдельная часть системы (например, WWW-сервер) — и только по причине неаккуратной настройки этой части. Бывает, что служба, в результате экспериментов, настроена вручную и текущее её состояние отражено в файле настроек не до конца. В этом случае рекомендуется загрузить систему и попытаться заново настроить засбоившую службу. Не забудьте посмотреть и на двенадцатую виртуальную консоль и в системные журналы.

Переполнение файловой системы

Не исключено, что необычная работа Linux — следствие переполнения фалами одной из важных файловых систем. Самая распространённая причина переполнения: к некоторому системному журналу не применяется процедура устаревания, поэтому он бесконтрольно растёт. Проверяется поиском большого файла в /var/log, не имеющего очереди устаревших копий. Решение: обрезать этот файл до приемлемых размеров (хотя бы текстовым редактором) и организовать устаревание с помощью newsyslog.

Вторая причина: администратор не читает техническую почту, постоянно приходящую пользователю root каждой Linux-системы. Поэтому почтовый ящик бесконтрольно растёт. Проверяется поиском по /var/spool/mail большого почтового ящика (это не обязательно может быть root, потому что обычно такую почту перенаправляют какому-нибудь действительному пользолвателю). Решение: прочесть (хотя бы проглядеть) почту root и удалить старые сообщения.

Третья причина — какой-либо наивный пользователь имеет право записи в корневую файловую систему, и он им воспользовался, положив туда много больших файлов. Это бывает, когда наивен сам администратор, работающий с правами суперпользователя, или когда домашние каталоги пользователей (/home) не выделены в отдельную файловую систему (а стало быть, принадлежат корневой). Решение: пользователю можно установить дисковую квоту (подробнее об этом см. mount, edquota); от наивности же администратора не убережёт ничто.

Ошибки в файловой системе

Если система отказывается нормально загружаться, но ни на консоли, ни в журналах нет сообщений об аппаратных ошибках, значит, сбоит какая-то жизненно важная её часть. Если диагностика при этом включает в себя текст RUN fsck MANUALLY, ничего страшного, возможно, не произошло. При загрузке Linux проверяет состояние файловых систем (например, после нештатного выключения системы, или просто так, для профилактики). Если файловая система не была корректно размонтирована, на ней может остаться мусор, вроде открытых и не закрытых файлов, которые занимают место на диске и никак не называются. Такой мусор можно вычищать автоматически, что программа fsck и делает.

Однако если выдернуть шнур питания из компьютера в особенно неудачный миг, в файловой системе могут образоваться ошибочные метаданные, то есть сведения о файлах, не соответствующие действительности. Исправление метаданных всегда связвно с некоторым риском: действительные файлы могут потеряться, измениться в размере и т. п. Потому fsck не берёт на себя ответственность по автоматическому исправлению метаданных, а просит сделать это системного администратора. Тому следует запустить fsck, ответить y (от yes) на все вопросы относительно удаления или изменения длины файлов и изучить содержимое каталогов /lost+found/ в каждой файловой системе (там окажутся потерянные файлы). Надо иметь в виду, что fsck может в тяжёлых случаях залечить файловую систему насмерть, так что иногда, если это возможно, стоит предварительно смонтировать сбойную файловую систему в режиме только чтение и сделать резервную копию того, что ещё можно прочесть.

Аппаратные ошибки

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

Если дисковые ошибки возникают только на одном компьютере, дело не в самом диске, а в его совместимости с окружающей аппаратурой или в исправности этой аппаратуры. Большинство аппаратных неисправностей средствами Linux преодолеть невозможно, однако на крайний случай (например, для доступа к системным журналам), можно воспользоваться отладочным (failsafe) режимом загрузки системы. В отладочном режиме используются только необходимые для работы драйверы и настройки ядра, а сервисные функции и всё, что служит повышению быстродействия, отключается. Как правило, отладочный режим предлагается загрузчиком как альтернатива штатному, однако того же эффекта можно достичь с помощью параметров загрузки (bootparam(7)), в частности noacpi и noapic.

И последнее. Если компьютер пришёл в совершенно безобразное состояние, но диск с системой уцелел, её без особенных затруднений можно загрузить на другом компьютере. Самое большее, что может понадобиться, это переопределение некоторых драйверов (если аппаратная конфигурация не совпадает), и, в случае, если диск в новом окружении приходится именовать по-другому, исправление /etc/fstab и начального загрузчика. Но, как правило, работающую систему (возможно, с ненастроенной сетевой или графической подсистемой) вы получите сразу же.