Обзоры
Тонкий компьютинг и… Вторсырье
0

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

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

Р. Бэкон

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

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

О чем и почему

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

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

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

Что в облике твоем…

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

Б. Паскаль

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

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

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

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

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

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

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

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

Солнце, пингвины, демоны, окна…

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

А. Бирс

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

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

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

Зачем и кому

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

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

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

Основы основ

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

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

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

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


"Механика" загрузки бездисковой станции

Программа, записанная в BootPROM (она называется bootstrap — перехватчик прерывания загрузки), "выбрасывает" в сеть широковещательный запрос. Назовем его "кто я?". С технической точки зрения, этот запрос представляет собой пакет UDP/IP, в который инкапсулированы самая важная и гарантированно уникальная информация о сетевой карте нашего "тощего" клиента — 48-битовый идентификатор, "зашитый" в карту ее производителем, а также так называемый номер порта (это просто номер необходимого сервиса; его стандартное значение для BOOTP-протокола равно 67).

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

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


Классика тонких систем – X-терминальная система


VNC-клиент "худеет" за счет сервера

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

Протоколы, протоколы…

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

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


Многопользовательская архитектура X Window

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

Архитектуры

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

Тонкости и нюансы

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

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

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

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

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

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


Многопользовательская архитектура X/VNC

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


Архитектура с вынесенным сервером X/VNC

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

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


Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: