Различия между версиями 1 и 16 (по 15 версиям)
Версия 1 от 2008-07-09 22:19:52
Размер: 11124
Редактор: eSyr
Комментарий:
Версия 16 от 2008-07-14 10:58:12
Размер: 21688
Редактор: DmitryChistikov
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 3: Строка 3:
Первый кадр, который мы сняли это загруженный терминл серер. Со временем, после появления версии 2.6 ядра Linux и виртуальной файловой системы sysfs, политика по оформлению и регистрации драйверов и аппаратного обеспечения компьютера изменилась и необходимость в сборке отдельного специфического ядра для терминальных клиентов отпала. LiveCD в ALT Linux, к примеру, изготавливается из самого обычного ядра с обычными модулями. Проект же LTSP, к сожалению, был сильно привязан к уже разработанной инфраструктуре и системе патчей, а потому непосредственная интеграция его в обычный дистрибутив не представлялась возможной. Сборка LTSP в рамках ALT Linux, к примеру, была большим bundle-файлом. Он выкладывался в определенное место, после чего целая коллекция скриптов настраивала нужные сервисы, --- только так это работало. Поэтому был создан ALTSP - ALT Linux Terminal Server Project. Его разработчики частично скопировали инфраструктуру LTSP, избежав при этом необходимости собирать специальное ядро. Результатом работы ALTSP стал специализированный дистрибутив, установка которого практически ничем не отличается от установки ALT Linux Мастер, за двумя исключениями:
Строка 5: Строка 5:
Времена менялись, и с появлением 2.6 и sysfs, а также с изм. политики регистрации железа в ядре линукс необходимость создания отдельного специфического ядра отпала. Например, в альте для этго берётся обычная система. К сожалению , проект LTSP был сильно завязан на систему патчей, и собрать его было довольно проблемно. Поэтому разработчики ALTSP поступлии очень просто --- они частично скопировали структуру настр. сервисов, некие технологие, позв. осущ. удалённого выполнения. но никакого спец. ядра и утилит, предн. для чёрной магии, не понадобилось. Получился. специализ. дистрибутив, который уст. на выделенный сервер, установка которого практ. ничем не отличается от того же Мастера, за думя исключениями: первое --- раздела установщика под названием "разметка диска" нет, там есть окно "я вам сейчас диск убью" и галочку "я согласен". Поскольку там достаточно хитро надо разметить всё. Второе --- в этом сервере должны быть две сетевых карты, внешняя должна смтреть в интернет, а другая --- в локальную сеть. Настр. они след. образом: внешняя карта должна быть настроена статически, или необх. совершать некие упражнения. Вторая сетевая карта обязана быть настроена единственным способом (адрес должен быть 192.168.0.1). Больше видимых различий в установке нет. Ну и другой пакетный набор.  * отсутствует раздел установщика "Разметка диска": дистрибутив требует для работы выделенный сервер, а потому на соответствующей стадии установки требуется лишь подтвердить передачу всего жесткого диска в распоряжение установщика;
Строка 7: Строка 7:
Запустим клиент. Он должен загружаться по сети, причём, желательно, по умолчанию. Администратор должен обеспечить, чтобюы клиенты и сервер должны быть в одной СПД. Сетевая загрузка должны быть PXE. По сути, это достаточно полный большой клиент dhcp. Ещё там есть tftp, для скачивания загрузчика. Подсказка у логина та же самая, но удалённый XDM знает, что он по сети, поэтому другой состав меню.  * дистрибутив требует наличия в компьютере двух сетевых карт, причем Интернет должен быть доступен через устройство eth0 (''это в какой момент оно eth0?'' -- DmitryChistikov <<DateTime(2008-07-14T01:07:18+0400)>>), а локальная сеть (класс, машины в котором будут загружаться по сети) --- через eth1 (''еще раз уточнить этот момент!'' -- DmitryChistikov <<DateTime(2008-07-14T01:07:18+0400)>>); устройство eth0 при этом должно получать IP-адрес статически (в случае DHCP создается специальная "обертка", позволяющая загрузиться со статическими настройками и затем перенастраивающаяся на DHCP), а IP-адрес для eth1 должен быть 192.168.0.1.
Строка 9: Строка 9:
Какие проблемы с этим связаны: проблема с разд. ресурсов и проблема с доступом к ресурсам. Других видимых различий в процедуре установки "Мастера" и ALTSP нет. Заметим, что пакетный состав дистрибутивов, естественно, различается. Приглашение XDM на установленном "Линукс Терминале" выглядит так:
Строка 11: Строка 11:
Про разделение. Если у вас в комп. зале 4 компьютера, то 4 комплекта ПО, если 24, то 24. Кгда пользователи запускают n комплектов ПО, то они потребляют n комплектов памяти и едят n отрезков времени и генерируют n потоков обращения к диску. Практика эксплдуатирования терм. классов показывает, что нормально работать пользователям (большой документ в оофисе и фаерфокс с несколькими вкладками) надо 256 метров под сервер, и на каждыцй клиент по 256 (для xfce -- по 128). Мораль --- если есть класс достаточно старых компьютеров и есть возможность купить нормальную машину, то это хорошее решение задачи. Но на этом грабли не кончаются. {{attachment:../terminal_client_login.png}}
Строка 13: Строка 13:
Мы решили ровно одну проблему --- мы разделили запуск задач и В/В, но только связанный с X11. Не решаются какие проблемы: если программа звук играет, то играть она будет на сервере. Но это ладно, гораздо интереснее момент, когда полоьзователь решил скинуть файлы на флешку. Есть два спосба решения задачи: первое --- все пользователи выстраиваются в очередь к администратору с флешками. Для этог в терминале проделана дополнительная работа. Если посмотреть на mount, обратите внимание на последнюю строчку. Это некое волшебное действие, которое произв. на сервере, чтобы возратить имеющееся устройство обратно на клиент. То есть у польз. будет каталог drives, а у него подкаталог floppy0, который будет сответствовать его дискетке. Организуем теперь запуск клиентских машин (машин-терминалов). В первую очередь необходимо убедиться, что клиенты и сервер находятся в общей СПД. Во вторую --- настроить на клиентах сетевую загрузку (желательно --- по умолчанию). Заметим, что способов загрузить машину по сети есть несколько. Нужный нам вариант называется PXE. Поддерживающие PXE сетевые карты могут получать настройки по DHCP (используется протокол BOOTP), а также использовать протокол TFTP для скачивания первичного загрузчика. Во время загрузки по сети экран клиентской машины может выглядеть, например, так:
Строка 15: Строка 15:
На скриншоте виден этот файл под названием floppy и иконка на панели "неподключённый диск". Другое дело, что мы не можем его сейчас вставить. Идея состоит в следующем: устройство, подключённое к локальной машине, то есть к рабочей станции, неким образом (с помощью fuse) прокидивается на сервер, чему соответствует эта строка. Тем самым, когда запускаете на сервере программу, которая лезет туда, она лезет на рабочую станцию. Аналогично с диском. Для нелюбознательного пользователя это выгляит как работа с обычной машиной. Хитрость в том, чт всё работает на сервере, и доступен он путём обратного проброса. Посмотрим ещё раз mount. То же самое творится со звуком. Но со звуком лектор уже имел некое неприятное упражнение. Тут есть одна непр. особенность, которая состит в следующем: из-за того, что работа со звуком в разных юних-системах устроена немного по-разнму, то не все программы могут со звуком работать. Тут используется ESD. Проброс звука делается след. образом: для тех программ, которые умеют исп. не конкретные устройства (/dev/dsp), дл них исп. самый постой из всех возм. способов. На клиентской машине запускается ESD, это всего лишь программа, которая принимает подклю. по сети, он связаны с проигр. звука. На сервере у польз. указывается переменная ESPEAKER, которая указывает, куда программам пдключаться. Все рпограммы, которые скомпилированы с libesd, они работают. Для тех машин, которые не умеют это делать, а умеют pulseaudio, запускается ещё и pulseaudio-сервер. Наше счастье, что на сервере не было звуоковй карты. Все программы, которые работают с alsa, ни тоже работают по сети. Лектор на это наталкивался, но это лечится очень простым способом --- убить звуковую карту (открутить её, поставить в блеклист модуль), сделать так, чтобы он отсутствовал (например удалить руками в rc.local). {{attachment:../terminal_client_boot.png}}
Строка 17: Строка 17:
Речь о терминалсервере идёт в двух случаях: эксплуатация старого железа. Есть, правда, один недстаток: современные иксы не работают на s3 trio64. Второй случай --- когда адм. подлежит одна машина, а не все в классе. При этом экономится куча времени. Переустановка ПО делается сама. Если загрузка прошла успешно, то на экране клиентской машины мы увидим приглашение XDM, ничем с первого взгляда не отличающееся от приглашения XDM на сервере. Однако, как мы понимаем, появившееся приглашение обеспечивается работой программы xdm на сервере и программы X (X-сервера) на клиентской машине. Удаленный XDM знает о том, что к нему подключились по сети, и потому предложит другой состав меню.
Строка 19: Строка 19:
Ещё один недостаток терминального сервера --- не может быть двух логинов с разных машин. С другой тсороны, на сегодняшний день только Линукс терминал обеспечивает концепцию терминлаьного класса и мобильного места. Реализуется это тем, что у каждого пользователя свои записи, которые заводятся на сервере. Список меню на машине-сервере:
{{attachment:../terminal_server_login_options.png}}

