от Н. Антонов(24-01-2006)

рейтинг (80)   [ добре ]  [ зле ]

Printer Friendly Вариант за отпечатване

Цел на статията

Описаното тук решение не дава нищо оригинално. То е само пример за една от най-баналните и стандартни възможности на мрежово ориентираната графична система XFree86, използвана широко в повечето Unix системи и разбира се - в Linux. Цел на тази статия е да опише едно просто и бързо за реализиране решение, при което множество слаби машини използват централизиран сървър за визуализиране на графичен интерфейс, като се възползват всички ресурси на сървъра, в това число процесор, памет, скорост на твърдите дискове, дисково пространство, звукова платка и целия му хардуер изобщо, инсталиран и евентуално оптимизиран клиентски софтуер, т.е. KDE, OpenOffice, Mozilla и други подобни, в това число и шрифтове. Решението е реализирано с дистрибуция Debian GNU/Linux Sid (unstable), ядро 2.6.9, XFree86 4.3, използваните машини са само три, което е напълно достатъчно, за да се направят съответните изводи, а локалната мрежа е с капацитет 100Mbps. По-късно ще видим, че капацитетът не е толкова важен, тъй като информацията, която се трансферира през мрежата, е пренебрежително нищожна..

Предимства

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

Настройване на сървъра

В моя случай разполагам с един Intel P4 2.4Ghz, RAM 512MB DDR 400, Video OnBoard 16MB, HDD 2*80GB 8MB cache. На тази машина инсталираме целия софтуер, който планираме да ползваме. В случая освен стандартната базова система включваме метапакета x-window-system, който включва всичко, необходимо за работата на графичната среда. Добавяте KDE, OpenOffice, Mozilla, MPlayer и въобще каквото ви е на сърце, като не забраяте за любимите ви шрифтове. Акцентирам на KDE и логин мениджъра KDM, тъй като даденият пример тук използва именно неговите възможности. Стъпките, които е необходимо да извършим на сървъра, са обикновено две. Разбира се, приемаме, че сме настроили останалия софтуер е той е готов за използване, създали сме и съответния брой потребители.

  • KDM
    На първо място трябва да кажем на KDM да приема отдалечени потребители.
    1. Редактираме файла /etc/kde3/kdm/kdmrc по следния начин. Намираме секцията [Xdmcp] и променяме реда Enable=false на Enable=true.
    2. Редактираме файла /etc/kde3/kdm/Xaccess, като само разкоментираме следния ред:

    #* #any host can get a login window

    Редът трябва да изглежда вече така:

    * #any host can get a login window

    Втората стъпка правим с ясното съзнание, че нашият сървър е достъпен само в рамките на локалната мрежа. Ако същата машина има излаз към интернет, тя трябва да бъде защитена задължително с firewall, което не е предмет на тази статия.
    3. Третата стъпка е да отворим файла /etc/kde3/kdm/Xservers и да махнем опцията -nolisten tcp от командата за стартиране на Х. Редът би трябвало вече да изглежда примерно така:

    :0 local@tty1 /usr/X11R6/bin/X

    4.Презареждаме конфигурацията на KDM:

    /etc/init.d/kdm reload

  • X Font Server
    Защо ни е необходимо това? Това ни позволява да инсталираме необходимите ни шрифтове само на сървъра, без изобщо да ни интересува какви шрифтове има на клиентските машини, защото те на практика ще ползват шрифтовете на сървъра, като ги достъпват чрез X Font Server. В случая това е пакетът xfs, който е част от x-window-system. Настройките на xfs се правят от /etc/X11/fs/config, където посочваме пътя към директориите с необходимите ни шрифтове. Намираме реда no-listen = tcp и го коментираме, за да не се взима предвид. Ако пипаме по този файл, задължително трябва да презаредим шрифтовия сървър:

    /etc/init.d/xfs reload

Настройване на клиентските системи

Една клиентска система, играеща ролята на Х-терминал, на практика се нуждае само от базова инсталация, като добавим и пакета xserver-xfree86 (в Debian). Дори не се нуждаем от всичко, което влиза в метапакета x-window-system. След като сме настроили /etc/X11/ХF86Config-4 да работи с видеоплатката и входно/изходните устройства на клиентската машина (т.е. мишка и клавиатура), трябва да изпълним само една единствена команда, за да се покаже пред нас логин мениджърът на сървъра. Преди това обаче, да не забравяме за шрифтовете;)

