Оказавшись вдруг без работы, да еще в начале лета, я совсем загрустил. Поэтому, когда, после массированной рассылки резюме и поездок на интервью моей персоной заинтересовались и предложили стать системным администратором небольшой сети компьютеров Silicon Graphics, я согласился, признавшись, что опыта нет никакого, а заодно и попросив, "пусть меня научат". Работодателя такая наглость не смутила, и он ответил: "Хорошо, только надо найти, где есть поблизости такие курсы". Ближайшим местом, где этому учат, оказался город Даллас, шт. Техас.

Недельный курс в учебном центре SGI стоит 1850 долл., практически независимо от тематики и места расположения. Список краткой программы курсов (что, где и почем) желающие могут найти через Internet. Попробую рассказать об одном из них более подробно и неформально, чтобы можно было сделать вывод, стоит ли за эти деньги тащиться в такую даль. И не проще ли, просто пробежаться по приведенному списку тем, используя его как план для самостоятельного изучения любого диалекта ОС UNIX.

Одним из входных требований к слушателям курса являлось наличие шести месяцев опыта работы с платформой SGI, хотя, впрочем, требование предоплаты явно доминировало. Сужу по себе: я честно признался, что опыта работы на данной платформе у меня нет и меня никто не выгнал.

День первый

В процессе "Введения" в курс слушатели представились друг другу, а преподаватель объяснила общие правила поведения в учебном центре, распорядок дня, месторасположение отхожих и других важных мест, а также вкратце осветила общее содержание курса. Все это заняло минут 15, а затем еще столько же потратили на обсуждение, из каких же компонентов могут состоять разные типы машин, и как определить, что вам досталось, если выбирать уже поздно. В нашем случае, как показали команды hinv и gfxinfo, всем досталось одно и то же: Indigo 2 c 96 Мбайт оперативной памяти, двумя жесткими дисками по 2 Гбайт, с графической картой Extreme. Кое-кто из группы сказал "фи" но все дружно занялись установкой временных зон, время и даты, имени машины, списков хостов и тому подобными вещами. Кстати, SGI рекомендует использовать шестисимвольную аббревиатуру для временной зоны. Однако, если вы установите из эстетических соображений или из любопытства нечто вроде MOSCOW-3, то вроде бы все до поры работает. Но однажды можете получить неожиданное сообщение, что лицензия на компилятор истекла или ошибочна (как это случилось со мной), так что рекомендую сразу ограничиться, во избежание излишней головной боли, аббревиатурой типа MSC-3, что, как известно, означает - мы опережаем Гринвич по времени на три часа.

Типичный учебный курс "Системного Администрирования на платформе SGI":
  1. Введение
  2. Установка Системы
  3. Системная документация
  4. Поддержка пользователей
  5. Мониторинг системы
  6. Обслуживание дисков
  7. Файловые системы
  8. Администрирование процесса свопинга
  9. Введение в NFS
  10. Управление логическими томами
  11. Старт системы и Shutdown
  12. Уровни исполнения ОС IRIX
  13. Принтеры и терминалы
  14. Установка нового программного обеспечения в среде IRIX
  15. Резервное копирование и восстановление

Учебная группа тем временем перешла к обсуждению вопроса о том, что основным источником знаний об ОС IRIX (да и об UNIX в целом) являются команды man и xman, которыми пренебрегать ни в коем случае не стоит, хотя соответствующие тексты могут занимать не одну сотню мегабайт жесткого диска, поэтому устанавливать их лучше на сервере, если он у вас есть. Тогда, если встретите незнакомую команду, смело можете спросить компьютер "What is" или воспользоваться командой "apropos". Либо погрузиться в чтение библиотеки Insight. Ну а если у вас есть DynaWeb, то убить часок другой, если выдастся свободная минутка, проблем не будет.