Список меню на машине-клиенте:
{{attachment:../terminal_client_login_options.png}}

Такая организация работы приводит нас к следующим проблемам:

 * проблема разделения ресурсов;
 * проблема доступа к ресурсам.

Рассмотрим их подробнее.

=== Проблема разделения ресурсов ===

Эта проблема касается разделения ресурсов между пользователями. Если в нашем компьютерном классе используются 4 клиентских и одна серверная машина, то 4 одновременно работающих на одном сервере пользователя запускают, соответственно, 4 комплекта программного обеспечения. Если сервер по-прежнему один, а клиентов 24, то комплектов запущенного ПО будет тоже 24. Когда пользователи запускают N комплектов ПО, то они потребляют без малого N объемов оперативной памяти, используют без малого N промежутков процессорного времени и генерируют N потоков обмена данными с дисковой подсистемой (по сравнению с одним комплектом ПО).

Практика эксплуатирования терминальных классов показывает, что для нормальной работы пользователей (открыт большой документ в OpenOffice.org, запущен Mozilla Firefox с несколькими вкладками) необходимы следующие объемы оперативной памяти: примерно 256 MB для нужд сервера, по 256 MB для каждого из примерно 8 клиентов и по 128 MB для каждого из клиентов, начиная с девятого (если всего их больше восьми). Экономия при большом количестве клиентов может достигаться, к примеру, за счет эффективного использования механизма разделяемой памяти различными процессами. Заметим, что если использовать не KDE (или аналогичную по "тяжести" среду), а, скажем, XFCE, то на 8 клиентов может вполне хватить и 1 GB памяти.

