Тонкий компьютинг и... вторсырье

14 март, 2000 - 12:29Андрей Зубинский

...ошибочно считают наукой трудной, а иногда даже подозрительной, только потому, что она имела несчастье быть неизвестной отцам церкви
Р. Бэкон

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

Многие читатели, наверняка, помнят замечательный компьютер «Специалист», этакий У-2 целого поколения постсоветских компьютерщиков. Но мало кто замечал, что «Специалист» обладал исключительно удачной архитектурой, основанной на именуемой сегодня идеологии UMA, что в основе модели развития этого компьютера был положен только-только «оперяющийся» принцип открытой интеллектуальной собственности и, наконец, что автор блестящей разработки — преподаватель ПТУ Волков в одиночку победил возглавляемые титулованными академиками целые НИИ, безуспешно пытавшиеся создать «народный советский компьютер» (речь идет о так и не ставшем народным «Корвете»).

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

О ЧЕМ И ПОЧЕМУ

Есть множество толкований «тонкости» модели вычислений, в том числе и предложенное автором в статье о технологии HotDesk. Каждое из них в какой-то степени соответствует действительности, но вот — какой действительности?

Тонкий компьютинг и... вторсырье

Западная модель оценки ТСО (Total Cost of Ownership — совокупная стоимость владения) в окружающей нас реальности кажется довольно абстрактной: лежащие в ее основе глубинные зависимости между спросом и предложением высококвалифицированной рабочей силы и уровнями оплаты труда совершенно нам чужды. Добавим к этому абсолютное несоответствие корпоративных масштабов (по «их» меркам корпорация, заинтересованная в ощутимом снижении ТСО, насчитывает несколько тысяч компьютеризированных рабочих мест) и объемов инвестиций в информатизацию- Теперь о методике расчета ТСО можно надолго забыть.

Но у самой «тонкой медали», кроме ТСО, есть и другая сторона. А именно: в условиях ограниченного бюджета и «реак-тивной» скорости устаревания ПК важнейший фактор, влияющий на формирование потребности в тонких вычислениях, — наличие большого парка морально и физически устаревшей вычислительной техники. Иначе говоря, — вторсырья. Его или заменить нечем (по причине отсутствия достаточных средств), или модернизировать нельзя (и Pentium в «четверку» не становится, да и с каждым днем обычный Pentium все труднее найти), или просто выбросить жалко. А ведь все эти «двойки-тройки-четверки» можно заставить работать, и очень даже неплохо.

ЧТО В ОБЛИКЕ ТВОЕМ...

Все хорошие принципы уже записаны Теперь нужно только использовать их.
Б. Паскаль

Формирование облика будущего изделия — 90% работы, и истина эта хорошо знакома всем инженерам. Давайте взглянем издали на наше будущее детище и попытаемся, пока еще в полутьме, уловить неясные контуры его силуэта. Здесь нам поможет ряд соображений.

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

Второе соображение диктуется здравым инженерным смыслом и требует удаления из нашего будущего тонкого клиента, по возможности, всех механических, т. е. малонадежных, узлов. В первую очередь это касается накопителей на жестких и гибких дисках. «Дряхлые» винчестеры работают слишком медленно, а вероятность появления «битых» секторов у них весьма велика. Ну a FDD просто «отжили свое».

Итак, в части аппаратного обеспечения появилась некоторая определенность: наш будущий «тощий» клиент (обозванный так не из-за ограниченных возможностей, а по причине крайне низкой цены) представляет собой бездисковый ПК из классов «286/386/486/Pentium» с обязательным наличием сетевого адаптера.

Аппаратные особенности «тощего» клиента дают нам в руки важнейшее условие, подсказывающее требования к клиентскому и серверному ПО: для эффективной работы в локальных сетях с ограниченной полосой пропускания (а другие, увы, науке пока не известны) необходимо стремиться к минимизации трафика между сервером и клиентом. Оптимальным решением в таком случае следует считать полную или частичную независимость трафика от объемов обрабатываемых данных Достигнуть этого можно только при поддержке операционными системами и прикладными программами сервера и клиента специальных протоколов, обеспечивающих обмен, грубо говоря, «экранной» информацией, а не самими обрабатываемыми данными.

