Терминальные системы на Linux
Во многих случаях терминальные системы очень эффективны, иногда же они просто панацея. Впрочем, традиционно считается, что такие решения весьма дороги, поскольку требуют использования коммерческого ПО, покупки дополнительных лицензий. Александр Куприн
🕛 16.12.2005, 05:11
Во многих случаях терминальные системы очень эффективны, иногда же они просто панацея. Впрочем, традиционно считается, что такие решения весьма дороги, поскольку требуют использования коммерческого ПО, покупки дополнительных лицензий. Но все это не относится к Linux и open source, ведь благодаря архитектурным особенностям X-сервера Unix-подобные ОС способны работать в качестве терминального сервера практически «из коробки».Известно, что терминальные системы особенно эффективны при использовании бездисковых рабочих станций, что значительно снижает затраты на приобретение и последующее обслуживание оборудования. При этом априори подразумевается исключительно централизованное хранение пользовательских данных и, соответственно, обслуживание всего одного экземпляра операционной системы, под управлением которой работает сервер. Также бездисковые станции не требуют постоянной модернизации, скажем, для полноценной работы X-терминалов достаточно мощностей персональных компьютеров десятилетней давности. Конечно, сложно предсказать, что будет в IT-индустрии еще через десять лет, поэтому кому-то последний довод покажется не слишком убедительным, но то, что таким образом парку морально и физически устаревших ПК можно дать фактически вторую жизнь, не подлежит сомнению.
Еще один немаловажный плюс терминальных решений на базе бездисковых станций, на который почему-то крайне редко обращают внимание, - возможность обеспечения тишины в рабочих помещениях. Действительно, положительный эффект дает уже отсутствие винчестера, кроме того, невысокие запросы к вычислительной мощности таких терминалов позволяют использовать бюджетные компоненты, а следовательно - тихие вентиляторы или вообще пассивное охлаждение для процессора и видеочипа, благодаря чему шум снизится практически до нуля.
Отдельно стоит остановиться на вопросах стоимости. Известно, что сравнить функционально соизмеримые решения на базе Linux и Windows не так-то просто. В многочисленных исследованиях и аналитических отчетах можно найти порой совершенно противоположные заключения, а переносить их выкладки на наши реалии - дело бесполезное. Очевидно, однако, что решения на базе технологий Microsoft требуют значительных начальных вложений - даже если ожидаемый эффект не будет достигнут, отказаться от них уже не получится. Linux в этом смысле дает гораздо больший простор для маневра. Развернуть терминальную систему удастся практически бесплатно, а затраты на администрирование (и все прочее, что охватывает емкий термин TCO) можно будет оценить уже по ходу эксплуатации - такой подход окажется особенно эффективным в небольших компаниях.
Основные принципы функционирования
Классическое терминальное решение с удаленной загрузкой - это набор нескольких стандартных для Linux (и для любой Unix-подобной операционной системы) сервисов: dhcp, tftp, nfs, X-сервера и xfs-сервера (как правило, использование сервера шрифтов является опциональным, и от него можно отказаться, предоставив доступ к шрифтам через NFS). Рассмотрим в общих чертах алгоритм загрузки бездисковой станции на примере LTSP (Linux Terminal Server Project, ltsp.org), как известнейшего и крупнейшего проекта данного класса среди ореn source. Условно его можно разделить на три этапа: загрузка ядра, инициализация и запуск.
1-й этап: загрузка ядра
Так буднично и просто выглядит этап загрузки образа ядра в оперативную память бездисковой станции
Выполняется с помощью кода, описываемого спецификацией удаленной загрузки Etherboot, за которую отвечает одноименный проект ореn source (etherboot.org). Готовые прошивки имеются для огромного числа сетевых карт, при этом обеспечивается обратная совместимость с протоколом PXE, т. е. через сетевую карту с установленным PXE bootprom можно загружать сетевые образы, созданные для спецификации Etherboot. Существует несколько способов запустить подобный код: с внешних носителей (дискета, жесткий диск, CD-ROM), с помощью микросхемы удаленной загрузки (bootprom) или уже упомянутого протокола PXE.
В любом случае управление в конце концов передается Etherboot-коду. Он, в свою очередь, посылает в сеть широковещательный запрос, предназначенный для dhcp-сервера и содержащий MAC-адрес сетевой карты. Используя последний, dhcp-сервер ищет в собственном конфигурационном файле соответствующие данные и возвращает пакет с информацией о параметрах настройки сетевого соединения, с путями к образу ядра и к сетевой файловой системе, которая, если нужно, будет использоваться в качестве корневой, и специальные параметры загрузки ядра (например, IRQ для сетевых карт, работающих на ISA-шине, номер порта и т. п.).
После получения параметров, необходимых для настройки сетевого подключения, Etherboot-код устанавливает соединение с tftp-сервером, получает образ ядра ОС, загружает его в оперативную память и передает ему управление.
2-й этап: инициализация
Особенность загружаемого ядра - поддержка работы с NFS, которая не реализована в виде отдельного модуля, а встраивается непосредственно в ядро на этапе компиляции, более того, изначально сетевая файловая система является корневой. Детали процесса загрузки (с ними можно познакомиться в русскоязычной документации - ltsp.ru/documentation/ltsp-3.0-ru/chapter1.html; хотя она относится к версии 3.0, принцип загрузки в последнем релизе LTSP 4.1.1 не изменился) мы опустим, укажем лишь, что поначалу используется небольшой образ файловой системы, который загружается вместе с ядром (именно так!), а затем, после инициализации оборудования (и повторной настройки сетевых параметров), происходит перемонтирование, и в дальнейшем в качестве корневой применяется уже экспортируемая файловая система. Плюс к тому (и это важно) создается RAM-диск, который форматируется и монтируется к каталогу /tmp, где и хранятся файлы, которые будут создаваться в процессе работы бездисковой станции. Если же их необходимо хранить в другом месте, предварительно создаются соответствующие символические ссылки.
3-й этап: запуск
После окончания инициализации оборудования загружается среда, указанная в настройках LTSP. Это может быть либо графическая, либо текстовая оболочка, последняя чаще всего используется при отладке. Графическая подсистема запускается с ключом query - эта опция заставляет экземпляр X-сервера, выполняющийся на бездисковой станции, подключаться к X-серверу на терминальном сервере и все запросы переадресовывать ему.
По окончании третьего этапа мы получаем рабочую среду, которая практически ничем не отличается от локально установленной ОС Linux, кроме некоторых особенностей работы с устройствами.
Требования к аппаратному обеспечению
Теперь, имея общее представление о принципах функционирования терминальной системы, поговорим о возможных ее конфигурациях. Начнем с аппаратных требований к бездисковым станциям.
X-терминалы
В качестве X-терминалов могут использоваться «ветераны» IT-индустрии с десятилетним стажем
Модуль bootprom с микросхемой серии 27SF010
Именно благодаря тому, что на стороне клиента выполняется минимальный набор программ (ядро и X-сервер), аппаратные требования к объему оперативной памяти на бездисковых станциях, как правило, не превышают 16 MB. Больший объем позволит запускать некоторые приложения локально, а значит, реже обращаться к серверу. Меньший - нежелателен, хотя теоретически возможна работа на машинах с объемом ОЗУ и в 8 MB, но в этом случае понадобится подключать подкачку по NFS, а это увеличивает нагрузку на сеть.
Что касается остальных параметров аппаратного обеспечения, то разумные требования для комфортной работы таковы: процессор Pentium 166 MHz, видеокарта с объемом памяти не менее 2 MB, сетевая карта Ethernet 100 Mbps. Разумеется, теоретически допустимы и более слабые конфигурации, вплоть до 486DX-66, но, как правило, они годятся только для консольного режима.
Три года назад автор лично проверял работу компьютерного класса, состоящего из первых моделей «четверок»: процессор 486SX-40 (без сопроцессора), ОЗУ 8 MB, сетевая карта Ethernet на 10 Mbps, видеокарта Trident 8900 c объемом видеопамяти 512 KB. Система функционировала, хотя и с большим трудом - временами даже можно было наблюдать алгоритм прорисовки графических примитивов в KDE, впрочем, с облегченными оконными менеджерами такой проблемы не наблюдалось по той причине, что они не используют библиотеку Qt.
Из реально существующих и успешно работающих в качестве X-терминала устаревших машин можно назвать компьютер со следующей конфигурацией: Pentium II 233 MHz, 32 MB ОЗУ, видеокарта S3 Trio64V+ с 2 MB видеопамяти, сетевая карта Ethernet 100 Mbps на чипе RTL8139 - именно на таком готовился данный материал.
Терминал-сервер
Сетевая загрузка на стороне сервера при одновременной работе 12 пользователей в среде OpenOffice.org
График сетевой загрузки канала на стороне сервера при работе одного пользователя с текстовым редактором и Web-браузером
На самом деле определить конфигурацию сервера, достаточную для выполнения какого-то набора команд, совсем непросто - многочисленные сторонние факторы наверняка обнаружатся уже в процессе эксплуатации. Скажем, хотя Web-серфинг на первый взгляд не кажется слишком ресурсоемкой операцией, флэш-анимация с легкостью докажет обратное. Именно по этой причине поставщики коммерческих терминальных решений предпочитают проектировать систему с солидным запасом. Авторы LTSP, в свою очередь, утверждают, что двухпроцессорный сервер на Pentium 4 2,4 GHz с ОЗУ 4 GB легко обслуживает 50 рабочих станций, на каждой из которых запущены экземпляры OpenOffice.org и Mozilla.
А вот пример из личного опыта автора: однопроцессорная машина на Pentium 4 3 GHz (с поддержкой HyperThreading) с 1 GB ОЗУ вполне справляется с группой из 12 бездисковых станций. При использовании XFCE4 в качестве оконного менеджера и основной работе в OpenOffice и Firefox (упомянутая выше флэш-анимация блокировалась еще на прокси-сервере) средняя загрузка процессора составляла 10-15%. Пики наблюдались преимущественно в моменты инициализации программного обеспечения. Естественно, KDE или GNOME существенно повысят запросы к оперативной памяти (поэтому лучше остановиться на легких оконных менеджерах вроде XFCE4, IceWM, WindowMaker), хотя в остальном картина принципиально не изменится.
Что касается дисковой подсистемы, то идеальным вариантом для терминального сервера будет применение оборудования SCSI. Определенную надежду также внушают последние реализации SATA (с поддержкой NCQ), в крайнем случае можно воспользоваться и обычными ATA-дисками, объединив их в массив RAID-0.
Адекватно оценить необходимую пропускную способность локальной сети также не слишком просто, поскольку отталкиваться нужно не только от используемого ПО, но и от манеры работы пользователей. Вот только некоторые наблюдения автора. В пассивном состоянии X-терминал практически не создает трафика, даже в процессе набора текста в OpenOffice средняя нагрузка на канал составляет 100-150 Kbps. Как правило, пики (примерно до 10 Mbps) возникают при переключении между разными окнами, потому что при этом происходит существенная перерисовка экрана. Обычно на один сетевой интерфейс с пропускной способностью в 100 Mbps можно подключать до 15-20 рабочих станций, однако это количество, несомненно, придется уменьшить, если предполагается хоть какая-то работа с графикой. Либо применить сетевые карты на 1 Gbps и соответствующий коммутатор, что позволит более полноценно использовать терминалы - даже для просмотра видео.
Требования к терминальному ПО
Хотя терминальные решения можно оценивать и с точки зрения функциональности, в случае open source стоит в первую очередь уделить внимание более узкому, но очень принципиальному моменту - эффективности использования оперативной памяти, в том числе и с точки зрения ее «утечек». Эта традиционная для многих типов ПО ошибка может привести к быстрому исчерпанию свободного объема ОЗУ, и решить данную проблему поможет лишь перезагрузка или своевременное отключение процесса-виновника. Для системного мониторинга вполне подойдут простейшие системные утилиты top или ps, однако гораздо эффективнее будет установка системных лимитов (см. файл /etc/security/limits) для пользователей и процессов.
В случае перехода на терминальную систему, особенно совмещенную с миграцией с Windows на Linux, главная проблема - найти адекватную замену тому ПО, которое использовалось прежде. Для типичной офисной работы отыскать все необходимое (текстовый процессор, электронная таблица, браузер и пр.) сегодня не составляет труда. Наиболее частая причина невозможности смены платформы - деловое ПО «1С», однако и эта проблема в настоящее время решаема. Так, российская компания «Этерсофт» разработала специальную «заплатку» для эмулятора WINE (www.etersoft.ru/content/view/59/) - к сожалению, не бесплатную, - которая позволяет использовать «1С:Предприятие 7.7» в среде Linux.
LTSP
Компьютерный класс, работающий под управлением LTSP: все, что нужно для учебных целей
Почему же наш выбор пал именно на проект LTSP? Прежде всего, это готовое комплексное решение, способное функционировать без дополнительной доработки (настройка сопутствующих сервисов не в счет, без нее никак не обойтись) практически на любом Linux-дистрибутиве. Его создатели не стали выпускать пакеты в различных форматах (rpm или deb), а собрали их в файлы *.tgz, поэтому установка представляет собой процесс распаковки архивов в отдельный каталог, который затем экспортируется посредством NFS и используется в качестве корня файловой системы на бездисковой станции.
Хотя Linux-специалист с уровнем подготовки выше среднего сможет самостоятельно «построить» терминальный сервер из подручных средств, в случае LTSP в этом нет необходимости. Дело в том, что в рамках проекта поддерживается специальная сборочная среда LBE, в которой можно самому пересобрать нужные пакеты. Для этого понадобится около 5 GB свободного дискового пространства и около 300 MB исходных текстов. Удобство настройки готового решения обеспечивается утилитой ltspcfg.
Вероятно, именно поэтому LTSP находит все большую поддержку, в частности, на его базе создан еще один интересный проект - K12LTSP, «Linux для школ» (k12ltsp.org). Не обходят LTSP вниманием и производители аппаратного обеспечения, некоторые из них предлагают уже готовые программно-аппаратные решения (см., например, www.disklessworkstations.com).
Заключение
Таким образом, терминальные решения на базе Linux - уже не фантастика, а реальность. Несомненно, использование бездисковых станций дает возможность сэкономить деньги для бизнеса, но в не меньшей степени такой подход востребован в образовании. Здесь терминальная технология способна решить массу проблем, начиная от соблюдения авторских прав на ПО и заканчивая возможностью продлить срок службы устаревшего оборудования. Ведь в конце концов все должно определяться целесообразностью, а учить подрастающее поколение лучше не конкретным продуктам, а лежащим в их основе технологиям.
E-mail автора: ru_classic@mail.ru