Home    Решения    Услуги    Download    Публикации    Работа    Продукти    Документи
 

 

 
Print this page/Отпечатай тази страница  

Тънки клиенти под Linux

 

от  Владимир  Джувинов



Като операционна система, Linux предлага чудесна база за създаването на инсталации от тънки клиенти (thin clients) и сървърите за тях. Тази статия се стреми да покаже по-скоро различните възможности и конфигурации за тънки клиенти под Linux, отколкото самото изпълнение, което точно и обширно е описано в съответните how-tos, FAQs, и т.н.
 
 
 

Идеята

Тънкият клиент е опростен компютър, който черпи голяма част от функциите си от централен сървър. Съществуват различни степени на "тънкост", в зависимост колко функции се изпълняват се локално при клиента и централно на сървъра. Типичният тънък клиент разполага с огрaничена изчислителна мощност (отнася се за процесора и паметта), мрежова карта и обичайните входно-изходни устройства (монитор, клавиатура и мишка). Основната изчислителна мощност и дискове се намират на сървъра, където се изпъняват всички потребителски програми.

Главната идея зад тънките клиенти е да се намалят разходите по компютърната техника и нейната поддръжка. Тънките клиенти са просто устроени, често без никакви механично движещи се части, което рязко намалява ръзможността от повреда. Липсата на дисково пространство също премахва нуждата от локално администриране на файлове. Така почти цялата администрация се извършва на централния сървър. Ако има нужда от надграждане на процесорната можност или на дисковото пространство, това се извършва само при сървъра, защото само там се съхраняват и зареждат програмите и потрбителските файлове.
 
 

Предистория

Принципът зад тънките клиенти всъщност е доста стар. Той датира с появата на първите mainframe и миникомпютри, въвели т.нар. "time sharing". Това е позволявало няколко потребителя да работят едновременно на една и съща машина, като всеки е стоял пред собствен текстов терминал с клавиатура. Операционната система Unix, първоначално създадена за микрокомпютъра PDP-7, още от самото си създаване поддържа "time sharing" и едновременно работещи потребители.

С появата на персоналния компютър се появи евтина и ефективна алтернатива на сложните и скъпи mainframe и миникомпютри. "Персоналният" им характер обаче се оказва по-скоро слабост, когато се търси ефективна поддръжка на няколко десетки и повече PC. Това стана особено явно през края 90'те години, когато количеството на употребяваните персонални компютри се увеличи многократно. През 1997 Gartner Group публикува изследване за компании в Съединените Щати, според което пет-годишните разходи за един Windows 3.1 PC възлизат на $44250, $38900 за Windows95 PC и $38400 за WindowsNT PC.

Приблизително по това време IBM, Oracle и Sun представиха идеята за Network Computer, или NC, който беше насочен срещу утвърдената Wintel платформа. Появиха се различни интересни технологии за тънки клиенти, като Citrix WinFrame, Microsoft Windows NT Terminal Server и JavaStation на Sun. Въпреки възникналия дебат NC срещу PC, тънките клиенти постепенно заеха значителна ниша от пазара и днес има десетки компании занимаващи се с изработване на хардуер за клиентите, софтуерни приложения и инсталация и поддръжка.
 
 

Ролята на Linux При Тънките Клиенти


През последните няколко години Linux показа, че свободният софтуер може успешно да конкурира комерсиалните софтуерни продукти. Свободният и отворен характер на кода, надежността на ключови сървърни приложения и бързото развитие дадоха възможност на Linux платформата да проникне, макар и все още плахо, в корпоративния свят, контролиран от Microsoft и Sun Microsystems.

Нека да погледнем кои ключови технологии дават възможност на Linux успешно да се ползва като платформа за тънки клиенти:

  • възможност за конфигуриране на OS ядрото според индивидуалните нужди

  •  
  • поддържа TCP/IP протокола

  •  
  • BOOTP и DHCP сървъри за управление на IP адресите

  •  
  • надежден NFS, предоставящ възможност за мрежово монтиране на root file system

  •  
  • X-Windows сървър

  •  
  • множество свободни приложения

  •  
  • може успешно да работи в среда от други Unix системи, както и разполага с възможности за Mac/Linux свързване чрез Appletalk, Microsoft Windows/Linux свързване чрез SAMBA, и Novell Netware/Linux свързване чрез IPX

  •  

Къде Могат да Бъдат Използвани Тънки Клиенти под Linux