К слову, в этом тонком нюансе и заключается громадное отличие всех тонких (и нашего «тощего», в частности) клиентов от просто бездисковых станций. В случае последних, работающих, например, под управлением ОС Windows 95 (что вполне реально с единственным ограничением — невозможностью запуска DOS-задач), при необходимости отредактировать файл 200 КВ редактором Word через сеть будет «прокачан» сначала
гигантский исполняемый файл Word, а затем и сам обрабатываемый файл с текстом. Очевидно, уже понятно, почему бездисковые станции вымерли как класс.. В случае с тонким клиентом Word выполняется на сервере, обрабатываемый файл хранится там же, а общение сервера с клиентом ограничивается короткими командами, управляющими процессами отображения информации.

«Бездисковость» вынуждает соблюдать перечень весьма строгих требований к серверному ПО: поддержку ряда специальных сетевых сервисов (об этом позднее), достаточно высокий уровень защиты создаваемой локальной сети, высокую производительность и приемлемую ресурсоемкость. Клиентское ПО, которое, естественно, будет загружаться с сервера, должно характеризоваться малыми размером и ресурсоемкостью (вспомните: наша «коллекция вторсырья» начинается с 286-х ПК!), надежностью и отсутствием необходимости в каком-либо администрировании.

Тонкий компьютинг и... вторсырье

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

СОЛНЦЕ, ПИНГВИНЫ, ДЕМОНЫ, ОКНА...

Головной мозг — это орган, которым мы думаем, будто мы думаем.
А. Бирс

Итак, ранее определившись с требованиями к операционной системе сервера, можно прийти к выводу, что выбор у нас небольшой. На сегодняшний день из существующих для платформы х86 ОС только Sun Solaris, SCO UnixWare, Linux, Free/Net/ j openBSD и Microsoft Windows 2000 Advanced Server/DataCenter подходят на роль основы нашей «тощей» системы. Все они работают на самой массовой и недорогой платформе х86 и в полной мере обладают необходимыми нам свойствами, в первую очередь, — способностью работать с тонкими клиентами.

По очевидной причине высокой стоимости многопользовательской терминальной версии Windows (остальное ПО фактически можно приобрести по цене носителя) и основанных на лицензированном ядре Wndows NT клоновых систем (типа Gtrix WinFrame/MetaFrame) рассмотрение их в качестве основы проектируемой нами «тощей» модели нарушает сам «тощий» принцип. Это, можно сказать, во-первых. Во-вторых, в ближайшем будущем автор непременно постарается рассказать о построении терминальной системы именно для Wndows 2000 и специализированных Wndows-терминалов. В-третьих, проектируемая нами «тощая» система позволит работать с Wndows-приложениями, выполняющимися без всякой эмуляции на отдельных компьютерах под управлением практически любой более или менее современной версии этой ОС.

Оставшийся перечень ОС большим разнообразием не блещет: все перечисленные системы являются воплощениями Unix. Что именно выбрать для реализации конкретной «тощей» ИС — дело вкуса и личных предпочтений разработчиков. Большинство приведенных далее рекомендаций «работают» для всех этих платформ, но проверялись автором исключительно в рамках макетного проекта, развернутого с использованием ОС FreeBSD 3.3.

ЗАЧЕМ И КОМУ

Давайте попробуем обратиться к цифрам. Предположим, что У нас есть 100 стареньких, но вполне исправно работающих 486-х машин. Приведение этого арсенала в соответствие с требованиями сегодняшних массовых настольных ОС влечет более чем ощутимые капиталовложения чуть ли не самый дешевый вариант «временной модернизации», оптимистично предусматривающий повторное использование видеокарт, накопителей, корпусов и мониторов, обойдется приблизительно в 11 тыс долл, (материнская плата Socket 7, процессор от IBM с Р-рейтингом 333 MHz и 64 МВ ОЗУ). Более радикальные или «долгоиграющие» решения могут эту цифру запросто удвоить или утроить. Но это не самое печальное: через годик-другой наше симпатичное прожорливое информационное чадо потребует приблизительно таких же порций «подпитки».

Тонкий компьютинг и... вторсырье

