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

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


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

Р. Бэкон

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

Многие читатели, наверняка, помнят замечательный компьютер "Специалист", этакий У-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).

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


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

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