Замеров загрузки CPU и обращений к диску при исследованиях не проводилось. Опыт, тем не менее, говорит, что вместо одного диска разумно использовать RAID-массив. Так или иначе, если в наличии имеется целый класс достаточно старых компьютеров и есть возможность купить хорошую современную машину "под сервер", то исполь
зование сетевой загрузки с "тонкими" клиентами является хорошим выбором.

=== Проблема доступа к ресурсам ===

На самом деле мы решили только часть поставленной ранее задачи. У нас корректно разделены запуск и выполнение задач, а также ввод-вывод, связанный с подсистемой X11 (сюда относится и работа с клавиатурой и мышью). Задачи запускаются на машине-сервере, а ввод-вывод X11 осуществляется на рабочей станции. Но таким способом не решаются следующие проблемы:

 1. Работа с данными осуществляется на сервере, в то время как для работы со сменными носителями разумно использовать клиентские машины.
 1. Если запущенная программа, к примеру, проигрывает звук, то его вывод использует оборудование сервера.

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

/* {{attachment:../terminal_client_konsole_mounted_devices.png}} */

{{{
$ mount
/dev/hda2 on / type ext3 (rw)
proc on /proc type proc (rw,noexec,nosuid,gid=19)
sysfs on /sys type sysfs (rw)
udevfs on /dev type tmpfs (rw)
devpts on /dev/pts type devpts (rw)
shmfs on /dev/shm type tmpfs (rw)
tmpfs on /dev/tmp type tmpfs (rw,nosuid)
/dev/hda6 on /home type ext3 (rw,nosuid)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
ltspfs on /home/user/Drives/floppy0/ type fuse (rw,nosuid,nodev,user=user)
}}}