Теперь самое время перейти к модулю 4, который был посвящен тому, кто и что делает в системе. Владение этими вопросами является прямой служебной обязанностью системного администратора. Как работать с файлом паролей и групп пользователей, для чего нужен теневой файл паролей, и что еще требуется рядовому пользователю для минимального комфорта в системе. А заодно, как посмотреть, кто и как этим комфортом пользуется, и как использовать для этих целей утилиты cron и at. А чтобы жизнь пользователю совсем медом не казалась, неплохо установить ограничения на использование дискового пространства, и каждую его попытку прочитать что-нибудь за пределами личного каталога регистрировать в системном журнале. А уж если предпринималась попытка что-либо записать, то это уже ЧП. Таким образом, системный журнал быстро может стать самым большим файлом на жестком диске.

Впрочем, всему этому был посвящен пятый модуль курса. Как искать специфические файлы по их специфическим размерам, времени последней модификации, и тому подобное. Как раз здесь прохождение материала незаметно из дружеской беседы о жизни в целом перешло в очень профессиональное русло и набрало жуткий темп, так что у меня даже создалось впечатление, что преподаватель приняла повышенные обязательства закончить пятидневный курс за день. Огромное количество средств мониторинга пользователей и процессов было продемонстрировано в считанные минуты, и я не в силах был даже вкратце законспектировать бесценные рекомендации, сожалея об отсутствии диктофона. Благо, был сделан перерыв на 40 минут для того, чтобы выполнить пару лабораторных работ по пройденному материалу. Лабораторный период перетек в обеденный перерыв, и пришлось выбирать между первым и вторым. В результате, я остался и без первого, и без второго, а также без третьего и салата, но зато все задания к началу следующих занятий выполнил.

В послеобеденное время обсуждались процедуры обслуживания жесткого диска и соответствующие утилиты. После чего пришлось переустановить разделы на втором, свободном от системы жестком диске, специально предназначенном для растерзания слушателями. Ко всему прочему, система этот диск не видела, тут-то и мог бы пригодиться полугодовой опыт работы системным администратором, которого не было. В результате приобретение опыта закончилось много позже официального конца занятий. Впрочем, не для меня одного. Разъезжаться по гостиницам народ не спешил. Лично я покинул помещение в 7 вечера и, опять же, не был последним. Еще в 17.00, когда в соответствии с расписанием должен был закончиться учебный день, объявили, что центр открывается в 7 утра, а занятия начинаются в 9 - просьба не опаздывать. Довольно тонкий для американцев намек на то, что из центра можно вообще не уходить. В восемь вечера должна была состояться встреча членов клуба любителей чего-то, разумеется, чего-то от SGI, и мы то-же были приглашены.

День второй

Начался он с того, что ни один из компьютеров в нашей комнате нормально не работал. Те, кто вчерашний намек понял, и пришел пораньше, негодовали больше всех. Особенно на тех, кто оставался вчера вечером и испортил все компьютеры. То, что это было так задумано, никто и не догадался. С этого утра началась наша практика как реальных системных администраторов.

Только после окончания курсов я понял, что ежеутренние "заготовки" с зависанием компьютеров были самым интересным в программе курсов, причем подбирались для каждого студента индивидуально. К сожалению, сегодня я с трудом могу вспомнить 4 своих. А следовало бы законспектировать и остальные 44 (в учебной группе было 12 человек). Некоторые ребята действительно имели многолетний опыт, и задачки для них подбирались соответствующие.

У меня система молча умирала на этапе загрузки. Оказалось, файл unix имел нулевую длину, и загрузится нужно было вручную, используя резервную копию, которую я сам же накануне сделал. Секундное дело, если знаешь в чем причина. Но я в то утро не знал, а помню только, что компьютер беспрерывно шел на перезагрузку и вмешаться в этот процесс, казалось, просто невозможным. А вы знаете, как работает команда sysinit? Я в то время, к сожалению, не знал и самостоятельно восстановить систему не мог.

Мы еще раз бегло повторили, как правильно разбить физический диск на разделы под UNIX и, в частности, под IRIX. Как можно изменять их параметры в процессе работы, то, в чем практиковались вечером накануне. Ну и само собой перешли к обсуждению файловых структур на дисках, их типам, характеристикам, методам организации (Модуль 7). Подробно разобрали файловые системы efs и xfs, которая способна поддерживать файлы размером до 1 Тбайт при неограниченном размере собственно файловой системы.