Ключов фактор за спестяване на средства чрез използване на тънки клиенти, е да знаем кога да ги използваме. Те работят най-добре в следните принципни ситуации:

  • Ползвателите работят с ограничен брой програми. Нарпимер програми за въвеждане на данни, тексто-обработване, клиенти за електронна поща и интернет браузъри.

  •  
  • Компютри, които се делят от няколко ползватели. Има малко смисъл да се резервира отделен компютър за всеки служител, който рядко се ползва от него. Вместо това всеки ползвател може да разполага със собствено виртуално пространство, което се пази на сървъра и може да се извиква от всеки тънък клиент след log-in.

  •  
  • Отдалечени ползватели, които трудно могат да бъдат поддържани. Ако се повреди един PC, на мястото трябва да бъде изпратен техник, който да отстрани повредата. Понеже тънките клиенти са просто устроени и нямат постоянна памет, вероятносста от повреда е по-малка. При истинска повреда, клиентът може просто да бъде сменен с нов, защото няма да има нужда от ре-инсталиране на софтуера и възстановяване на данните.

  •  
  • Дейностти, които изискват работа с централизирана база данни. Специфични работи като проверка на данни от централна база данни или попълване на електронни формуляри, най-ефективно се извършват от прост тънък клиент.

  •  
  • Когато сигурността има важно значение. Конвенционалните десктоп и портативни компютри могат да са истински кошмар за сигурността, защото те съхраняват всички данни локално и ползвателите имат почти неограничен достъп до тях. Всяка загуба, кражба, вирусна атака или повреда на персоналния компютър може да бъде катастрофална ако там се намират данни със стратегическо значение. Тънките клиенти предоставят по-високо ниво на сигурност, защото данните се съхраняват централно. Самият сървър моще да бъде поставен в защитено помещение и да се извършва периодичен back-up на дисковете.

  •  
  • Замяна на стари текстови терминали. Аналистите предполагат, че по света все още има няколко милиона такива терминали в употреба. Те включват IBM 3270 и 5250 терминали, VT терминали и подобни ASCII терминали.


Тънките клиенти клиенти под Linux предлагат интересни възможности за работа в хетерогенна среда от Unix и Windows NT машини. Ето един пример от практиката:

При разработката на интегрални схеми традиционно се използва специализиран Unix софтуер, който поддържа само комерсиалните варианти на Unix като Solaris, AIX или Irix. В дадения случай се касае за ASIC приложение на Cadence, което е инсталирано на Sun машина. Понякога се налага приложението да се ползва от няколко протребителя едновременно. Коя е най-изгодната алтернатива тук? Тъй като цената на допълнителните Sun работни станции и лицензите на Cadence e много висока (>>$10000), най-евтино е ползването на Linux клиенти, които да се свързват към XDM сървъра на Sun машината. В същото време Linux клиентите монтират потребителските файлове от SAMBA сървър под Linux, който сервира Windows NT клиенти.

Тук би трябвало да се спрем и на ситуациите, когато използването на тънки клиенти би било безсмислено.

  • Коммуникационна връзка с малък капацитет. Макар и да е технически възможно, комуникацията между тънкия клиент и сървъра не може да бъде ефективно провеждана по телефонна линия чрез PPP. Затова се налага локална мрежа или поне ISDN.

  •  
  • Програми изискващи много ресурси (CPU, работна памет). Този критерии обаче е строго специфичен, факторите зависят от изискванията на програмата, възможностите на сървъра и броя на потребителите.

  •  
  • Подчертано мулти-медиини програми. Поради липсата на компресия при предаването на образи, X-протоколът може да генерира голям мрежов трафик при големи и бързо сменящи се образи. Латентността на мрежата също може да бъде пречка при някои интерактивни програми.

Хардуерни Изисквания


Изискванията към хардуера на тънките клиенти не са много високи, тъй като те ще зареждат само Linux ядрото, init и X-сървъра. Конфигурациите са взети от съществуващи инсталации, както и от лични тестове и експерименти.

  • CPU: i486DX 66MHz до iPentium 133MHz. Възможна е и работа с i486SX процесори, но те трудно се справят с бързо променящи се изображения.

  •  
  • RAM: 8 до 16MBytes. Част от паметта може да бъде използвана за ramdisk за съхранение на временни файлове.

  •  
  • Подходяща графична карта, която също така се поддържа от XFree. За предпочитане минимум 256 цвята при 800x600.

  •  
  • Ethernet карта, поддържана от Linux. Ако желаете да стартирате клиента от мрежовата карта, тя трябва да разполага с boot-rom гнездо и разбира се с 32KB eprom чип.

  •  
  • Флопи-дисково устройство, когато клиента не се стартира от boot-rom. Тогава стартирането ще става от дискета.

  •  
  • Монитор, клавиатура и мишка