Обратим внимание на последнюю строку. Она означает, что на сервере заранее произведено некое "волшебное" действие, которое "возвращает" имеющееся устройство обратно на клиент. В домашнем каталоге пользователя есть подкаталог Drives, а в нем соответствующий подкаталог floppy0, который соответствует дискете, вставленной в машину-клиент.

{{attachment:../terminal_client_floppy_unmounted.png}}

На скриншоте видна иконка на панели с названием "отмонтированная дискета". Идея проста: устройство, подключенное к локальной машине (рабочей станции) хитрым способом (с помощью системы fuse --- filesystem in userspace) "прокидывается" на сервер. Именно информацию об этом пробросе и сообщила нам программа mount. Тем самым, когда какая-либо программа на сервере обращается к каталогу /home/user/Drives/floppy0, она в действительности заходит на нужную рабочую станцию к соответствующему каталогу. Для нелюбознательного пользователя это выглядит точно так же, как работа с обычной машиной.

Таким же образом устроена и работа с CD/DVD-приводами. Функционирование ПО происходит на сервере, при этом диск с клиентской машины доступен с помощью такого же обратного проброса. Кликнем по иконке с CD и подмонтируем наш диск, выбрав пункт меню "Подключить":

{{attachment:../terminal_client_cd_mount.png}}

Посмотрим теперь на вывод программы mount:

{{{
$ mount
/dev/hda2 on / type ext3 (rw)
proc on /proc type proc (rw,noexec,nosuid,gid=19)
sysfs on /sys type sysfs (rw)
udevfs on /dev type tmpfs (rw)
devpts on /dev/pts type devpts (rw)
shmfs on /dev/shm type tmpfs (rw)
tmpfs on /dev/tmp type tmpfs (rw,nosuid)
/dev/hda6 on /home type ext3 (rw,nosuid)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
ltspfs on /home/user/Drives/floppy0/ type fuse (rw,nosuid,nodev,user=user)
ltspfs on /home/user/Drives/atacd-hdc/ type fuse (rw,nosuid,nodev,user=user)
/dev/hdc on /media/cdrom type iso9660 (rw,noexec,nosuid,nodev,utf8,user=user)
}}}

Последние две строки говорят нам о том, что подключение прошло успешно.

##{{attachment:../terminal_client_cd_mounting.png}}
##{{attachment:../terminal_client_cd_mounted.png}}
##{{attachment:../terminal_client_cd_open.png}}
##{{attachment:terminal_client_cd_browse.png}}
##1:45:03
   То же самое творится со звуком. Но со звуком есть одна неприятная особенность, которая состоит в следующем: из-за того, что работа со звуковой подсистемой в разных видах Unix-систем устроена немного по разному, далеко не все программы в действительности легко работают с таким пробросом звука на клиент. Для решения используется ESD и PulseAudio. Проброс звука делается следующим образом: для тех программ, которые умеют в качестве выходного устройства использовать не конкретные устройства (/dev/dsp), а предоставляют возможность выбора, для них используется самый простой из всех возможных способов. На клиентской машине запускается ESD(Enlightened Sound Daemon) --- программа, которая по специальному протоколы принимает подключения по сети( эти подключения связаны с проигрыванием звука) и проигрывает звук. На сервере устанавливается переменная окружения ESPEAKER, которая указывает, тем программам которые умеют работать с ESD что звук надо выводить не на текущую машину, а подключаться по указанному адресу. Все программы, которые скомпилированы с libesd, работают таким образом. Для тех машин, которые не умеют это делать, но умеют работать с pulseaudio, запускается ещё и pulseaudio-сервер,который делает ровно тоже самое. Все программы, которые работают с alsa с помощью специального плагина для alsa и pulseaudio тоже в итоге работают сетевым образом. Лишь те программы которые по старинке пишут сразу в /dev/dsp работают с /dev/dsp и поэтому звук прокинут быть не может. Поэтому множество запущенных таких программ создают страшную какофонию. Лечится это очень простым способом --- нужно убить звуковую карту на сервере (открутить её, поставить в черный список её модуль), - в общем сделать так чтобы /dev/dsp отсутствовал.