В «тощем» варианте распределение средств выглядит совершенно иначе: на уже имеющиеся машины не тратится ни копейки (минимальные затраты, о которых будет рассказано далее, с лихвой окупаются ликвидацией винчестеров и накопителей на гибких дисках). А куда менее внушительная сумма направляется на создание мощного централизованного сервера-хоста или группы хостов и минимально необходимое сетевое оборудование. Последующие неизбежные модернизации затронут только эту группу оборудования и в ряде случаев могут ограничивать-I ся увеличением объемов оперативной памяти или добавлением принципиально новых хост-машин.

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

ОСНОВЫ ОСНОВ

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

Проблема первая и самая очевидная, откуда и каким образом на бездисковых станциях возникнет необходимое для их работы программное обеспечение? Главная роль в этом процессе отводится сетевой карте, на которой должна быть установлена микросхема ПЗУ с соответствующим программным обеспечением (иначе называемая BootPROM — загрузочная ПЗУ). Так как проектируемая нами система основывается на сервере-хосте под управлением ОС Unix, следовательно, основным сетевым протоколом в ней будет TCP/IP.

Тонкий компьютинг и... вторсырье

Почтенный возраст TCP/IP и его огромная популярность сказались на изобилии самых разнообразных сетевых сервисов. Из несметного их числа нас заинтересуют для решения проблемы загрузки всего два: ВООТР (ВООТ Рrotocol — протокол загрзуки) и DHCP (Dynamic Host Configuration Protocol — протокол динамической конфигурации хостов) и TFTP (Trivial File Transfer Protocol — обыкновенный протокол передачи файлов). Выбор между взаимозаменяемыми протоколами ВООТР и DHCP, основанном на спецификациях ВООТР, в нашем случае несущественен.

Итак, предположим, что у нас есть правильно настроенный сервер и подключенная к этому серверу с помощью самой заурядной Ethernet-сети бездисковая рабочая станция. Естественно, станция даже и не подозревает о своем IP-адресе, об адресе своего сервера и, наконец, о местоположении в файловой системе сервера програм мы, подлежащей загрузке. Всей этой информации просто негде храниться. Попробуем разобраться, что же происходит после включения нашего «тощего» клиента.

Программа, записанная в BootPROM (она называется boot-strap — перехватчик прерывания загрузки), «выбрасывает» в сеть широковещательный запрос. Назовем его «кто я?». С технической точки зрения, этот запрос представляет собой пакет UDP/IР, в который инкапсулированы самая важная и гарантированно уникальная информация о сетевой карте нашего «тощего» клиента -— 48-битовый идентификатор, «зашитый» в карту ее производителем, а также так называемый номер порта (это просто номер необходимого сервиса; его стандартное значение для ВООТР-протокола равно 67).

ОС сервера, а точнее — ее подсистема, именуемая TCP/IP-стеком, формирует внутреннее представление запроса «кто я?» и передает его «суперсерверу internet», коротко называемому inetd. Бояться термина «суперсервер» не следует: inetd выполняет роль обычного многопозиционного переключателя, «включающего» соответствующую номеру порта сервисную программу. В нашем случае для порта 67 инициируется программа обработки ВООТР-запросов, называемая в Unix-терминологии демоном bootpd.

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

Тонкий компьютинг и... вторсырье

Теперь осталось дело за малым — загрузить указанный сервером файл в память клиента. Для этого используется примитивный протокол поблочной передачи данных с подтверждением TFTP: «тощий» клиент, вооруженный знаниями «о себе», запрашивает услуги TFTP соответствующим UDP/IP-пакетом (стандартный номер порта или индекс программы-обработчика — 69), inetd инициирует программу-демон tftpd, выполняющую запрос, пересылая «кусочками» указанный в запросе файл и проверяя правильность приема клиентом каждого «кусочка». «Что это за файл?» — спросите вы. Ну что же, приоткроем и эту «завесу над тайной»: под файлом понимается... ядро операционной системы или вообще единственная программа, «оживляющая» наш «тощий» клиент. От типа этой ОС или програм- I мы зависят возможности и клиентских машин, и всей нашей «тощей» вычислительной системы в целом.

ПРОТОКОЛЫ, ПРОТОКОЛЫ