Всички други устройства, включително и твърдия диск не са задължителни и тяхното добавяне би довело до "набеляването" на клиента.

Тези които ценят тишината и спокойствието, могат с няколко модификации да направят тънкия Linux клиент безшумен. Първо, ако се касае за микропроцесор, който се нуждае от принудително охлаждане, честотата му може да бъде намалена докато той престане да се нагрява и вентилаторът да бъде изваден. След това захранването може да бъде сменено с по-малко без вентилатор, или пък вентилаторът на съществуващото захранване да бъде изключен (не се препоръчва).

Съществуват също така и компании, които предлагат готови тънки клиенти за няколко стотин USD. Те са специално построени за целта и често разполагат с дънна платка с малък form factor, където графиката и Ethernet контролера са интегрирани. Не всички готови тънки клиенти обаче са съвместими с Linux.

Тъй като при сървърът ще се зареждат всички потребителски програми, при него ще е нужна по-голяма инвестиция. Един Pentium клас сървър може много успешно да поддържа 20 тънки клиента. Когато клиентите се ползват за такива тривиални неща като електронна поща или просто тексто-обработване, техния брой може да бъде увеличен до 50 и повече.

При конфигурирането на сървъра е нужно да се обърне внимание на следните точки:

  • CPU: По принцип при Linux скоростта на процесора не играе така важна роля като количеството на работната памет, затова може да се закупи по-евтин процесор. Може да се помисли и за SMP система с 2 процесора, Linux вече предлага много добра поддръжка за dual Pentium системи.

  •  
  • Cache: Колкото повече, толкова по-добре, тъй като всеки cache miss се наказва с ходене до по-бавната работна памет.

  •  
  • RAM: Работната памет е много важна, следователно отново - колкото повече работна памет, толково по-добре. Недостатъчното количество води до чест swapping а след това всеки page fault се наказва с ходене до диска. Linux също така използва работната памет като дисков cache. За сървъра ще са необходими поне 64MBytes или приблизително по 4MBytes за всеки тънък клиент.

  •  
  • Дисково пространство: колкото е нужно за swap файла, програмите и потребителските файлове в /home. Linux предлага отлични възможности за software RAID за повишаване скоростта на четене и писане (disk striping) и по-голяма сигурност (disk mirroring).

  •  
  • Добра мрежова карта и hub с достатъчно гнезда за тънките клиенти.


Досега приемахме, че сървърът се намира на една и съща машина, но също така могат да бъдат използвани и няколко машини. Например програмите могат да се зареждат от една машина, а потребителските файлове да се сервират от NFS на друга машина. Едно такова специализирано сервиране би разпределило натоварването между няколко машини.
 
 
 

Принцип на Действие


Има няколко възможни конфигурации за стартиране на един тънък клиент под Linux, но в повечето случаи главните стъпки са едни и същи:

    1. Зареждане на Linux ядрото от флопи диск или чрез TFTP.

    2. Монтиране на минимална root filesystem от NFS сървър.

    3. Стартиране на локален X сървър.

    4. Свързване към XDM сървър, който извършва log-in на потребителя
 

След като потребителят премине през XDM log-in процеса, всички програми, които той извиква се изпълняват на сървъра, докато целият потребителски интерфейс (графична среда, сигнали от мишката и клавиатурата) се обработва от локалния X сървър. Управлението на потребителския интерфейс от специализиран сървър е фундаменталната характеристика на X-Windows.
 
 

Особености при Инсталацията


Тук накратко ще се спрем на някои важни особености при инсталирането на тънки клиенти. Както вече споменах, начините за конфигуриране на инсталацията са много и има възможности за дълго експерементиране.
 

Начин на зареждане на ядрото

Linux ядрото може да бъде заредено в паметта по два начина:

    1. От boot дискета по обикновения начин. Това обаче поставя изискването за флопи дисково устройство и не винаги е желателно или удобно.

    2. Чрез мрежова карта с boot eprom. След включването на тънкия клиент се извършва програмата, която е записана на eprom-а. Тази специална програма инициализира мрежовата карта, излъчва bootp (или dhcp) request за да получи своя IP адрес и сваля ядрото от tftp сървър и го зарежда в паметта на клиента.
 