##1:51:41
Речь о терминальном классе идёт в двух случаях:
 *Первый случай --- эксплуатация старого железа.
 *Второй случай --- если ваш рабочий процесс не страдает от использования терминальных клиентов, то тогда в итоге администрированию подлежит одна машина, а не все в классе. При этом экономится много времени. Переустановка ПО при этом как-бы делается сама- что вы на сервере поставили, то сразу на всех клиентах появилось.

Недостатки терминального класса:
 *Современные X Window System не работают например на s3 trio64.
 *Еще один значимый недостаток терминального сервера --- один пользователь не может одновременно работать на двух терминальных клиентах.Т.е. при работе через тонкий терминальный клиент каждый сеанс работы(пользователь сидящий за терминальным клиентом) должен использовать использовать отличную от других учетную запись.

 С другой стороны, на сегодняшний день только "Линукс терминал" обеспечивает концепцию терминального класса и мобильного рабочего места. Реализуется это тем, что у каждого пользователя есть личные персональные записи, хранящиеся на сервере, которые он эксплуатирует и использовать чужие ему не позволяется. Это делается централизованно и абсолютно прозрачно с помощью Альтератора, который заводит пользователей на сервере(потому что больше нигде заводить их не надо).
##2:14:05
Строка 27: Строка 121:
|| 0 || 1 || 1 || 1 || || 1 || ArtemSerebriyskiy, ОльгаТочилкина || || || || 33 || 1 || 1 || 1 || || 1 || ArtemSerebriyskiy,  DmitryChistikov || || ||

Терминальный сервер со стороны пользователя

Со временем, после появления версии 2.6 ядра Linux и виртуальной файловой системы sysfs, политика по оформлению и регистрации драйверов и аппаратного обеспечения компьютера изменилась и необходимость в сборке отдельного специфического ядра для терминальных клиентов отпала. LiveCD в ALT Linux, к примеру, изготавливается из самого обычного ядра с обычными модулями. Проект же LTSP, к сожалению, был сильно привязан к уже разработанной инфраструктуре и системе патчей, а потому непосредственная интеграция его в обычный дистрибутив не представлялась возможной. Сборка LTSP в рамках ALT Linux, к примеру, была большим bundle-файлом. Он выкладывался в определенное место, после чего целая коллекция скриптов настраивала нужные сервисы, --- только так это работало. Поэтому был создан ALTSP - ALT Linux Terminal Server Project. Его разработчики частично скопировали инфраструктуру LTSP, избежав при этом необходимости собирать специальное ядро. Результатом работы ALTSP стал специализированный дистрибутив, установка которого практически ничем не отличается от установки ALT Linux Мастер, за двумя исключениями:

  • отсутствует раздел установщика "Разметка диска": дистрибутив требует для работы выделенный сервер, а потому на соответствующей стадии установки требуется лишь подтвердить передачу всего жесткого диска в распоряжение установщика;
  • дистрибутив требует наличия в компьютере двух сетевых карт, причем Интернет должен быть доступен через устройство eth0 (это в какой момент оно eth0? -- DmitryChistikov 2008-07-14 00:07:18), а локальная сеть (класс, машины в котором будут загружаться по сети) --- через eth1 (еще раз уточнить этот момент! -- DmitryChistikov 2008-07-14 00:07:18); устройство eth0 при этом должно получать IP-адрес статически (в случае DHCP создается специальная "обертка", позволяющая загрузиться со статическими настройками и затем перенастраивающаяся на DHCP), а IP-адрес для eth1 должен быть 192.168.0.1.

Других видимых различий в процедуре установки "Мастера" и ALTSP нет. Заметим, что пакетный состав дистрибутивов, естественно, различается. Приглашение XDM на установленном "Линукс Терминале" выглядит так:

../terminal_client_login.png

Организуем теперь запуск клиентских машин (машин-терминалов). В первую очередь необходимо убедиться, что клиенты и сервер находятся в общей СПД. Во вторую --- настроить на клиентах сетевую загрузку (желательно --- по умолчанию). Заметим, что способов загрузить машину по сети есть несколько. Нужный нам вариант называется PXE. Поддерживающие PXE сетевые карты могут получать настройки по DHCP (используется протокол BOOTP), а также использовать протокол TFTP для скачивания первичного загрузчика. Во время загрузки по сети экран клиентской машины может выглядеть, например, так:

../terminal_client_boot.png