Так и хочется добавить «...а я маленький такой...». Но после объяснения «на пальцах» примитивности процесса загрузки «тощего» клиента последующая информация никаких особенных трудностей вызывать не должна. Наш клиент с успешно загруженным ядром ОС пока еще ничего не умеет. А ведь мы хотим запускать программы на сервере-хосте и получать доступ к графическому интерфейсу этих программ. Соответственно, нам необходима клиент-серверная
программная система, обеспечивающая подобные услуги и обладающая свойством «де-факто стандартности» (соблюдение этого правила предопределяет как обширный перечень доступного прикладного ПО, так и снижает затраты на реализацию всей ИС в целом). Учитывая «Unix-центрический» характер нашей разработки, выбор сетевой графической системы заранее предопределен. — X Window. Но есть еще одна, совсем «тощая» в клиентской реализации, но весьма критичная к ресурсам сервера разработка, которая нам может пригодиться, — VNC (Virtual Network Computer — виртуальный сетевой компьютер).

Несмотря на то что автор уже рассказывал об X Window повторения пройденного избежать не удастся. Но теперь мы рассмотрим отличие технологий X Window от VNC. Истинно многопользовательская ОС Unix не содержит в ядре ОС поддержки графической подсистемы и, тем более, буфера кадра. Причины такого «несовершенства» очевидны: эти детали реализации необходимы каждому пользователю. X Window как раз и представляет собой клиент-серверную реализацию «недостающего» — графического звена. Два основных компонента X Window — Xlib и Xserver — в соответствии с «реверсивной» терминологией выполняются на сервере-хосте и клиентской машине. Прикладные программы оперируют вызовами Xlib, преобразующей обращения в пакеты протокола Xprotocol и направляющей эти пакеты с помощью сетевой подсистемы ОС программе-клиенту Xserver. Так происходит всегда, даже в тех случаях, когда Xserver выполняется на одной машине с ОС. ХНЬ. прикладными программами. Xprotocol — достаточно высокоуровневая система команд, оперирующая множеством сложных абстракций, в связи с чем Xserver далеко не блещет легковесностью и низкими требованиями к ресурсам.

VNC, в отличие от X, существенно снижает требования к аппаратному обеспечению клиентской машины по причине сокращения числа абстракций до фактически одной прямоугольного фрагмента буфера кадра. Но в случае с Unix применение VNC все равно не позволяет избежать X Window VNC является не самостоятельной графической подсистемой, а скорее, встройкой над буфером кадра.

АРХИТЕКТУРЫ

К этому моменту мы достигли точки, где наступает практически полная определенность. Доступные для реализации два архитектурных решения проще привести в графическом виде. Первое представляет собой классическую Unix-систему с подключенными Х-терминалами, второе — более экзотичное, в целом, его можно назвать «легально бесплатной HotDesk». Для выбора одной из двух архитектур в конкретном случае следует руководствоваться простейшим правилом: если клиентские машины слишком маломощные для выполнения ресурсоемкой программы Xserver (например, на процессорах 286 и 386), следует придерживаться аналога HotDesk. Ну а если вы планируете «утилизировать» «четверки» и старенькие Pentium, то Х-терминальная модель окажется самой выгодной, ведь при ней ваш сеРвер-хост существенно «разоружается» удаленно исполняемыми программами Xserver.

ТОНКОСТИ И НЮАНСЫ

В принципе, для по-настоящему пытливого ума и умелых рук приведенной информации более чем достаточно. Но._ мелочи, как обычно, очень важны. Одна из самых серьезных «мелочей» — выбор операционной системы для «тощего» клиента. Рекомендаций и советов здесь немного.

Тонкий компьютинг и... вторсырье

Во-первых, если речь идет о VNC-машине, то самым оптимальным выбором будет сочетание MS/DR/FreeDOS и программы DosVN С (www.complang.tuwien.ac.at/nino/dosvnc.Vitml). Такая комбинация позволит не отправлять на свалку даже PC АТ 286 (но с 2 МВ ОЗУ). Автором была проверена работоспособность подобного решения на макетной бездисковой станции, изготовленной из безымянной материнской платы с процессором 386SX 25 MHz, 2 МВ ОЗУ, видеокарты Cirrus Logic и совершенно неопределенного, но NE2000-совместимого сете-вого адаптера. Free DOS (www.freedos.org) и DosVN С мгновенно загружались с сервера под управлением FreeBSD и проработали пару дней без явных отклонений от нормы. Время реакции графического интерфейса можно считать приемлемым для многих малоинтерактивных задач.