Были подробно рассмотрены вопросы организации файловых систем на пользовательском уровне (пользовательские файлы, каталоги, файлы устройств), на системном уровне (суперблок, базовые блоки, таблицы информационных узлов, дополнительные базовые блоки, битовая карта свободных блоков), обсуждалось планирование и инструментарий для создания и поддержки файловых систем.

Модуль 8 был посвящен такому важному элементу операционной системы UNIX, как пространство для свопинга. Но с этим мы справились быстро. Да и лабораторная работа была простая, на 10 мин. В первом упражнении расширили пространство для свопинга, добавив дополнительный раздел на диске. Во втором достигли той же цели за счет создания swap-файла в одном из разделов данных. Провели тесты производительности системы - разницы никакой. С точки зрения безопасности первый способ, разумеется, предпочтительней.

День третий

На следующее утро компьютер, естественно, опять не грузился. Ha загрузочном диске вообще не было разделов. Пришлось заново повторить лабораторную работу предыдущего дня, однако, для утренней гимнастики это было явно многовато - в отведенные 10 мин не уложился. И это мне испортило весь день: позднее не смог во время приступить к следующей работе, пришлось опять "наехать" на обед. Подозреваю, что существовало более простое и быстрое решение, но и мой путь привел к цели, но потребовал час работы.

А учебный день начался с пространного философского обсуждения взаимодействия компьютеров в сети (Модуль 9). Соответствующая лабораторная работа состояла из конфигурирования сервера и клиента NFS. Основное же время было потрачено на постижение философии логических томов (Модуль 10).

День четвертый

И опять утром компьютер не грузился. Локально. Вроде бы можно загрузится по сети с одного из соседских. Но не тут-то было. Ни один IP-адрес в сети не находился. Попробовал перепечатать список хостов - заработало. Но в чем же была причина? Оказывается, все единички были заменены маленькими латинскими буквами "l". Второпях зрительно отличить практически невозможно.

Начался учебный день разбором режимов загрузки. Процесс загрузки для компьютеров SGI трехступенчатый: сначала вызывается встроенный PROM монитор (загружается из ПЗУ, производит диагностику всего железа, очищает и инициализирует память, инициализирует графику и прочее аппаратное хозяйство, имеющееся на вашем компьютере, позволяет изменить стандартную последовательность загрузки, имеет ограниченный набор команд IRIX, включает сетевые возможности); затем системно-независимая мини оболочка, обычно SASH (размещается на диске в разделе заголовка тома, понимает стандартную файловую систему IRIX, загружает по умолчанию файл /unix, но позволяет изменить стандартную последовательность загрузки; возможность загрузки альтернативного ядра очень удобна для целей отладки и настройки); на последнем шаге загружается собственно ядро UNIX. Все три уровня имеют доступ к данным, хранящимся в энергонезависимой памяти, а также к переменным среды. Так что если идет что-то не так на одном из этапов, надо его прервать, и попытаться что-нибудь подправить на предыдущем этапе. Что делать, если не грузится встроенный монитор PROM? Бывалые советуют - вставить вилку сетевого шнура в розетку и попытаться еще раз начать все сначала.

Выполнение процедуры shutdown рекомендовано для следующих случаев: если вы собираетесь отключить компьютер от сети; как крайняя мера, если система зависла; для перехода в однопользовательский режим; если есть необходимость работы с PROM или SASH. Наибольшую проблему при выполнении shutdown создают удаленные пользователи или процессы, использующие ваш компьютер. Для этого необходимо предварительно проверить наличие тех и других с помощью who и ps. Могут оказаться также полезными команды rwho, ruptime, rusers, rup. Предупредить других пользователей вашего компьютера, что он скоро будет отключен, можно с помощью команды wall или самой команды shutdown. Если вы не заботитесь о других пользователях или уверены, что их просто нет, можете использовать для тех же целей более быстрые команды halt или "init 0".

Кстати, команде init был посвящен отдельный Модуль 12. В ОС IRIX с помощью параметра команды init можно задать следующие уровни выполнения:

0 - остановить систему (аналог halt, shutdown -y);