Какво Linux ядро ни е нужно ?

Типичното ядро за тънък клиент, когато е внимателно конфигурирано заема малко пространство, или около 400 KB. То непременно трябва да поддържа мрежовата карта, TCP/IP и да е компилирано с опцията NFS root file system. Кодът за дисковете и дисковите файл системи, включително и extfs2 е излишен. Всички опции по LAN интерфейса трябва да са компилирани като част от монолитното ядро, затова внимавайте с модулите.

Linux ядрото за сървъра има по-различни функции, особено внимание трябва да се обърне на поддръката на съответните сървъри. Актуалния Linux 2.2 предлага NFS сървър, който работи в kernel mode и изисква компилиране на съответния модул. Версиите на Linux ядрото, NFS модула и nfsd трябва да си съвпадат, в противен случай могат да възникнат проблеми при зареждането на модула или при стартирането на демона.
 

root file system

Монтирането на root file system става от NFS сървър. Тя трябва да съдържа необходимите файлове за стартирането на init и след това на XFree. Не трябва да се ползва root файловата система на сървъра, а вместо това да се създаде под-директория и там да се изгради root файловата система, която ще се използва от тънките клиенти. След това директорията може да се експортира.

Всеки отделен клиент обаче ще има нужда да създава временни файлове и да променя някой от файловете в /dev. Има поне две решения на този проблем:

    1. да се създадат под-директории с копие на root file system за всеки един клиент и след това всяка една от тези директории да се експортират в read write mode. Това решение има смисъл само при малък брой клиенти.

    2. да има само една под-директория с root file system, която да се експортира в read only mode. След това в работната памет на всеки тънък клиент трябва да се създаде локален ramdisk с капацитет от 4 до 8 MB. На този ramdisk клиентът ще може да записва временните си файлове.
 

Сигурност

Сигурността на инсталацията е много важна и на нея трябва да се обърне специално внимание.

TFTP сървърът представлява потенциален риск за системата, защото не изисква никаква идентификация от клиента. Затова сървърът трябва да бъде рестриктивно конфигуриран.

X в нормалната си конфигурация предлага само рудиментарна сигурност. Достъпът се контролира от т. нар. access control list (ACL), който регулира достъпа според адреса на отдалечения host. Слабостта на този метод с крие в невъзможността за разграничаване на потребителите и рискът от spoofing. За по висока степен на защита може да се премине към MIT Magic Cookie, XDM Authorization или MIT Kerberos.
 
 

Ресурси


LTSP Linux Terminal Server Project
http://www.ltsp.org

Предлага пълен набор от RPM пакети за инсталиране на система от тънки клиенти - готова root файлова система, xdm, xfs, XFree сървъри, прекомпилирани ядра за тънките клиенти, init скриптове и т.н. Изчерпателна документация.
 
 

Linux Diskless Node HOW-TO
http://metalab.unc.edu/Linux/HOWTO/Diskless-HOWTO.html

Описва изграждането на тънък клиент или X terminal под Linux. Множество интересни връзки.
 
 

VMWare
http://www.vmware.com

Използването на VMWare BIOS софтуер позволява Linux да host-ва MS Windows 95 и NT.
 
 

VNC (Virtual Network Computing)
http://www.uk.research.att.com/vnc

VNC е свободен софтуер развит при AT&T, който позволява достъпа до MS Windows desktop от X-Windows и обратно. VNC работи под т. нар. remote framebuffer (RFB) протокол.
 
 

LBX (Low Bandwidth X) Mini-HOWTO
http://www.linuxhq.com/HOWTO/mini/LBX.html

Удължение на X сървъра, което извършва компресия на X протокола за намаляне на мрежовия трафик.
 
 

Etherboot
http://www.slug.org.au/etherboot/

Програмен пакет за създаване на ROM images, които могат да се зареждат от мрежата.
 
 

Netboot
http://www.han.de/~gero/netboot.html

Програма за зареждане на Linux ядрото чрез BOOTP от TFTP сървър.
 
 

Root NFS How-To
http://metalab.unc.edu/LDP/HOWTO/Diskless-root-NFS-HOWTO.html

Как да конфигурираме root file system NFS.
 
 

X Security
http://www.motifzone.com/tmd/articles/X_Security_1/security.html

Дискутира различните аспекти на сигурността при X-протокола.
 
 
 

***
 

Владимир Джувинов, 10 Август 2000

за коментари:
[email protected]