Во-вторых, для создания полноценного Х-терминала наиболее целесообразно в качестве ОС «тощего» клиента выбрать... опять ту же Unix. Конечно, экзотики ради, можно попробовать странное сочетание DOS и Xserver для этой ОС. Автору известна единственная на сегодняшний день реализация такого «дива», именуемая X Appeal, произведенная итальянской компанией Xtreme и доступная для бесплатного 30-дневного использования в версии с ограниченной функциональностью (www. xtreme.it/xappeal.html, стоимость полнофункциональной версии около $200).

Второй вариант менее экзотического, но привлекательного доступом к приложениям с разных платформ решения — отказ от бездисковых станций и использование Xserver для какой-либо версии распространенной «настольной» ОС — совсем не отличается ни «тонкостью», ни ценовой эффективностью (только приличный Xserver для MS Windows 95/98 стоит около $200). Остается только одно — создать «тощую» конфигурацию любой бесплатной ОС Uinix и использовать соответствующий вашей видеокарте Xserver реализованный проектом XFree86.

Ответы на вопрос «как это сделать?» можно найти в руководствах по выбранной вами ОС. Единственное, не зависящее от особенностей реализаций замечание — «уменьшенное» ядро ОС Unix для «тощего» клиента — должно поддерживать файловую систему NFS (Network File System — сетевая файловая система) в качестве корневой (root), а сервисы сервера-хоста (BOOTP/DHCP и TFTP для бездисковой загрузки) следует расширить еще одним сервером-демоном nfsd. Для удобства пользователей также целесообразна установка дисплейного менеджера xdm (). Авторский опыт эксплуатации FastEthernet мини-сети из двух машин (Celeron 450 MHz, 128 МВ ОЗУ и AMD 486DX4/ 100 16 МВ ОЗУ в бездисковом варианте) показал, что основному компьютеру (хосту) после перевода его в работу с нелокальным Xserver «значительно полегчало», а производительность всей системы в целом можно оценить на «5» по пятибалльной шкале.

В-третьих, где брать ПЗУ BootPROM? Вопрос это насущный, потому как «прошитая» BootPROM — весьма дорогое удовольствие. В решении этой проблемы вам помогут бесплатные программные продукты Etherboot (www.slug.org.au/ etherboot/) или Netboot (www.han.de/-gero/netboothtml). В ходе экспериментов автор пользовался Etherboot, и положительный опыт убедительно доказал высокую надежность полученных «прошивок». Кроме того, сайт Etherboot представляет собой отличный справочник по организации бездисковых машин и Х-терминалов.

В-четвертых, вопрос безопасности полученной ИС. В принципе, он решается стандартными методами защиты локальной сети, а исчерпывающую информацию по безопасности тонких вычислительных систем можно получить на сайте www.nue.et-inf.uni-siegen.de/-schmidt/tcsecurity/.

Ну и, наконец, последнее. В соответствии с многогранностью понятия «тонкости» ваши старенькие машинки могут выполнять не только роли графических терминалов. Так, автор успешно использовал упомянутую выше бездисковую «тройку» в качестве «тощего», но очень симпатичного-графического броузера, заменив VNC-клиента программой Arachne (www.arachne. cz). Данное решение идеально подходит для «тонких intranet» ИС библиотек, магазинов, справочных служб. Удачным оказался и эксперимент, превращающий «тройку» в исключительно удобный сетевой анализатор с графическим интерфейсом. Аналогичные специализированные устройства обладают такими «убойными» ценами, что ни с какой «тонкостью» не согласуются (программу анализатора можно получить с сайта ourworld. compuserve.com/homepages/UrienP/ pktdem.htm). Совсем «дряхлые» компьютеры класса XT 08088, i8086) можно превратить... в сетевые аналого-цифровые терминалы VT100 с помощью не требующей операционной системы (!) программы CVT100 (mem bers.xoom.com /ken _уа р/cvt100b.zip).

Подводя итоги, можно уверенно утверждать: подзабытая технология бездисковых компьютеров работает, и работает отлично. Надо только приложить немного усилий и не торопиться избавляться от старых ПК.