1 - однопользовательский режим, используемый для таких задач администрирования, как, например, установка нового программного обеспечения;

2 - стандартный многопользовательский режим;

6 - режим перезагрузки;

q или Q - перепроверить и переинициализировать файл /etc/inittab;

s или S - еще один вариант однопользовательского режима, при котором терминал, с которого выдана эта команда, получает статус системной консоли. Это единственный режим, в котором не требуется и не проверяется наличие должным образом сформатированного файла /etc/inittab.

a, b или c - обрабатываются только те входы /etc/inittab, для которых режим выполнения установлен соответственно a, b или c.

Текущий режим выполнения системы можно узнать с помощью команды "who -r".

Следующий "Модуль 13" был посвящен вопросам подключения принтеров и дополнительных терминалов. Поскольку принтер в классе был только один, то лабораторная работа свелась к его установке как сетевого. Ну, и немного поиграли со спулером и очередями. Дополнительные терминалы оказались в наличии тоже только у четверых, мне не досталось. Здесь очень понравилась аналогия представления очереди на печать в виде баков с водой, когда администратору отводилась роль водопроводчика. Задача: открыть так (или перекрыть?) вентили в сети, чтобы вся вода растекалась должным образом.

"Модуль 14" был посвящен установке нового программного обеспечения. Тут нам рассказали о трехуровневой иерархии исходных продуктов, о принятых соглашениях по именам продуктов и уровней, о заплатах (patches). Для всех этих целей существует специальная программа inst, которая выводит меню продуктов, имеющихся на дистрибутиве, а перед этим позволяет выбрать местоположение самого дистрибутива (локальные или удаленные: лента, CD-ROM, другой компьютер). Она же проверяет наличие конфликтов между выбранном вами составов устанавливаемых продуктов. В большинстве случаев конфликты можно разрешить автоматически ценою нескольких мегабайт на жестком диске, доустановив недостающие компоненты. Список всех когда-либо установленных или удаленных компонентов хранится в системе, и посмотреть его можно с помощью команды showprods. Если по каким-либо причинам учетная система не работает, существует запасной вариант посмотреть измененные файлы с помощью команды "showfiles -m". Во время лабораторной работы нам предлагалось установить с удаленного CD-ROM поддержку Java.

День пятый

Последний утренний сюрприз был совсем простенький: после включения мой компьютер вновь и вновь шел на перезагрузку. Накануне я как раз не мог понять, для чего нужен режим "init 6". Наверное, как раз для того, чтобы подстроить мне эту маленькую заковыку. Вошел в prom, потом в sash, изменил в /etc/inittab "init 6" на "init 2", продолжил загрузку. Все было ОК!. У моих коллег задачи казались более сложными. Приступать к последнему модулю преподаватель не спешила, формально продолжительность курса составляла 4,5 дня. Так что настроение было уже чемоданное, но видимо только у меня. Дискуссия по результатам утренней разминки затянулась на три часа и плавно перетекла в консультацию по проблемам на местах. Говорили в основном о работе с файловой системой xfs - террабайтные файлы для многих уже актуальны. В целом я понял, что работать на машинах от SGI им нравится, но проблем, как и в любой другой платформе, хватает.

К полудню принесли сертификаты об окончании курсов и памятные кружки с символикой SGI. Мы выразили свое мнение о курсах в специальных анкетах, после чего пара человек покинули помещение, заспешив на самолет. Остальные приступили к разбору последнего "Модуля 15". SGI рекомендует использовать для целей резервного копирования и восстановления утилиту bru (думаю, потому, что SGI сделала к ней графический интерфейс), хотя народ в своей массе все же предпочитает tar - сказывается опыт работы с другими диалектами UNIX.

Последняя лабораторная работа была посвящена тому же. Все сделали резервную копию своей системы.

Пять полных дней пролетели очень быстро. Узнал что-то новое, хотя обо всем этом можно было и в книжках прочитать. Главное было все-таки в том, что после курса почувствовал себя увереннее, да и с хорошими людьми пообщался.

Анатолий Ракалин — Центр подготовки космонавтов, (г.Звездный).