Если загрузка прошла успешно, то на экране клиентской машины мы увидим приглашение XDM, ничем с первого взгляда не отличающееся от приглашения XDM на сервере. Однако, как мы понимаем, появившееся приглашение обеспечивается работой программы xdm на сервере и программы X (X-сервера) на клиентской машине. Удаленный XDM знает о том, что к нему подключились по сети, и потому предложит другой состав меню.

Список меню на машине-сервере: ../terminal_server_login_options.png

Список меню на машине-клиенте: ../terminal_client_login_options.png

Такая организация работы приводит нас к следующим проблемам:

  • проблема разделения ресурсов;
  • проблема доступа к ресурсам.

Рассмотрим их подробнее.

Проблема разделения ресурсов

Эта проблема касается разделения ресурсов между пользователями. Если в нашем компьютерном классе используются 4 клиентских и одна серверная машина, то 4 одновременно работающих на одном сервере пользователя запускают, соответственно, 4 комплекта программного обеспечения. Если сервер по-прежнему один, а клиентов 24, то комплектов запущенного ПО будет тоже 24. Когда пользователи запускают N комплектов ПО, то они потребляют без малого N объемов оперативной памяти, используют без малого N промежутков процессорного времени и генерируют N потоков обмена данными с дисковой подсистемой (по сравнению с одним комплектом ПО).

Практика эксплуатирования терминальных классов показывает, что для нормальной работы пользователей (открыт большой документ в OpenOffice.org, запущен Mozilla Firefox с несколькими вкладками) необходимы следующие объемы оперативной памяти: примерно 256 MB для нужд сервера, по 256 MB для каждого из примерно 8 клиентов и по 128 MB для каждого из клиентов, начиная с девятого (если всего их больше восьми). Экономия при большом количестве клиентов может достигаться, к примеру, за счет эффективного использования механизма разделяемой памяти различными процессами. Заметим, что если использовать не KDE (или аналогичную по "тяжести" среду), а, скажем, XFCE, то на 8 клиентов может вполне хватить и 1 GB памяти.

Замеров загрузки CPU и обращений к диску при исследованиях не проводилось. Опыт, тем не менее, говорит, что вместо одного диска разумно использовать RAID-массив. Так или иначе, если в наличии имеется целый класс достаточно старых компьютеров и есть возможность купить хорошую современную машину "под сервер", то исполь зование сетевой загрузки с "тонкими" клиентами является хорошим выбором.

Проблема доступа к ресурсам

На самом деле мы решили только часть поставленной ранее задачи. У нас корректно разделены запуск и выполнение задач, а также ввод-вывод, связанный с подсистемой X11 (сюда относится и работа с клавиатурой и мышью). Задачи запускаются на машине-сервере, а ввод-вывод X11 осуществляется на рабочей станции. Но таким способом не решаются следующие проблемы:

  1. Работа с данными осуществляется на сервере, в то время как для работы со сменными носителями разумно использовать клиентские машины.
  2. Если запущенная программа, к примеру, проигрывает звук, то его вывод использует оборудование сервера.

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

$ mount
/dev/hda2 on / type ext3 (rw)
proc on /proc type proc (rw,noexec,nosuid,gid=19)
sysfs on /sys type sysfs (rw)
udevfs on /dev type tmpfs (rw)
devpts on /dev/pts type devpts (rw)
shmfs on /dev/shm type tmpfs (rw)
tmpfs on /dev/tmp type tmpfs (rw,nosuid)
/dev/hda6 on /home type ext3 (rw,nosuid)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
ltspfs on /home/user/Drives/floppy0/ type fuse  (rw,nosuid,nodev,user=user)

Обратим внимание на последнюю строку. Она означает, что на сервере заранее произведено некое "волшебное" действие, которое "возвращает" имеющееся устройство обратно на клиент. В домашнем каталоге пользователя есть подкаталог Drives, а в нем соответствующий подкаталог floppy0, который соответствует дискете, вставленной в машину-клиент.

../terminal_client_floppy_unmounted.png