Приемаме, че имаме мрежа от клас 192.168.0.0/24, като сървърът ни отговаря на 192.168.0.1. Трябва да кажем на локалния X, т.е. Х-а на клиентската машина, който ще осигурява само достъп до видеохардуера ни, до мишката и клавиатурата, да чете шрифтовете през отдалечен шрифтов сървър. Отваряме файла /etc/X11/XF86Config-4 и намираме раздела Section "Files". Коментираме всички пътища към локални директории с шрифтове. В този раздел трябва да имаме само следния ред:

FontPath "tcp/192.168.0.1:7100"

Какво написахме тук? Казахме на нашия Х да си търси шрифтове чрез протокол TCP, от машината 192.168.0.1, на чийто порт 7100 слуша по подразбиране X Font Server.

Стартиране

За да можем да видим на клиентската машина графичния логин мениджър на сървъра, трябва да заредим Х, като използваме малко по-особен синтаксис, но преди това трябва да се уверим, че на системата няма стартиран локален графичен мениджър. За всеки случай правим следното:

update-rc.d -f xdm remove
/etc/init.d/xdm stop


Така ще сме сигурни, че xdm няма да се зареди повече. Сега вече стартираме Х по следния начин:

X :0 -query 192.168.0.1

В резултат, би трябвало да видим логин мениджъра на сървъра. Логваме се и си работим на сървъра така, сякаш сме седнали локално пред него. Можем да си пуснем филм, да слушаме музика. Разбира се, ако сървърът е в съседната стая, внимавайте да не изплашите някого;)

Стартирането на Х по този начин не се поддържа от init-скриптовете на системата, а въвеждането наръка е досадно и освен това изисква правата на root. Не е редно операторите на клиентските машини да влизат първо като root, да стартират Х и след това да се удостоверяват пред сървъра като обикновени потребители, нали? Най-интелигентният начин да автоматизираме този процес, е като си дефинираме собствено init-ниво във файла /etc/inittab. Например, добавяме следния ред:

x0:3:respawn:/usr/bin/X11/X :0 -query 192.168.0.1

След това променяме реда id:2:initdefault: по следния начин:

id:3:initdefault:

Записваме промените и презареждаме init:

init q

Извикваме нужното ни ниво или рестартираме (би трябвало да се зареди по подразбиране ниво 3):

telinit 3

Общи впечатления

На първо място се убеждаваме, че системата X Window притежава неподражаема гъвгавост и има огромни мрежови възможности, които не са за подценяване. Що се отнася до натоварването на сървъра, основното, на което се набляга, е консумацията на памет и повишената дискова активност, особено ако паметта недостига. В нашия случай сървърът разполага с 512MB, което е недостатъчно за три едновременни клиента, работещи с Mozilla, OpenOffice, KDE etc. Забелязва се повече от 150MB големина на използваната виртуална памет, като понякога се достига до 250MB! Това означава, че ако разполагаме с 1GB памет на сървъра, тези проблеми изчезват моментално. Натоварването на мрежата е нищожно. През цялото време между клиента и сървъра се трансферират някакви 50-60K/s, което е пълна символика за една локална мрежа;) Нямам никакви забележки към стабилността. Достатъчно е да се погрижим софтуерът на сървъра да е оптимизиран, заради което аз лично компилирам всичко от изходен код с помощта на apt-build. Пакетите са оптимизирани с флагове "mcpu=pentium4 -pipe -fomit-frame-pointer -ffast-math -floop-optimize". Това упражнение е ненужно на клиентските машини, тъй като на тях има само един стартиран процес XFree86 и консумират не повече от 60-70MB памет. С една дума, дори с 64MB вашите стари "таратайки" ще хвърчат като P4;)

Извод

Безспорно, чрез системата X Window имаме възможност да ползваме пълноценно всичко, което прилича поне малко на PC, било у дома или в офиса. Не е нужно на всеки две години да сменяме всички машини и да влизаме в ненужни разходи, нито пък е нужно да се грижим поотделно за софтуера на всяка една от тях. Достатъчно е да поддържаме една съвременна конфигурация, която да се отличава най-вече с повече памет и по-бързи дискове и така ще си осигурим всичко, като се възползваме от реалните многопотребителски и многозадачни възможности на операционната система Linux, при която едновременно много потребители могат да оплзват едни и същи програми, без да си пречат и дори без да знаят кой какво прави;) Достатъчно е само да пипнем два конфигурационни файла, за да изстискаме максимума от наличния ни хардуер.

P.S.Бих се радвал, ако някой допълни тази статия с използването на GDM/Gnome за същите цели.



<< Въведение в RSBAC, част I | Инсталиране на TrueType шрифтове в Gnome >>