Бездискові станції і термінали

У цій статті мова піде про бездискових станціях і терміналах.

Коротка відповідь на це питання - бездискова станція це комп'ютер без жорсткого диска. Такий комп'ютер є частиною розподіленої обчислювальної системи (комп'ютерної мережі). Файлова система цього комп'ютера розташовується на інших вузлах комп'ютерної мережі.

Бездискова станція може бути самостійним обчислювальним вузлом мережі, простим терміналом або тим і іншим одночасно. Термінал відрізняється від повнофункціонального комп'ютера тим, що він не виконує призначених для користувача програм, він лише відображає результати роботи цих програм, запущених на інших вузлах мережі.

Дійсно - а навіщо? Чи не краще видати кожному користувачеві окремий комп'ютер в особисте (монопольне) користування, де той буде сам собі адміністратор і програміст? Таке рішення має ряд недоліків:

  1. На користувача комп'ютера крім його безпосередніх професійних обов'язків покладається тягар системного адміністрування.

Це встановлення та налаштування програмного забезпечення, захист від вірусів і хакерських атак, періодичне технічне обслуговування системи (дефрагментація файлових систем, оновлення програмного забезпечення), обслуговування апаратної частини системи і т.п.

Далеко не кожен користувач комп'ютера має кваліфікації системного програміста і здатний ефективно виконувати вище перераховані операції.

До того ж необхідність виконувати ці додаткові обов'язки буде відволікати користувача комп'ютера від безпосередніх професійних обов'язків і негативно позначатися на продуктивності праці в цілому.

Зазвичай завдання системного адміністрування доручають спеціально найнятому фахівця. Але в даній конфігурації йому доводиться обслуговувати кожен комп'ютер окремо, що при великій їхній кількості важко.

  • Жорстка прив'язка користувача до конкретного комп'ютера. У такій конфігурації всі файли користувача знаходяться на його персональному комп'ютері і він не може просто пересісти на інше місце і продовжувати працювати якщо раптом його комп'ютер поламається.
  • Проблематично використання застарілих комп'ютерів. Нове програмне забезпечення часто на них не працює.
  • Низький рівень безпеки. Така конфігурація системи схильна інсадерскім атакам (злому системи зсередини), що може привести до витоку інформації, втрати даних або поломки обладнання.

    Тому як користувачі системи можуть володіти широкими правами всередині її і можливостями копіювання системних даних через свої пристрої введення / виводу (CD / DVD, FDD і ін). Причому мова може йти навіть не про злий намір, а про випадково занесених шкідливі програми.

  • Незбалансована завантаження обчислювальних потужностей. Всі комп'ютери в мережі рідко коли бувають завантажені роботою на всі 100%. Іноді буває ситуація коли частина комп'ютерів мережі простоює в той час коли працюють в даний момент користувачам недостатньо продуктивності їх персональних комп'ютерів.
  • Ціна одного робочого місця. Машини повинні комплектуватися жорсткими дисками, а також пристроями CD / DVD, дисками і т.п. Сюди слід ще додати вартість ліцензій на програмне забезпечення для кожного комп'ютера.

    Технологія бездискових станцій і терміналів дозволяє успішно вирішувати більшість проблем, описаних вище.

    1. Централізоване адміністрування системи. Все програмне забезпечення, системні і призначені для користувача настройки можуть зберігається в одному місці. Що істотно спрощує і прискорює обслуговування системи.
  • Незалежність користувачів від робочих місць. Всі програми, дані і настройки зберігаються в мережі. Користувач може отримати доступ до них з будь-якого робочого місця.
  • Можливість використання застарілих комп'ютерів в якості терміналів.
  • Покращена безпека. Призначені для користувача станції годі й комплектувати пристроями введення / виводу (CD / DVD, FDD і т.п.). Систему можна побудувати таким чином, що дані можна буде копіювати тільки через певний вузол в мережі.
  • Використання кластерних технологій паралельних обчислень дозволяє поліпшити балансування завантаження обчислювальних потужностей.
  • Ціна одного робочого місця істотно знижується. Економія на ліцензіях - можливо спільне використання комерційного програмного забезпечення. Немає необхідності комплектувати вузли жорсткими дисками, пристроями CD / DVD, дисками і т.п. Бездискова станція може бути виконана у вигляді простого одноплатного комп'ютера.

    У найпростішому випадку система складається з сервера завантаження, однієї або декількох бездискових станцій і комутатора (рис.1).

    Рис.1: схема простої системи

    Ініціалізація бездискових станцій відбувається наступним чином:

    1. При включенні харчування бездискова станція виконує свій код BIOS і код записаний в ПЗП своєї мережевої карти (BOOTROM).
    2. Бездискова станція по мережі звертається до сервера завантаження за допомогою широкомовного запиту.
    3. Сервер завантаження дає бездисковой станції інформацію про її мережевих налаштуваннях і вказує місце в мережі де розташовані файли операційної системи для неї.
    4. Бездискова станція виконує завантаження операційної системи згідно з відповідними файлів конфігурації.
    До поданої на (рис.1) системі легко можна підключати додаткові функціональні можливості. Це можуть бути самі різні модулі (рис.2).
    1. Шлюз в internet. що включає в себе сервер електронної пошти. міжмережевий екран для забезпечення безпеки, proxy сервер для доступу до WWW.
    2. Файл-сервер для зберігання великих обсягів даних користувача.
    3. Сервер друку для спільного використання принтерів.
    4. Термінальний сервер для спільного використання спеціального програмного забезпечення і включення в систему застарілих комп'ютерів.
    5. Додаткові робочі місця, підключення ще одного бездисковой станції вимагає мінімум налаштувань, в найпростішому випадку її треба просто підключити до комп'ютерної мережі і включити харчування.

    Рис.2: схема складної системи

    Кілька слів треба сказати про графічних терміналах, тобто бездискових станціях, які відображають результати роботи графічних (GUI) програм, запущених на інших вузлах мережі.

    Рис.3: схема роботи X Window

    Стандартом "де-факто" графічного середовища в unix-подібних системах є X Window System [7]. Ця система забезпечує базові функції графічного середовища: отрисовку і переміщення вікон на екрані, взаємодію з мишею і клавіатурою. Вона має клієнт-серверну архітектуру і реалізує мережеву прозорість, тобто графічні програми можуть виконуватися на іншому вузлі комп'ютерної мережі, при цьому їх інтерфейс буде передаватися по мережі і відображатися на машині користувача (рис.3). Треба відзначити, що ці вузли можуть мати різну архітектуру і працювати на під управлінням різних операційних систем.

    X Window System найчастіше асоціюється з UNIX, але X-сервери можуть також існувати всередині інших операційних середовищ. Наприклад для OpenVMS від Hewlett-Packard існує реалізація X Window під назвою DECwindows, а до складу операційної системи Mac OS X від Apple входить система X11.app.

    UNIX та X Window можуть бути включені в цю систему від Microsoft за допомогою програми Rdesktop [6], яка реалізує протокол RDP і може успішно працювати з термінальним сервером для Microsoft Windows (рис.4).

    Рис.4: схема роботи Rdesktop

    Далі ми розповімо про практичну реалізацію, описаних вище технологій, на програмній основі OS FreeBSD.

    Всі експерименти проводилися на мережі з наступних комп'ютерів.
    • сервер завантаження
      ASUS CUSI-M
      Celeron 700MHz / RAM 128MB / HDD 10GB / CD / LAN 100Mb SiS900
    • бездискова станція
      PCPARTNER VIB861S
      Celeron 600MHz / RAM 64MB / LAN 100Mb RealTek8139 / video ATI 8MB
      Samsung 551s 15 ''
    • термінальний сервер
      INTEL D815EEA2
      Pentium III 800MHz / RAM 512MB / HDD250GB / CD / LAN 100Mb RealTek8139

    Налаштування бездискові станції полягає в установці в машину мережевої карти з підтримкою функції мережевого завантаження.

    Якщо такого інтегрованого пристрою немає то можна використовувати '' навісну '' мережеву карту, яка повинна мати сокет для мікросхеми ПЗУ (BOOTROM). У цей ПЗУ (аналогічно BIOS) записується відповідна програма мережевий завантаження.

    В даному випадку використовувалася машина з "навісний" мережевою картою RealTek8139. Ця карта має сокет для BOOTROM, який не був використаний, програма мережевий завантаження була успішно дописана '' в хвіст '' BIOS за методом описаного в статті [1]

    Послідовність операцій при завантаженні бездисковой станції в даному випадку така:

    На сервері завантаження встановимо і налаштуємо наступні програми:

    • ОС FreeBSD 6.2-RELEASE-p8
    • tftpd - Internet Trivial File Transfer Protocol server
    • nfsd - Network File System server
    • Internet Systems Consortium DHCP Server V3.0.5

    Для цього виконаємо такі дії:

    1. встановлюємо ОС FreeBSD [2]
    при розбивці диска крім стандартних розділів (slice) для заводимо додаткові розділи де будуть '' жити '' бездискові станції
    • / Diskless / rootfs
      - спільне коріння файлової системи для бездискових станцій, розмір - 128MB
  • / Diskless / nodes
    - персональні дані бездискових станцій: swap та ін.
    розмір залежить від кількості станцій
    кожної бездисковой станцій можна виділити особистий swap-файл розміром приблизно рівний розміру оперативної пам'яті даної станції
  • / Diskless / home
    - загальний home де будуть каталоги користувачів бездискових станцій
    розмір залежить від кількості і '' апетитів '' користувачів
    ці дані можна винести на окремий файл сервер
  • Ці окремі розділи потрібні для коректної роботи NFS-сервера додаткову інформацію з цього питання можна отримати в статті [3].

  • настройка DHCP сервера
    • збираємо встановлюємо DHCP сервер
  • настройка TFTP сервера

    Для передачі бездисковой станції програми початкового завантаження pxeboot скористаємося спрощеним FTP сервером tftpd. Він присутній в системі за замовчуванням і працює в рамках inetd (internet '' super-server '')

    Для запуску tftpd необхідно виконати наступні дії:

    • створити корінь файлової системи для tftp сервера
  • раскоментіровать і поправити у файлі /etc/inetd.conf відповідний рядок
  • створити для tftpd журнал повідомлень, для цього в /etc/syslog.conf додамо

    і створимо tftpd.log

    На завершення налаштувань tftpd скопіюємо в корінь tftp сервера програму-завантажувач pxeboot звідки його будуть '' брати '' бездискові станції при завантаженні.

  • Налаштування NFS сервера.

    Для того що б бездискова станція успішно працювала їй потрібна файлова система складається з наступного набору:

    В / diskless / nodes для кожної бездисковой станції створюється підкаталог на ім'я її ip. Там будуть міститися її індивідуальні дані (swap-файл і ін.) До цієї теми ми повернемося пізніше коли будемо ставити конфігурацію бездисковой станції.

    / Diskless / rootfs і / usr '' віддаються '' бездисковой станції в режимі '' тільки читання ''
    / Home і /diskless/nodes/X.X.X.X - в режимі повного доступу.

    Розміщуємо відповідні записи в файл настройок / etc / exports.

    Для запуску сервера NFS в файл /etc/rc.conf треба додати: Тут треба окремо відзначити параметр запуску -n5. він показує скільки клієнтів одночасно зможуть працювати з даними сервером.

    Тепер перейдемо до налаштувань програмної частини бездискових станцій.

    У каталозі / diskless / rootfs створимо спільну кореневу файлову систему для бездискових станцій. Основні скрипти і файли конфігурації будуть розташовуватися в каталозі / diskless / rootfs / conf. (В каталозі / usr / share / examples / diskless можна знайти додаткову інформацію)

    в / diskless / rootfs повинен вийти наступний набір

    точка монтування каталогу тимчасових і службових файлів

    Далі в / diskless / nodes створюємо для кожної бездисковой станції каталог персональних даних.

    тут же створюємо створюємо файл підкачки (для вузла 192.168.21.4 розміром 64MB)

  • Збираємо ядро ​​для бездискових станцій.

    Для бездискових станцій необхідно зібрати спеціальне ядро. З нього можна видалити все зайве (наприклад, підтримку ATA вінчестера). В ядро ​​треба додати опції підтримки мережевої завантаження.

    і копіюємо вийшло ядро ​​в відповідний каталог

  • Переходимо до власне налаштувань. Після завантаження ядра запускається процес init. який зчитує і виконує вміст / etc / rc. Можна написати цей скрипт самому під свої завдання, цей варіант можна реалізувати для простих терміналів.

    Альтернативний варіант - скористатися системними скриптом /etc/rc.initdiskless. Для початкової ініціалізації бездисковой станцій необхідно щоб в каталозі / diskless / rootfs / etc був наступний набір файлів, скопійованих з / etc.

    Працює це таким чином: скрипт rc запускає rc.initdiskless. який перевіряє як змонтований корінь файлової системи. Якщо з'ясовується що корінь це NFS то запускаються сценарії запуску бездисковой станції, що містяться в каталозі / conf.

    В / diskless / rootfs / conf створимо такі підкаталоги [4]:

    задає початкову структуру каталогів

    настройки за замовчуванням

    персональні настройки вузлів

    • В каталозі base створимо підкаталог etc. в якому створимо текстовий файл з ім'ям md_size. Вміст цього файлу - число 6144.

    Це означає, що при запуску в пам'яті бездисковой станції буде створено віртуальний диск розміром 6144 блоку (3MB), точка його монтування - / etc.

  • В каталог defauts покладемо копію / etc. це будуть настройки системи за умовчанням. Там необхідно поправити файл fstab. замінивши локальні диски на nfs, ну і все інше, що вважаєте для себе потрібним змінити.
  • В каталозі ip створимо підкаталог 192.168.21.4 і всередині нього etc. Це будуть персональні настройки бездисковой станції 192.168.21.4. Сюди можна покласти файл X11 / xorg.conf з настройками X-сервера, fstab із зазначенням персонального nfs-каталогу / var. скрипт rc.d / swap2. який буде підключати swap-файл і ін.

    При запуску бездисковой станції 192.168.21.4 в її пам'яті буде створений віртуальний диск розміром / conf / base / etc / md_size (3MB) і примонтовано в / etc. Туди копіюється вміст / conf / defauts / etc. а потім вміст /conf/ip/192.168.21.4/etc. при копіюванні файли з однаковими іменами перезаписувати. Після цього бездискова станція инициализируется з використанням інформації з цього віртуального / etc.

    У цій роботі був використаний X.Org X Server v.1.4 [5]. Для побудови та встановлення цього середовища у FreeBSD треба виконати наступні дії.

    Щоб запустити віддаленого X-клієнта, котрий виводить графіку на локальний X-сервер, необхідно виконати такі дії.
    1. Переконатися, що локальний X-сервер працює в мережевому режимі і приймає підключення з інших машин. Можна перевірити за допомогою утиліти netstat відкритий чи порт X11.
    2. Дозволити віддаленій машині з'єднання з нашим X-сервером за допомогою xhost.
    3. Підключитися до віддаленої машині за допомогою ssh (або подібного до цього засобу), встановити на віддаленій машині змінну оточення DISPLAY.
    4. Запустити клієнтську програму на віддаленій машині.

    Можна також використовувати допоміжну програму, яка автоматично буде робити все описане вище.

    Говорячи про графічному терміналі на базі X.Org, можна ще згадати клієнта для Microsoft Terminal Services. Це програма rdesktop (A Remote Desktop Protocol client) [6], вона дозволяє відображати віддалений '' робочий стіл '' Microsoft Windows у вікні локального X-сервера. Для побудови та встановлення цієї програми у FreeBSD треба виконати наступні дії.

    Для підключення до віддаленого '' робочому столу '' Microsoft Windows досить виконати команду

    Крім відображення вікна Microsoft Windows, програма rdesktop може надавати різні додаткові можливості, наприклад, передача крім картинки ще й звукового каналу з віддаленої машини.

    Приклади файлів настройки можна знайти [тут]