На скриншоте видна иконка на панели с названием "отмонтированная дискета". Идея проста: устройство, подключенное к локальной машине (рабочей станции) хитрым способом (с помощью системы fuse --- filesystem in userspace) "прокидывается" на сервер. Именно информацию об этом пробросе и сообщила нам программа mount. Тем самым, когда какая-либо программа на сервере обращается к каталогу /home/user/Drives/floppy0, она в действительности заходит на нужную рабочую станцию к соответствующему каталогу. Для нелюбознательного пользователя это выглядит точно так же, как работа с обычной машиной.

Таким же образом устроена и работа с CD/DVD-приводами. Функционирование ПО происходит на сервере, при этом диск с клиентской машины доступен с помощью такого же обратного проброса. Кликнем по иконке с CD и подмонтируем наш диск, выбрав пункт меню "Подключить":

../terminal_client_cd_mount.png

Посмотрим теперь на вывод программы mount:

$ mount
/dev/hda2 on / type ext3 (rw)
proc on /proc type proc (rw,noexec,nosuid,gid=19)
sysfs on /sys type sysfs (rw)
udevfs on /dev type tmpfs (rw)
devpts on /dev/pts type devpts (rw)
shmfs on /dev/shm type tmpfs (rw)
tmpfs on /dev/tmp type tmpfs (rw,nosuid)
/dev/hda6 on /home type ext3 (rw,nosuid)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
ltspfs on /home/user/Drives/floppy0/ type fuse  (rw,nosuid,nodev,user=user)
ltspfs on /home/user/Drives/atacd-hdc/ type fuse  (rw,nosuid,nodev,user=user)
/dev/hdc on /media/cdrom type iso9660 (rw,noexec,nosuid,nodev,utf8,user=user)

Последние две строки говорят нам о том, что подключение прошло успешно.

  • То же самое творится со звуком. Но со звуком есть одна неприятная особенность, которая состоит в следующем: из-за того, что работа со звуковой подсистемой в разных видах Unix-систем устроена немного по разному, далеко не все программы в действительности легко работают с таким пробросом звука на клиент. Для решения используется ESD и PulseAudio. Проброс звука делается следующим образом: для тех программ, которые умеют в качестве выходного устройства использовать не конкретные устройства (/dev/dsp), а предоставляют возможность выбора, для них используется самый простой из всех возможных способов. На клиентской машине запускается ESD(Enlightened Sound Daemon) --- программа, которая по специальному протоколы принимает подключения по сети( эти подключения связаны с проигрыванием звука) и проигрывает звук. На сервере устанавливается переменная окружения ESPEAKER, которая указывает, тем программам которые умеют работать с ESD что звук надо выводить не на текущую машину, а подключаться по указанному адресу. Все программы, которые скомпилированы с libesd, работают таким образом. Для тех машин, которые не умеют это делать, но умеют работать с pulseaudio, запускается ещё и pulseaudio-сервер,который делает ровно тоже самое. Все программы, которые работают с alsa с помощью специального плагина для alsa и pulseaudio тоже в итоге работают сетевым образом. Лишь те программы которые по старинке пишут сразу в /dev/dsp работают с /dev/dsp и поэтому звук прокинут быть не может. Поэтому множество запущенных таких программ создают страшную какофонию. Лечится это очень простым способом --- нужно убить звуковую карту на сервере (открутить её, поставить в черный список её модуль), - в общем сделать так чтобы /dev/dsp отсутствовал.

Речь о терминальном классе идёт в двух случаях:

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

Недостатки терминального класса:

  • Современные X Window System не работают например на s3 trio64.
  • Еще один значимый недостаток терминального сервера --- один пользователь не может одновременно работать на двух терминальных клиентах.Т.е. при работе через тонкий терминальный клиент каждый сеанс работы(пользователь сидящий за терминальным клиентом) должен использовать использовать отличную от других учетную запись. С другой стороны, на сегодняшний день только "Линукс терминал" обеспечивает концепцию терминального класса и мобильного рабочего места. Реализуется это тем, что у каждого пользователя есть личные персональные записи, хранящиеся на сервере, которые он эксплуатирует и использовать чужие ему не позволяется. Это делается централизованно и абсолютно прозрачно с помощью Альтератора, который заводит пользователей на сервере(потому что больше нигде заводить их не надо).


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

33

1

1

1

1

ArtemSerebriyskiy, DmitryChistikov


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

PspoClasses/080709/02TerminalClient (последним исправлял пользователь MaximByshevskiKonopko 2008-10-09 21:39:06)